Linux 中的 Logitech M535

Linux 中的 Logitech M535

我刚买了一个 Logitech M535 蓝牙鼠标。它有倾斜滚轮,但它被映射到“后退”和“前进”按钮。为了使它以水平滚动的方式工作,我编写了这个脚本:

#! /bin/dash

MOUSE_ID=`xinput list | grep -o 'M535.*pointer' | sed 's/^.*id=\([0-9]*\)[\t].*$/\1/')`
xinput set-button-map $MOUSE_ID 1 2 3 4 5 8 9 6 7 10 11 12

不幸的是,这样,滚动按钮就不会重复了。

此外鼠标还有一个额外的按钮,可以发送 ALT+TAB(通过“假”键盘):

ignazio@ignazio-HP:~$ xinput | grep M535
⎜   ↳ Bluetooth Mouse M336/M337/M535            id=15   [slave  pointer  (2)]
    ↳ Bluetooth Mouse M336/M337/M535            id=16   [slave  keyboard (3)]
ignazio@ignazio-HP:~$ xinput test 16
key press   64 
key press   23 
key release 23 
key release 64 

我怎样才能将此按钮绑定到其他按钮?

我尝试使用xbindkeys但无法让它拦截 ALT+TAB。而且,即使可以,我也只想拦截鼠标的假键盘,而且我找不到任何方法来过滤设备xbindkeys

我还知道有类似的 Logitech 鼠标的内核模块(请参阅https://github.com/CzBiX/logitech-m560),但是这个不受支持。

答案1

我使用 key-mapper gui 软件解决了水平滚动问题,然后将左滚轮按钮(按钮侧)映射到滚轮(右,1);将右滚轮按钮映射到滚轮(左,1)。

答案2

我使用 hwdb 解决了这个问题。我创建了/etc/udev/hwdb.d/10-m535.hwdb

evdev:input:b0005v046DpB016e1203-*
 KEYBOARD_KEY_700e2=reserved
 KEYBOARD_KEY_7002b=leftmeta

然后:

sudo udevadm hwdb --update
sudo udevadm trigger

然后关闭并打开鼠标。现在可以正常工作了,我绑定了 meta (Windows) 键。

我认为这个解决方案可以做到不需要xinput set-button-map(也许我可以解决按钮不重复的问题)...但我找不到按钮 6 和 7 的键码(向左和向右滚动)。我找到了扫描码:

evdev:input:b0005v046DpB016e1203-*
 KEYBOARD_KEY_700e2=reserved
 KEYBOARD_KEY_7002b=leftmeta
 KEYBOARD_KEY_90004=??? (scroll left - mouse button 6)
 KEYBOARD_KEY_90005=??? (scroll right - mouse button 7)

BTN_SIDE我尝试了、BTN_EXTRABTN_BACKBTN_FORWARD、(如 中所定义)的十进制值,BTN_6但没有成功。BTN_7/usr/include/linux/input-event-codes.h

另一只鼠标,开箱即用,具有水平滚动功能,输出如下evtest

Event: time 1522616506.145899, -------------- SYN_REPORT ------------
Event: time 1522616507.105926, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1
Event: time 1522616507.105926, -------------- SYN_REPORT ------------
Event: time 1522616508.191962, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1

我可以以某种方式在 hwdb 文件中指定一个EV_REL具有键码值的事件吗?

相关内容