はじめに
hkob の雑記録の第196回目は、Karabiner-Elements の Complex Modifications を解説します。
Complex Modifications
Complex Modifications は一つのキーで複雑な作業をするときに実施するものです。私はここに6つほど機能を登録しています。3つは他の人が作成して配布しているもの(predefined rule)、3つは自分で定義したものです。

今日は、predefined の 3 つを紹介します。最初に「Add predefined rule」をクリックすると以下のような画面になります。一番上に Examples、その下に過去に私が Import したルールが並んでいます。一番上にある Import more rules をクリックすると、ブラウザでさまざまな人が登録したルールが表示されます。

Import rules には非常に大量のルールが掲載されています。自分にあったものを探すのは大変かもしれません。下の方には特定のキーボードに依存するルールなども用意されていました。
ke-complex-modifications.pqrs.org
先ほどの For Japanese (日本語向けの設定) (rev 6) の下の部分は以下のようになっています。

また、もう一つインポートしているのはこちらです。ここで、Enable を押すと表の画面に表示され有効になります。

esc キーを押した時に、英数キーも送信する (vim用)
以前のバージョンはインポートしたらそのまま使うしかありませんでした。現在のバージョンはインポート後に自分で修正できるようになっています。最初の画面で Edit を押すと、以下のような画面になります。ここで編集して、Save とすると内容を修正できます。

スクリーンショットだと見にくいので、テキストとして掲載します。from で示されている escape が押された時に、escape と japanese_eisuu が二つ押されたことにする機能となります。vim では編集終了時に esc キーを押しますが、その際に日本語モードだと vim のコマンドが有効になりません。毎回、英数に戻すのは面倒なので、esc だけで済ませるというものです。
{ "description": "escキーを押したときに、英数キーも送信する(vim用)", "manipulators": [ { "from": { "key_code": "escape" }, "to": [ { "key_code": "escape" }, { "key_code": "japanese_eisuu" } ], "type": "basic" } ] }
Ctrl+[を押したときに、英数キーも送信する(vim用) (rev 2)
esc キーはキーボードの左上にあり、手がホームポジションから離れてしまいます。そこで、esc の代わりに ctrl+[ を押すことが多いです。そのため、こちらを押した時にも英数キーを送信する必要があります。こちらのコードは以下のようになっています。こちらは先ほどよりも長くなっていますが、ansi キーボードか jis キーボードで処理を変えているようです。また、modifiers の書き方も理解できました。
{ "description": "Ctrl+[を押したときに、英数キーも送信する(vim用) (rev 2)", "manipulators": [ { "conditions": [ { "keyboard_types": ["ansi", "iso"], "type": "keyboard_type_if" } ], "from": { "key_code": "open_bracket", "modifiers": { "mandatory": ["control"] } }, "to": [ { "key_code": "open_bracket", "modifiers": ["control"] }, { "key_code": "japanese_eisuu" } ], "type": "basic" }, { "conditions": [ { "keyboard_types": ["jis"], "type": "keyboard_type_if" } ], "from": { "key_code": "close_bracket", "modifiers": { "mandatory": ["control"] } }, "to": [ { "key_code": "close_bracket", "modifiers": ["control"] }, { "key_code": "japanese_eisuu" } ], "type": "basic" } ] }
Map Left Option plus h/j/k/l to Arrows
矢印キーもキーボードの右下にあり、ホームポジションがズレる原因になります。そこで、Option キーと vim の移動コマンドである hjkl を押した時に、カーソル移動になる設定を有効にします。
{ "description": "Map Left Option plus h/j/k/l to Arrows", "manipulators": [ { "from": { "key_code": "h", "modifiers": { "mandatory": ["left_option"], "optional": ["any"] } }, "to": [{ "key_code": "left_arrow" }], "type": "basic" }, { "from": { "key_code": "j", "modifiers": { "mandatory": ["left_option"], "optional": ["any"] } }, "to": [{ "key_code": "down_arrow" }], "type": "basic" }, { "from": { "key_code": "k", "modifiers": { "mandatory": ["left_option"], "optional": ["any"] } }, "to": [{ "key_code": "up_arrow" }], "type": "basic" }, { "from": { "key_code": "l", "modifiers": { "mandatory": ["left_option"], "optional": ["any"] } }, "to": [{ "key_code": "right_arrow" }], "type": "basic" } ] }
おわりに
長くなったので、今日はここまでにします。明日は私が追加した 3 つの設定を紹介します。