のどあめ

ググってもなかなか出てこなかった情報を垂れ流すブログ。

(最終版)Karabiner-Elementsで「EISUU to Escape(入力ソースが日本語以外の場合のみ)」を実現する

以前に紹介したKarabinerの設定「EISUU to Escape(入力ソースが日本語以外の場合のみ)」をKarabiner-Elementsを使って実現する方法について、最終版と思える設定を実現できたため紹介します。

f:id:ykicisk:20170916162357p:plain
KarabinerのEISUU to Escape

以前の記事ではComplex Modificationの変数を使ったゴリ押し設定で実現する方法を紹介しましたが、Karabiner-Elements 11.2.0でinput_source_ifinput_source_ifが追加されたため完全再現ができるようになりました。 *1

設定方法

今回もComplex Modificationの設定で実現をします。

.config/karabiner/assets/complex_modifications/EisuuToEscapeInTerminal.json に以下のようなjsonファイルを配置します。

frontmost_application_ifのconditionは特定のアプリケーションを利用しているときだけに発動させたいときに設定します。自分の環境に合わせて適宜変更してください。

{
  "title": "Terminal等で入力ソースが日本語以外の場合に英数をEscapeに変更する",
  "rules": [
    {
      "description": "Terminal等で入力ソースが日本語以外の場合に英数をEscapeに変更する",
      "manipulators": [
        {
          "type": "basic",
          "from": { "key_code": "japanese_eisuu", "modifiers": { "optional": [ "any" ] } },
          "to": [ { "key_code": "escape"} ],
          "conditions": [
            {
              "type": "input_source_unless",
              "input_sources": [ { "language": "^ja$" } ]
            },
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.apple\\.Terminal$",
                "^org\\.vim\\.",
                "^com\\.googlecode\\.iterm2$",
                "^com\\.microsoft\\.VSCode$"
              ]
            }
          ]
        }
      ]
    }
  ]
}

次に、Karabiner-ElementsのPreferenceから「Complex Modifications」→「Add rule」→「Terminal等で入力ソースが日本語以外の場合に英数をEscapeに変更する」を有効にします。

以上で設定は完了です。

まとめ

非常にシンプルな設定ファイルになって満足しています。

自分以外にJSキーボード+英数をEscにする派は見たことがないですが、お役に立つ方がいたら嬉しいです。

*1:実は以前の記事を公開した時点でKarabiner-Elements 11.2.0がリリースされていたのですが、気づいていませんでした、、