新版ThinkPad USB指点杆键盘linux配置
喜欢 ThinkPad 的指点杆键盘,移动光标时手不需要离开键盘区.
在淘宝上面淘一个 0B47190 的国行指点杆键盘. 接上电脑,在 archlinux 上面,上下滚动能正常使用.
但有点小问题,按中键的时候,会先执行中键的功能,比如在终端上会粘贴剪切版的内容.
参考 https://wiki.archlinux.org/index.php/TrackPoint 的配置,执行 ~/.xinitrc 文件的内容,然后中键滚动都不能用了.
折腾模式开启了,主要参考了以下资料.
- http://www.x.org/archive/X11R7.7/doc/man/man5/xorg.conf.5.xhtml#heading9
- http://www.x.org/archive/X11R7.5/doc/man/man4/evdev.4.html
- https://wiki.ubuntu.com/X/Config/Input
首先用 xinput list
列出输入设备,查找设备的ID.指点杆设备是在 “Virtual core pointer” 节点下,另外个同名的设备为键盘.
$ xinput list
⎡ Virtual core pointer id=2015[master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4[slave pointer (2)]
⎜ ↳ Lenovo ThinkPad Compact USB Keyboard with TrackPointid=9[slave pointer (2)]
⎣ Virtual core keyboard id=3[master keyboard (2)]
↳ Virtual core XTEST keyboard id=5[slave keyboard (3)]
↳ Power Button id=6[slave keyboard (3)]
↳ Power Button id=7[slave keyboard (3)]
↳ Lenovo ThinkPad Compact USB Keyboard with TrackPointidid=8[slave keyboard (3)]
再用 xinput test 9
测试键值,命令中的9为你的测试的输入设备的ID. 测试发现,按下中键会打印出 “button press 2”,在不释放中键的同时触摸指点杆,提示 “button press 4” 之类的.
接上一个普通的usb鼠标,再测试,发现滚动的键值都一样. 猜测键值: 1=左键, 2=中键, 3=右键, 4 5 6 7对应着上下左右滚动.
因手边没有ThinkPad电脑,没办法测试上文提到的 .xinitrc 配置的开启 Evdev Wheel Emulation 选项后 xinput-test 打印值的差别.
个人估计,新版的thinkpad键盘直接是硬件上就直接兼容标准的鼠标键值了,而不再需要配置 Wheel Emulation .
所有,解决方案根本不需要管滚动这一块,只需要处理中键粘贴的问题.简单粗爆的方法,直接禁用中键.
方式一是在 .xinitrc 里添加以下行命令.
xinput set-button-map "Lenovo ThinkPad Compact USB Keyboard with TrackPoint" 1 0 3 4 5 6 7 8 9 10 11 12 13
“Lenovo ThinkPad Compact USB Keyboard with TrackPoint” 这个值是通过xinput获取到的, 后面的数值是通过 xinput get-button-map 9获取来的.
设置时,把2的值置为0,这样就禁用掉中键的.
4 5为上下,如果我们把4 5的键值位置对换一下,应该可以实现 Mac 的滚动习惯的.
方式二是通过 xorg configuration 实现,创建一个 /etc/X11/xorg.conf.d/20-thinkpad.conf
文件,内容如下:
Section "InputClass"
Identifier "Trackpoint"
MatchUSBID "17ef:6047"
MatchIsPointer "true"
Option "ButtonMapping" "1 0 3 4 5 6 7 8 9 10 11 12 13"
EndSection
查看 xorg conf 文档,觉得 MatchUSBID 更适合,而不是示例给的 MatchProduct 指令,通过 lsusb
命令查找设备的id.
查看 man evdev 文档,配置 InvertX 选项,应该也可以实现 Mac 的滚动习惯.
xorg conf 还是很强大,可惜不了解 Linux 系统编程.得加油!!!