JIS配列のキーボードにはあまり使わないキーがいっぱいあって、その代表格が変換キーと無変換キーです。
でも、スペースの両隣という最高の位置に普段使わないキーがあるのはとても便利で、
たとえばIMEのオンを変換キー、オフを無変換キーに割り当てるとプログラミングがとってもはかどります。
そんな背景で、僕はいつもJIS配列のキーボードをUS配列として認識させて使っています。
でも、わけあってUS配列キーボードを使わざるを得ない時、あの洗練されたキーボードには変換/無変換キーがありません。
そこで、無理やり変換/無変換キーを実現できるようにするのが本記事の目的です。
xdotool の導入
Linux にはキー入力やマウス操作をコマンドラインでシミュレートしてくれる xdotool コマンドがあります。
Windows とか Mac は知りません。なんか適当に同じようなやつを探してください。
xdotool で、無変換キーの押下をシミュレートするには
$ xdotool key 0xff22
変換キーの押下をシミュレートするには
$ xdotool key 0xff23
とします。
キーボードショートカットに登録
Ubuntu だったらキーボードショートカットを簡単に登録できます。
ここでは、US配列でもあまり使われないキーである「メニューキー」(右Altの隣りにあるやつ)を
$ xdotool key 0xff23
のショートカットとして登録すれば、メニューキーを押した時に無変換キーを押すことと同様の効果が得られるはずです。
しかし、これには落とし穴があって、「メニューキー」を押した瞬間に無変換キーの押下がシミュレートされてしまうので、実際には「メニューキーと無変換キーを同時に押した」と判断されてしまいます。
これを防ぐためにちょっとHackyですが
$ bash -c "sleep 0.5 && xdotool key 0xff23"
のように、スリープを挟んで「メニューキー」の押下が終わった頃に無変換キーの押下がシミュレートされるようにしましょう。
同じようにたとえば Shift + メニューキー というキーボードショートカットに
$ bash -c "sleep 0.5 && xdotool key 0xff22"
を割り当てておけば、変換キーの押下をシミュレートすることができます。