首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xinput按钮映射与中间按钮仿真

Xinput按钮映射与中间按钮仿真
EN

Unix & Linux用户
提问于 2016-10-06 17:48:14
回答 1查看 3.5K关注 0票数 3

我有一个有4个物理按钮的鼠标(Kensington Slim刀片Trackball),让我们称它们为and,加上3个轴:鼠标X、Y和滚轮。

按钮A和B作为主按钮(按钮1)和右键单击(按钮3)在方框外工作。将A+B按在一起会产生一个中间点击(按钮2),这也是很棒的。

现在,我想为自己的目的映射按钮C和D,但我无法找到如何将按钮C与A+B仿真分开映射。

使用默认的按钮映射,我得到了以下映射:

代码语言:javascript
复制
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!

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
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
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-10-24 15:12:28

最后,我修补了Xorg evdev驱动程序,以添加一个Emulate3Button选项,该选项配置由中间按钮模拟发出的按钮号。(我将修补程序提交给邮件列表,它迟早会合并。)

然后,我添加了这段配置:

代码语言:javascript
复制
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。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/314795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档