10ボタンマウス(Logitech M705)を使用しています。 X11では、etc/X11/xorg.conf.d
のファイルを変更することにより、追加のボタンの1つを2回目の中クリックとして動作するように構成できました。
ウェイランドでは、これはもはや機能しません。私の調査では、libinput
で何かをする必要があることがわかりました。これはよくある問題だと思いましたが、どこにも答えが見つかりません。
誰かがマウスボタンを再マッピングする方法を説明したり、それができない理由を説明したりできますか?
Waylandを実行している場合のボタンの再マッピングは、次のように行うことができます。
xev | grep button
を実行して、マウスクリックイベントをログに記録し、ウィンドウ内をクリックしてイベントの番号を取得します。私の場合、中央のボタンは次のとおりです。
state 0x10, button 2, same_screen YES
そして、私はそれをマッピングしたいと思います:
state 0x10, button 13, same_screen YES
次にxinput --list
を実行して、ポインタデバイスを見つけます。
Logitech Performance MX id=9 [slave pointer (2)]
xinput get-button-map 9
は次を返します:
1 2 3 4 ... 20
xinput set-button-map:
$ xinput set-button-map 9 1 13 3 4 .. 12 2 14 .. 20
注:9
によって返された番号をid=
に置き換えます
そして、そのキーの動作が定義されている場合、イベントがマッピングされます。そうでない場合、それは少し異なる問題です。 Waylandの下でTBHイベントでコマンドを実行する方法(Xorgのxbindkeys
を使用するとかなり簡単です)が見つからないため、キーとマウスイベントの動作を完全にカスタマイズします.. Waylandはより安全であるように努めており、この動作を無効にしていると思います。
いずれにしても、Xorgに簡単に切り替えて機能を楽しむことができます。
Hwdb udevルールを変更してみてください。これにより、マウスボタンがLaunch8/F16などのキーボードキーとして登録され、すべてのプログラム、ウェイランドなどでそれらの機能が無効になります。
# /usr/lib/udev/hwdb.d/71-mouse-local.hwdb
evdev:input:*
KEYBOARD_KEY_90004=key_f16
KEYBOARD_KEY_90005=key_f17
次にルートとしてsystemd-hwdb update; udevadm trigger
とマウスを取り外し、再度差し込みます。
追加の健全性チェック:Sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEY
、またはそのようなクエリsystemd-hwdb query "evdev:input:v046dp406a*
IDのプルの詳細については、ソースを参照してください。
ソース: https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/