如何重新映射 xev 未识别的鼠标按钮

如何重新映射 xev 未识别的鼠标按钮

Logitech M720 有一个拇指按钮,但在以下位置不显示按钮标识符xev

罗技 M720 Triathlon 带拇指按钮

此拇指按钮的结果是 Ctrl+Alt+Tab。

我使用的是 Fedora 28,尽管 Ubuntu 也报告了同样的问题:https://askubuntu.com/questions/956484/logitech-mouse-thumb-button-not-showing-in-xev

还有一些关于罗技差异鼠标的相关问题:MX大师问题MX 无处不在 2S,它似乎已经获得了一些带有 的按钮名称evtest,但我的evtest拇指按钮的输出看起来没有任何按钮名称:

Event: time 1538277331.280194, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1538277331.280194, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
Event: time 1538277331.280194, -------------- SYN_REPORT ------------
Event: time 1538277331.288214, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
Event: time 1538277331.288214, type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 1
Event: time 1538277331.288214, -------------- SYN_REPORT ------------
Event: time 1538277331.296210, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7002b
Event: time 1538277331.296210, type 1 (EV_KEY), code 15 (KEY_TAB), value 1
Event: time 1538277331.296210, -------------- SYN_REPORT ------------
Event: time 1538277331.304218, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7002b
Event: time 1538277331.304218, type 1 (EV_KEY), code 15 (KEY_TAB), value 0
Event: time 1538277331.304218, -------------- SYN_REPORT ------------
Event: time 1538277331.312212, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
Event: time 1538277331.312212, type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 0
Event: time 1538277331.312212, -------------- SYN_REPORT ------------
Event: time 1538277331.320218, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1538277331.320218, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1538277331.320218, -------------- SYN_REPORT ------------

该按钮真的硬连线以发出 CTRL ALT TAB 吗?

是否可以重新映射拇指按钮?

答案1

该按钮在内核输入层级别生成序列Left Ctrl Left Alt Tab,这意味着是设备本身生成该序列。这对于其他罗技设备来说是不同的,这没有任何意义。

我不知道该序列是如何“硬连线”的,也许可以通过专门针对该设备的罗技工具来更改它。这并不容易,你必须找到这样的工具(可能适用于 Windows),然后你需要用 USB 嗅探器记录 Windows 发送和接收的 USB 命令,然后你必须编写一个小程序来模仿它们在 Linux 上。这样做的好处是,如果你将其开源,其他拥有该设备的人也可以使用它,所以也许有人已经做到了(花一些时间谷歌搜索来找出答案)。

另一种选择是您在 X 级别捕获此特定序列(使用您的 WM 等xbindkeys),并将您自己的事件等附加到其上。当然,这也会检测到键盘上的相同序列。

第三种选择是检测输入层级别的序列。为此,您需要能够编写一个 C 程序,使用设备作为新的输入层源, “抓取”相应的/dev/input/eventX、转换特定的按键序列并传递其他所有内容。uinput

第四个选项可能是用来hwdb进行某种翻译,但据我所知它不翻译序列(但我还没有详细研究过)。

答案2

使用 Solaar v1.0.3 可以将按钮(包括拇指按钮又称多平台手势按钮)重新映射到其他鼠标操作:

在此输入图像描述

如果鼠标关闭,更改将被重置,除非 Solarr 正在运行以恢复映射。

持久重新映射和重新映射到其他组合键都是可能的,并且正在开发中:https://github.com/pwr-Solaar/Solaar/issues/832

相关内容