LoginSignup
10
8

More than 5 years have passed since last update.

Karabiner-Elementsでcaps lockをescape, control, 矢印キーに変換する

Posted at

ブログからの転載です

背景

USキーボードのMacBook ProのTouch Barモデルを使っているのですが、escキーが無いので、caps_lock単体を押したときはesc、他のキーと組み合わせたときはcontrolになるようにしていました

これでそこそこ満足していたのですが、それに加えてcaps_lock + hjklキーでカーソル移動がしたくなったので設定を作りました

Karabiner-elementsの設定

以下の設定を~/.config/karabiner/karabiner.jsoncomplex_modificationsに記述します

caps_lockを単体で押したときはescキー。 hjklと組み合わせた場合は矢印キーに、その他のキーと押したときはcontrolになります

{
    "description": "caps lockを単体で押したときに、escキーを送信する。 hjklと組み合わせた場合は矢印キーに、その他のキーと押したときはcontrolにする。",
    "manipulators": [
        {
            "conditions": [
                {
                    "name": "caps_lock pressed",
                    "type": "variable_if",
                    "value": 1
                }
            ],
            "from": {
                "key_code": "h",
                "modifiers": {
                    "mandatory": [
                        "left_control"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "left_arrow"
                }
            ],
            "type": "basic"
        },
        {
            "conditions": [
                {
                    "name": "caps_lock pressed",
                    "type": "variable_if",
                    "value": 1
                }
            ],
            "from": {
                "key_code": "j",
                "modifiers": {
                    "mandatory": [
                        "left_control"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "down_arrow"
                }
            ],
            "type": "basic"
        },
        {
            "conditions": [
                {
                    "name": "caps_lock pressed",
                    "type": "variable_if",
                    "value": 1
                }
            ],
            "from": {
                "key_code": "k",
                "modifiers": {
                    "mandatory": [
                        "left_control"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "up_arrow"
                }
            ],
            "type": "basic"
        },
        {
            "conditions": [
                {
                    "name": "caps_lock pressed",
                    "type": "variable_if",
                    "value": 1
                }
            ],
            "from": {
                "key_code": "l",
                "modifiers": {
                    "mandatory": [
                        "left_control"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "right_arrow"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "caps_lock",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "set_variable": {
                        "name": "caps_lock pressed",
                        "value": 1
                    }
                },
                {
                    "key_code": "left_control",
                    "lazy": true
                }
            ],
            "to_after_key_up": [
                {
                    "set_variable": {
                        "name": "caps_lock pressed",
                        "value": 0
                    }
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "escape"
                }
            ],
            "type": "basic"
        }
    ]
}

とりあえずcaps lockが押されたらcaps_lock pressedの変数を1にして、それ見て条件分岐するようにしました。
もっといい方法があれば教えてください

矢印キーへの変換がいらない人向け

caps lockを単体で押したときはescキーとして使い、他のキーと押したときはcontrolにしたいだけの場合は下のようにすれば十分です

{
    "description": "caps lockを単体で押したときに、escキーを送信する。 他のキーと押したときはcontrolにする。",
    "manipulators": [
        {
            "from": {
                "key_code": "caps_lock",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "left_control",
                    "lazy": true
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "escape"
                }
            ],
            "type": "basic"
        }
    ]
}

参考

Karabiner-Elementsの設定項目をまとめました
https://pqrs.org/osx/karabiner/complex_modifications/

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8