みなさんは、caps lock をそのままの機能として使っていますか?
私は、使っておりません。
もともと、このキーがなんのために存在しているのかもわかっていません。
ということで、Mac 使いの私は今までそれを command に割り当てていました。
これは、OSのメニューで以下から手軽に行うことができます。
[システム環境設定]->[キーボード]->[装飾キー]
話は変わって、最近コーディングの際に Vim のキーバインドを使うようになりました。
Vim では esc をよく使用します。
この esc が遠いことがフラストレーションになっていました。
何か良い方法は無いかと考えていたところ、「現状 command に割り当てられている caps lock が、esc になれば幸せになれる!」ということに気が付きました。
とはいえ、コーディング時以外では今まで通りの command が良いのです。
つまり幸せの条件は、
条件 | caps lock の割り当て |
---|---|
特定のアプリ | esc |
それ以外のアプリ | command |
ということになります。
いろいろ調べたら、Karabiner-Elements というアプリがそんな問題を解決してくれるものだとわかりました。
Karabiner-Elements は、Mac のキーボードをカスタマイズするアプリです。
今までそのアプリの存在自体は知っていたんですが、以前はカスタマイズするようなニーズが無く使用していませんでした。
今回、以下の機能に魅力を感じ使ってみることにしました。
ちなみに、このアプリ単に変更するだけなら以下のように簡単にできます。
これで足りない場合は、自分で定義ファイルを用意しアプリに読み込ませ使用します。
今回はこの定義ファイルを使用した方法を紹介します。
以下の手順に従って進めていきます。
本記事公開時のそれぞれのバージョンは以下です。
ソフトウェア | バージョン |
---|---|
macOS Catalina | 10.15.4 |
Karabiner-Elements | 12.9.0 |
アプリケーションは以下からダウンロードします。
インストールは公式サイトの以下を参考にしてください。
画面キャプチャも豊富でわかりやすいです。
定義ファイルを作成します。
jsonファイルとして作成したら、名前はなんでも構いません。
仮に以下のようにしておきます。
change_caps_lock_to_x.json
以下で示されているように記述していきます。
おおまかな構造は以下になっています。
{
"title": "ここがメニューに表示されます。"
"rules": [
{
"description": "上記titleの子要素として表示され、この単位でカスタマイズの有効化が可能になります。",
"manipulators": [
...
]
},
{
"description": "...",
"manipulators": [
...
]
},
...
]
}
上記ではルールが2個の場合です。
今回は1個のルールで記述します。
実際のキー変更の定義になります。
以下のような構造になっています。
今回の設定に必要な部分は以下です。
"manipulators": [
{
"type": "basic",
"from": {...},
"to": [...],
"conditions": [...],
"description": "自分用メモとして使用できます。"
},
...
]
それぞれの意味は以下のようになっています。
設定項目 | 意味 | 備考 |
---|---|---|
type | "basic" | ここは固定です。 |
from | 変更したいキー | 同時にインストールされるEventViewerで調べたりします。 |
to | 変更後のキー | 同時にインストールされるEventViewerで調べたりします。 |
conditions | 変更のための条件 | 今回ではアプリの指定に使用します。 |
description | 説明書き | どんな変更か後で思い出せるように記述 |
変更のための条件についての記述ですが、以下では「IntelliJ と VisualStudioCode のアプリを使用しているとき」という条件になります。
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\\.jetbrains\\.intellij$",
"^com\\.microsoft\\.VSCode$"
]
}
],
bundle_identifiersは、Karabiner-Elementsに付属のEventViewerで調べます。
詳しくは以下に記載があります。
これで、材料は揃いました。
どのような動作にさせたいかをもう一度確認します。
条件 | caps lock の割り当て |
---|---|
特定のアプリ | esc |
それ以外のアプリ | command |
特定のアプリは以下としておきます。
特定のアプリの場合は以下のようになりました。
{
"type": "basic",
"from": {
"key_code": "caps_lock"
},
"to": [
{
"key_code": "escape" }
],
"conditions": [
{
"type": "frontmost_application_if", "bundle_identifiers": [
"^com\\.jetbrains\\.intellij$",
"^com\\.microsoft\\.VSCode$"
]
}
],
"description": "caps_lock to escape if intellij"
}
それ以外の場合の定義は以下のようになりました。
{
"type": "basic",
"from": {
"key_code": "caps_lock"
},
"to": [
{
"key_code": "left_command" }
],
"conditions": [
{
"type": "frontmost_application_unless", "bundle_identifiers": [
"^com\\.jetbrains\\.intellij$",
"^com\\.microsoft\\.VSCode$"
]
}
],
"description": "caps_lock to left_command unless intellij"
},
全体的には以下のような記述になりました。
{
"title": "change caps_lock to X",
"rules": [
{
"description": "escape or command",
"manipulators":
[
{
"type": "basic",
"from": {
"key_code": "caps_lock"
},
"to": [
{
"key_code": "left_command"
}
],
"conditions": [
{
"type": "frontmost_application_unless",
"bundle_identifiers": [
"^com\\.jetbrains\\.intellij$",
"^com\\.microsoft\\.VSCode$"
]
}
],
"description": "caps_lock to left_command unless intellij"
},
{
"type": "basic",
"from": {
"key_code": "caps_lock"
},
"to": [
{
"key_code": "escape"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\\.jetbrains\\.intellij$",
"^com\\.microsoft\\.VSCode$"
]
}
],
"description": "caps_lock to escape if intellij"
}
]
}
]
}
作成したファイルを以下の場所に配置します。
~/.config/karabiner/assets/complex_modifications/change_caps_lock_to_x.json
ファイルの配置が終わったら、念のため Karabiner-Elements を一度再起動します。
起動したらアプリケーションから設定を行います。
設定方法の流れは以下に記述があります。
まずは、Step1から Add Rule
のボタンを押下します。
ルールのインポートは行わないので、Step2とStep3は省略し、Step4を行います。
ここで作成したルールを見つけてください。
作成したルールが表示されていない場合は、定義ファイルの記述に問題がある可能性があります。
記述を確認してください。
表示されている場合は、目的のルールの Enable
ボタンを押下して終了です。
これで目的の動作になっているはずです。
Karabiner-Elementsを今回始めて使いましたが、カスタマイズ項目の多さに驚きました。
さすが老舗のアプリですね。
今回は機能のごく一部しか触りませんでしたが、他にもいろいろ便利そうなカスタマイズ項目がありました。
なにはともあれ、とりあえずは目的は達成できて左手の小指が楽になりました。
よりコーディングが捗ります。