xbindkeysで捗るお話
xbindkeysについて
xbindkeysは,キーボードのinputをフックして適当なコマンドを発行できるデーモンです.自分だけのキーボードショートカットを作ったりするとき便利ですね.使い方は,xbindkeys -kでキーを取得して,そいつを~/.xbindkeysrcに書いてxbindkeysを動かせばOKです.例えば,Control+Shift+F11したときに音声のミュートをトグルするようなショートカットを作ってみましょう.まずはキーを取得します.
xbindkeys -k
上記コマンドを入力した上でControl+Shift+F11とか入力すると,以下のように出力されます.
Press combination of keys or/and click under the window. You can use one of the two lines after "NoCommand" in $HOME/.xbindkeysrc to bind a key. "(Scheme function)" m:0x5 + c:95 Control+Shift + F11
この出力を参考に,~/.xbindkeysrcを編集します.
"amixer sset Master toggle"
Control+Shift + F11
設定が書けたらxbindkeysを立ち上げます.複数動いていると面倒なので,先に既存のxbindkeysを殺しておきます.
killall xbindkeys; xbindkeys
この状態でControl+Shift+F11するとミュートのトグルが効くと思います.これで,適当なキーにコマンドを割り当てることができるので,Control+Mod4*1+[aenpfb]でどこでもEmacsキーバインドが使えるようにします.
まずは以下のファイルを/usr/local/bin/enter_keystroke.shとかに保存します.
#!/bin/bash base=`basename $0 | sed -e 's/\.sh$//g'` cmd=`echo $base | awk -F '_' '{print $1}'` keystroke=`echo $base | sed -e 's/^[^_]\+_//g'` id=`xdotool getwindowfocus` case $cmd in key) xdotool key --window $id "$keystroke" > /dev/null 2>&1 ;; type) echo -n "$keystroke" | xclip -i -selection clipboard xdotool key --window $id "ctrl+v" > /dev/null 2>&1 ;; *) echo "usage: ln -s $0 {key|type}_<keystroke>.sh" exit 1;; esac
キー入力ができるようにシンボリックリンクを作成します.
chmod +x /usr/local/bin/enter_keystroke.sh ln -s /usr/local/bin/enter_keystroke.sh /usr/local/bin/key_Right.sh ln -s /usr/local/bin/enter_keystroke.sh /usr/local/bin/key_Left.sh ln -s /usr/local/bin/enter_keystroke.sh /usr/local/bin/key_Up.sh ln -s /usr/local/bin/enter_keystroke.sh /usr/local/bin/key_Down.sh ln -s /usr/local/bin/enter_keystroke.sh /usr/local/bin/key_Home.sh ln -s /usr/local/bin/enter_keystroke.sh /usr/local/bin/key_End.sh
~/.xbindkeysrcに以下を追記します.
"/usr/local/bin/key_Home.sh" Control+Mod4 + a "/usr/local/bin/key_End.sh" Control+Mod4 + e "/usr/local/bin/key_Down.sh" Control+Mod4 + n "/usr/local/bin/key_Up.sh" Control+Mod4 + p "/usr/local/bin/key_Right.sh" Control+Mod4 + f "/usr/local/bin/key_Left.sh" Control+Mod4 + b
xbindkeysを再起動します.
killall xbindkeys; xbindkeys
これで,Control+Mod4 + [aenpfb]が効くようになりました.~/.profileとかにxbindkeysって書いておきましょう.