7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Karabiner-Elements おすすめ設定8選

Last updated at Posted at 2019-02-11

1. 親指を Virtual modifier 1

例えば JIS キーボードの場合は Space の幅が狭いため、Space の左右にあるキーは親指で押しやすいです。そのため、Virtual modifier として設定するのがおすすめです。

以下のように定義すると、lang1 2 が押されている間は変数 vk11 (離した時は 0)が設定され、単体で押した場合は かな として動作するようになります。

{
  "type": "basic",
  "from": { "key_code": "lang1", "modifiers": { "optional": [ "any" ] },
  "to": [ { "set_variable": { "name": "vk1", "value": 1 } } ],
  "to_after_key_up": [ { "set_variable": { "name": "vk1", "value": 0 } } ],
  "to_if_alone": [ { "key_code": "japanese_kana" } ]
}

2. vk1 + H / J / K / L でどこでもカーソル移動

以下の定義は、先程定義した vk1 を使って vk1 + H / J / K / L で上下左右にカーソル移動できるようにしたものです。これで、どのアプリにいても Vim 気分を味わうことができます。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "h", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "key_code": "left_arrow" } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "j", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "key_code": "down_arrow" } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "k", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "key_code": "up_arrow" } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "l", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "key_code": "right_arrow" } ]
}

3. vk1 + N / M / , / . でマウス移動

