Lambdaカクテル

集団への盲従を激しく嫌う

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

ケンジントントラックボールを買いました.便利です.

ところで僕はKB操作メインなので,マウスの左右ボタンとスクロールがあればのこりは余ってしまいます. Ubuntuデフォルトではトラックボール奥の左右がそれぞれ貼り付けと戻るになっていました.なんでだ. 戻るは便利なので,左側を変えたいな〜と思うようになりました.できれば閉じるキーとかにしたい.

より汎用的に使えるようにするために,Xに手を加えて左奥ボタンをCtrl_L rに設定できたので手順を確認します.

xbindkeys/xteのインストール

  • xbindkeysは,特定のXインプットでコマンドを呼び出すようにするツールです.
  • xteは,コマンドラインから特定のXインプットを擬似入力するツールです.

これらの二者を組合せ,以下の手順を行います.

  • xteCtrl_L rが入力できるようにする.
  • マウスの左奥ボタンが押されたらxbindkeysがこれをトラップし,前掲のxteキーストロークを再現する.

では必要パッケージをインストールします.xteは,xautomationパッケージの一部です.

# Use your package manager
$ sudo apt install xbindkeys xautomation

xevでマウスボタンの番号を確認する

xbindkeysはボタンを番号でしか認識しないので,ボタン番号を確認します. xevを実行し,ウィンドウ上でボタンを押下し,端末にボタン番号が表示されることを確かめます.

$ xev
(ウィンドウ上でボタンを押下する)
...
state 0x0, button 2, same_screen YES

2番だということがわかりました.このボタン番号に,xbindkeysでコマンドを束縛します.

xbindkeysがxteを起動するように設定する

xbindkeysは設定ファイルで動作します.

~/.xbindkeysrcを開きます.

# マウスボタン2が押下されたら,C-rを入力する
"xte 'keydown Control_L' && xte 'key r' && xte 'keyup Control_L'"
  b:2

保存し,xbindkeysを実行します.

$ xbindkeys

自動起動

~/.xinitrcなどに書くとよさそうです.