memo

思いついたこと、やってみたことをテキトウに残していく。

HEAD / archives / 2020-09 / 2020-09-21.rst

Wayland 環境でマウスのボタンをキー入力にマッピングする方法

Wayland (libinput?) な環境で、マウスのボタンをクリックした時に、任意のキー入力がされたことにしたい。 hwdb の設定を上書きすればできそう。

例えば、自分の使っているマウスには「戻る」「進む」ボタンがあるが、これをそれぞれ "Home", "End" キーという事にする場合。

  1. /proc/bus/input/devices を眺めて、マウスの名前と(現在の) event 番号を調べる:

    ...
    N: Name="Logitech MX Ergo"
    ...
    H: Handlers=sysrq kbd mouse0 event1 leds
    ...
    

    ここでは名前は Logitech MX Ergo で、 event 番号は 1

  2. evtest コマンドで、マウスのボタンに対応するコード(?)を調べる:

    $ sudo evtest /dev/input/event1
    ...
    Testing ... (interrupt to exit)
    Event: time 1600678269.823814, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90004
    Event: time 1600678269.823814, type 1 (EV_KEY), code 275 (BTN_SIDE), value 1
    Event: time 1600678269.953810, -------------- SYN_REPORT ------------
    Event: time 1600678272.895815, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
    Event: time 1600678272.895815, type 1 (EV_KEY), code 276 (BTN_EXTRA), value 1
    Event: time 1600678272.895815, -------------- SYN_REPORT ------------
    

    「戻る」ボタンが 90004, 「進む」ボタンが 90005

  3. /etc/udev/hwdb.d/99-local.hwdb をこんな感じに書く:

    evdev:name:Logitech MX Ergo:*
      KEYBOARD_KEY_90004=end
      KEYBOARD_KEY_90005=home
    
  4. hwdb の更新 & 再読込:

    $ sudo systemd-hwdb update && sudo udevadm trigger /dev/input/event1
    
powered by blikit