ブログからの転載です
背景
USキーボードのMacBook ProのTouch Barモデルを使っているのですが、escキーが無いので、caps_lock単体を押したときはesc、他のキーと組み合わせたときはcontrolになるようにしていました
これでそこそこ満足していたのですが、それに加えてcaps_lock + hjklキーでカーソル移動がしたくなったので設定を作りました
Karabiner-elementsの設定
以下の設定を~/.config/karabiner/karabiner.json
のcomplex_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/