キーマップのカスタマイズ
keymap.cを攻略する
QMKのビルド環境や大まかな作業サイクルが分かったところで、ファームウェアの肝といえるキーマップのカスタマイズに入ろう。
先程複製したキーマップ(ktu)のフォルダ内には「keymap.c」「config.h」「rules.mk」の3つのファイルが入っている。config.hとrules.mkはキーボードに装備されたUnderglow LEDの有無やNキーロールオーバーといった機能的な側面を定義するファイルなので、直接編集する頻度は低い。カスタマイズで最も重要なのはキーマップが記述される「keymap.c」なのだ。
だがいきなりkeymap.cに挑んでも、最初はよく分からないはず。そこでここではkeymap.cの見かたをまとめてみた。
1)ヘッダー部分
keymap.cの序盤はさまざまな定義を記述する部分だ。ショートカットキーを短縮表記して後に続くキーマップの可読性を上げるためにも使われるほか、レイヤーやマクロを使う下準備エリアでもある。以降のスクリーンショットは、Irisのデフォルトキーマップのkeymap.cを解説している。
2)キーマップ
36行めの「const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {」より94行めの「};」までが実際のキーマップの記述となる。Irisのデフォルトキーマップ作者は結構マメな性格なのか、ビジュアル的にキーの位置を把握しやすいよう記述しているので読みやすい。
通常QMKでキーを表現する“キーコード”は「KC_ENTER」のように頭に「KC_」を付けて表記するが、Irisのdefaultのkeymap.cでは全てKC_は省略できるようになっている(19行目の記述がポイント)。
まずは38行め、デフォルトレイヤーとなる「_QWERTY」のキーマップを眺めてみよう。3~4文字コードの部分を除けば、普通のQWERTY配列になっていることがわかる。LSFTやBSPCといった独特なキーワードはQMKのキーコード(https://docs.qmk.fm/keycodes.html)を参照すれば、具体的にどのキーに対応するのか分かる。QMKのキーコード表は一通り読んでおくといいだろう。
3)プログラム的な部分
キーマップの下には、これまでの部分よりももっとプログラミング的な何かが記述されている。この部分はキーの押下判定時などに何かする、という処理が書かれていることが多い。Irisのデフォルトキーマップでは、レイヤーを切り替える2つのキー(LOWRとRASE)を両方押し込むと別のレイヤー(_ADJUST)へ飛ぶための記述が書かれている。とりあえずはこの辺はいじらず、キーマップだけに集中するといいだろう。
この連載の記事
-
第3回
PCパーツ
オープンソース系自作キーボード「Iris」のビルドに挑戦 -
第2回
PCパーツ
自作キーボード用パーツをそろえて、お手軽自作に挑戦 -
第1回
PCパーツ
人はなぜキーボードを自作するのか? “キーボー道”への誘い -
PCパーツ
KTUの自作キーボー道 - この連載の一覧へ