私は10ボタンマウス(Logitech M705)を使います。 X11ではetc/X11/xorg.conf.d
。
Waylandではもう機能しません。私の調査は私が何かをしなければならないという事実を明らかにしましたlibinput
。よくある質問だと思いましたが、どこでも答えを見つけることができません。
誰かがマウスボタンを再マップする方法、またはこれを実行できない理由を説明できますか?
ベストアンサー1
私は2日間インターネットを検索し、私が見つけた何十もの方法をテストし、Waylandでマウスボタンを再マッピングするのに苦労しました。
だから私が学んだことを共有します:
Logitech M570トラックボールには2つの追加ボタンがあります。 libinput から BTN_SIDE と BTN_EXTRA を生成します。
[root@centos8 ~]# libinput debug-events --device /dev/input/event21
-event21 DEVICE_ADDED Logitech M570
seat0 default group1 cap:p left scroll-nat scroll-button
event21 POINTER_BUTTON +16.93s BTN_EXTRA (276) pressed, seat count: 1
event21 POINTER_BUTTON +17.09s BTN_EXTRA (276) released, seat count: 0
event21 POINTER_BUTTON +17.89s BTN_SIDE (275) pressed, seat count: 1
event21 POINTER_BUTTON +17.99s BTN_SIDE (275) released, seat count: 0
evtestを使用して確認でき、ボタンスキャンコードも表示されます。
[root@centos8 ~]# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
...
/dev/input/event21: Logitech M570
Select the device event number [0-21]: 21
Event: time 1589974995.415405, -------------- SYN_REPORT ------------
Event: time 1589974996.969613, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90004
Event: time 1589974996.969613, type 1 (EV_KEY), code 275 (BTN_SIDE), value 1
Event: time 1589975000.165574, -------------- SYN_REPORT ------------
Event: time 1589975000.611570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
Event: time 1589975000.611570, type 1 (EV_KEY), code 276 (BTN_EXTRA), value 1
Event: time 1589975002.369616, -------------- SYN_REPORT ------------
スキャンコードを目的のボタンに再マップするために、udev hwdbのルールファイルを作成します/etc/udev/hwdb.d/70-mouse-remap.hwdb
。たとえば、次のようになります。
# remap buttons on Logitech M570 trackball
evdev:name:Logitech M570:*
ID_INPUT_KEY=1
KEYBOARD_KEY_90004=btn_middle
KEYBOARD_KEY_90005=btn_middle
うん、そのボタンは本物キーボードキースキャンコードをマウスの中央ボタンに再マップします。あまりにも一般的なデバイス識別子はevdev:input:*
他のデバイスを妨げる可能性があるため、使用しないでください。たとえば、私のThinkpad T490では、マイクミュートボタン(Fn + F4)は機能しません。
ファイルを保存してhwdbをもう一度検索してください。
[root@centos8 ~]# systemd-hwdb update
また、変更を確認するには、USBからマウス(この場合はワイヤレス受信機)を物理的に取り外す必要がありました。再接続してルールが適用されていることを確認してください。
[root@centos8 ~]# udevadm info /dev/input/event21
P: /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.4/1-4.4:1.2/0003:046D:C52B.0097/0003:046D:1028.0098/input/input84/event21
...
E: KEYBOARD_KEY_90004=btn_middle
E: KEYBOARD_KEY_90005=btn_middle
これで libinput を再テストでき、BTN_MIDDLE イベントを生成する両方のボタンが表示されます。
[root@centos8 ~]# libinput debug-events --device /dev/input/event21
-event21 DEVICE_ADDED Logitech M570 seat0 default group1 cap:kp left scroll-nat scroll-button
event21 POINTER_BUTTON +1.45s BTN_MIDDLE (274) pressed, seat count: 1
event21 POINTER_BUTTON +1.59s BTN_MIDDLE (274) released, seat count: 0
event21 POINTER_BUTTON +2.20s BTN_MIDDLE (274) pressed, seat count: 1
event21 POINTER_BUTTON +2.28s BTN_MIDDLE (274) released, seat count: 0
すべてが正常に動作したら、gnome-terminalなどのWaylandの基本アプリケーションに2つの追加ボタンを貼り付けることができます。
楽しんでください。