Macのキー設定アプリの Karabiner-Elements でIMEの状態を見て日本語入力状態かどうか等を判断して キー設定を出来る様になった様です。
input_source_if/unless
現在はまだベータ版のみですが、input_source
も加わりました。
以前Karabinerで出来た様にIMEの状態等を見て判断することも可能になりました。
ベータ版はKarabiner-Elementsの環境設定でMiscタブに行って
Check for beta updates
を行うとインストールすることが出来ます。
現在のベータ版は11.1.11になります。
新しくシステムにアクセスする部分があるためか、アップデート後起動する時に セキュリティーに関して聞かれ、システム環境設定のセキュリティーとプライバシーの一般タブで許可を行う必要があります。起動時のウィザードで開かれるのが プライバシータブなのでちょっと戸惑いましたが一般タブで許可することが出来ます。
定義としてはこんな感じで行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
もし、IMEの状態で日本語入力モードになっている時、を指定したい時は
1 2 3 |
|
を使えばOK。
これらの指定は指定文字列を含む場合、といった感じで指定されるらしく、
^
、$
は正規表現で文頭、文末なので上の^en$
ではen
を含む様な文字列は除きen
のみの場合のみに適用されます。
ja
でもそうした方が確実ですが、通常英語以外とは一緒に使わないでしょうし、
ja
を含む他のものも多分無いので大概の場合ja
だけで大丈夫。
今の状態がどの様なものか、というのはKarabiner-EventViewerで
Variablesのタブでinput_source_identifiers
としてチェックできます。
"input_source_identifiers": {
"input_mode_id": "com.apple.inputmethod.Roman",
"input_source_id": "com.google.inputmethod.Japanese.Roman",
"language": "en"
},
とか(Google日本語入力英数)
"input_source_identifiers": {
"input_mode_id": "com.apple.inputmethod.Japanese",
"input_source_id": "com.google.inputmethod.Japanese.base",
"language": "ja"
},
とか(Google日本語入力ひらがな)
"input_source_identifiers": {
"input_mode_id": "com.apple.inputmethod.Japanese",
"input_source_id": "com.apple.inputmethod.Kotoeri.Japanese",
"language": "ja"
},
とか(Apple日本語入力ひらがな)。
AppleのIMEはことえりという名前を出さなくなりましたが中の識別子としてはKotoeri
な様です。
また、IMEの状態を買えるために英数入力にするだけなら"key_code": "japanese_eisuu"
を使えば
変更が出来ますが、
それ以外に色々やりたいときなど、select_input_source
という入力が使える様になっています。
VimでNormalモード切り替え時にIMEをOFFにする
これによってVimでのIME OFFの設定が以前Karabinerでやっていたのと同じ様に出来るようになりました。
以前はどの状態でもESCを押した際、 EISU、ESC、ESCを実行する様にしていました。
EISU自体は英数入力の状態であれば何もしないのでそれほど問題のない設定です。
ESCを二回してるのは変換中とかに押した時に中途半端に英数状態に戻してInsertモードに残るのを避けたいため。
ここを一回にしておけば通常のESCと全く同じなので問題なのですが、 二回にしようとするとちょっと問題が出ます。
問題になるのはGNU screenでのコピーモード。 コピーモードにはPrefix+ESCで入りますが、 コピーモード中にESCを押すとコピーモードを終了します。
つまり二回押すと始まった瞬間に終わります。
これを避けるために.screenrcに
bindkey -m ^[ eval ''
と、コピーモード時にESCは何もしないような設定を入れてました。
これでもそれ程困ってませんでしたが、せっかくinput_source_if
が出来たのでそれを使って作り直しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
ESCと⌃-[について設定。
この設定は以下のページからもインポートできます。
ただし、このページにあるESC sends EISU ESC ESC when language is ja
とかは
ターミナルやVim上だけで有効になるようになっています。
これはVim emulationとの競合を避けるためですが、まあ他の場所では必要ないと思うので。
ちなみにオフィシャルKarabiner-Elements complex_modificationsにも EISU、ESCだけを送る設定があります。
追記: 2017/11/06
OSアップデートで10.13.1になり、それが原因かどうか定かではありませんが、
アップデートの再起動後、
Ctrl-[でVimのノーマルモードに戻る際に何か変だな、と思ったら日本語入力のままになっていて
調べてみた所
input_source_identifiers
がIMEの切り替えをしても変更されなくなってました。
普段はGoogle日本語入力だけのひらがなと英数を使っています。
Karabiner-Elementsをアップデートして再起動したりOSを再起動しても上手くいきませんでしたが、
通常Google日本語入力だけのひらがなと英数を使っている所、
一度キーボードの環境設定からAppleの日本語(ことえり)を追加して切り替えたりしてみたところ
input_source_identifiers
が変更される様になり、
日本語を削除しても変更がちゃんと反映される様になりました。
何かしら特殊な条件が重なっただけかもしれませんが、
input_source_if
などの設定が上手く動かない、という場合には
Karabiner-EventViewerでチェックして、
もしinput_source_identifiers
が動かない様であれば
他の言語を入力ソースに追加していじってみるときちんと動き出す可能性があります。
追記ここまで