Linux Mint で Kensington トラックボールにキーボードショートカットを割り当てる(その2)

追記: Bluetooth(再)接続時に設定を反映させるように変更した。

その1」で、ボタンの配置を変更したので、「その2」ではショートカットキーの割当てていきます。

ツールを少し整理していきます。

xbindkeys:
ここでは、マウスボタンが押されたときに、どのキーが押されたかをエミュレートするのに使います。
.xbindkeysrc ファイル:
xbindkeys の設定をここに書きます。(マウスボタンとキーの対応づけをします。)
xte、xvkbd:
.xbindkeysrc の中で指定します。これらのプログラムが実際のキーコードを送り出す処理をしているようです。

xdottool:
今回は使っていないが xte、xvkbd と同じように使うことができる xdottool というものがあるらしい。

最終的な割当状態

今回は残っている、上段:右ボタンにショートカットキーを割り当てます。

上段戻るタブを閉じる(Cntrol + W)
下段左クリック右クリック

結果からいうと xte を使いました。xvkbd だと何故か firefox はタブを閉じずに、ウィンドウそのものを閉じる現象が発生したのですが、xte なら目的の動作を実現できました。

ショートカットを割り当て

どうやら、.xbindkeysrc ファイルを書いて xbindkeys コマンドを実行すれば目的の動作は達成するようです。早速やってみます。

$ cd ~
$ vi .xbindkeysrc

"xvkbd -text "\[Control]W""
  b:10
:wq

$ xbindkeys

これで動いているはずですが、Firefox だと何故かタブではなくウィンドウ全体が閉じてしまいます。「がとらぼ」さんによると xte なら動作するケースむあるようなので xte に変更してみる

$ cd ~
$ vi .xbindkeysrc

# "xvkbd -text "\[Control]W"" # コメントアウト
"xte 'keydown Control_L' && xte 'key w' && xte 'keyup Control_L'"
  b:10

:wq

$ xbindkeys

動作しているか怪しいときは -n オプションでデバッグできる

$ killall xbindkeys; xbindkeys -n

ただ今回のコマンドは、タブを閉じちゃうのでターミナルでなかなか試しづらいかもしないです。

前回と同じように、.profile に設定を追加します。

その1」にも追記しましたが、/etc/udev/rules.d にルールファイルを追加しました。なのでルールファイルで指定したスクリプトにキーボードショートカットのマッピングを追加します。

$ cd 
$ touch slimblede.sh ; chmow 755 slimblade.sh
$ vi slimblade.sh
mouse_id='SlimBlade Pro'
xinput set-button-map "$mouse_id" 1 8 3 4 5 6 7 10 9

xinput
:wq

これでようやくできました。

参考

Linuxでマウス/トラックボールのボタン割当て変更 – がとらぼ

全てのマウスボタンを動作させる – ArchWiki

Xbindkeys – ArchWiki

xbindkeys/xteで任意のマウスボタン(キー)で任意のキーストロークが動くようにした(Keisingtonトラックボールのボタンをカスタムした) – Lambdaカクテル