思考の速度でパソコンを使うためのキーバインドのカスタマイズ。

思考の速度でパソコンを使う技術 - 分裂勘違い君劇場
http://d.hatena.ne.jp/fromdusktildawn/20070212/1171244226
こちらの分裂勘違い氏のエントリーに遅ればせながら、キーバインドのカスタマイズも俺も拘りだしてみた。

デスクトップでもトラックポイントを使いたいが為に、事務所も自宅のPCにも(id:TERRAZI 氏もご愛用の)「IBM スペースセイバー2キーボード」を接続して使っている俺。

「思考の速度でパソコンを使う技術」を楽に得る方法 - TERRAZINE
http://d.hatena.ne.jp/TERRAZI/20070213/p1

こんな便利な物がついているのに。わざわざThinkpadにマウス繋いで使っている奴は池沼としか思えない。
右手のキーボードとマウスの往復運動には良く耐えられるなぁ。

ホームポジションから指を話さずにマウスポインタが動かせるようになると、今度はEnterや、BackSpaceキー、さらにはより遠いカーソルキーを押すのが億劫になってくる。

なんかいい方法がないものかと日々悶々と思案のだが、最近やっと実現の目処がついてきた。

カーソル移動はHJKL、Enterは;(セミコロン)。BackSpaceは:(コロン)で代替できない物かと思い立った。

「HJKL」のカーソルはご存じvi。Enterの;はまつもとゆきろ氏*1他の方がやられているのを見て、から、そして:をBackSpaceにするのはNICOLA(親指シフト)配列からヒントを得た。
問題はキーの機能を代替する際の操作方法と、実装するためのキーリマッピングソフトが必要になる。
操作方法としては、「何か他のキーと同時に押すと発動!?する」ようにしたい。
「何か他のキー=モディファイヤー(修飾)キー」を「Ctrl」や「Alt」にしてしまうと他のアプリケーションのキーバインドとバッティング(競合)してしまう。「Win」キーもよく使う。「無変換」や「変換」は親指シフト入力の為に残しておきたい。
トラックポイントのセンターボタンとの組み合わせなら全く未使用で競合する心配はないが、マウスのセンターボタンとキーボードの組み合わせが使えるキーの入れ替えソフトなんてあるものだろうか?

苦心のあげく、「AutoHotkey」でなんとか実現することができた。

~MButton::return
~MButton & *h::Send, {Blind}{left}
MButton & *j::Send, {Blind}{down}
MButton & *k::Send, {Blind}{up}
MButton & *l::Send, {Blind}{right}
MButton & `;::Send, {Blind}{Return}
MButton & sc028 ::Send, {Blind}{BS}

…ハァ・・・ハァ…。ここまでたどり着くのもどれぐらいかかった事やら。
最初はそのまま!?

MButton & h::left
MButton & j::down
MButton & k::up
MButton & l::right

と書いてエラーになり、「AutoHotkeyを流行らせるページ」のBBSで聞いて、「キーの置き換えのリマップではなく、同時押しの時に キーストロークを発生させる 」と答えられるもその「キーストロークを発生させる」方法が分からず、他のそれらしいスクリプトを見て見よう見まねで書いたりリファレンスとくびっききになりながら、なんとか操作できるようにはなった…。

:(コロン)に至っては「'」によるエスケープシーケンスが効かないためにスキャンコードで記述する必要があった

「~MButton::return」はセンターボタン押下イベントを他のアプリやシステムによこさないとは本来の「センターボタンのスクロール」を有効にならないためだ。
これでもまだ完璧とはいえず、押したときアプリケーションの種類や条件によっては操作したいと思った通りにはまだならないのと改善の余地が残りまくりなのだ。

いくら右利きのユーザーが多いからって、右手、特に小指を酷使しすぎだろ常考

便利なキーバインドだから他のアプリでも使いたくなる

「CTRL+M→Enter(改行)」が使えるのは、

の三つで使えることを発見した。

それ以外のWordやExcelとか他のアプリでは使えないのが惜しすぎるのだ。
Sleipnirの検索窓でもつい「CTRL+M」を押しても「キーの組み合わせはアクションに割り当てられていません。」という旨の表示が空しくステータスバーに出てくるのみとか、「Lotus Notes」や「Becky!」などのメーラーでは、「新規メール作成」や「送受信」なったりするなど他の操作に割り当てられてしまっているのだ。
Webブラウザのアドレスや検索窓での入力や、キーアクセラレーションが設定されていないダイアログの確定の時にも「Enter」キーまで小指のばしたくない!と思い立ってやったのが今回のキーバインド設定だったのだが…。

下記のキーのキーバインドも設定したいんだけど

  • PageUp
  • PageDown
  • Home
  • End
  • Insert
  • Delete

どこの文字キーに割り当てるのが適当かなぁ…。
HomeとEndはvi風なら「^」と「$」になるんだろうけど…ホームポジションが遠いしお互い離れすぎだ。なんでviではこのキーになっているんだ?
やはり「HJKL」の上段の「YUIO」か「NM<>」になるだろうか?まずは今の挙動をもっと安定させるのも必要だなぁ。