web-dev-qa-db-ja.com

Waylandの下で追加のマウスボタンを構成する

10ボタンマウス(Logitech M705)を使用しています。 X11では、etc/X11/xorg.conf.dのファイルを変更することにより、追加のボタンの1つを2回目の中クリックとして動作するように構成できました。

ウェイランドでは、これはもはや機能しません。私の調査では、libinputで何かをする必要があることがわかりました。これはよくある問題だと思いましたが、どこにも答えが見つかりません。

誰かがマウスボタンを再マッピングする方法を説明したり、それができない理由を説明したりできますか?

10
Kyle

Waylandを実行している場合のボタンの再マッピングは、次のように行うことができます。

  1. xev | grep buttonを実行して、マウスクリックイベントをログに記録し、ウィンドウ内をクリックしてイベントの番号を取得します。私の場合、中央のボタンは次のとおりです。

    state 0x10, button 2, same_screen YES
    

    そして、私はそれをマッピングしたいと思います:

    state 0x10, button 13, same_screen YES
    
  2. 次にxinput --listを実行して、ポインタデバイスを見つけます。

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9は次を返します:

    1 2 3 4 ... 20
    
  4. 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に簡単に切り替えて機能を楽しむことができます。

6
CermakM

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/

0
Ray Foss