Waylandで追加のマウスボタンを2番目の中央クリックで設定する

Waylandで追加のマウスボタンを2番目の中央クリックで設定する

私は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つの追加ボタンを貼り付けることができます。

楽しんでください。

おすすめ記事