我有一个有4个物理按钮的鼠标(Kensington Slim刀片Trackball),让我们称它们为and,加上3个轴:鼠标X、Y和滚轮。
按钮A和B作为主按钮(按钮1)和右键单击(按钮3)在方框外工作。将A+B按在一起会产生一个中间点击(按钮2),这也是很棒的。
现在,我想为自己的目的映射按钮C和D,但我无法找到如何将按钮C与A+B仿真分开映射。
使用默认的按钮映射,我得到了以下映射:
physical buttons: A C B D
xinput button-map: 1 2 3 4 5 6 7 8 9 10 11 12 如果我尝试用xinput set-button-map将按钮C映射到8,D映射到9,那么按A+B也会映射到按钮8!
physical buttons: A C B D
xinput button-map: 1 8 3 0 0 0 0 9
^
A+B emulation becomes 8 too!如何将按钮C映射到任意的按钮号,同时将A+B仿真保持为按钮2?
我应该在比Xinput低的级别上工作吗?多么?我应该使用不同的Xinput设置吗?
编辑:以下是4个按钮的evtest代码:
A:
type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
type 1 (EV_KEY), code 272 (BTN_LEFT), value 1
B:
type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
type 1 (EV_KEY), code 273 (BTN_RIGHT), value 1
C:
type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000001
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1
D:
type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000002
type 1 (EV_KEY), code 275 (BTN_SIDE), value 1发布于 2016-10-24 15:12:28
最后,我修补了Xorg evdev驱动程序,以添加一个Emulate3Button选项,该选项配置由中间按钮模拟发出的按钮号。(我将修补程序提交给邮件列表,它迟早会合并。)
然后,我添加了这段配置:
Section "InputClass"
Identifier "SlimBlade Trackball"
Driver "evdev"
Option "ButtonMapping" "1 8 3 4 5 6 7 9 0 2"
Option "Emulate3Button" "10"
EndSection这使得中间按钮仿真发出按钮号10,然后它将按钮C映射到8,D映射到9,10映射到2。
https://unix.stackexchange.com/questions/314795
复制相似问题