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でマウス/トラックボールのボタン割当て変更 – がとらぼ
xbindkeys/xteで任意のマウスボタン(キー)で任意のキーストロークが動くようにした(Keisingtonトラックボールのボタンをカスタムした) – Lambdaカクテル