Karabiner-Elements の設定(4) : hkob の雑記録 (196)

はじめに

hkob の雑記録の第196回目は、Karabiner-Elements の Complex Modifications を解説します。

Complex Modifications

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

Complex Modificatoins

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

Predefined rules

Import rules には非常に大量のルールが掲載されています。自分にあったものを探すのは大変かもしれません。下の方には特定のキーボードに依存するルールなども用意されていました。

ke-complex-modifications.pqrs.org

先ほどの For Japanese (日本語向けの設定) (rev 6) の下の部分は以下のようになっています。

For Japanese の追加部分

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

もう一つ Import したもの

esc キーを押した時に、英数キーも送信する (vim用)

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

esc キーを押したら英数も送信する

スクリーンショットだと見にくいので、テキストとして掲載します。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 つの設定を紹介します。

hkob.notion.site