あんパン

こしあん派

Kensington SlimBlade Proの全てのボタンをbt2usbhid&Linuxデスクトップ環境下で利用する

bt2usbhidとはこれのこと。

github.com

端的に書くと、Bluetooth接続のキーボードやマウスをRaspberry Pi経由でPCに有線接続できるようにするソフトウェア。USB切替器を挟むことで複数PC間でBluetooth接続のキーボードやマウスを共有するのに役立つ。このブログではたびたび言及している(それだけ便利に使っている)。

そしてKensington SlimBlade Proはこちら。

かなり前から販売されていたSlimBladeのBluetooth版。長らく待っていたけれどようやく発売された。さきほど届いたので早速セットアップした。といっても接続自体は難しくなくて、bt2usbhidのREADMEにあるとおりにRaspberry Piに接続するだけ。

このトラックボールにはボタンが4つついていて、全てのボタンを認識させるためにはXorgの設定でButtonMappingを変更する必要がある。bt2usbhidは単純に入力のイベントをそのまま再送しているだけなので、USBで接続した場合と同じマッピングを設定すれば良い。ただし、bt2usbhidはキーボードとマウスを接続していてもひとつのUSBデバイスとして振る舞っており、別個のデバイスとして認識されるわけではない。lsusbしてみると分かる。

$ lsusb
...
Bus 001 Device 009: ID 1d6b:0104 Linux Foundation Multifunction Composite Gadget
...

USBIDが1d6b:0104のデバイスがそれ。1d6bはLinux FoundationのVendor IDであり、0104はMultifunction Composite Gadgetであることをあらわす。これはbt2usbhid上で定義した値なので、どの環境でもこのUSBIDのデバイスが登場する*1。このデバイスが接続された場合にButtonMappingを書き換えてあげれば良い。具体的には以下のようなファイルを /etc/X11/xorg.conf.d に放りこんであげれば良い。

Section "InputClass"
  Identifier      "Bluetooth to USB HID Converter"
  MatchUSBID      "1d6b:0104"
  Driver          "libinput"
  MatchDevicePath "/dev/input/event*"
  Option          "ButtonMapping" "1 8 3 4 5 6 7 9 2"
EndSection

ちなみにどのボタンを押したときにどのボタンが反応するかは xev コマンドを見れば分かる。

ButtonPress event, serial 34, synthetic NO, window 0x3c00001,
    root 0x75d, subw 0x0, time 23937374, (231,956), root:(4075,1003),
    state 0x0, button 1, same_screen YES

ButtonRelease event, serial 34, synthetic NO, window 0x3c00001,
    root 0x75d, subw 0x0, time 23937444, (231,956), root:(4075,1003),
    state 0x100, button 1, same_screen YES

ButtonPress event, serial 34, synthetic NO, window 0x3c00001,
    root 0x75d, subw 0x0, time 23937584, (231,956), root:(4075,1003),
    state 0x0, button 3, same_screen YES

ButtonRelease event, serial 34, synthetic NO, window 0x3c00001,
    root 0x75d, subw 0x0, time 23937855, (231,956), root:(4075,1003),
    state 0x400, button 3, same_screen YES

うまく動かない場合はこれを頼りに調整することができる。とはいえ、これまで有線のSlimBladeとExpert Mouse Wireless Trackballを利用していたがいずれも同じButtonMappingを流用できたので、全ての製品が同じ配列なのかもしれない。

なおSlimBlade Proにはdpiを変更するスイッチが筐体の右側面にあり、これはハードウェア側で調整されるようで何も設定しなくても押せばカーソルの移動速度が切り替わる仕組みになっていた。ただ切り替えると素早すぎてコントロールを失うのでデフォルトのまま使おうと思っている。

SlimBladeは高さが低めに作られていて手首に負担がかかりづらいし、ボールの受け軸を掃除しやすくメンテナンス性も高いのでトラックボールを使うのに抵抗がない人にはぜひオススメしたい。