【QMK】JPキーコードでキーマップを定義する
とりあえず書いた。
三行
- 基本のキーコードはANSI準拠で定義されている
- キーコード自体は共通だけど、OSのキーボード設定次第で同じキーコードでも実際に入力される文字/記号が変わる(だいたい同じ位置なら同じキーコードが発行される)
- JPでキーマップを定義したい場合は
#include"keymap_jp.h"
を追加することでJP_XX
で定義でき、キーマップ定義と入力記号を一致させることができる
詳しく
USB HIDのキーボードのキーコードはいわゆるANSIと同じ組み合わせで定義されています。標準はANSIと同じ組み合わせです。
キーコードの解釈はOS側に任されているようで、「どの種類のキーボードが認識されているか」によってキーコードが変わります。ANSIを指してもOS側に今接続しているのはJPだと言い張ればGraveは半角全角になります。逆もまた然りです。
JPとANSIと見比べて、同じ位置にあるキーは同じキーコードを発行するようになっていますので、基本的にはANSIをそのままコピーすれば大体JPとして動いてくれます。
ただし、いくつかANSIにないキーがあります。具体的にはJPの「ろ」「_\」、「|\」と、変換、無変換、カタカナひらがなです。これらはANSIには存在しません。ISOだと存在する場合もあるようです。これらには、INT1~INT5が割り当てられています(順不同)。InternationalのINTのようなので、国別の独自追加キー用のものなのでしょう。
さらに、MacOSのかなと英数は別のキーコードが割り振られています。LANG1とLANG2です。Ergodoxが来るまではMacユーザーがあまりいなかったのか動作しなかったようですがmhidakaさんなどのご尽力により動作するようになったようです。
で、国別の変更点を吸収したいという要求は強いようで、quantum/keymaps_extra/以下にkeymap_jp.hなど、各言語用にQMKキーコードをリマップした定義が用意されています。通常KC_XX
で定義するところをJP_XX
で定義することができるようになります。
内容を見ればわかりますが JP->KCにリマップしているだけなので特に問題は出ません。
参考資料
JPの記号とUsage Nameとスキャンコードの対照表
この後にこの記事書いたことを忘れて別に書いたJPキーコードチートシート記事
追記
- 一部表現を修正しました。
- JISなんて存在しないと悟ったのでJPに表記を変更しました。