スポンサーリンク
Karabiner Elementsの設定ファイル(json)を書いていて、「コロン」や「セミコロン」など、記号のキーの取扱いが難しいことが分かりました。
例えば、「コロン」キーに機能を割り当てるには、fromに「:」でも「colon」でもなく、なぜか(対応関係は後述)「quote」と書く必要があったり、「](大括弧の閉じる)」を送信するために、設定のtoに対して「]」でも「close_bracket」でもなく「backslash」が必要だったりなど、一見何が起こっているのかよく分からないような指定です。
何か設定の間違いなのか不具合なのかもしれませんが、ひとまずとある対応関係がわかり、それに従うことでうまく設定できたので、早見表を作ってみました。そちらを紹介します。
※話の中にはUSキーボードの配列の話が登場しますが、実際に利用しているMacBook Proのキーボード配列は、日本語配列(JIS配列)で、別にUS配列にして使っているわけでも何でもありません。しかし、Karabiner Elementsを使う上で、US配列を意識する必要が発生してしまいました。
目次
スポンサーリンク
なぜかUSキーボードの配列のことを考慮する必要がある
Karabiner Elementsの設定を行っていて、大抵のキーの設定では素直に「キーボードを見たまま」で、「from」や「to」の「key_code」を設定すれば良いのですが、記号のキー周辺がうまく動作しない問題がありました。
その理由には大きく分けて二つあり、一つは、特定の記号キーのkey_codeは、「;」のような記号を直接指定するのではなく、「semicolon」といった、名称で指定する必要がある、という点です。こちらは矢印キーが「left_arrow」になるなどの具体例から、早めに気が付くことができます。
問題なのは二つ目で、それはたとえ日本語配列のキーボードを使っていても、どういうわけかキーの位置を指定する際に、US配列を使って指定しなければならないという点です。
これはどういうことかというと、例えば日本語キーボードを見て「:」キーを「to」や「from」で指定したい場合に「:」や「colon」とは指定できず、「:」キーの位置はUSキーボードでは「:」ではなく「'」なので、「'」のことを意味するkey_codeである「quote」を指定しなければならない、といったようなものです。
これは記号に限らない話ですが、日本語キーボードとUSキーボードとの際が主に記号であるため、記号をいざ指定しようとした際に変なことになってしまい、この問題に遭遇してしまうのです。そして、なかなか自己解決するには時間がかかってしまいます。
日本語キーボードで「:」を指定するには「quote」、のような対応表が欲しくなる
同じように、「[」キーに機能を割り当てたいからといって「open_bracket」と指定してもダメで、日本語キーボードで「[」の位置はUSキーボードでは「]」なので、「close_bracket」と指定する必要が出てきます(ややこしい)。
対応表
このように、「○○」キーを指定するためには「△△」キーを設定に書く、というのが多数あるため、毎回キー配列を見ながら変換しても良いのですが、設定ファイルを見ていて手間に感じてしまったので、変換表を書きました。
参考にしてみてください(一部、USキーボード上には存在しないキーがあり、特殊なkey_codeを含みます。またsemicolonはJIS/US共通ですが、表に含めないと記載漏れなのかな?と思ってしまう紛らわしさがあるので、一応書いておきました)。
基本的には、一番左の記号(指定したいキーをJISキーボードで見たときに印字されている記号)と、右のkey_code(設定ファイルに書くべき名前)の対応を見ればOKです。
- JISキーボードでの見た目、USキーボードでの見た目、指定すべきkey_code
- ^、=、equal_sign
- \(¥)、該当無し、international3
- @、[、open_bracket
- [、]、close_bracket
- ;、;、semicolon
- :、'、quote
- ]、\(¥)、backslash
- \、該当無し、international1
以下は、変換不要な記号たちです:
- -、-、hyphen
- ,、,、comma
- .、.、period
- /、/、slash
例:コロン+Command → ]
上記の説明だとよく分からなかったときのために、結局どう設定するの?という部分を例を使って説明したいと思います。
Commandキーを押しながらコロン(:)キーを押したときに、「]」キーを押したことになる(]が入力される)例を紹介します(この設定は説明用で、特に便利というわけではありません)。
"manipulators": [ { "type": "basic", "from": { "key_code": "quote", "modifiers": { "mandatory": [ "command" ] } }, "to": [ { "key_code": "backslash" } ] } ]
直感的には、「from」の「key_code」に「:」や「colon」と書きそうになりますが、先ほどの変換表に「:、'、quote」とある通り、「:」の場合は「quote」と書きます。
また「to」のほうにも「]」と書いたり、「close_bracket」と書くのではなく、変換表の「]、\(¥)、backslash」の通り、「backslash」と書きます。
こうすることで、設定が成功します。あまり適当にこのあたりを指定していた場合、ログに「unknown key_code: "colon"」のように指摘されてしまうので注意してください。
スポンサーリンク
スポンサーリンク