Linux での Logitech M535

Linux での Logitech M535

Logitech M535 Bluetooth マウスを購入しました。チルトホイールが付いていますが、「戻る」ボタンと「進む」ボタンにマッピングされています。水平スクロールとして動作させるには、次のスクリプトを書きました。

#! /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

キーマッパー GUI ソフトウェアを使用して、左ホイール ボタン (BUTTON SIDE) を wheel(right,1) にマッピングし、右ホイール ボタンを wheel(left,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、、、、、(で定義されている)の10 進数値を試しましたが、BTN_EXTRAうまくいきませんでした。BTN_BACKBTN_FORWARDBTN_6BTN_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

EV_RELhwdb ファイル内のキーコードの値を持つイベントを何らかの方法で指定できますか?

関連情報