memo

2020-09-21

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