最速キーバインド研究

一人でやってるので研究会ではなく研究ということで。
仕事でWindows、家でMacを使っていて、両方を一つのHappy Hacking Keyboard Pro2でコントロールしている自分にとって、キーバインドの問題は大きい。さらに家でも仕事でもサーバをSSHで操作し、Emacsで開発する。そんな状況で最も効率的で快適なキーバインドを追い求めて行きたい。
以前のエントリからしばらく経って、英語配列やFnキーを組み合わせた十字キーとか、ほとんど問題なく操作できるほどに慣れた。しかし日本語入力のオン/オフ切換えは未だに問題を解決できていない。
いちいちIME Watcherことえりのモードを目視で確認したり、数文字入力してみてから気付いてBackspaceなんて使い方は非効率なのでなんとかしたかった。で、Ctrl+Shift+JでIMEオン、Ctrl+Shift+'でIMEオフという方法をとった。これはMacことえりで入力モードをひらがなと半角英数にするキーで、別々のショートカットで確実にオン状態を指定したりオフ状態を指定できるのがいい。日本語を入力し始める前にIMEの状態を気にせずにCtrl+Shift+Jを押しておけば確実にIMEがオンの状態で入力を始められる。逆にIMEオフの入力を開始するときにはCtrl+Shift+'を入力しておく。慣れるとIMEの状態にいちいち悩まされることはなくなる。
しばらくはこの状態で問題なく使えていたのだが、唯一、俺が使っているFastladderや人気のlivedoor ReaderではCtrlを押してからShiftを押すと前のフィードへ、Shiftを押してからCtrlを押すと次のフィードに移動してしまう。まあ、キーバインドをいじるグリモンとかなんとかすればいいのかもしれないけど、IMEがオンの状態だとキーボードショートカットが効かないのでオフにしようとCtrl+Shift+'を押すと別のフィードに移動してしまう。ここだけの問題だからやっぱりグリモンとかでなんとかした方がいいのかなぁ。しかし、Ctrl+Shiftというのもちょっとめんどうでできれば一つの修飾キーと特定のキーで変更したいところ。Macの標準キーボードならスペースキーの左右に一つのキーでオンとかオフを指定できるキーが用意されてる。Windows環境でも変換・無変換にオンやオフを指定すれば同じようなことができる。しかし、残念ながらHHK Pro2にはそのキーがないし、仮に違うキーボードでもキーボードによって位置が微妙に違ったりする。
HHK Pro2を買ったときはちょっと焦ったけどデフォルトのCtrl+Shiftを使うキーボードショートカットを見つけて安心した。Windowsを使う場合はIMEのプロパティから設定してIMEのオン/オフを別のショートカットキーに割り当てる。このときCtrlとShift以外の修飾キーは普通では使えないが、Macと同じCtrl+Shift+JとCtrl+Shift+'を設定できるので問題なし。Xkeymacsではキー配列は変えることができてもショートカットキーに使えるのは結局CtrlとShiftだけ。AltやWindowsキーを修飾キーにできればかなり設定の自由度が上がるのだがそれをするには窓使いの憂鬱とかを使わないといけないし、開発は終了しているっぽいので避けたい。
それ以外にMacだとCommandキーの存在がWindowsと同じキーバインドを目指す場合に問題になる。Windowsアプリにおいてショートカットキーのメインの修飾キーはCtrlだけど、Macの場合はCommandキー。そしてターミナル上ではCtrlキーを使う。CtrlをCommandキーとして使うと足りなくなる予感。設定をいじれる部分も限られてるし。メインのブラウザにしているFirefoxWindowsMacで同じ操作ができるからずっと使ってるけど、CtrlキーとCommandキーの違いは未だに戸惑うことがある。CommandキーをCtrlキーと入れ替えることは考えてない。Emacsで使うし。
ただ、MacにはCommand+Spaceで入力モードを順番に切り替えるという機能がある。システム環境設定の言語環境、入力メニューで日本語の入力モードをひらがなと半角英数のみにしてしまえばCommand+Spaceでオン/オフを切り替えるようになる。この設定は変更できるのでCtrl+Spaceに設定している。Option(Alt)+SpaceをSpotlightに設定している。一応Command+Spaceが空いてるからQuickSilverに割り当てる余裕もあるけど、QuickSilverは使わずにSpotlightを使うようにしてるので空いてる状態。Ctrlを使ってるのはWindows環境でも標準の修飾キーとして使えるからWindowsでも同じようにCtrl+Spaceでオン/オフを切り替えられるようにしている。これを使うとFastladderを使ってる時の問題とかにも対処できる。IME Watcherでカーソル近くにIMEの状態を表示してるとこっちの方が楽な時もある。体が勝手にCtrl+SpaceかCtrl+Shift+[J']のどちらかを使う感じ。
以上のような試行錯誤の末、Ctrl+Spaceでのオン/オフ切換えと、Ctrl+Shift+Jでオン、Ctrl+Shift+'でオフを臨機応変使うのが現在のスタイル。しかしこれも使いにくい。
とかなんとか色々考えてると、MacWindowsのどちらかに作業環境を統一した方が早い気がしてくる。それが無理でも、HHK Pro2をやめてRealforceにするとかね。しないけど。Unixに特化した配列ゆえの問題か。だけどキータッチとか色々気に入っちゃってるからしょうがない。
Enterキーを;に割り当てるとかっていうキーバインドも話には聞いてる。試したことはないけど一度は試してみた方がよさそうだ。ただし、自分が求めてる環境というのはシステムのデフォルト設定からの近さというのも重要視していて、Enterを;に買えるのはあまりに標準からかけ離れてしまう気がして敬遠している。他の環境を触ったときにミスりまくりそうだし、プログラム書く時は;使うしね。
結局のところ、ひとつのキーボードでの最適なキーバインドを研究したところで、全ての環境でそれが使えるわけじゃない。ノートパソコンについてるキーボードはHHKではないし。日本語配列を使わなければならない状況も出てくる。とはいえ自分のメインの環境だけでも最速のキーバインドを手に入れたい。だからこれからも俺なりの最速キーバインドを研究して行きます。Emacsもからんでくるとさらに追求し甲斐が出てきたりするはず。

おまけ:
このエントリーを書いてるときに体が勝手にEmacsのキーを使っていて気付いたこと。
Macのテキスト操作にCtrl+[fbpnaedh]などのショートカットキーが使える!!
これはマジ衝撃だった!!!!
そして日々悶々と考えてることをいざエントリにすると長文になりすぎてダメだ。日本語むずかしい。