iTermでの日本語入力
iTermを使っていていつもイラッとしていたのがことえりさんの切り替えボタン。僕は大抵それ以外のウィンドウでは英字/漢字モードの切り替えを⌘-[SPACE]ではなく、Ctrl-Shift-j と Ctrl-Shirt-; で切り替えてしまう癖がついている。ところがこのキーバインドが iTermではignoreになっていないため、これで切り替えはできるんだけど同時にそれぞれ Ctrl-J(改行!) と ';' が同時に入力されてしまう。vimとかでやっているともうカオスっ。
で、しばらくは「なんだかなー」と思いながら ⌘-[SPACE]したり作法通り[英数]キーと[カナ かな]キーを使っていたんだけど、やっぱりイライラ。なので、仕事の暇を見てソース拾ってきてQuick-hackしてみた。
Index: iTermKeyBindingMgr.m =================================================================== --- iTermKeyBindingMgr.m (revision 1878) +++ iTermKeyBindingMgr.m (working copy) @@ -788,6 +788,9 @@ // turn off all the other modifier bits we don't care about theModifiers = keyModifiers & (NSAlternateKeyMask | NSControlKeyMask | NSShiftKeyMask | NSCommandKeyMask | NSNumericPadKeyMask); + if((keyCode == 0x4a || keyCode == 0x2b) && + theModifiers == NSShiftKeyMask | NSControlKeyMask) return KEY_ACTION_IGNORE; + // on some keyboards, arrow keys have NSNumericPadKeyMask bit set; manually set it for keyboards that don't if(keyCode >= NSUpArrowFunctionKey && keyCode <= NSRightArrowFunctionKey)
なんとなく上手く動いているくさい。いいのかなこれ。というか、週末ちゃんとコード読んで整形してから報告しようかな。とか思った。というか既に誰かが何かしている or デフォルトのプロファイルでもこれできるのかな? とりあえず、profile中にjとか;は無かったようだけど。
追記:
後からちゃんと見たら、プロファイルのところに "hexcode" というのが・・・! これに 0x4aと0x2bをつければ良いだけだった。
ああ、なんて無駄な事をしたのでありましょう。きっとぐぐったら一発だったんだろうな ><