この記事は、Zennにも投稿しています。
qmk_firmware/quantum/keycodes.h at master · qmk/qmk_firmware
Open-source keyboard firmware for Atmel AVR and Arm USB families - qmk/qmk_firmware
github.com
にあるQMKのキーコードのアクションごとの範囲をまとめました。ほぼ全てのQMKのアクションを網羅しているはずです。
範囲一覧
QMKでは2バイトの値でほとんど全てのキーマップを表しており、
- 基本のキーコード: 8ビット
- Modifier(ctrlなど): 5ビット
- レイヤ: 5ビット
のいずれかと余ったビットから成るキーマップの種類を表す固定ビットで構成されています。
これら2バイトの値によりキーコードが表現され、全てのキーコードは
Keycodes Overview | QMK Firmware
docs.qmk.fm
より確認できます。
以下では各キーマップの種類とその説明、そしてアドレス範囲及びそのデータ構造を記しています。このデータ構造を元に各キーコードからデータを求める実際の計算は
qmk_firmware/quantum/quantum_keycodes.h at master · qmk/qmk_firmware
Open-source keyboard firmware for Atmel AVR and Arm USB families - qmk/qmk_firmware
github.com
にあります。
凡例
項目 | 内容 |
---|---|
機能名 | QMKの機能名です。正式な名前が見つからなかったら適当なものをつけています。 |
キーマップマクロ | キーマップを作成する際の該当するマクロや定数の名前です。 |
説明 | その機能の説明です。 |
URL | 参考URLです。 |
↑各キーコードで各ビットが何を表しているかの表示です。
QK_BASIC (0x0000-0x00FF)
項目 | 内容 |
---|---|
機能名 | 特になし |
キーマップマクロ | KC_ で始まる物 |
説明 | 下のKeycodeの項目を参照 |
URL | https://docs.qmk.fm/keycodes_basic |
QK_MODS (0x0100-0x1FFF)
項目 | 内容 |
---|---|
機能名 | Modifier |
キーマップマクロ | LCTL(kc) ,LSFT(kc) など |
説明 | Modとキー同時押し。Modのデコード方法については下のModifierの項目を参照 |
URL | https://docs.qmk.fm/feature_advanced_keycodes |
modifierのデコード方法は下部を参照。
QK_MOD_TAP (0x2000-0x3FFF)
項目 | 内容 |
---|---|
機能名 | Mod-Tap |
キーマップマクロ | MT(mod, kc) |
説明 | Tapでキー,HoldでMod。 |
URL | https://docs.qmk.fm/mod_tap |
QK_LAYER_TAP (0x4000-0x4FFF)
項目 | 内容 |
---|---|
機能名 | Layer-Tap |
キーマップマクロ | LT(layer, kc) |
説明 | Tapでキー,HoldでLayer。他のレイヤ関連キーは5bitつまり32レイヤまでいけるがこれは4bitなので16レイヤまでしか指定できない。 |
URL | https://docs.qmk.fm/feature_layers |
QK_LAYER_MOD (0x5000-0x51FF)
項目 | 内容 |
---|---|
機能名 | Layer-Mod |
キーマップマクロ | LM(layer, mod) |
説明 | Hold時にMO とmod送信を同時にやる。これも16レイヤまで。 |
URL | https://docs.qmk.fm/feature_layers |
QK_TO (0x5200-0x521F)
項目 | 内容 |
---|---|
機能名 | TO |
キーマップマクロ | TO(n) |
説明 | このレイヤを有効化して他のレイヤを無効にする |
URL | https://docs.qmk.fm/feature_layers |
QK_MOMENTARY (0x5220-0x523F)
項目 | 内容 |
---|---|
機能名 | Momentary layer |
キーマップマクロ | MO(n) |
説明 | 押してる間だけレイヤ有効化 |
URL | https://docs.qmk.fm/feature_layers |
QK_DEF_LAYER (0x5240-0x525F)
項目 | 内容 |
---|---|
機能名 | Default layer |
キーマップマクロ | DEF(n) |
説明 | デフォルトレイヤ設定 |
URL | https://docs.qmk.fm/feature_layers |
QK_TOGGLE_LAYER (0x5260-0x527F)
項目 | 内容 |
---|---|
機能名 | Toggle layer |
キーマップマクロ | TG(n) |
説明 | 押下でレイヤの有効無効切り替え |
URL | https://docs.qmk.fm/feature_layers |
QK_ONE_SHOT_LAYER (0x5280-0x529F)
項目 | 内容 |
---|---|
機能名 | One shot layer |
キーマップマクロ | OSL(n) |
説明 | 次のキー押下時にこのレイヤを使用 |
URL | https://docs.qmk.fm/one_shot_keys |
QK_ONE_SHOT_MOD (0x52A0-0x52BF)
項目 | 内容 |
---|---|
機能名 | One shot mod |
キーマップマクロ | OSM(n) |
説明 | 次のキー押下時にこのModを送信 |
URL | https://docs.qmk.fm/one_shot_keys |
QK_LAYER_TAP_TOGGLE (0x52C0-0x52DF)
項目 | 内容 |
---|---|
機能名 | Layer tap toggle |
キーマップマクロ | TT(n) |
説明 | 普段はMOのように働くが何回かtapしてるとTGになるらしい |
URL | https://docs.qmk.fm/feature_layers |
QK_SWAP_HANDS (0x5600-0x56FF)
項目 | 内容 |
---|---|
機能名 | Swap hands |
キーマップマクロ | SH_T(kc) |
説明 | 分割キーボードの左右を一時的に切り替えるSwap関連のキーコード |
URL | https://docs.qmk.fm/features/swap_hands |
QK_TAP_DANCE (0x5700-0x57FF)
項目 | 内容 |
---|---|
機能名 | Tap dance |
キーマップマクロ | |
説明 | キーを何回押したかで動作を変えれる |
URL | https://docs.qmk.fm/features/tap_dance |
QK_MAGIC (0x7000-0x70FF)
項目 | 内容 |
---|---|
機能名 | Magic Key |
キーマップマクロ | |
説明 | |
URL | https://docs.qmk.fm/keycodes_magic |
QK_MIDI (0x7100-0x71FF)
項目 | 内容 |
---|---|
機能名 | MIDI |
キーマップマクロ | QK_MIDI_ |
説明 | MIDIキー。詳細は省略。 |
URL | https://docs.qmk.fm/features/midi |
QK_SEQUENCER (0x7200-0x73FF)
項目 | 内容 |
---|---|
機能名 | Sequencer |
キーマップマクロ | |
説明 | Midiに関係した何からしい |
URL | https://docs.qmk.fm/features/sequencer |
QK_JOYSTICK (0x7400-0x743F)
項目 | 内容 |
---|---|
機能名 | Joystick |
キーマップマクロ | QK_JOYSTICK_ |
説明 | ジョイスティック。 |
URL | https://docs.qmk.fm/features/joystick |
QK_PROGRAMMABLE_BUTTON (0x7440-0x747F)
項目 | 内容 |
---|---|
機能名 | Programmable button |
キーマップマクロ | QK_PROGRAMMABLE_BUTTON |
説明 | ソースコードの関数を呼び出せるみたいな感じ? |
URL | https://docs.qmk.fm/features/programmable_button |
QK_AUDIO (0x7480-0x74BF)
項目 | 内容 |
---|---|
機能名 | Audio |
キーマップマクロ | QK_AUDIO |
説明 | 音が出る |
URL | https://docs.qmk.fm/features/audio |
QK_STENO (0x74CO-0x74FF)
項目 | 内容 |
---|---|
機能名 | Stenography |
キーマップマクロ | |
説明 | ステノタイプ。という単語を今初めて知った。速記で使われてるらしい? |
URL | https://docs.qmk.fm/features/stenography |
QK_MACRO (0x7700-0x777F)
項目 | 内容 |
---|---|
機能名 | Macros |
キーマップマクロ | |
説明 | マクロ。 |
URL | https://docs.qmk.fm/feature_macros |
QK_LIGHTING (0x7800-0x78FF)
項目 | 内容 |
---|---|
機能名 | Lighting |
キーマップマクロ | |
説明 | ライティング制御。RGB LightingとRGB Matrixなどライティング関係のものは全てこの中にあります。 |
URL | https://docs.qmk.fm/features/backlight |
QK_QUANTUM (0x7C00-0x7DFF)
項目 | 内容 |
---|---|
機能名 | N/A |
キーマップマクロ | N/A |
説明 | その他特殊なキーが割り当てられています。キー一覧を折り畳んで置いておきます。 |
URL |
キー一覧
QK_KB (0x7E00-0x7E3F)
項目 | 内容 |
---|---|
機能名 | Keyboard keycode |
キーマップマクロ | QK_KB_ |
説明 | QMKのキーボード層でカスタムキーコードを定義するための予約領域 |
URL |
QK_USER (0x7E40-0x7FFF)
項目 | 内容 |
---|---|
機能名 | User keycode |
キーマップマクロ | QK_USER_ |
説明 | QMKのユーザー層でカスタムキーコードを定義するための予約領域 |
URL | https://docs.qmk.fm/feature_layers |
Keycode
Keycodeという単語が意味するものは結構曖昧ですが、今から説明するKeycodeはQMK上で
KC_
から始まるもののことを指します。Keycodeは
0x00
から0xFF
までの8ビットで表され、「普通のキー」を指します。それぞれに割り当てられている番号はHIDと大体同じですがBasic Keycodes | QMK Firmware
docs.qmk.fm
にあるように、HIDのキーボードレポートではサポートされていないマウスやメディアキーも入っているなどの違いがあります。
また、
また、
0x0000
はNO、0x0001
はTRANSPARENTを表します。Modifier
Modifierの5ビットは次のように表されています。
(modifiers.hより引用)
HIDとは違うデータ構造になっており、HIDでは8ビット必要だったのが5ビットに圧縮されています。