Linux 中的羅技 M535

Linux 中的羅技 M535

我剛剛購買了羅技 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.

我還知道有類似羅技滑鼠的核心模組(請參閱https://github.com/CzBiX/logitech-m560),但是不支持這個。

答案1

我透過使用key-mapper gui軟體解決了水平滾動問題,然後將左輪按鈕(BUTTON SIDE)映射到輪子(right,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

並關閉並打開滑鼠。現在可以了,我綁定了元(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_EXTRA, BTN_BACK, BTN_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具有鍵碼值的事件嗎?

相關內容