以下の定義は、先程の H / J / K / L からキーボードの行を一段下げた N / M / , / . でマウスを移動させるものです。同時に Shift も押している場合に移動距離を半分にすることで、低速モードを実現しています。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "n", "modifiers": { "mandatory": [ "shift" ] } },
  "to": [ { "mouse_key": { "x": -1536 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "m", "modifiers": { "mandatory": [ "shift" ] } },
  "to": [ { "mouse_key": { "y": 1536 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "comma", "modifiers": { "mandatory": [ "shift" ] } },
  "to": [ { "mouse_key": { "y": -1536 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "period", "modifiers": { "mandatory": [ "shift" ] } },
  "to": [ { "mouse_key": { "x": 1536 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "n" },
  "to": [ { "mouse_key": { "x": -3072 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "m" },
  "to": [ { "mouse_key": { "y": 3072 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "comma" },
  "to": [ { "mouse_key": { "y": -3072 } } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "period" },
  "to": [ { "mouse_key": { "x": 3072 } } ]
}

また、以下のように、vk1 + / で左クリック、vk1 + _ で右クリックというのもおすすめです。素早く二度入力すればダブルクリックできます。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "slash", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "pointing_button": "button1" } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "international1", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "pointing_button": "button2" } ]
}

4. vk1 + FEsc

Vim を使う方は特に Esc は多用すると思います。Touch Bar になって物理キーがなくなっても安心です。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "f" },
  "to": [ { "key_code": "escape" } ]
}

5. vk1 + P / OControl+Tab / Control+Shift+Tab

Control+Tab はブラウザ等でよく利用すると思います。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "o" },
  "to": [ { "key_code": "tab", "modifiers": [ "control", "shift" ] } ]
},
{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "p" },
  "to": [ { "key_code": "tab", "modifiers": [ "control" ] } ]
}

iTerm2 がアクティブな場合は Control+Tab ではなく Control+T3 Control+N にバインドすることで tmux で次の Window を表示できるようにしたい』といった場合は、以下のようにして実現できます。

{
  "type": "basic",
  "conditions": [ { "type": "frontmost_application_if", "bundle_identifiers": [ "com.googlecode.iterm2" ] }, { "type": "variable_if", "name": "vk1", "value": 1 } ],
  "from": { "key_code": "o" },
  "to": [ { "key_code": "t", "modifiers": [ "control" ] }, { "key_code": "p", "modifiers": [ "control" ] } ]
},

6. セミコロンをエンターに

;Enter にしてしまうのもおすすめです。何のために Enter が大きくなっているんだと思われるかもしれませんが、おすすめです。以下のように定義することで、Control + ; でちゃんと ; も入力できますし、Shift + ;+ も入力できます。

{
  "type": "basic",
  "from": { "key_code": "semicolon", "modifiers": { "mandatory": [ "control" ] } },
  "to": [ { "key_code": "semicolon" } ]
},
{
  "type": "basic",
  "from": { "key_code": "semicolon", "modifiers": { "mandatory": [ "shift" ] } },
  "to": [ { "key_code": "semicolon", "modifiers": [ "shift" ] } ]
},
{
  "type": "basic",
  "from": { "key_code": "semicolon", "modifiers": { "optional": [ "any" ] } },
  "to": [ { "key_code": "return_or_enter" } ]
}

7. アプリを一発呼び出し

vk1 同様、まずは以下のように Space の左側にあるキー lang2 を Virtual modifier の vk2 として定義します。

{
  "type": "basic",
  "from": { "key_code": "lang2", "modifiers": { "optional": [ "any" ] },
  "to": [ { "set_variable": { "name": "vk2", "value": 1 } } ],
  "to_after_key_up": [ { "set_variable": { "name": "vk2", "value": 0 } } ],
  "to_if_alone": [ { "key_code": "japanese_eisuu" } ]
}

この状態で以下のように定義すると、vk2 + J で Google Chrome を起動することができます。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk2", "value": 1 } ],
  "from": { "key_code": "j" },
  "to": [ { "shell_command": "open -a 'Google Chrome.app'" } ]
}

また、以下のように定義すると、vk2 + E を押した時に、『Alfred 3 を起動して snip が入力された状態にする』といったこともできます。

{
  "type": "basic",
  "conditions": [ { "type": "variable_if", "name": "vk2", "value": 1 } ],
  "from": { "key_code": "e" },
  "to": [ { "shell_command": "osascript -e \"tell application \\\"Alfred 3\\\" to search \\\"snip \\\"\"" } ]
}

8. ホームポジションでの数字入力

Space の右 (vk1) のさらに右にあるキー right_guivk3 として定義してしまいます。

{
  "type": "basic",
  "from": { "key_code": "right_gui", "modifiers": { "optional": [ "any" ] },
  "to": [ { "set_variable": { "name": "vk3", "value": 1 } } ],
  "to_after_key_up": [ { "set_variable": { "name": "vk3", "value": 0 } } ]
}

この状態で以下のように A, B, ... : まで定義すると、

{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "a" }, "to": [ { "key_code": "1" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "s" }, "to": [ { "key_code": "2" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "d" }, "to": [ { "key_code": "3" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "f" }, "to": [ { "key_code": "4" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "g" }, "to": [ { "key_code": "5" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "h" }, "to": [ { "key_code": "6" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "j" }, "to": [ { "key_code": "7" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "k" }, "to": [ { "key_code": "8" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "l" }, "to": [ { "key_code": "9" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "semicolon" }, "to": [ { "key_code": "0" } ] },
{ "type": "basic", "conditions": [ { "type": "variable_if", "name": "vk3", "value": 1 } ], "from": { "key_code": "quote" }, "to": [ { "key_code": "hyphen" } ] }

ホームポジションにいながら数字を入力できるようになります。電話番号を入力する際などに特に便利に感じます。

入力 結果
vk3 + A 1
vk3 + S 2
vk3 + D 3
vk3 + F 4
vk3 + G 5
vk3 + H 6
vk3 + J 7
vk3 + K 8
vk3 + L 9
vk3 + ; 0
vk3 + : -

まとめ

こちらに載せていないすべての設定は https://github.com/hioki-daichi/Personal-Rules-For-Karabiner-Elements に公開しています。Ruby から JSON を生成していたりします。

( 追記: Rust で生成、ついでにファイルの更新まで行うよう変更しました → https://github.com/hioki/karabiner-json-updater )

すでに Karabiner-Elements がインストール済みであれば、以下の URL をお使いのブラウザに貼り付けるだけで設定をインポートすることができます。よかったらお試しください。

karabiner://karabiner/assets/complex_modifications/import?url=https://raw.githubusercontent.com/hioki/karabiner-json-updater/master/personal_rules.json
  1. https://pqrs.org/osx/karabiner/json.html#virtual-modifier

  2. Apple Internal Keyboard の Space の右に配置されているキーです。キーボードによって異なると思いますので、Karabiner-EventViewer を使ってご確認ください。

  3. デフォルトだと C-b だと思います。~/.tmux.confunbind C-b; set -g prefix C-t; bind C-t send-prefix して変えています。

7
7
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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?