2023年6月16日 星期五

ThinkPad USB Keyboard with TrackPoint 的 sensitivity 設定

 會用 ThinkPad 筆電的人,可能有不少人是衝著那個小紅點 (Trackpoint) 而作的選擇吧。

不但如此,使用桌上型電腦時,還會花高價,新台幣要三千左右,去買個外接的 USB 鍵盤+小紅點來用。本人就是如此,當年IBM還未這產品時,我也是在那抗議的其中之一。

不過,我習慣使用 Linux,並沒有這產品的驅動程式。其實也沒差啦,還是可以正常使用。只是最近,覺得那個小紅點推得實在很辛苦,造成腕部的傷害,痛得無法打羽球。

在Linux的滑鼠設定中,可以設定加速和閾值,雖然稍有改善,但腕部還是很痛苦,久久沒有改善。

經過努力的搜尋,終於找到可以透過 sysfs 設定 sensitivity。不過,只有Thinkpad筆電才可以,因為它是在i8042的目錄下,那是透過 PS/2 界面的裝置。

原想,自己也可以 HACK 一個 USB 的吧。沒想到,再努力搜尋一下,已有人做了,實在太棒了,有現成的可用。

原來要修改 kernel,但太麻煩了,改進的作法如以下所述。

設定好之後,哇! 輕輕一推小紅點,cursor 跑得像飛的一樣,真是太感動了。

數值越大,推起來越輕鬆,原來的數值是 0,難怪我推得那麼辛苦。

接下來,要開機自動設定,請自行參閱其它文件了。

2013-05-18 補記

應該是用下面這個比較簡單,不用去動到 kernel。
https://github.com/bseibold/tpkbdctl

參考網址:
http://linux-thinkpad.10952.n7.nabble.com/Changing-sensitivity-ThinkPad-USB-Keyboard-with-TrackPoint-td18067.html

使用 python 寫的,在 MAC OS 也可以用,太棒了。

=====================
2013-08-13
可以使用 Python 直接控制

首先要 emerge pyusb

然後透過下列指令找到裝置,確定 idVendor=0x17ef, idProduct=0x6009 符合,最末一碼為 0 是鍵盤,1 是trackpoint。
# ls /sys/bus/usb/drivers/usbhid/1-1.5:1.1
在此目錄下會有一個檔名為  0003:17EF:6009.0004

執行下列指令改變 sensitivity
 # echo 1-1.5:1.1 > /sys/bus/usb/drivers/usbhid/unbind
 # python trackpoint-script.py
 # echo 1-1.5:1.1 > /sys/bus/usb/drivers/usbhid/bind


trackpoint-script.py 內容如下

#pyusb imports
import usb.core
import usb.util

data = [0x4, 0x6a, 0x3, 0xfc, 0x38]
dev = usb.core.find(idVendor=0x17ef, idProduct=0x6009)
dev.ctrl_transfer(0x21, 0x9, 0x304, 0x1, data)


另外,下面的一些資料,可以做為進一步的參考。

Just for anyone not immediately recognizing the usb_control_msg()
parameters:

 0x21  == USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE
 0x9   == HID_REQ_SET_REPORT (assuming the interface class is HID)
 0x304 == report_type + 1 << 8 | report_id
 0x1   == interface number

沒有留言:

張貼留言

網誌存檔