由于罗技的 SetPoint 驱动没有 Linux 版,也就没办法自定义横向滚轮的功能。这里介绍一下如何通过 X.org 自带的配置功能来实现。
我想要实现的是横向滚轮后退和前进网页的功能,有些复杂的功能是不能通过修改配置实现的。测试环境:Ubuntu 12.10 x86,X.Org X Server 1.13.0 / X Protocol Version 11,鼠标设备是罗技 V470 蓝牙鼠标。当然,理论上这些配置也都适用于任何使用 X 的操作系统,以及任何使用标准 X.org 输入驱动的鼠标设备,也可以调整包括左右键、滚轮上下以及大部分自带按键。
1. 使用 xev 检查需要调整的键号。在 Xorg 下的终端中启动 xev,在弹出的白色框中,按下想要调整的鼠标按钮(我这里就是横向滚轮咯),会看到终端中出现类似下面的信息:
ButtonPress event, serial 41, synthetic NO, window 0x4400001,
root 0xaf, subw 0x0, time 41339809, (78,81), root:(794,134),
state 0x10, button 6, same_screen YES
ButtonRelease event, serial 41, synthetic NO, window 0x4400001,
root 0xaf, subw 0x0, time 41339809, (78,81), root:(794,134),
state 0x10, button 6, same_screen YES
ButtonPress event, serial 41, synthetic NO, window 0x4400001,
root 0xaf, subw 0x0, time 41340743, (78,81), root:(794,134),
state 0x10, button 7, same_screen YES
ButtonRelease event, serial 41, synthetic NO, window 0x4400001,
root 0xaf, subw 0x0, time 41340743, (78,81), root:(794,134),
state 0x10, button 7, same_screen YES
在按键过程中不要移动鼠标或按键盘(否则会产生很多事件),并记下上面的数据中 button 后面的数字,这就是你刚才按的键号。以上四个事件分别代表:按钮 6(滚轮左)按下、弹起、按钮 7(滚轮右)按下、弹起。
2. 使用 xinput 检查需要调整的设备名称。在连接鼠标的情况下,终端中运行 xinput 命令,即可获得类似下面的信息:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Bluetooth Laser Travel Mouse id=11 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=16 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...(以下省略)
从中很容易看出触摸板及鼠标的名称,复制下其中要调整的鼠标名称,我这里就是“Bluetooth Laser Travel Mouse”。
3. 修改 xorg.conf,调整鼠标的按键映射表(Button Mapping)。按照 X.org 的规范,用户配置文件应该放置在 /etc/X11/xorg.conf.d(如果没有请自行创建)文件夹下。在此创建一个配置文件 20-xiaodu-mouse.conf 并使用以下内容(点此下载):
Section "InputClass"
Identifier "Xiaodu @ Du9L.com - Logitech Mouse Mapping"
MatchProduct "Bluetooth Laser Travel Mouse"
MatchDevicePath "/dev/input/event*"
Option "ButtonMapping" "1 2 3 4 5 8 9"
EndSection
其中,MatchProduct 后面是第二步获得的设备名称,而 Option “ButtonMapping” 后面就是我们要修改的映射表。一般用户可以直接搜索 “设备名称 + ButtonMapping” 获得自己的设备对应的值,这里讲一下该值的意义及手动修改的方法。
首先,默认的映射为 1 2 3 4 5 … 32 -> 1 2 3 4 5 … 32 的一一对应,即按下 Button 1 时触发 Button 1 的功能,以此类推。我们要修改的是映射的右边,即按键的功能表。常用的 1 至 9 分别对应着:
1–鼠标左(主)键,2–鼠标中键(现代鼠标通常为滚轮按下),3–鼠标右(副)键,4–滚轮向上滚动,5–滚轮向下滚动,6–滚轮向左滚动,7–滚轮向右滚动,8–鼠标后退键,9–鼠标前进键。
其他 10 以上的值我不知道,网上也没有查到相关资料,欢迎补充。接下来我们就是要把刚才获得的 6 和 7 号按钮映射到 8 和 9 号功能,因此映射表就是:”1 2 3 4 5 8 9″。建议先使用 xinput –set-button-map …(具体语法 man xinput) 命令进行测试,确定功能没错再填入配置文件中。
4. 重启 X server ( kill -KILL `pgrep X` ) 并测试新配置是否生效。
参考资料:
1. Disabling the mouse scroll wheel … — KLUDGE-O-MATIC
2. Mouse button mapping — Ubuntu Forums (@jbg7474)