web-dev-qa-db-ja.com

LinuxのLogitechM535

Logitech M535Bluetoothマウスを購入しました。傾斜ホイールがありますが、「戻る」ボタンと「進む」ボタンにマップされています。水平スクロールとして機能させるために、次のスクリプトを作成しました。

#! /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-m56 を参照)、これはサポートされていません。

1
neclepsio

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_SIDEBTN_EXTRABTN_BACKBTN_FORWARDBTN_6BTN_7/usr/include/linux/input-event-codes.hで定義)の10進値を試しました)運がない。

水平スクロールがすぐに機能する別のマウスには、次の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イベントを指定できますか?

1
neclepsio