summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/constants/keycodes/keycodes_0.0.1.hjson96
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_audio.hjson84
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_basic.hjson1515
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_joystick.hjson228
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_lighting.hjson154
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_macro.hjson133
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_magic.hjson249
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_midi.hjson670
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson228
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_quantum.hjson464
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_sequencer.hjson40
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_steno.hjson20
-rw-r--r--data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson32
-rw-r--r--data/schemas/keycodes.jsonschema57
-rw-r--r--lib/python/qmk/cli/__init__.py1
-rwxr-xr-xlib/python/qmk/cli/generate/api.py14
-rw-r--r--lib/python/qmk/cli/generate/keycodes.py88
-rw-r--r--lib/python/qmk/keycodes.py57
-rw-r--r--quantum/action_code.h3
-rw-r--r--quantum/keycode.h497
-rw-r--r--quantum/keycodes.h1115
-rw-r--r--quantum/keymap_common.c6
-rw-r--r--quantum/process_keycode/process_joystick.c6
-rw-r--r--quantum/process_keycode/process_magic.c270
-rw-r--r--quantum/process_keycode/process_programmable_button.c4
-rw-r--r--quantum/quantum_keycodes.h903
-rw-r--r--quantum/send_string/send_string_keycodes.h61
-rw-r--r--quantum/via.c1
-rw-r--r--quantum/via.h11
-rw-r--r--quantum/via_ensure_keycode.h344
30 files changed, 5472 insertions, 1879 deletions
diff --git a/data/constants/keycodes/keycodes_0.0.1.hjson b/data/constants/keycodes/keycodes_0.0.1.hjson
new file mode 100644
index 0000000000..7ba1ecf201
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1.hjson
@@ -0,0 +1,96 @@
+{
+ "ranges": {
+ "0x0000/0x00FF": {
+ "define": "QK_BASIC"
+ },
+ "0x0100/0x1EFF": {
+ "define": "QK_MODS"
+ },
+ "0x2000/0x1FFF": {
+ "define": "QK_MOD_TAP"
+ },
+ "0x4000/0x0FFF": {
+ "define": "QK_LAYER_TAP"
+ },
+ "0x5000/0x01FF": {
+ "define": "QK_LAYER_MOD"
+ },
+ "0x5200/0x001F": {
+ "define": "QK_TO"
+ },
+ "0x5220/0x001F": {
+ "define": "QK_MOMENTARY"
+ },
+ "0x5240/0x001F": {
+ "define": "QK_DEF_LAYER"
+ },
+ "0x5260/0x001F": {
+ "define": "QK_TOGGLE_LAYER"
+ },
+ "0x5280/0x001F": {
+ "define": "QK_ONE_SHOT_LAYER"
+ },
+ "0x52A0/0x001F": {
+ "define": "QK_ONE_SHOT_MOD"
+ },
+ "0x52C0/0x001F": {
+ "define": "QK_LAYER_TAP_TOGGLE"
+ },
+ // 0x52E0/0x001F - UNUSED
+ // 0x5300/0x02FF - UNUSED
+ "0x5600/0x00FF": {
+ "define": "QK_SWAP_HANDS"
+ },
+ "0x5700/0x00FF": {
+ "define": "QK_TAP_DANCE"
+ },
+ // 0x5800/0x17FF - UNUSED
+ "0x7000/0x00FF": {
+ "define": "QK_MAGIC"
+ },
+ "0x7100/0x00FF": {
+ "define": "QK_MIDI"
+ },
+ "0x7200/0x01FF": {
+ "define": "QK_SEQUENCER"
+ },
+ "0x7400/0x003F": {
+ "define": "QK_JOYSTICK"
+ },
+ "0x7440/0x003F": {
+ "define": "QK_PROGRAMMABLE_BUTTON"
+ },
+ "0x7480/0x003F": {
+ "define": "QK_AUDIO"
+ },
+ "0x74C0/0x003F": {
+ "define": "QK_STENO"
+ },
+ // 0x7500/0x01FF - UNUSED
+ "0x7700/0x007F": {
+ "define": "QK_MACRO"
+ },
+ // 0x7780/0x007F - UNUSED
+ "0x7800/0x00FF": {
+ "define": "QK_LIGHTING"
+ },
+ // 0x7900/0x02FF - UNUSED
+ "0x7C00/0x01FF": {
+ "define": "QK_QUANTUM"
+ },
+ "0x7E00/0x00FF": {
+ "define": "QK_KB"
+ },
+ "0x7F00/0x00FF": {
+ "define": "QK_USER"
+ },
+ "0x8000/0x7FFF": {
+ "define": "QK_UNICODE"
+ }
+ },
+ "keycodes": {
+ "0x7E00": {
+ "key": "SAFE_RANGE"
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_audio.hjson b/data/constants/keycodes/keycodes_0.0.1_audio.hjson
new file mode 100644
index 0000000000..d26e515682
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_audio.hjson
@@ -0,0 +1,84 @@
+{
+ "keycodes": {
+ "0x7480": {
+ "group": "audio",
+ "key": "AU_ON"
+ },
+ "0x7481": {
+ "group": "audio",
+ "key": "AU_OFF"
+ },
+ "0x7482": {
+ "group": "audio",
+ "key": "AU_TOG"
+ },
+
+ "0x748A": {
+ "group": "audio",
+ "key": "CLICKY_TOGGLE",
+ "aliases": [
+ "CK_TOGG"
+ ]
+ },
+ "0x748B": {
+ "group": "audio",
+ "key": "CLICKY_ENABLE",
+ "aliases": [
+ "CK_ON"
+ ]
+ },
+ "0x748C": {
+ "group": "audio",
+ "key": "CLICKY_DISABLE",
+ "aliases": [
+ "CK_OFF"
+ ]
+ },
+ "0x748D": {
+ "group": "audio",
+ "key": "CLICKY_UP",
+ "aliases": [
+ "CK_UP"
+ ]
+ },
+ "0x748E": {
+ "group": "audio",
+ "key": "CLICKY_DOWN",
+ "aliases": [
+ "CK_DOWN"
+ ]
+ },
+ "0x748F": {
+ "group": "audio",
+ "key": "CLICKY_RESET",
+ "aliases": [
+ "CK_RST"
+ ]
+ },
+
+ "0x7490": {
+ "group": "audio",
+ "key": "MU_ON"
+ },
+ "0x7491": {
+ "group": "audio",
+ "key": "MU_OFF"
+ },
+ "0x7492": {
+ "group": "audio",
+ "key": "MU_TOG"
+ },
+ "0x7493": {
+ "group": "audio",
+ "key": "MU_MOD"
+ },
+ "0x7494": {
+ "group": "audio",
+ "key": "MUV_IN"
+ },
+ "0x7495": {
+ "group": "audio",
+ "key": "MUV_DE"
+ }
+ }
+}
diff --git a/data/constants/keycodes/keycodes_0.0.1_basic.hjson b/data/constants/keycodes/keycodes_0.0.1_basic.hjson
new file mode 100644
index 0000000000..7141d553b0
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_basic.hjson
@@ -0,0 +1,1515 @@
+{
+ "keycodes": {
+ "0x0000": {
+ "group": "internal",
+ "key": "KC_NO",
+ "label": "",
+ "aliases": [
+ "XXXXXXX"
+ ]
+ },
+ "0x0001": {
+ "group": "internal",
+ "key": "KC_TRANSPARENT",
+ "label": "",
+ "aliases": [
+ "_______",
+ "KC_TRNS"
+ ]
+ },
+ "0x0004": {
+ "group": "basic",
+ "key": "KC_A",
+ "label": "A"
+ },
+ "0x0005": {
+ "group": "basic",
+ "key": "KC_B",
+ "label": "B"
+ },
+ "0x0006": {
+ "group": "basic",
+ "key": "KC_C",
+ "label": "C"
+ },
+ "0x0007": {
+ "group": "basic",
+ "key": "KC_D",
+ "label": "D"
+ },
+ "0x0008": {
+ "group": "basic",
+ "key": "KC_E",
+ "label": "E"
+ },
+ "0x0009": {
+ "group": "basic",
+ "key": "KC_F",
+ "label": "F"
+ },
+ "0x000A": {
+ "group": "basic",
+ "key": "KC_G",
+ "label": "G"
+ },
+ "0x000B": {
+ "group": "basic",
+ "key": "KC_H",
+ "label": "H"
+ },
+ "0x000C": {
+ "group": "basic",
+ "key": "KC_I",
+ "label": "I"
+ },
+ "0x000D": {
+ "group": "basic",
+ "key": "KC_J",
+ "label": "J"
+ },
+ "0x000E": {
+ "group": "basic",
+ "key": "KC_K",
+ "label": "K"
+ },
+ "0x000F": {
+ "group": "basic",
+ "key": "KC_L",
+ "label": "L"
+ },
+ "0x0010": {
+ "group": "basic",
+ "key": "KC_M",
+ "label": "M"
+ },
+ "0x0011": {
+ "group": "basic",
+ "key": "KC_N",
+ "label": "N"
+ },
+ "0x0012": {
+ "group": "basic",
+ "key": "KC_O",
+ "label": "O"
+ },
+ "0x0013": {
+ "group": "basic",
+ "key": "KC_P",
+ "label": "P"
+ },
+ "0x0014": {
+ "group": "basic",
+ "key": "KC_Q",
+ "label": "Q"
+ },
+ "0x0015": {
+ "group": "basic",
+ "key": "KC_R",
+ "label": "R"
+ },
+ "0x0016": {
+ "group": "basic",
+ "key": "KC_S",
+ "label": "S"
+ },
+ "0x0017": {
+ "group": "basic",
+ "key": "KC_T",
+ "label": "T"
+ },
+ "0x0018": {
+ "group": "basic",
+ "key": "KC_U",
+ "label": "U"
+ },
+ "0x0019": {
+ "group": "basic",
+ "key": "KC_V",
+ "label": "V"
+ },
+ "0x001A": {
+ "group": "basic",
+ "key": "KC_W",
+ "label": "W"
+ },
+ "0x001B": {
+ "group": "basic",
+ "key": "KC_X",
+ "label": "X"
+ },
+ "0x001C": {
+ "group": "basic",
+ "key": "KC_Y",
+ "label": "Y"
+ },
+ "0x001D": {
+ "group": "basic",
+ "key": "KC_Z",
+ "label": "Z"
+ },
+ "0x001E": {
+ "group": "basic",
+ "key": "KC_1",
+ "label": "1"
+ },
+ "0x001F": {
+ "group": "basic",
+ "key": "KC_2",
+ "label": "2"
+ },
+ "0x0020": {
+ "group": "basic",
+ "key": "KC_3",
+ "label": "3"
+ },
+ "0x0021": {
+ "group": "basic",
+ "key": "KC_4",
+ "label": "4"
+ },
+ "0x0022": {
+ "group": "basic",
+ "key": "KC_5",
+ "label": "5"
+ },
+ "0x0023": {
+ "group": "basic",
+ "key": "KC_6",
+ "label": "6"
+ },
+ "0x0024": {
+ "group": "basic",
+ "key": "KC_7",
+ "label": "7"
+ },
+ "0x0025": {
+ "group": "basic",
+ "key": "KC_8",
+ "label": "8"
+ },
+ "0x0026": {
+ "group": "basic",
+ "key": "KC_9",
+ "label": "9"
+ },
+ "0x0027": {
+ "group": "basic",
+ "key": "KC_0",
+ "label": "0"
+ },
+ "0x0028": {
+ "group": "basic",
+ "key": "KC_ENTER",
+ "label": "Enter",
+ "aliases": [
+ "KC_ENT"
+ ]
+ },
+ "0x0029": {
+ "group": "basic",
+ "key": "KC_ESCAPE",
+ "label": "Esc",
+ "aliases": [
+ "KC_ESC"
+ ]
+ },
+ "0x002A": {
+ "group": "basic",
+ "key": "KC_BACKSPACE",
+ "label": "Backspace",
+ "aliases": [
+ "KC_BSPC"
+ ]
+ },
+ "0x002B": {
+ "group": "basic",
+ "key": "KC_TAB",
+ "label": "Tab"
+ },
+ "0x002C": {
+ "group": "basic",
+ "key": "KC_SPACE",
+ "label": "Spacebar",
+ "aliases": [
+ "KC_SPC"
+ ]
+ },
+ "0x002D": {
+ "group": "basic",
+ "key": "KC_MINUS",
+ "label": "-",
+ "aliases": [
+ "KC_MINS"
+ ]
+ },
+ "0x002E": {
+ "group": "basic",
+ "key": "KC_EQUAL",
+ "label": "=",
+ "aliases": [
+ "KC_EQL"
+ ]
+ },
+ "0x002F": {
+ "group": "basic",
+ "key": "KC_LEFT_BRACKET",
+ "label": "]",
+ "aliases": [
+ "KC_LBRC"
+ ]
+ },
+ "0x0030": {
+ "group": "basic",
+ "key": "KC_RIGHT_BRACKET",
+ "label": "[",
+ "aliases": [
+ "KC_RBRC"
+ ]
+ },
+ "0x0031": {
+ "group": "basic",
+ "key": "KC_BACKSLASH",
+ "label": "\\",
+ "aliases": [
+ "KC_BSLS"
+ ]
+ },
+ "0x0032": {
+ "group": "basic",
+ "key": "KC_NONUS_HASH",
+ "label": "#",
+ "aliases": [
+ "KC_NUHS"
+ ]
+ },
+ "0x0033": {
+ "group": "basic",
+ "key": "KC_SEMICOLON",
+ "label": ";",
+ "aliases": [
+ "KC_SCLN"
+ ]
+ },
+ "0x0034": {
+ "group": "basic",
+ "key": "KC_QUOTE",
+ "label": "'",
+ "aliases": [
+ "KC_QUOT"
+ ]
+ },
+ "0x0035": {
+ "group": "basic",
+ "key": "KC_GRAVE",
+ "label": "`",
+ "aliases": [
+ "KC_GRV"
+ ]
+ },
+ "0x0036": {
+ "group": "basic",
+ "key": "KC_COMMA",
+ "label": ",",
+ "aliases": [
+ "KC_COMM"
+ ]
+ },
+ "0x0037": {
+ "group": "basic",
+ "key": "KC_DOT",
+ "label": "."
+ },
+ "0x0038": {
+ "group": "basic",
+ "key": "KC_SLASH",
+ "label": "/",
+ "aliases": [
+ "KC_SLSH"
+ ]
+ },
+ "0x0039": {
+ "group": "basic",
+ "key": "KC_CAPS_LOCK",
+ "label": "Caps Lock",
+ "aliases": [
+ "KC_CAPS"
+ ]
+ },
+ "0x003A": {
+ "group": "basic",
+ "key": "KC_F1",
+ "label": "F1"
+ },
+ "0x003B": {
+ "group": "basic",
+ "key": "KC_F2",
+ "label": "F2"
+ },
+ "0x003C": {
+ "group": "basic",
+ "key": "KC_F3",
+ "label": "F3"
+ },
+ "0x003D": {
+ "group": "basic",
+ "key": "KC_F4",
+ "label": "F4"
+ },
+ "0x003E": {
+ "group": "basic",
+ "key": "KC_F5",
+ "label": "F5"
+ },
+ "0x003F": {
+ "group": "basic",
+ "key": "KC_F6",
+ "label": "F6"
+ },
+ "0x0040": {
+ "group": "basic",
+ "key": "KC_F7",
+ "label": "F7"
+ },
+ "0x0041": {
+ "group": "basic",
+ "key": "KC_F8",
+ "label": "F8"
+ },
+ "0x0042": {
+ "group": "basic",
+ "key": "KC_F9",
+ "label": "F9"
+ },
+ "0x0043": {
+ "group": "basic",
+ "key": "KC_F10",
+ "label": "F10"
+ },
+ "0x0044": {
+ "group": "basic",
+ "key": "KC_F11",
+ "label": "F11"
+ },
+ "0x0045": {
+ "group": "basic",
+ "key": "KC_F12",
+ "label": "F12"
+ },
+ "0x0046": {
+ "group": "basic",
+ "key": "KC_PRINT_SCREEN",
+ "label": "Print Screen",
+ "aliases": [
+ "KC_PSCR"
+ ]
+ },
+ "0x0047": {
+ "group": "basic",
+ "key": "KC_SCROLL_LOCK",
+ "label": "Scroll Lock",
+ "aliases": [
+ "KC_SCRL",
+ "KC_BRMD"
+ ]
+ },
+ "0x0048": {
+ "group": "basic",
+ "key": "KC_PAUSE",
+ "label": "Pause",
+ "aliases": [
+ "KC_PAUS",
+ "KC_BRK",
+ "KC_BRMU"
+ ]
+ },
+ "0x0049": {
+ "group": "basic",
+ "key": "KC_INSERT",
+ "label": "Insert",
+ "aliases": [
+ "KC_INS"
+ ]
+ },
+ "0x004A": {
+ "group": "basic",
+ "key": "KC_HOME",
+ "label": "Home"
+ },
+ "0x004B": {
+ "group": "basic",
+ "key": "KC_PAGE_UP",
+ "label": "Page Up",
+ "aliases": [
+ "KC_PGUP"
+ ]
+ },
+ "0x004C": {
+ "group": "basic",
+ "key": "KC_DELETE",
+ "label": "Delete",
+ "aliases": [
+ "KC_DEL"
+ ]
+ },
+ "0x004D": {
+ "group": "basic",
+ "key": "KC_END",
+ "label": "End"
+ },
+ "0x004E": {
+ "group": "basic",
+ "key": "KC_PAGE_DOWN",
+ "label": "Page Down",
+ "aliases": [
+ "KC_PGDN"
+ ]
+ },
+ "0x004F": {
+ "group": "basic",
+ "key": "KC_RIGHT",
+ "label": "Right",
+ "aliases": [
+ "KC_RGHT"
+ ]
+ },
+ "0x0050": {
+ "group": "basic",
+ "key": "KC_LEFT",
+ "label": "Left"
+ },
+ "0x0051": {
+ "group": "basic",
+ "key": "KC_DOWN",
+ "label": "Down"
+ },
+ "0x0052": {
+ "group": "basic",
+ "key": "KC_UP",
+ "label": "Up"
+ },
+ "0x0053": {
+ "group": "basic",
+ "key": "KC_NUM_LOCK",
+ "label": "Num Lock",
+ "aliases": [
+ "KC_NUM"
+ ]
+ },
+ "0x0054": {
+ "group": "basic",
+ "key": "KC_KP_SLASH",
+ "label": "/",
+ "aliases": [
+ "KC_PSLS"
+ ]
+ },
+ "0x0055": {
+ "group": "basic",
+ "key": "KC_KP_ASTERISK",
+ "label": "*",
+ "aliases": [
+ "KC_PAST"
+ ]
+ },
+ "0x0056": {
+ "group": "basic",
+ "key": "KC_KP_MINUS",
+ "label": "-",
+ "aliases": [
+ "KC_PMNS"
+ ]
+ },
+ "0x0057": {
+ "group": "basic",
+ "key": "KC_KP_PLUS",
+ "label": "+",
+ "aliases": [
+ "KC_PPLS"
+ ]
+ },
+ "0x0058": {
+ "group": "basic",
+ "key": "KC_KP_ENTER",
+ "label": "Enter",
+ "aliases": [
+ "KC_PENT"
+ ]
+ },
+ "0x0059": {
+ "group": "basic",
+ "key": "KC_KP_1",
+ "label": "1",
+ "aliases": [
+ "KC_P1"
+ ]
+ },
+ "0x005A": {
+ "group": "basic",
+ "key": "KC_KP_2",
+ "label": "2",
+ "aliases": [
+ "KC_P2"
+ ]
+ },
+ "0x005B": {
+ "group": "basic",
+ "key": "KC_KP_3",
+ "label": "3",
+ "aliases": [
+ "KC_P3"
+ ]
+ },
+ "0x005C": {
+ "group": "basic",
+ "key": "KC_KP_4",
+ "label": "4",
+ "aliases": [
+ "KC_P4"
+ ]
+ },
+ "0x005D": {
+ "group": "basic",
+ "key": "KC_KP_5",
+ "label": "5",
+ "aliases": [
+ "KC_P5"
+ ]
+ },
+ "0x005E": {
+ "group": "basic",
+ "key": "KC_KP_6",
+ "label": "6",
+ "aliases": [
+ "KC_P6"
+ ]
+ },
+ "0x005F": {
+ "group": "basic",
+ "key": "KC_KP_7",
+ "label": "7",
+ "aliases": [
+ "KC_P7"
+ ]
+ },
+ "0x0060": {
+ "group": "basic",
+ "key": "KC_KP_8",
+ "label": "8",
+ "aliases": [
+ "KC_P8"
+ ]
+ },
+ "0x0061": {
+ "group": "basic",
+ "key": "KC_KP_9",
+ "label": "9",
+ "aliases": [
+ "KC_P9"
+ ]
+ },
+ "0x0062": {
+ "group": "basic",
+ "key": "KC_KP_0",
+ "label": "0",
+ "aliases": [
+ "KC_P0"
+ ]
+ },
+ "0x0063": {
+ "group": "basic",
+ "key": "KC_KP_DOT",
+ "label": ".",
+ "aliases": [
+ "KC_PDOT"
+ ]
+ },
+ "0x0064": {
+ "group": "basic",
+ "key": "KC_NONUS_BACKSLASH",
+ "label": "\\",
+ "aliases": [
+ "KC_NUBS"
+ ]
+ },
+ "0x0065": {
+ "group": "basic",
+ "key": "KC_APPLICATION",
+ "label": "Application",
+ "aliases": [
+ "KC_APP"
+ ]
+ },
+ "0x0066": {
+ "group": "basic",
+ "key": "KC_KB_POWER",
+ "label": "Application"
+ },
+ "0x0067": {
+ "group": "basic",
+ "key": "KC_KP_EQUAL",
+ "label": "=",
+ "aliases": [
+ "KC_PEQL"
+ ]
+ },
+ "0x0068": {
+ "group": "basic",
+ "key": "KC_F13",
+ "label": "F13"
+ },
+ "0x0069": {
+ "group": "basic",
+ "key": "KC_F14",
+ "label": "F14"
+ },
+ "0x006A": {
+ "group": "basic",
+ "key": "KC_F15",
+ "label": "F15"
+ },
+ "0x006B": {
+ "group": "basic",
+ "key": "KC_F16",
+ "label": "F16"
+ },
+ "0x006C": {
+ "group": "basic",
+ "key": "KC_F17",
+ "label": "F17"
+ },
+ "0x006D": {
+ "group": "basic",
+ "key": "KC_F18",
+ "label": "F18"
+ },
+ "0x006E": {
+ "group": "basic",
+ "key": "KC_F19",
+ "label": "F19"
+ },
+ "0x006F": {
+ "group": "basic",
+ "key": "KC_F20",
+ "label": "F20"
+ },
+ "0x0070": {
+ "group": "basic",
+ "key": "KC_F21",
+ "label": "F21"
+ },
+ "0x0071": {
+ "group": "basic",
+ "key": "KC_F22",
+ "label": "F22"
+ },
+ "0x0072": {
+ "group": "basic",
+ "key": "KC_F23",
+ "label": "F23"
+ },
+ "0x0073": {
+ "group": "basic",
+ "key": "KC_F24",
+ "label": "F24"
+ },
+ "0x0074": {
+ "group": "basic",
+ "key": "KC_EXECUTE",
+ "label": "Execute",
+ "aliases": [
+ "KC_EXEC"
+ ]
+ },
+ "0x0075": {
+ "group": "basic",
+ "key": "KC_HELP",
+ "label": "Help"
+ },
+ "0x0076": {
+ "group": "basic",
+ "key": "KC_MENU",
+ "label": "Menu"
+ },
+ "0x0077": {
+ "group": "basic",
+ "key": "KC_SELECT",
+ "label": "Select",
+ "aliases": [
+ "KC_SLCT"
+ ]
+ },
+ "0x0078": {
+ "group": "basic",
+ "key": "KC_STOP",
+ "label": "Stop"
+ },
+ "0x0079": {
+ "group": "basic",
+ "key": "KC_AGAIN",
+ "label": "Again",
+ "aliases": [
+ "KC_AGIN"
+ ]
+ },
+ "0x007A": {
+ "group": "basic",
+ "key": "KC_UNDO",
+ "label": "Undo"
+ },
+ "0x007B": {
+ "group": "basic",
+ "key": "KC_CUT",
+ "label": "Cut"
+ },
+ "0x007C": {
+ "group": "basic",
+ "key": "KC_COPY",
+ "label": "Copy"
+ },
+ "0x007D": {
+ "group": "basic",
+ "key": "KC_PASTE",
+ "label": "Paste",
+ "aliases": [
+ "KC_PSTE"
+ ]
+ },
+ "0x007E": {
+ "group": "basic",
+ "key": "KC_FIND",
+ "label": "Find"
+ },
+ "0x007F": {
+ "group": "basic",
+ "key": "KC_KB_MUTE",
+ "label": "Mute"
+ },
+ "0x0080": {
+ "group": "basic",
+ "key": "KC_KB_VOLUME_UP",
+ "label": "Volume Up"
+ },
+ "0x0081": {
+ "group": "basic",
+ "key": "KC_KB_VOLUME_DOWN",
+ "label": "Volume Down"
+ },
+ "0x0082": {
+ "group": "basic",
+ "key": "KC_LOCKING_CAPS_LOCK",
+ "label": "Caps Lock",
+ "aliases": [
+ "KC_LCAP"
+ ]
+ },
+ "0x0083": {
+ "group": "basic",
+ "key": "KC_LOCKING_NUM_LOCK",
+ "label": "Num Lock",
+ "aliases": [
+ "KC_LNUM"
+ ]
+ },
+ "0x0084": {
+ "group": "basic",
+ "key": "KC_LOCKING_SCROLL_LOCK",
+ "label": "Scroll Lock",
+ "aliases": [
+ "KC_LSCR"
+ ]
+ },
+ "0x0085": {
+ "group": "basic",
+ "key": "KC_KP_COMMA",
+ "label": ",",
+ "aliases": [
+ "KC_PCMM"
+ ]
+ },
+ "0x0086": {
+ "group": "basic",
+ "key": "KC_KP_EQUAL_AS400",
+ "label": "="
+ },
+ "0x0087": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_1",
+ "label": "INT 1",
+ "aliases": [
+ "KC_INT1"
+ ]
+ },
+ "0x0088": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_2",
+ "label": "INT 2",
+ "aliases": [
+ "KC_INT2"
+ ]
+ },
+ "0x0089": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_3",
+ "label": "INT 3",
+ "aliases": [
+ "KC_INT3"
+ ]
+ },
+ "0x008A": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_4",
+ "label": "INT 4",
+ "aliases": [
+ "KC_INT4"
+ ]
+ },
+ "0x008B": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_5",
+ "label": "INT 5",
+ "aliases": [
+ "KC_INT5"
+ ]
+ },
+ "0x008C": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_6",
+ "label": "INT 6",
+ "aliases": [
+ "KC_INT6"
+ ]
+ },
+ "0x008D": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_7",
+ "label": "INT 7",
+ "aliases": [
+ "KC_INT7"
+ ]
+ },
+ "0x008E": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_8",
+ "label": "INT 8",
+ "aliases": [
+ "KC_INT8"
+ ]
+ },
+ "0x008F": {
+ "group": "basic",
+ "key": "KC_INTERNATIONAL_9",
+ "label": "INT 9",
+ "aliases": [
+ "KC_INT9"
+ ]
+ },
+ "0x0090": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_1",
+ "label": "LANG 1",
+ "aliases": [
+ "KC_LNG1"
+ ]
+ },
+ "0x0091": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_2",
+ "label": "LANG 2",
+ "aliases": [
+ "KC_LNG2"
+ ]
+ },
+ "0x0092": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_3",
+ "label": "LANG 3",
+ "aliases": [
+ "KC_LNG3"
+ ]
+ },
+ "0x0093": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_4",
+ "label": "LANG 4",
+ "aliases": [
+ "KC_LNG4"
+ ]
+ },
+ "0x0094": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_5",
+ "label": "LANG 5",
+ "aliases": [
+ "KC_LNG5"
+ ]
+ },
+ "0x0095": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_6",
+ "label": "LANG 6",
+ "aliases": [
+ "KC_LNG6"
+ ]
+ },
+ "0x0096": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_7",
+ "label": "LANG 7",
+ "aliases": [
+ "KC_LNG7"
+ ]
+ },
+ "0x0097": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_8",
+ "label": "LANG 8",
+ "aliases": [
+ "KC_LNG8"
+ ]
+ },
+ "0x0098": {
+ "group": "basic",
+ "key": "KC_LANGUAGE_9",
+ "label": "LANG 9",
+ "aliases": [
+ "KC_LNG9"
+ ]
+ },
+ "0x0099": {
+ "group": "basic",
+ "key": "KC_ALTERNATE_ERASE",
+ "label": "Alternate Erase",
+ "aliases": [
+ "KC_ERAS"
+ ]
+ },
+ "0x009A": {
+ "group": "basic",
+ "key": "KC_SYSTEM_REQUEST",
+ "label": "SysReq/Attention",
+ "aliases": [
+ "KC_SYRQ"
+ ]
+ },
+ "0x009B": {
+ "group": "basic",
+ "key": "KC_CANCEL",
+ "label": "Cancel",
+ "aliases": [
+ "KC_CNCL"
+ ]
+ },
+ "0x009C": {
+ "group": "basic",
+ "key": "KC_CLEAR",
+ "label": "Clear",
+ "aliases": [
+ "KC_CLR"
+ ]
+ },
+ "0x009D": {
+ "group": "basic",
+ "key": "KC_PRIOR",
+ "label": "Prior",
+ "aliases": [
+ "KC_PRIR"
+ ]
+ },
+ "0x009E": {
+ "group": "basic",
+ "key": "KC_RETURN",
+ "label": "Return",
+ "aliases": [
+ "KC_RETN"
+ ]
+ },
+ "0x009F": {
+ "group": "basic",
+ "key": "KC_SEPARATOR",
+ "label": "Separator",
+ "aliases": [
+ "KC_SEPR"
+ ]
+ },
+ "0x00A0": {
+ "group": "basic",
+ "key": "KC_OUT",
+ "label": "Out"
+ },
+ "0x00A1": {
+ "group": "basic",
+ "key": "KC_OPER",
+ "label": "Oper"
+ },
+ "0x00A2": {
+ "group": "basic",
+ "key": "KC_CLEAR_AGAIN",
+ "label": "Clear/Again",
+ "aliases": [
+ "KC_CLAG"
+ ]
+ },
+ "0x00A3": {
+ "group": "basic",
+ "key": "KC_CRSEL",
+ "label": "CrSel/Props",
+ "aliases": [
+ "KC_CRSL"
+ ]
+ },
+ "0x00A4": {
+ "group": "basic",
+ "key": "KC_EXSEL",
+ "label": "ExSel",
+ "aliases": [
+ "KC_EXSL"
+ ]
+ },
+ "0x00A5": {
+ "group": "system",
+ "key": "KC_SYSTEM_POWER",
+ "label": "System Power Down",
+ "aliases": [
+ "KC_PWR"
+ ]
+ },
+ "0x00A6": {
+ "group": "system",
+ "key": "KC_SYSTEM_SLEEP",
+ "label": "System Sleep",
+ "aliases": [
+ "KC_SLEP"
+ ]
+ },
+ "0x00A7": {
+ "group": "system",
+ "key": "KC_SYSTEM_WAKE",
+ "label": "System Wake",
+ "aliases": [
+ "KC_WAKE"
+ ]
+ },
+ "0x00A8": {
+ "group": "media",
+ "key": "KC_AUDIO_MUTE",
+ "label": "Mute",
+ "aliases": [
+ "KC_MUTE"
+ ]
+ },
+ "0x00A9": {
+ "group": "media",
+ "key": "KC_AUDIO_VOL_UP",
+ "label": "Volume Up",
+ "aliases": [
+ "KC_VOLU"
+ ]
+ },
+ "0x00AA": {
+ "group": "media",
+ "key": "KC_AUDIO_VOL_DOWN",
+ "label": "Volume Down",
+ "aliases": [
+ "KC_VOLD"
+ ]
+ },
+ "0x00AB": {
+ "group": "media",
+ "key": "KC_MEDIA_NEXT_TRACK",
+ "label": "Next",
+ "aliases": [
+ "KC_MNXT"
+ ]
+ },
+ "0x00AC": {
+ "group": "media",
+ "key": "KC_MEDIA_PREV_TRACK",
+ "label": "Previous",
+ "aliases": [
+ "KC_MPRV"
+ ]
+ },
+ "0x00AD": {
+ "group": "media",
+ "key": "KC_MEDIA_STOP",
+ "label": "Stop",
+ "aliases": [
+ "KC_MSTP"
+ ]
+ },
+ "0x00AE": {
+ "group": "media",
+ "key": "KC_MEDIA_PLAY_PAUSE",
+ "label": "Mute",
+ "aliases": [
+ "KC_MPLY"
+ ]
+ },
+ "0x00AF": {
+ "group": "media",
+ "key": "KC_MEDIA_SELECT",
+ "label": "Launch Player",
+ "aliases": [
+ "KC_MSEL"
+ ]
+ },
+ "0x00B0": {
+ "group": "media",
+ "key": "KC_MEDIA_EJECT",
+ "label": "Eject",
+ "aliases": [
+ "KC_EJCT"
+ ]
+ },
+ "0x00B1": {
+ "group": "media",
+ "key": "KC_MAIL",
+ "label": "Launch Mail"
+ },
+ "0x00B2": {
+ "group": "media",
+ "key": "KC_CALCULATOR",
+ "label": "Launch Calculator",
+ "aliases": [
+ "KC_CALC"
+ ]
+ },
+ "0x00B3": {
+ "group": "media",
+ "key": "KC_MY_COMPUTER",
+ "label": "Launch My Computer",
+ "aliases": [
+ "KC_MYCM"
+ ]
+ },
+ "0x00B4": {
+ "group": "media",
+ "key": "KC_WWW_SEARCH",
+ "label": "Browser Search",
+ "aliases": [
+ "KC_WSCH"
+ ]
+ },
+ "0x00B5": {
+ "group": "media",
+ "key": "KC_WWW_HOME",
+ "label": "Browser Home",
+ "aliases": [
+ "KC_WHOM"
+ ]
+ },
+ "0x00B6": {
+ "group": "media",
+ "key": "KC_WWW_BACK",
+ "label": "Browser Back",
+ "aliases": [
+ "KC_WBAK"
+ ]
+ },
+ "0x00B7": {
+ "group": "media",
+ "key": "KC_WWW_FORWARD",
+ "label": "Browser Forward",
+ "aliases": [
+ "KC_WFWD"
+ ]
+ },
+ "0x00B8": {
+ "group": "media",
+ "key": "KC_WWW_STOP",
+ "label": "Browser Stop",
+ "aliases": [
+ "KC_WSTP"
+ ]
+ },
+ "0x00B9": {
+ "group": "media",
+ "key": "KC_WWW_REFRESH",
+ "label": "Browser Refresh",
+ "aliases": [
+ "KC_WREF"
+ ]
+ },
+ "0x00BA": {
+ "group": "media",
+ "key": "KC_WWW_FAVORITES",
+ "label": "Browser Favorites",
+ "aliases": [
+ "KC_WFAV"
+ ]
+ },
+ "0x00BB": {
+ "group": "media",
+ "key": "KC_MEDIA_FAST_FORWARD",
+ "label": "Next Track",
+ "aliases": [
+ "KC_MFFD"
+ ]
+ },
+ "0x00BC": {
+ "group": "media",
+ "key": "KC_MEDIA_REWIND",
+ "label": "Previous Track",
+ "aliases": [
+ "KC_MRWD"
+ ]
+ },
+ "0x00BD": {
+ "group": "media",
+ "key": "KC_BRIGHTNESS_UP",
+ "label": "Brightness Up",
+ "aliases": [
+ "KC_BRIU"
+ ]
+ },
+ "0x00BE": {
+ "group": "media",
+ "key": "KC_BRIGHTNESS_DOWN",
+ "label": "Brightness Down",
+ "aliases": [
+ "KC_BRID"
+ ]
+ },
+ "0x00BF": {
+ "group": "media",
+ "key": "KC_CONTROL_PANEL",
+ "label": "Open Control Panel",
+ "aliases": [
+ "KC_CPNL"
+ ]
+ },
+ "0x00C0": {
+ "group": "media",
+ "key": "KC_ASSISTANT",
+ "label": "Launch Assistant",
+ "aliases": [
+ "KC_ASST"
+ ]
+ },
+
+ "0x00CD": {
+ "group": "mouse",
+ "key": "KC_MS_UP",
+ "label": "Move cursor up",
+ "aliases": [
+ "KC_MS_U"
+ ]
+ },
+ "0x00CE": {
+ "group": "mouse",
+ "key": "KC_MS_DOWN",
+ "label": "Move cursor down",
+ "aliases": [
+ "KC_MS_D"
+ ]
+ },
+ "0x00CF": {
+ "group": "mouse",
+ "key": "KC_MS_LEFT",
+ "label": "Move cursor left",
+ "aliases": [
+ "KC_MS_L"
+ ]
+ },
+ "0x00D0": {
+ "group": "mouse",
+ "key": "KC_MS_RIGHT",
+ "label": "Move cursor right",
+ "aliases": [
+ "KC_MS_R"
+ ]
+ },
+ "0x00D1": {
+ "group": "mouse",
+ "key": "KC_MS_BTN1",
+ "label": "Press button 1",
+ "aliases": [
+ "KC_BTN1"
+ ]
+ },
+ "0x00D2": {
+ "group": "mouse",
+ "key": "KC_MS_BTN2",
+ "label": "Press button 2",
+ "aliases": [
+ "KC_BTN2"
+ ]
+ },
+ "0x00D3": {
+ "group": "mouse",
+ "key": "KC_MS_BTN3",
+ "label": "Press button 3",
+ "aliases": [
+ "KC_BTN3"
+ ]
+ },
+ "0x00D4": {
+ "group": "mouse",
+ "key": "KC_MS_BTN4",
+ "label": "Press button 4",
+ "aliases": [
+ "KC_BTN4"
+ ]
+ },
+ "0x00D5": {
+ "group": "mouse",
+ "key": "KC_MS_BTN5",
+ "label": "Press button 5",
+ "aliases": [
+ "KC_BTN5"
+ ]
+ },
+ "0x00D6": {
+ "group": "mouse",
+ "key": "KC_MS_BTN6",
+ "label": "Press button 6",
+ "aliases": [
+ "KC_BTN6"
+ ]
+ },
+ "0x00D7": {
+ "group": "mouse",
+ "key": "KC_MS_BTN7",
+ "label": "Press button 7",
+ "aliases": [
+ "KC_BTN7"
+ ]
+ },
+ "0x00D8": {
+ "group": "mouse",
+ "key": "KC_MS_BTN8",
+ "label": "Press button 8",
+ "aliases": [
+ "KC_BTN8"
+ ]
+ },
+ "0x00D9": {
+ "group": "mouse",
+ "key": "KC_MS_WH_UP",
+ "label": "Move wheel up",
+ "aliases": [
+ "KC_WH_U"
+ ]
+ },
+ "0x00DA": {
+ "group": "mouse",
+ "key": "KC_MS_WH_DOWN",
+ "label": "Move wheel down",
+ "aliases": [
+ "KC_WH_D"
+ ]
+ },
+ "0x00DB": {
+ "group": "mouse",
+ "key": "KC_MS_WH_LEFT",
+ "label": "Move wheel left",
+ "aliases": [
+ "KC_WH_L"
+ ]
+ },
+ "0x00DC": {
+ "group": "mouse",
+ "key": "KC_MS_WH_RIGHT",
+ "label": "Move wheel right",
+ "aliases": [
+ "KC_WH_R"
+ ]
+ },
+ "0x00DD": {
+ "group": "mouse",
+ "key": "KC_MS_ACCEL0",
+ "label": "Set speed to 0",
+ "aliases": [
+ "KC_ACL0"
+ ]
+ },
+ "0x00DE": {
+ "group": "mouse",
+ "key": "KC_MS_ACCEL1",
+ "label": "Set speed to 1",
+ "aliases": [
+ "KC_ACL1"
+ ]
+ },
+ "0x00DF": {
+ "group": "mouse",
+ "key": "KC_MS_ACCEL2",
+ "label": "Set speed to 2",
+ "aliases": [
+ "KC_ACL2"
+ ]
+ },
+
+ "0x00E0": {
+ "group": "modifiers",
+ "key": "KC_LEFT_CTRL",
+ "label": "Left Control",
+ "aliases": [
+ "KC_LCTL"
+ ]
+ },
+ "0x00E1": {
+ "group": "modifiers",
+ "key": "KC_LEFT_SHIFT",
+ "label": "Left Shift",
+ "aliases": [
+ "KC_LSFT"
+ ]
+ },
+ "0x00E2": {
+ "group": "modifiers",
+ "key": "KC_LEFT_ALT",
+ "label": "Left Alt",
+ "aliases": [
+ "KC_LALT",
+ "KC_LOPT"
+ ]
+ },
+ "0x00E3": {
+ "group": "modifiers",
+ "key": "KC_LEFT_GUI",
+ "label": "Left GUI",
+ "aliases": [
+ "KC_LGUI",
+ "KC_LCMD",
+ "KC_LWIN"
+ ]
+ },
+ "0x00E4": {
+ "group": "modifiers",
+ "key": "KC_RIGHT_CTRL",
+ "label": "Right Control",
+ "aliases": [
+ "KC_RCTL"
+ ]
+ },
+ "0x00E5": {
+ "group": "modifiers",
+ "key": "KC_RIGHT_SHIFT",
+ "label": "Right Shift",
+ "aliases": [
+ "KC_RSFT"
+ ]
+ },
+ "0x00E6": {
+ "group": "modifiers",
+ "key": "KC_RIGHT_ALT",
+ "label": "Right Alt",
+ "aliases": [
+ "KC_RALT",
+ "KC_ROPT",
+ "KC_ALGR"
+ ]
+ },
+ "0x00E7": {
+ "group": "modifiers",
+ "key": "KC_RIGHT_GUI",
+ "label": "Right GUI",
+ "aliases": [
+ "KC_RGUI",
+ "KC_RCMD",
+ "KC_RWIN"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_joystick.hjson b/data/constants/keycodes/keycodes_0.0.1_joystick.hjson
new file mode 100644
index 0000000000..0bda7c29f3
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_joystick.hjson
@@ -0,0 +1,228 @@
+{
+ "keycodes": {
+ "0x7400": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_0",
+ "aliases": [
+ "JS_0"
+ ]
+ },
+ "0x7401": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_1",
+ "aliases": [
+ "JS_1"
+ ]
+ },
+ "0x7402": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_2",
+ "aliases": [
+ "JS_2"
+ ]
+ },
+ "0x7403": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_3",
+ "aliases": [
+ "JS_3"
+ ]
+ },
+ "0x7404": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_4",
+ "aliases": [
+ "JS_4"
+ ]
+ },
+ "0x7405": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_5",
+ "aliases": [
+ "JS_5"
+ ]
+ },
+ "0x7406": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_6",
+ "aliases": [
+ "JS_6"
+ ]
+ },
+ "0x7407": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_7",
+ "aliases": [
+ "JS_7"
+ ]
+ },
+ "0x7408": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_8",
+ "aliases": [
+ "JS_8"
+ ]
+ },
+ "0x7409": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_9",
+ "aliases": [
+ "JS_9"
+ ]
+ },
+ "0x740A": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_10",
+ "aliases": [
+ "JS_10"
+ ]
+ },
+ "0x740B": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_11",
+ "aliases": [
+ "JS_11"
+ ]
+ },
+ "0x740C": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_12",
+ "aliases": [
+ "JS_12"
+ ]
+ },
+ "0x740D": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_13",
+ "aliases": [
+ "JS_13"
+ ]
+ },
+ "0x740E": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_14",
+ "aliases": [
+ "JS_14"
+ ]
+ },
+ "0x740F": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_15",
+ "aliases": [
+ "JS_15"
+ ]
+ },
+ "0x7410": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_16",
+ "aliases": [
+ "JS_16"
+ ]
+ },
+ "0x7411": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_17",
+ "aliases": [
+ "JS_17"
+ ]
+ },
+ "0x7412": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_18",
+ "aliases": [
+ "JS_18"
+ ]
+ },
+ "0x7413": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_19",
+ "aliases": [
+ "JS_19"
+ ]
+ },
+ "0x7414": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_20",
+ "aliases": [
+ "JS_20"
+ ]
+ },
+ "0x7415": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_21",
+ "aliases": [
+ "JS_21"
+ ]
+ },
+ "0x7416": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_22",
+ "aliases": [
+ "JS_22"
+ ]
+ },
+ "0x7417": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_23",
+ "aliases": [
+ "JS_23"
+ ]
+ },
+ "0x7418": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_24",
+ "aliases": [
+ "JS_24"
+ ]
+ },
+ "0x7419": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_25",
+ "aliases": [
+ "JS_25"
+ ]
+ },
+ "0x741A": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_26",
+ "aliases": [
+ "JS_26"
+ ]
+ },
+ "0x741B": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_27",
+ "aliases": [
+ "JS_27"
+ ]
+ },
+ "0x741C": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_28",
+ "aliases": [
+ "JS_28"
+ ]
+ },
+ "0x741D": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_29",
+ "aliases": [
+ "JS_29"
+ ]
+ },
+ "0x741E": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_30",
+ "aliases": [
+ "JS_30"
+ ]
+ },
+ "0x741F": {
+ "group": "joystick",
+ "key": "QK_JOYSTICK_BUTTON_31",
+ "aliases": [
+ "JS_31"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_lighting.hjson b/data/constants/keycodes/keycodes_0.0.1_lighting.hjson
new file mode 100644
index 0000000000..90ed36c645
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_lighting.hjson
@@ -0,0 +1,154 @@
+{
+ "keycodes": {
+ "0x7800": {
+ "group": "backlight",
+ "key": "BL_ON"
+ },
+ "0x7801": {
+ "group": "backlight",
+ "key": "BL_OFF"
+ },
+ "0x7802": {
+ "group": "backlight",
+ "key": "BL_DEC"
+ },
+ "0x7803": {
+ "group": "backlight",
+ "key": "BL_INC"
+ },
+ "0x7804": {
+ "group": "backlight",
+ "key": "BL_TOGG"
+ },
+ "0x7805": {
+ "group": "backlight",
+ "key": "BL_STEP"
+ },
+ "0x7806": {
+ "group": "backlight",
+ "key": "BL_BRTG"
+ },
+
+ "0x7820": {
+ "group": "rgb",
+ "key": "RGB_TOG"
+ },
+ "0x7821": {
+ "group": "rgb",
+ "key": "RGB_MODE_FORWARD",
+ "aliases": [
+ "RGB_MOD"
+ ]
+ },
+ "0x7822": {
+ "group": "rgb",
+ "key": "RGB_MODE_REVERSE",
+ "aliases": [
+ "RGB_RMOD"
+ ]
+ },
+ "0x7823": {
+ "group": "rgb",
+ "key": "RGB_HUI"
+ },
+ "0x7824": {
+ "group": "rgb",
+ "key": "RGB_HUD"
+ },
+ "0x7825": {
+ "group": "rgb",
+ "key": "RGB_SAI"
+ },
+ "0x7826": {
+ "group": "rgb",
+ "key": "RGB_SAD"
+ },
+ "0x7827": {
+ "group": "rgb",
+ "key": "RGB_VAI"
+ },
+ "0x7828": {
+ "group": "rgb",
+ "key": "RGB_VAD"
+ },
+ "0x7829": {
+ "group": "rgb",
+ "key": "RGB_SPI"
+ },
+ "0x782A": {
+ "group": "rgb",
+ "key": "RGB_SPD"
+ },
+
+ "0x782B": {
+ "group": "rgb",
+ "key": "RGB_MODE_PLAIN",
+ "aliases": [
+ "RGB_M_P"
+ ]
+ },
+ "0x782C": {
+ "group": "rgb",
+ "key": "RGB_MODE_BREATHE",
+ "aliases": [
+ "RGB_M_B"
+ ]
+ },
+ "0x782D": {
+ "group": "rgb",
+ "key": "RGB_MODE_RAINBOW",
+ "aliases": [
+ "RGB_M_R"
+ ]
+ },
+ "0x782E": {
+ "group": "rgb",
+ "key": "RGB_MODE_SWIRL",
+ "aliases": [
+ "RGB_M_SW"
+ ]
+ },
+ "0x782F": {
+ "group": "rgb",
+ "key": "RGB_MODE_SNAKE",
+ "aliases": [
+ "RGB_M_SN"
+ ]
+ },
+ "0x7830": {
+ "group": "rgb",
+ "key": "RGB_MODE_KNIGHT",
+ "aliases": [
+ "RGB_M_K"
+ ]
+ },
+ "0x7831": {
+ "group": "rgb",
+ "key": "RGB_MODE_XMAS",
+ "aliases": [
+ "RGB_M_X"
+ ]
+ },
+ "0x7832": {
+ "group": "rgb",
+ "key": "RGB_MODE_GRADIENT",
+ "aliases": [
+ "RGB_M_G"
+ ]
+ },
+ "0x7833": {
+ "group": "rgb",
+ "key": "RGB_MODE_RGBTEST",
+ "aliases": [
+ "RGB_M_T"
+ ]
+ },
+ "0x7834": {
+ "group": "rgb",
+ "key": "RGB_MODE_TWINKLE",
+ "aliases": [
+ "RGB_M_TW"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_macro.hjson b/data/constants/keycodes/keycodes_0.0.1_macro.hjson
new file mode 100644
index 0000000000..70b9ecf154
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_macro.hjson
@@ -0,0 +1,133 @@
+{
+ "keycodes": {
+
+ "0x7700": {
+ "group": "macro",
+ "key": "MACRO_0"
+ },
+ "0x7701": {
+ "group": "macro",
+ "key": "MACRO_1"
+ },
+ "0x7702": {
+ "group": "macro",
+ "key": "MACRO_2"
+ },
+ "0x7703": {
+ "group": "macro",
+ "key": "MACRO_3"
+ },
+ "0x7704": {
+ "group": "macro",
+ "key": "MACRO_4"
+ },
+ "0x7705": {
+ "group": "macro",
+ "key": "MACRO_5"
+ },
+ "0x7706": {
+ "group": "macro",
+ "key": "MACRO_6"
+ },
+ "0x7707": {
+ "group": "macro",
+ "key": "MACRO_7"
+ },
+ "0x7708": {
+ "group": "macro",
+ "key": "MACRO_8"
+ },
+ "0x7709": {
+ "group": "macro",
+ "key": "MACRO_9"
+ },
+ "0x770A": {
+ "group": "macro",
+ "key": "MACRO_10"
+ },
+ "0x770B": {
+ "group": "macro",
+ "key": "MACRO_11"
+ },
+ "0x770C": {
+ "group": "macro",
+ "key": "MACRO_12"
+ },
+ "0x770D": {
+ "group": "macro",
+ "key": "MACRO_13"
+ },
+ "0x770E": {
+ "group": "macro",
+ "key": "MACRO_14"
+ },
+ "0x770F": {
+ "group": "macro",
+ "key": "MACRO_15"
+ },
+ "0x7710": {
+ "group": "macro",
+ "key": "MACRO_16"
+ },
+ "0x7711": {
+ "group": "macro",
+ "key": "MACRO_17"
+ },
+ "0x7712": {
+ "group": "macro",
+ "key": "MACRO_18"
+ },
+ "0x7713": {
+ "group": "macro",
+ "key": "MACRO_19"
+ },
+ "0x7714": {
+ "group": "macro",
+ "key": "MACRO_20"
+ },
+ "0x7715": {
+ "group": "macro",
+ "key": "MACRO_21"
+ },
+ "0x7716": {
+ "group": "macro",
+ "key": "MACRO_22"
+ },
+ "0x7717": {
+ "group": "macro",
+ "key": "MACRO_23"
+ },
+ "0x7718": {
+ "group": "macro",
+ "key": "MACRO_24"
+ },
+ "0x7719": {
+ "group": "macro",
+ "key": "MACRO_25"
+ },
+ "0x771A": {
+ "group": "macro",
+ "key": "MACRO_26"
+ },
+ "0x771B": {
+ "group": "macro",
+ "key": "MACRO_27"
+ },
+ "0x771C": {
+ "group": "macro",
+ "key": "MACRO_28"
+ },
+ "0x771D": {
+ "group": "macro",
+ "key": "MACRO_29"
+ },
+ "0x771E": {
+ "group": "macro",
+ "key": "MACRO_30"
+ },
+ "0x771F": {
+ "group": "macro",
+ "key": "MACRO_31"
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_magic.hjson b/data/constants/keycodes/keycodes_0.0.1_magic.hjson
new file mode 100644
index 0000000000..7ee1f2bce9
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_magic.hjson
@@ -0,0 +1,249 @@
+{
+ "keycodes": {
+ "0x7000": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_CONTROL_CAPSLOCK",
+ "aliases": [
+ "CL_SWAP"
+ ]
+ },
+ "0x7001": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_CONTROL_CAPSLOCK",
+ "aliases": [
+ "CL_NORM"
+ ]
+ },
+ "0x7002": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_CONTROL_CAPSLOCK",
+ "aliases": [
+ "CL_TOGG"
+ ]
+ },
+ "0x7003": {
+ "group": "magic",
+ "key": "MAGIC_UNCAPSLOCK_TO_CONTROL",
+ "aliases": [
+ "CL_CAPS"
+ ]
+ },
+ "0x7004": {
+ "group": "magic",
+ "key": "MAGIC_CAPSLOCK_TO_CONTROL",
+ "aliases": [
+ "CL_CTRL"
+ ]
+ },
+ "0x7005": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_LALT_LGUI",
+ "aliases": [
+ "LAG_SWP"
+ ]
+ },
+ "0x7006": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_LALT_LGUI",
+ "aliases": [
+ "LAG_NRM"
+ ]
+ },
+ "0x7007": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_RALT_RGUI",
+ "aliases": [
+ "RAG_SWP"
+ ]
+ },
+ "0x7008": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_RALT_RGUI",
+ "aliases": [
+ "RAG_NRM"
+ ]
+ },
+ "0x7009": {
+ "group": "magic",
+ "key": "MAGIC_UNNO_GUI",
+ "aliases": [
+ "GUI_ON"
+ ]
+ },
+ "0x700A": {
+ "group": "magic",
+ "key": "MAGIC_NO_GUI",
+ "aliases": [
+ "GUI_OFF"
+ ]
+ },
+ "0x700B": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_GUI",
+ "aliases": [
+ "GUI_TOG"
+ ]
+ },
+ "0x700C": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_GRAVE_ESC",
+ "aliases": [
+ "GE_SWAP"
+ ]
+ },
+ "0x700D": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_GRAVE_ESC",
+ "aliases": [
+ "GE_NORM"
+ ]
+ },
+ "0x700E": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_BACKSLASH_BACKSPACE",
+ "aliases": [
+ "BS_SWAP"
+ ]
+ },
+ "0x700F": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_BACKSLASH_BACKSPACE",
+ "aliases": [
+ "BS_NORM"
+ ]
+ },
+ "0x7010": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_BACKSLASH_BACKSPACE",
+ "aliases": [
+ "BS_TOGG"
+ ]
+ },
+ "0x7011": {
+ "group": "magic",
+ "key": "MAGIC_HOST_NKRO",
+ "aliases": [
+ "NK_ON"
+ ]
+ },
+ "0x7012": {
+ "group": "magic",
+ "key": "MAGIC_UNHOST_NKRO",
+ "aliases": [
+ "NK_OFF"
+ ]
+ },
+ "0x7013": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_NKRO",
+ "aliases": [
+ "NK_TOGG"
+ ]
+ },
+ "0x7014": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_ALT_GUI",
+ "aliases": [
+ "AG_SWAP"
+ ]
+ },
+ "0x7015": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_ALT_GUI",
+ "aliases": [
+ "AG_NORM"
+ ]
+ },
+ "0x7016": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_ALT_GUI",
+ "aliases": [
+ "AG_TOGG"
+ ]
+ },
+ "0x7017": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_LCTL_LGUI",
+ "aliases": [
+ "LCG_SWP"
+ ]
+ },
+ "0x7018": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_LCTL_LGUI",
+ "aliases": [
+ "LCG_NRM"
+ ]
+ },
+ "0x7019": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_RCTL_RGUI",
+ "aliases": [
+ "RCG_SWP"
+ ]
+ },
+ "0x701A": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_RCTL_RGUI",
+ "aliases": [
+ "RCG_NRM"
+ ]
+ },
+ "0x701B": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_CTL_GUI",
+ "aliases": [
+ "CG_SWAP"
+ ]
+ },
+ "0x701C": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_CTL_GUI",
+ "aliases": [
+ "CG_NORM"
+ ]
+ },
+ "0x701D": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_CTL_GUI",
+ "aliases": [
+ "CG_TOGG"
+ ]
+ },
+ "0x701E": {
+ "group": "magic",
+ "key": "MAGIC_EE_HANDS_LEFT",
+ "aliases": [
+ "EH_LEFT"
+ ]
+ },
+ "0x701F": {
+ "group": "magic",
+ "key": "MAGIC_EE_HANDS_RIGHT",
+ "aliases": [
+ "EH_RGHT"
+ ]
+ },
+ "0x7020": {
+ "group": "magic",
+ "key": "MAGIC_SWAP_ESCAPE_CAPSLOCK",
+ "aliases": [
+ "EC_SWAP"
+ ]
+ },
+ "0x7021": {
+ "group": "magic",
+ "key": "MAGIC_UNSWAP_ESCAPE_CAPSLOCK",
+ "aliases": [
+ "EC_NORM"
+ ]
+ },
+ "0x7022": {
+ "group": "magic",
+ "key": "MAGIC_TOGGLE_ESCAPE_CAPSLOCK",
+ "aliases": [
+ "EC_TOGG"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_midi.hjson b/data/constants/keycodes/keycodes_0.0.1_midi.hjson
new file mode 100644
index 0000000000..72d6e38900
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_midi.hjson
@@ -0,0 +1,670 @@
+{
+ "keycodes": {
+ "0x7100": {
+ "group": "midi",
+ "key": "MI_ON"
+ },
+ "0x7101": {
+ "group": "midi",
+ "key": "MI_OFF"
+ },
+ "0x7102": {
+ "group": "midi",
+ "key": "MI_TOG"
+ },
+ "0x7110": {
+ "group": "midi",
+ "key": "MI_C"
+ },
+ "0x7111": {
+ "group": "midi",
+ "key": "MI_Cs",
+ "aliases": [
+ "MI_Db"
+ ]
+ },
+ "0x7112": {
+ "group": "midi",
+ "key": "MI_D"
+ },
+ "0x7113": {
+ "group": "midi",
+ "key": "MI_Ds",
+ "aliases": [
+ "MI_Eb"
+ ]
+ },
+ "0x7114": {
+ "group": "midi",
+ "key": "MI_E"
+ },
+ "0x7115": {
+ "group": "midi",
+ "key": "MI_F"
+ },
+ "0x7116": {
+ "group": "midi",
+ "key": "MI_Fs",
+ "aliases": [
+ "MI_Gb"
+ ]
+ },
+ "0x7117": {
+ "group": "midi",
+ "key": "MI_G"
+ },
+ "0x7118": {
+ "group": "midi",
+ "key": "MI_Gs",
+ "aliases": [
+ "MI_Ab"
+ ]
+ },
+ "0x7119": {
+ "group": "midi",
+ "key": "MI_A"
+ },
+ "0x711A": {
+ "group": "midi",
+ "key": "MI_As",
+ "aliases": [
+ "MI_Bb"
+ ]
+ },
+ "0x711B": {
+ "group": "midi",
+ "key": "MI_B"
+ },
+ "0x7120": {
+ "group": "midi",
+ "key": "MI_C_1"
+ },
+ "0x7121": {
+ "group": "midi",
+ "key": "MI_Cs_1",
+ "aliases": [
+ "MI_Db_1"
+ ]
+ },
+ "0x7122": {
+ "group": "midi",
+ "key": "MI_D_1"
+ },
+ "0x7123": {
+ "group": "midi",
+ "key": "MI_Ds_1",
+ "aliases": [
+ "MI_Eb_1"
+ ]
+ },
+ "0x7124": {
+ "group": "midi",
+ "key": "MI_E_1"
+ },
+ "0x7125": {
+ "group": "midi",
+ "key": "MI_F_1"
+ },
+ "0x7126": {
+ "group": "midi",
+ "key": "MI_Fs_1",
+ "aliases": [
+ "MI_Gb_1"
+ ]
+ },
+ "0x7127": {
+ "group": "midi",
+ "key": "MI_G_1"
+ },
+ "0x7128": {
+ "group": "midi",
+ "key": "MI_Gs_1",
+ "aliases": [
+ "MI_Ab_1"
+ ]
+ },
+ "0x7129": {
+ "group": "midi",
+ "key": "MI_A_1"
+ },
+ "0x712A": {
+ "group": "midi",
+ "key": "MI_As_1",
+ "aliases": [
+ "MI_Bb_1"
+ ]
+ },
+ "0x712B": {
+ "group": "midi",
+ "key": "MI_B_1"
+ },
+ "0x7130": {
+ "group": "midi",
+ "key": "MI_C_2"
+ },
+ "0x7131": {
+ "group": "midi",
+ "key": "MI_Cs_2",
+ "aliases": [
+ "MI_Db_2"
+ ]
+ },
+ "0x7132": {
+ "group": "midi",
+ "key": "MI_D_2"
+ },
+ "0x7133": {
+ "group": "midi",
+ "key": "MI_Ds_2",
+ "aliases": [
+ "MI_Eb_2"
+ ]
+ },
+ "0x7134": {
+ "group": "midi",
+ "key": "MI_E_2"
+ },
+ "0x7135": {
+ "group": "midi",
+ "key": "MI_F_2"
+ },
+ "0x7136": {
+ "group": "midi",
+ "key": "MI_Fs_2",
+ "aliases": [
+ "MI_Gb_2"
+ ]
+ },
+ "0x7137": {
+ "group": "midi",
+ "key": "MI_G_2"
+ },
+ "0x7138": {
+ "group": "midi",
+ "key": "MI_Gs_2",
+ "aliases": [
+ "MI_Ab_2"
+ ]
+ },
+ "0x7139": {
+ "group": "midi",
+ "key": "MI_A_2"
+ },
+ "0x713A": {
+ "group": "midi",
+ "key": "MI_As_2",
+ "aliases": [
+ "MI_Bb_2"
+ ]
+ },
+ "0x713B": {
+ "group": "midi",
+ "key": "MI_B_2"
+ },
+ "0x7140": {
+ "group": "midi",
+ "key": "MI_C_3"
+ },
+ "0x7141": {
+ "group": "midi",
+ "key": "MI_Cs_3",
+ "aliases": [
+ "MI_Db_3"
+ ]
+ },
+ "0x7142": {
+ "group": "midi",
+ "key": "MI_D_3"
+ },
+ "0x7143": {
+ "group": "midi",
+ "key": "MI_Ds_3",
+ "aliases": [
+ "MI_Eb_3"
+ ]
+ },
+ "0x7144": {
+ "group": "midi",
+ "key": "MI_E_3"
+ },
+ "0x7145": {
+ "group": "midi",
+ "key": "MI_F_3"
+ },
+ "0x7146": {
+ "group": "midi",
+ "key": "MI_Fs_3",
+ "aliases": [
+ "MI_Gb_3"
+ ]
+ },
+ "0x7147": {
+ "group": "midi",
+ "key": "MI_G_3"
+ },
+ "0x7148": {
+ "group": "midi",
+ "key": "MI_Gs_3",
+ "aliases": [
+ "MI_Ab_3"
+ ]
+ },
+ "0x7149": {
+ "group": "midi",
+ "key": "MI_A_3"
+ },
+ "0x714A": {
+ "group": "midi",
+ "key": "MI_As_3",
+ "aliases": [
+ "MI_Bb_3"
+ ]
+ },
+ "0x714B": {
+ "group": "midi",
+ "key": "MI_B_3"
+ },
+ "0x7150": {
+ "group": "midi",
+ "key": "MI_C_4"
+ },
+ "0x7151": {
+ "group": "midi",
+ "key": "MI_Cs_4",
+ "aliases": [
+ "MI_Db_4"
+ ]
+ },
+ "0x7152": {
+ "group": "midi",
+ "key": "MI_D_4"
+ },
+ "0x7153": {
+ "group": "midi",
+ "key": "MI_Ds_4",
+ "aliases": [
+ "MI_Eb_4"
+ ]
+ },
+ "0x7154": {
+ "group": "midi",
+ "key": "MI_E_4"
+ },
+ "0x7155": {
+ "group": "midi",
+ "key": "MI_F_4"
+ },
+ "0x7156": {
+ "group": "midi",
+ "key": "MI_Fs_4",
+ "aliases": [
+ "MI_Gb_4"
+ ]
+ },
+ "0x7157": {
+ "group": "midi",
+ "key": "MI_G_4"
+ },
+ "0x7158": {
+ "group": "midi",
+ "key": "MI_Gs_4",
+ "aliases": [
+ "MI_Ab_4"
+ ]
+ },
+ "0x7159": {
+ "group": "midi",
+ "key": "MI_A_4"
+ },
+ "0x715A": {
+ "group": "midi",
+ "key": "MI_As_4",
+ "aliases": [
+ "MI_Bb_4"
+ ]
+ },
+ "0x715B": {
+ "group": "midi",
+ "key": "MI_B_4"
+ },
+ "0x7160": {
+ "group": "midi",
+ "key": "MI_C_5"
+ },
+ "0x7161": {
+ "group": "midi",
+ "key": "MI_Cs_5",
+ "aliases": [
+ "MI_Db_5"
+ ]
+ },
+ "0x7162": {
+ "group": "midi",
+ "key": "MI_D_5"
+ },
+ "0x7163": {
+ "group": "midi",
+ "key": "MI_Ds_5",
+ "aliases": [
+ "MI_Eb_5"
+ ]
+ },
+ "0x7164": {
+ "group": "midi",
+ "key": "MI_E_5"
+ },
+ "0x7165": {
+ "group": "midi",
+ "key": "MI_F_5"
+ },
+ "0x7166": {
+ "group": "midi",
+ "key": "MI_Fs_5",
+ "aliases": [
+ "MI_Gb_5"
+ ]
+ },
+ "0x7167": {
+ "group": "midi",
+ "key": "MI_G_5"
+ },
+ "0x7168": {
+ "group": "midi",
+ "key": "MI_Gs_5",
+ "aliases": [
+ "MI_Ab_5"
+ ]
+ },
+ "0x7169": {
+ "group": "midi",
+ "key": "MI_A_5"
+ },
+ "0x716A": {
+ "group": "midi",
+ "key": "MI_As_5",
+ "aliases": [
+ "MI_Bb_5"
+ ]
+ },
+ "0x716B": {
+ "group": "midi",
+ "key": "MI_B_5"
+ },
+ "0x7170": {
+ "group": "midi",
+ "key": "MI_OCT_N2"
+ },
+ "0x7171": {
+ "group": "midi",
+ "key": "MI_OCT_N1"
+ },
+ "0x7172": {
+ "group": "midi",
+ "key": "MI_OCT_0"
+ },
+ "0x7173": {
+ "group": "midi",
+ "key": "MI_OCT_1"
+ },
+ "0x7174": {
+ "group": "midi",
+ "key": "MI_OCT_2"
+ },
+ "0x7175": {
+ "group": "midi",
+ "key": "MI_OCT_3"
+ },
+ "0x7176": {
+ "group": "midi",
+ "key": "MI_OCT_4"
+ },
+ "0x7177": {
+ "group": "midi",
+ "key": "MI_OCT_5"
+ },
+ "0x7178": {
+ "group": "midi",
+ "key": "MI_OCT_6"
+ },
+ "0x7179": {
+ "group": "midi",
+ "key": "MI_OCT_7"
+ },
+ "0x717A": {
+ "group": "midi",
+ "key": "MI_OCTD"
+ },
+ "0x717B": {
+ "group": "midi",
+ "key": "MI_OCTU"
+ },
+ "0x7180": {
+ "group": "midi",
+ "key": "MI_TRNS_N6"
+ },
+ "0x7181": {
+ "group": "midi",
+ "key": "MI_TRNS_N5"
+ },
+ "0x7182": {
+ "group": "midi",
+ "key": "MI_TRNS_N4"
+ },
+ "0x7183": {
+ "group": "midi",
+ "key": "MI_TRNS_N3"
+ },
+ "0x7184": {
+ "group": "midi",
+ "key": "MI_TRNS_N2"
+ },
+ "0x7185": {
+ "group": "midi",
+ "key": "MI_TRNS_N1"
+ },
+ "0x7186": {
+ "group": "midi",
+ "key": "MI_TRNS_0"
+ },
+ "0x7187": {
+ "group": "midi",
+ "key": "MI_TRNS_1"
+ },
+ "0x7188": {
+ "group": "midi",
+ "key": "MI_TRNS_2"
+ },
+ "0x7189": {
+ "group": "midi",
+ "key": "MI_TRNS_3"
+ },
+ "0x718A": {
+ "group": "midi",
+ "key": "MI_TRNS_4"
+ },
+ "0x718B": {
+ "group": "midi",
+ "key": "MI_TRNS_5"
+ },
+ "0x718C": {
+ "group": "midi",
+ "key": "MI_TRNS_6"
+ },
+ "0x718D": {
+ "group": "midi",
+ "key": "MI_TRNSD"
+ },
+ "0x718E": {
+ "group": "midi",
+ "key": "MI_TRNSU"
+ },
+ "0x7190": {
+ "group": "midi",
+ "key": "MI_VEL_0"
+ },
+ "0x7191": {
+ "group": "midi",
+ "key": "MI_VEL_1"
+ },
+ "0x7192": {
+ "group": "midi",
+ "key": "MI_VEL_2"
+ },
+ "0x7193": {
+ "group": "midi",
+ "key": "MI_VEL_3"
+ },
+ "0x7194": {
+ "group": "midi",
+ "key": "MI_VEL_4"
+ },
+ "0x7195": {
+ "group": "midi",
+ "key": "MI_VEL_5"
+ },
+ "0x7196": {
+ "group": "midi",
+ "key": "MI_VEL_6"
+ },
+ "0x7197": {
+ "group": "midi",
+ "key": "MI_VEL_7"
+ },
+ "0x7198": {
+ "group": "midi",
+ "key": "MI_VEL_8"
+ },
+ "0x7199": {
+ "group": "midi",
+ "key": "MI_VEL_9"
+ },
+ "0x719A": {
+ "group": "midi",
+ "key": "MI_VEL_10"
+ },
+ "0x719B": {
+ "group": "midi",
+ "key": "MI_VELD"
+ },
+ "0x719C": {
+ "group": "midi",
+ "key": "MI_VELU"
+ },
+ "0x71A0": {
+ "group": "midi",
+ "key": "MI_CH1"
+ },
+ "0x71A1": {
+ "group": "midi",
+ "key": "MI_CH2"
+ },
+ "0x71A2": {
+ "group": "midi",
+ "key": "MI_CH3"
+ },
+ "0x71A3": {
+ "group": "midi",
+ "key": "MI_CH4"
+ },
+ "0x71A4": {
+ "group": "midi",
+ "key": "MI_CH5"
+ },
+ "0x71A5": {
+ "group": "midi",
+ "key": "MI_CH6"
+ },
+ "0x71A6": {
+ "group": "midi",
+ "key": "MI_CH7"
+ },
+ "0x71A7": {
+ "group": "midi",
+ "key": "MI_CH8"
+ },
+ "0x71A8": {
+ "group": "midi",
+ "key": "MI_CH9"
+ },
+ "0x71A9": {
+ "group": "midi",
+ "key": "MI_CH10"
+ },
+ "0x71AA": {
+ "group": "midi",
+ "key": "MI_CH11"
+ },
+ "0x71AB": {
+ "group": "midi",
+ "key": "MI_CH12"
+ },
+ "0x71AC": {
+ "group": "midi",
+ "key": "MI_CH13"
+ },
+ "0x71AD": {
+ "group": "midi",
+ "key": "MI_CH14"
+ },
+ "0x71AE": {
+ "group": "midi",
+ "key": "MI_CH15"
+ },
+ "0x71AF": {
+ "group": "midi",
+ "key": "MI_CH16"
+ },
+ "0x71B0": {
+ "group": "midi",
+ "key": "MI_CHD"
+ },
+ "0x71B1": {
+ "group": "midi",
+ "key": "MI_CHU"
+ },
+ "0x71C0": {
+ "group": "midi",
+ "key": "MI_ALLOFF"
+ },
+ "0x71C1": {
+ "group": "midi",
+ "key": "MI_SUS"
+ },
+ "0x71C2": {
+ "group": "midi",
+ "key": "MI_PORT"
+ },
+ "0x71C3": {
+ "group": "midi",
+ "key": "MI_SOST"
+ },
+ "0x71C4": {
+ "group": "midi",
+ "key": "MI_SOFT"
+ },
+ "0x71C5": {
+ "group": "midi",
+ "key": "MI_LEG"
+ },
+ "0x71C6": {
+ "group": "midi",
+ "key": "MI_MOD"
+ },
+ "0x71C7": {
+ "group": "midi",
+ "key": "MI_MODSD"
+ },
+ "0x71C8": {
+ "group": "midi",
+ "key": "MI_MODSU"
+ },
+ "0x71C9": {
+ "group": "midi",
+ "key": "MI_BENDD"
+ },
+ "0x71CA": {
+ "group": "midi",
+ "key": "MI_BENDU"
+ }
+ }
+}
diff --git a/data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson b/data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson
new file mode 100644
index 0000000000..645bcd6a39
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson
@@ -0,0 +1,228 @@
+{
+ "keycodes": {
+ "0x7440": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_1",
+ "aliases": [
+ "PB_1"
+ ]
+ },
+ "0x7441": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_2",
+ "aliases": [
+ "PB_2"
+ ]
+ },
+ "0x7442": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_3",
+ "aliases": [
+ "PB_3"
+ ]
+ },
+ "0x7443": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_4",
+ "aliases": [
+ "PB_4"
+ ]
+ },
+ "0x7444": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_5",
+ "aliases": [
+ "PB_5"
+ ]
+ },
+ "0x7445": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_6",
+ "aliases": [
+ "PB_6"
+ ]
+ },
+ "0x7446": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_7",
+ "aliases": [
+ "PB_7"
+ ]
+ },
+ "0x7447": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_8",
+ "aliases": [
+ "PB_8"
+ ]
+ },
+ "0x7448": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_9",
+ "aliases": [
+ "PB_9"
+ ]
+ },
+ "0x7449": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_10",
+ "aliases": [
+ "PB_10"
+ ]
+ },
+ "0x744A": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_11",
+ "aliases": [
+ "PB_11"
+ ]
+ },
+ "0x744B": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_12",
+ "aliases": [
+ "PB_12"
+ ]
+ },
+ "0x744C": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_13",
+ "aliases": [
+ "PB_13"
+ ]
+ },
+ "0x744D": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_14",
+ "aliases": [
+ "PB_14"
+ ]
+ },
+ "0x744E": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_15",
+ "aliases": [
+ "PB_15"
+ ]
+ },
+ "0x744F": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_16",
+ "aliases": [
+ "PB_16"
+ ]
+ },
+ "0x7450": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_17",
+ "aliases": [
+ "PB_17"
+ ]
+ },
+ "0x7451": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_18",
+ "aliases": [
+ "PB_18"
+ ]
+ },
+ "0x7452": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_19",
+ "aliases": [
+ "PB_19"
+ ]
+ },
+ "0x7453": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_20",
+ "aliases": [
+ "PB_20"
+ ]
+ },
+ "0x7454": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_21",
+ "aliases": [
+ "PB_21"
+ ]
+ },
+ "0x7455": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_22",
+ "aliases": [
+ "PB_22"
+ ]
+ },
+ "0x7456": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_23",
+ "aliases": [
+ "PB_23"
+ ]
+ },
+ "0x7457": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_24",
+ "aliases": [
+ "PB_24"
+ ]
+ },
+ "0x7458": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_25",
+ "aliases": [
+ "PB_25"
+ ]
+ },
+ "0x7459": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_26",
+ "aliases": [
+ "PB_26"
+ ]
+ },
+ "0x745A": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_27",
+ "aliases": [
+ "PB_27"
+ ]
+ },
+ "0x745B": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_28",
+ "aliases": [
+ "PB_28"
+ ]
+ },
+ "0x745C": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_29",
+ "aliases": [
+ "PB_29"
+ ]
+ },
+ "0x745D": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_30",
+ "aliases": [
+ "PB_30"
+ ]
+ },
+ "0x745E": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_31",
+ "aliases": [
+ "PB_31"
+ ]
+ },
+ "0x745F": {
+ "group": "programmable_button",
+ "key": "QK_PROGRAMMABLE_BUTTON_32",
+ "aliases": [
+ "PB_32"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_quantum.hjson b/data/constants/keycodes/keycodes_0.0.1_quantum.hjson
new file mode 100644
index 0000000000..ceb9d4d16c
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_quantum.hjson
@@ -0,0 +1,464 @@
+{
+ "keycodes": {
+ "0x7C00": {
+ "group": "quantum",
+ "key": "QK_BOOTLOADER",
+ "aliases": [
+ "QK_BOOT"
+ ]
+ },
+ "0x7C01": {
+ "group": "quantum",
+ "key": "QK_REBOOT",
+ "aliases": [
+ "QK_RBT"
+ ]
+ },
+ "0x7C02": {
+ "group": "quantum",
+ "key": "QK_DEBUG_TOGGLE",
+ "aliases": [
+ "DB_TOGG"
+ ]
+ },
+ "0x7C03": {
+ "group": "quantum",
+ "key": "QK_CLEAR_EEPROM",
+ "aliases": [
+ "EE_CLR"
+ ]
+ },
+ "0x7C04": {
+ "group": "quantum",
+ "key": "QK_MAKE"
+ },
+
+ "0x7C10": {
+ "group": "quantum",
+ "key": "QK_AUTO_SHIFT_DOWN",
+ "aliases": [
+ "AS_DOWN"
+ ]
+ },
+ "0x7C11": {
+ "group": "quantum",
+ "key": "QK_AUTO_SHIFT_UP",
+ "aliases": [
+ "AS_UP"
+ ]
+ },
+ "0x7C12": {
+ "group": "quantum",
+ "key": "QK_AUTO_SHIFT_REPORT",
+ "aliases": [
+ "AS_RPT"
+ ]
+ },
+ "0x7C13": {
+ "group": "quantum",
+ "key": "QK_AUTO_SHIFT_ON",
+ "aliases": [
+ "AS_ON"
+ ]
+ },
+ "0x7C14": {
+ "group": "quantum",
+ "key": "QK_AUTO_SHIFT_OFF",
+ "aliases": [
+ "AS_OFF"
+ ]
+ },
+ "0x7C15": {
+ "group": "quantum",
+ "key": "QK_AUTO_SHIFT_TOGGLE",
+ "aliases": [
+ "AS_TOGG"
+ ]
+ },
+
+ "0x7C16": {
+ "group": "quantum",
+ "key": "QK_GRAVE_ESCAPE",
+ "aliases": [
+ "QK_GESC"
+ ]
+ },
+
+ "0x7C17": {
+ "group": "quantum",
+ "key": "QK_VELOCIKEY_TOGGLE",
+ "aliases": [
+ "VK_TOGG"
+ ]
+ },
+
+ "0x7C18": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN",
+ "aliases": [
+ "SC_LCPO"
+ ]
+ },
+ "0x7C19": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE",
+ "aliases": [
+ "SC_RCPC"
+ ]
+ },
+ "0x7C1A": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN",
+ "aliases": [
+ "SC_LSPO"
+ ]
+ },
+ "0x7C1B": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE",
+ "aliases": [
+ "SC_RSPC"
+ ]
+ },
+ "0x7C1C": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN",
+ "aliases": [
+ "SC_LAPO"
+ ]
+ },
+ "0x7C1D": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE",
+ "aliases": [
+ "SC_RAPC"
+ ]
+ },
+ "0x7C1E": {
+ "group": "quantum",
+ "key": "QK_SPACE_CADET_RIGHT_SHIFT_ENTER",
+ "aliases": [
+ "SC_SENT"
+ ]
+ },
+
+ "0x7C20": {
+ "group": "quantum",
+ "key": "OUT_AUTO"
+ },
+ "0x7C21": {
+ "group": "quantum",
+ "key": "OUT_USB"
+ },
+ "0x7C22": {
+ "group": "quantum",
+ "key": "OUT_BT"
+ },
+
+ "0x7C30": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_NEXT",
+ "aliases": [
+ "UC_NEXT"
+ ]
+ },
+ "0x7C31": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_PREVIOUS",
+ "aliases": [
+ "UC_PREV"
+ ]
+ },
+ "0x7C32": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_MACOS",
+ "aliases": [
+ "UC_MAC"
+ ]
+ },
+ "0x7C33": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_LINUX",
+ "aliases": [
+ "UC_LINX"
+ ]
+ },
+ "0x7C34": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_WINDOWS",
+ "aliases": [
+ "UC_WIN"
+ ]
+ },
+ "0x7C35": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_BSD",
+ "aliases": [
+ "UC_BSD"
+ ]
+ },
+ "0x7C36": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_WINCOMPOSE",
+ "aliases": [
+ "UC_WINC"
+ ]
+ },
+ "0x7C37": {
+ "group": "quantum",
+ "key": "QK_UNICODE_MODE_EMACS",
+ "aliases": [
+ "UC_EMAC"
+ ]
+ },
+
+ "0x7C40": {
+ "group": "quantum",
+ "key": "HPT_ON"
+ },
+ "0x7C41": {
+ "group": "quantum",
+ "key": "HPT_OFF"
+ },
+ "0x7C42": {
+ "group": "quantum",
+ "key": "HPT_TOG"
+ },
+ "0x7C43": {
+ "group": "quantum",
+ "key": "HPT_RST"
+ },
+ "0x7C44": {
+ "group": "quantum",
+ "key": "HPT_FBK"
+ },
+ "0x7C45": {
+ "group": "quantum",
+ "key": "HPT_BUZ"
+ },
+ "0x7C46": {
+ "group": "quantum",
+ "key": "HPT_MODI"
+ },
+ "0x7C47": {
+ "group": "quantum",
+ "key": "HPT_MODD"
+ },
+ "0x7C48": {
+ "group": "quantum",
+ "key": "HPT_CONT"
+ },
+ "0x7C49": {
+ "group": "quantum",
+ "key": "HPT_CONI"
+ },
+ "0x7C4A": {
+ "group": "quantum",
+ "key": "HPT_COND"
+ },
+ "0x7C4B": {
+ "group": "quantum",
+ "key": "HPT_DWLI"
+ },
+ "0x7C4C": {
+ "group": "quantum",
+ "key": "HPT_DWLD"
+ },
+
+ "0x7C50": {
+ "group": "quantum",
+ "key": "QK_COMBO_ON",
+ "aliases": [
+ "CM_ON"
+ ]
+ },
+ "0x7C51": {
+ "group": "quantum",
+ "key": "QK_COMBO_OFF",
+ "aliases": [
+ "CM_OFF"
+ ]
+ },
+ "0x7C52": {
+ "group": "quantum",
+ "key": "QK_COMBO_TOGGLE",
+ "aliases": [
+ "CM_TOGG"
+ ]
+ },
+
+ "0x7C53": {
+ "group": "quantum",
+ "key": "QK_DYNAMIC_MACRO_RECORD_START_1",
+ "aliases": [
+ "DM_REC1"
+ ]
+ },
+ "0x7C54": {
+ "group": "quantum",
+ "key": "QK_DYNAMIC_MACRO_RECORD_START_2",
+ "aliases": [
+ "DM_REC2"
+ ]
+ },
+ "0x7C55": {
+ "group": "quantum",
+ "key": "QK_DYNAMIC_MACRO_RECORD_STOP",
+ "aliases": [
+ "DM_RSTP"
+ ]
+ },
+ "0x7C56": {
+ "group": "quantum",
+ "key": "QK_DYNAMIC_MACRO_PLAY_1",
+ "aliases": [
+ "DM_PLY1"
+ ]
+ },
+ "0x7C57": {
+ "group": "quantum",
+ "key": "QK_DYNAMIC_MACRO_PLAY_2",
+ "aliases": [
+ "DM_PLY2"
+ ]
+ },
+
+ "0x7C58": {
+ "group": "quantum",
+ "key": "QK_LEADER",
+ "aliases": [
+ "QK_LEAD"
+ ]
+ },
+
+ "0x7C59": {
+ "group": "quantum",
+ "key": "QK_LOCK"
+ },
+
+ "0x7C5A": {
+ "group": "quantum",
+ "key": "QK_ONE_SHOT_ON",
+ "aliases": [
+ "OS_ON"
+ ]
+ },
+ "0x7C5B": {
+ "group": "quantum",
+ "key": "QK_ONE_SHOT_OFF",
+ "aliases": [
+ "OS_OFF"
+ ]
+ },
+ "0x7C5C": {
+ "group": "quantum",
+ "key": "QK_ONE_SHOT_TOGGLE",
+ "aliases": [
+ "OS_TOGG"
+ ]
+ },
+
+ "0x7C5D": {
+ "group": "quantum",
+ "key": "QK_KEY_OVERRIDE_TOGGLE",
+ "aliases": [
+ "KO_TOGG"
+ ]
+ },
+ "0x7C5E": {
+ "group": "quantum",
+ "key": "QK_KEY_OVERRIDE_ON",
+ "aliases": [
+ "KO_ON"
+ ]
+ },
+ "0x7C5F": {
+ "group": "quantum",
+ "key": "QK_KEY_OVERRIDE_OFF",
+ "aliases": [
+ "KO_OFF"
+ ]
+ },
+
+ "0x7C60": {
+ "group": "quantum",
+ "key": "QK_SECURE_LOCK",
+ "aliases": [
+ "SE_LOCK"
+ ]
+ },
+ "0x7C61": {
+ "group": "quantum",
+ "key": "QK_SECURE_UNLOCK",
+ "aliases": [
+ "SE_UNLK"
+ ]
+ },
+ "0x7C62": {
+ "group": "quantum",
+ "key": "QK_SECURE_TOGGLE",
+ "aliases": [
+ "SE_TOGG"
+ ]
+ },
+ "0x7C63": {
+ "group": "quantum",
+ "key": "QK_SECURE_REQUEST",
+ "aliases": [
+ "SE_REQ"
+ ]
+ },
+
+ "0x7C70": {
+ "group": "quantum",
+ "key": "DT_PRNT"
+ },
+ "0x7C71": {
+ "group": "quantum",
+ "key": "DT_UP"
+ },
+ "0x7C72": {
+ "group": "quantum",
+ "key": "DT_DOWN"
+ },
+
+ "0x7C73": {
+ "group": "quantum",
+ "key": "PRINT_ON"
+ },
+ "0x7C74": {
+ "group": "quantum",
+ "key": "PRINT_OFF"
+ },
+
+ "0x7C75": {
+ "group": "quantum",
+ "key": "QK_CAPS_WORD_TOGGLE",
+ "aliases": [
+ "CW_TOGG"
+ ]
+ },
+
+ "0x7C76": {
+ "group": "quantum",
+ "key": "QK_AUTOCORRECT_ON",
+ "aliases": [
+ "AC_ON"
+ ]
+ },
+ "0x7C77": {
+ "group": "quantum",
+ "key": "QK_AUTOCORRECT_OFF",
+ "aliases": [
+ "AC_OFF"
+ ]
+ },
+ "0x7C78": {
+ "group": "quantum",
+ "key": "QK_AUTOCORRECT_TOGGLE",
+ "aliases": [
+ "AC_TOGG"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_sequencer.hjson b/data/constants/keycodes/keycodes_0.0.1_sequencer.hjson
new file mode 100644
index 0000000000..039d09b2fa
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_sequencer.hjson
@@ -0,0 +1,40 @@
+{
+ "keycodes": {
+ "0x7200": {
+ "group": "sequencer",
+ "key": "SQ_ON"
+ },
+ "0x7201": {
+ "group": "sequencer",
+ "key": "SQ_OFF"
+ },
+ "0x7202": {
+ "group": "sequencer",
+ "key": "SQ_TOG"
+ },
+ "0x7203": {
+ "group": "sequencer",
+ "key": "SQ_TMPD"
+ },
+ "0x7204": {
+ "group": "sequencer",
+ "key": "SQ_TMPU"
+ },
+ "0x7205": {
+ "group": "sequencer",
+ "key": "SQ_RESD"
+ },
+ "0x7206": {
+ "group": "sequencer",
+ "key": "SQ_RESU"
+ },
+ "0x7207": {
+ "group": "sequencer",
+ "key": "SQ_SALL"
+ },
+ "0x7208": {
+ "group": "sequencer",
+ "key": "SQ_SCLR"
+ }
+ }
+} \ No newline at end of file
diff --git a/data/constants/keycodes/keycodes_0.0.1_steno.hjson b/data/constants/keycodes/keycodes_0.0.1_steno.hjson
new file mode 100644
index 0000000000..cd19fdcde5
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_steno.hjson
@@ -0,0 +1,20 @@
+{
+ "keycodes": {
+ "0x74F0": {
+ "group": "steno",
+ "key": "QK_STENO_BOLT"
+ },
+ "0x74F1": {
+ "group": "steno",
+ "key": "QK_STENO_GEMINI"
+ },
+ "0x74F2": {
+ "group": "steno",
+ "key": "QK_STENO_COMB"
+ },
+ "0x74FC": {
+ "group": "steno",
+ "key": "QK_STENO_COMB_MAX"
+ }
+ }
+}
diff --git a/data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson b/data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson
new file mode 100644
index 0000000000..c800baef35
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson
@@ -0,0 +1,32 @@
+{
+ "keycodes": {
+ "0x56F0": {
+ "group": "swap_hands",
+ "key": "SH_TG"
+ },
+ "0x56F1": {
+ "group": "swap_hands",
+ "key": "SH_TT"
+ },
+ "0x56F2": {
+ "group": "swap_hands",
+ "key": "SH_MON"
+ },
+ "0x56F3": {
+ "group": "swap_hands",
+ "key": "SH_MOFF"
+ },
+ "0x56F4": {
+ "group": "swap_hands",
+ "key": "SH_OFF"
+ },
+ "0x56F5": {
+ "group": "swap_hands",
+ "key": "SH_ON"
+ },
+ "0x56F6": {
+ "group": "swap_hands",
+ "key": "SH_OS"
+ }
+ }
+}
diff --git a/data/schemas/keycodes.jsonschema b/data/schemas/keycodes.jsonschema
new file mode 100644
index 0000000000..77a8347b3b
--- /dev/null
+++ b/data/schemas/keycodes.jsonschema
@@ -0,0 +1,57 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema#",
+ "$id": "qmk.keycodes.v1",
+ "title": "Keycode Information",
+ "type": "object",
+ "definitions": {
+ "define": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 50,
+ "pattern": "^[A-Zs_0-9]*$"
+ },
+ "hex_number_4d": {
+ "type": "string",
+ "pattern": "^0x[0-9A-F]{4}$"
+ }
+ },
+ "properties": {
+ "ranges": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "required": [
+ "define"
+ ],
+ "properties": {
+ "define": {"$ref": "#/definitions/define"}
+ }
+ }
+ },
+ "keycodes": {
+ "type": "object",
+ "propertyNames": {
+ "$ref": "#/definitions/hex_number_4d"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "required": [
+ "key"
+ ],
+ "properties": {
+ "key": {"$ref": "#/definitions/define"},
+ "aliases": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index cf5b5ad87e..9190af4e50 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -56,6 +56,7 @@ subcommands = [
'qmk.cli.generate.info_json',
'qmk.cli.generate.keyboard_c',
'qmk.cli.generate.keyboard_h',
+ 'qmk.cli.generate.keycodes',
'qmk.cli.generate.rgb_breathe_table',
'qmk.cli.generate.rules_mk',
'qmk.cli.generate.version_h',
diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py
index 8d8ca3cd41..0f29cd2327 100755
--- a/lib/python/qmk/cli/generate/api.py
+++ b/lib/python/qmk/cli/generate/api.py
@@ -11,12 +11,23 @@ from qmk.info import info_json
from qmk.json_encoders import InfoJSONEncoder
from qmk.json_schema import json_load
from qmk.keyboard import find_readme, list_keyboards
+from qmk.keycodes import load_spec, list_versions
DATA_PATH = Path('data')
TEMPLATE_PATH = DATA_PATH / 'templates/api/'
BUILD_API_PATH = Path('.build/api_data/')
+def _resolve_keycode_specs(output_folder):
+ """To make it easier for consumers, publish pre-merged spec files
+ """
+ for version in list_versions():
+ overall = load_spec(version)
+
+ output_file = output_folder / f'constants/keycodes_{version}.json'
+ output_file.write_text(json.dumps(overall, indent=4), encoding='utf-8')
+
+
def _filtered_keyboard_list():
"""Perform basic filtering of list_keyboards
"""
@@ -95,6 +106,9 @@ def generate_api(cli):
'usb': usb_list,
}
+ # Feature specific handling
+ _resolve_keycode_specs(v1_dir)
+
# Write the global JSON files
keyboard_all_json = json.dumps({'last_updated': current_datetime(), 'keyboards': kb_all}, cls=InfoJSONEncoder)
usb_json = json.dumps({'last_updated': current_datetime(), 'usb': usb_list}, cls=InfoJSONEncoder)
diff --git a/lib/python/qmk/cli/generate/keycodes.py b/lib/python/qmk/cli/generate/keycodes.py
new file mode 100644
index 0000000000..29b7db3c80
--- /dev/null
+++ b/lib/python/qmk/cli/generate/keycodes.py
@@ -0,0 +1,88 @@
+"""Used by the make system to generate keycodes.h from keycodes_{version}.json
+"""
+from milc import cli
+
+from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
+from qmk.commands import dump_lines
+from qmk.path import normpath
+from qmk.keycodes import load_spec
+
+
+def _generate_ranges(lines, keycodes):
+ lines.append('')
+ lines.append('enum qk_keycode_ranges {')
+ lines.append('// Ranges')
+ for key, value in keycodes["ranges"].items():
+ lo, mask = map(lambda x: int(x, 16), key.split("/"))
+ hi = lo + mask
+ define = value.get("define")
+ lines.append(f' {define.ljust(30)} = 0x{lo:04X},')
+ lines.append(f' {(define + "_MAX").ljust(30)} = 0x{hi:04X},')
+ lines.append('};')
+
+
+def _generate_defines(lines, keycodes):
+ lines.append('')
+ lines.append('enum qk_keycode_defines {')
+ lines.append('// Keycodes')
+ for key, value in keycodes["keycodes"].items():
+ lines.append(f' {value.get("key")} = {key},')
+
+ lines.append('')
+ lines.append('// Alias')
+ for key, value in keycodes["keycodes"].items():
+ temp = value.get("key")
+ for alias in value.get("aliases", []):
+ lines.append(f' {alias.ljust(10)} = {temp},')
+
+ lines.append('};')
+
+
+def _generate_helpers(lines, keycodes):
+ lines.append('')
+ lines.append('// Range Helpers')
+ for value in keycodes["ranges"].values():
+ define = value.get("define")
+ lines.append(f'#define IS_{define}(code) ((code) >= {define} && (code) <= {define + "_MAX"})')
+
+ # extract min/max
+ temp = {}
+ for key, value in keycodes["keycodes"].items():
+ group = value.get('group', None)
+ if not group:
+ continue
+ if group not in temp:
+ temp[group] = [0xFFFF, 0]
+ key = int(key, 16)
+ if key < temp[group][0]:
+ temp[group][0] = key
+ if key > temp[group][1]:
+ temp[group][1] = key
+
+ lines.append('')
+ lines.append('// Group Helpers')
+ for group, codes in temp.items():
+ lo = keycodes["keycodes"][f'0x{codes[0]:04X}']['key']
+ hi = keycodes["keycodes"][f'0x{codes[1]:04X}']['key']
+ lines.append(f'#define IS_{ group.upper() }_KEYCODE(code) ((code) >= {lo} && (code) <= {hi})')
+
+
+@cli.argument('-v', '--version', arg_only=True, required=True, help='Version of keycodes to generate.')
+@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
+@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
+@cli.subcommand('Used by the make system to generate keycodes.h from keycodes_{version}.json', hidden=True)
+def generate_keycodes(cli):
+ """Generates the keycodes.h file.
+ """
+
+ # Build the keycodes.h file.
+ keycodes_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once', '// clang-format off']
+
+ keycodes = load_spec(cli.args.version)
+
+ _generate_ranges(keycodes_h_lines, keycodes)
+ _generate_defines(keycodes_h_lines, keycodes)
+ _generate_helpers(keycodes_h_lines, keycodes)
+
+ # Show the results
+ dump_lines(cli.args.output, keycodes_h_lines, cli.args.quiet)
diff --git a/lib/python/qmk/keycodes.py b/lib/python/qmk/keycodes.py
new file mode 100644
index 0000000000..cf1ee0767a
--- /dev/null
+++ b/lib/python/qmk/keycodes.py
@@ -0,0 +1,57 @@
+from pathlib import Path
+
+from qmk.json_schema import deep_update, json_load, validate
+
+CONSTANTS_PATH = Path('data/constants/keycodes/')
+
+
+def _validate(spec):
+ # first throw it to the jsonschema
+ validate(spec, 'qmk.keycodes.v1')
+
+ # no duplicate keycodes
+ keycodes = []
+ for value in spec['keycodes'].values():
+ keycodes.append(value['key'])
+ keycodes.extend(value.get('aliases', []))
+ duplicates = set([x for x in keycodes if keycodes.count(x) > 1])
+ if duplicates:
+ raise ValueError(f'Keycode spec contains duplicate keycodes! ({",".join(duplicates)})')
+
+
+def load_spec(version):
+ """Build keycode data from the requested spec file
+ """
+ if version == 'latest':
+ version = list_versions()[0]
+
+ file = CONSTANTS_PATH / f'keycodes_{version}.hjson'
+ if not file.exists():
+ raise ValueError(f'Requested keycode spec ({version}) is invalid!')
+
+ # Load base
+ spec = json_load(file)
+
+ # Merge in fragments
+ fragments = CONSTANTS_PATH.glob(f'keycodes_{version}_*.hjson')
+ for file in fragments:
+ deep_update(spec, json_load(file))
+
+ # Sort?
+ spec['keycodes'] = dict(sorted(spec['keycodes'].items()))
+
+ # Validate?
+ _validate(spec)
+
+ return spec
+
+
+def list_versions():
+ """Return available versions - sorted newest first
+ """
+ ret = []
+ for file in CONSTANTS_PATH.glob('keycodes_[0-9].[0-9].[0-9].hjson'):
+ ret.append(file.stem.split('_')[1])
+
+ ret.sort(reverse=True)
+ return ret
diff --git a/quantum/action_code.h b/quantum/action_code.h
index 14cfd025f1..58d929016d 100644
--- a/quantum/action_code.h
+++ b/quantum/action_code.h
@@ -179,6 +179,9 @@ enum mods_bit {
MOD_RALT = 0x14,
MOD_RGUI = 0x18,
};
+#define MOD_HYPR (MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI)
+#define MOD_MEH (MOD_LCTL | MOD_LSFT | MOD_LALT)
+
enum mods_codes {
MODS_ONESHOT = 0x00,
MODS_TAP_TOGGLE = 0x01,
diff --git a/quantum/keycode.h b/quantum/keycode.h
index 2e9a85ee66..45736e92f1 100644
--- a/quantum/keycode.h
+++ b/quantum/keycode.h
@@ -26,16 +26,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* FIXME: Add doxygen comments here */
-#define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED)
#define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF)
-#define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL)
-#define IS_MOD(code) (KC_LEFT_CTRL <= (code) && (code) <= KC_RIGHT_GUI)
+#define IS_KEY(code) IS_BASIC_KEYCODE(code)
+#define IS_MOD(code) IS_MODIFIERS_KEYCODE(code)
-#define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF))
-#define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE)
-#define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_ASST)
+#define IS_SYSTEM(code) IS_SYSTEM_KEYCODE(code)
+#define IS_CONSUMER(code) IS_MEDIA_KEYCODE(code)
-#define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2)
+#define IS_MOUSEKEY(code) IS_MOUSE_KEYCODE(code)
#define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT)
#define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN8)
#define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT)
@@ -62,486 +60,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// clang-format off
-/*
- * Short names for ease of definition of keymap
- */
-/* Transparent */
-#define KC_TRANSPARENT 0x01
-#define KC_TRNS KC_TRANSPARENT
-
-/* Punctuation */
-#define KC_ENT KC_ENTER
-#define KC_ESC KC_ESCAPE
-#define KC_BSPC KC_BACKSPACE
-#define KC_SPC KC_SPACE
-#define KC_MINS KC_MINUS
-#define KC_EQL KC_EQUAL
-#define KC_LBRC KC_LEFT_BRACKET
-#define KC_RBRC KC_RIGHT_BRACKET
-#define KC_BSLS KC_BACKSLASH
-#define KC_NUHS KC_NONUS_HASH
-#define KC_SCLN KC_SEMICOLON
-#define KC_QUOT KC_QUOTE
-#define KC_GRV KC_GRAVE
-#define KC_COMM KC_COMMA
-#define KC_SLSH KC_SLASH
-#define KC_NUBS KC_NONUS_BACKSLASH
-
-/* Lock Keys */
-#define KC_CAPS KC_CAPS_LOCK
-#define KC_SCRL KC_SCROLL_LOCK
-#define KC_NUM KC_NUM_LOCK
-#define KC_LCAP KC_LOCKING_CAPS_LOCK
-#define KC_LNUM KC_LOCKING_NUM_LOCK
-#define KC_LSCR KC_LOCKING_SCROLL_LOCK
-
-/* Commands */
-#define KC_PSCR KC_PRINT_SCREEN
-#define KC_PAUS KC_PAUSE
-#define KC_BRK KC_PAUSE
-#define KC_INS KC_INSERT
-#define KC_PGUP KC_PAGE_UP
-#define KC_DEL KC_DELETE
-#define KC_PGDN KC_PAGE_DOWN
-#define KC_RGHT KC_RIGHT
-#define KC_APP KC_APPLICATION
-#define KC_EXEC KC_EXECUTE
-#define KC_SLCT KC_SELECT
-#define KC_AGIN KC_AGAIN
-#define KC_PSTE KC_PASTE
-#define KC_ERAS KC_ALTERNATE_ERASE
-#define KC_SYRQ KC_SYSTEM_REQUEST
-#define KC_CNCL KC_CANCEL
-#define KC_CLR KC_CLEAR
-#define KC_PRIR KC_PRIOR
-#define KC_RETN KC_RETURN
-#define KC_SEPR KC_SEPARATOR
-#define KC_CLAG KC_CLEAR_AGAIN
-#define KC_CRSL KC_CRSEL
-#define KC_EXSL KC_EXSEL
-
-/* Keypad */
-#define KC_PSLS KC_KP_SLASH
-#define KC_PAST KC_KP_ASTERISK
-#define KC_PMNS KC_KP_MINUS
-#define KC_PPLS KC_KP_PLUS
-#define KC_PENT KC_KP_ENTER
-#define KC_P1 KC_KP_1
-#define KC_P2 KC_KP_2
-#define KC_P3 KC_KP_3
-#define KC_P4 KC_KP_4
-#define KC_P5 KC_KP_5
-#define KC_P6 KC_KP_6
-#define KC_P7 KC_KP_7
-#define KC_P8 KC_KP_8
-#define KC_P9 KC_KP_9
-#define KC_P0 KC_KP_0
-#define KC_PDOT KC_KP_DOT
-#define KC_PEQL KC_KP_EQUAL
-#define KC_PCMM KC_KP_COMMA
-
-/* Language Specific */
-#define KC_INT1 KC_INTERNATIONAL_1
-#define KC_INT2 KC_INTERNATIONAL_2
-#define KC_INT3 KC_INTERNATIONAL_3
-#define KC_INT4 KC_INTERNATIONAL_4
-#define KC_INT5 KC_INTERNATIONAL_5
-#define KC_INT6 KC_INTERNATIONAL_6
-#define KC_INT7 KC_INTERNATIONAL_7
-#define KC_INT8 KC_INTERNATIONAL_8
-#define KC_INT9 KC_INTERNATIONAL_9
-#define KC_LNG1 KC_LANGUAGE_1
-#define KC_LNG2 KC_LANGUAGE_2
-#define KC_LNG3 KC_LANGUAGE_3
-#define KC_LNG4 KC_LANGUAGE_4
-#define KC_LNG5 KC_LANGUAGE_5
-#define KC_LNG6 KC_LANGUAGE_6
-#define KC_LNG7 KC_LANGUAGE_7
-#define KC_LNG8 KC_LANGUAGE_8
-#define KC_LNG9 KC_LANGUAGE_9
-
-/* Modifiers */
-#define KC_LCTL KC_LEFT_CTRL
-#define KC_LSFT KC_LEFT_SHIFT
-#define KC_LALT KC_LEFT_ALT
-#define KC_LOPT KC_LEFT_ALT
-#define KC_LGUI KC_LEFT_GUI
-#define KC_LCMD KC_LEFT_GUI
-#define KC_LWIN KC_LEFT_GUI
-#define KC_RCTL KC_RIGHT_CTRL
-#define KC_RSFT KC_RIGHT_SHIFT
-#define KC_RALT KC_RIGHT_ALT
-#define KC_ALGR KC_RIGHT_ALT
-#define KC_ROPT KC_RIGHT_ALT
-#define KC_RGUI KC_RIGHT_GUI
-#define KC_RCMD KC_RIGHT_GUI
-#define KC_RWIN KC_RIGHT_GUI
-
-/* Generic Desktop Page (0x01) */
-#define KC_PWR KC_SYSTEM_POWER
-#define KC_SLEP KC_SYSTEM_SLEEP
-#define KC_WAKE KC_SYSTEM_WAKE
-
-/* Consumer Page (0x0C) */
-#define KC_MUTE KC_AUDIO_MUTE
-#define KC_VOLU KC_AUDIO_VOL_UP
-#define KC_VOLD KC_AUDIO_VOL_DOWN
-#define KC_MNXT KC_MEDIA_NEXT_TRACK
-#define KC_MPRV KC_MEDIA_PREV_TRACK
-#define KC_MSTP KC_MEDIA_STOP
-#define KC_MPLY KC_MEDIA_PLAY_PAUSE
-#define KC_MSEL KC_MEDIA_SELECT
-#define KC_EJCT KC_MEDIA_EJECT
-#define KC_CALC KC_CALCULATOR
-#define KC_MYCM KC_MY_COMPUTER
-#define KC_WSCH KC_WWW_SEARCH
-#define KC_WHOM KC_WWW_HOME
-#define KC_WBAK KC_WWW_BACK
-#define KC_WFWD KC_WWW_FORWARD
-#define KC_WSTP KC_WWW_STOP
-#define KC_WREF KC_WWW_REFRESH
-#define KC_WFAV KC_WWW_FAVORITES
-#define KC_MFFD KC_MEDIA_FAST_FORWARD
-#define KC_MRWD KC_MEDIA_REWIND
-#define KC_BRIU KC_BRIGHTNESS_UP
-#define KC_BRID KC_BRIGHTNESS_DOWN
-#define KC_CPNL KC_CONTROL_PANEL
-#define KC_ASST KC_ASSISTANT
-
-/* System Specific */
-#define KC_BRMU KC_PAUSE
-#define KC_BRMD KC_SCROLL_LOCK
-
-/* Mouse Keys */
-#define KC_MS_U KC_MS_UP
-#define KC_MS_D KC_MS_DOWN
-#define KC_MS_L KC_MS_LEFT
-#define KC_MS_R KC_MS_RIGHT
-#define KC_BTN1 KC_MS_BTN1
-#define KC_BTN2 KC_MS_BTN2
-#define KC_BTN3 KC_MS_BTN3
-#define KC_BTN4 KC_MS_BTN4
-#define KC_BTN5 KC_MS_BTN5
-#define KC_BTN6 KC_MS_BTN6
-#define KC_BTN7 KC_MS_BTN7
-#define KC_BTN8 KC_MS_BTN8
-#define KC_WH_U KC_MS_WH_UP
-#define KC_WH_D KC_MS_WH_DOWN
-#define KC_WH_L KC_MS_WH_LEFT
-#define KC_WH_R KC_MS_WH_RIGHT
-#define KC_ACL0 KC_MS_ACCEL0
-#define KC_ACL1 KC_MS_ACCEL1
-#define KC_ACL2 KC_MS_ACCEL2
-
-// clang-format on
-
-/* Keyboard/Keypad Page (0x07) */
-enum hid_keyboard_keypad_usage {
- KC_NO = 0x00,
- KC_ROLL_OVER,
- KC_POST_FAIL,
- KC_UNDEFINED,
- KC_A,
- KC_B,
- KC_C,
- KC_D,
- KC_E,
- KC_F,
- KC_G,
- KC_H,
- KC_I,
- KC_J,
- KC_K,
- KC_L,
- KC_M, // 0x10
- KC_N,
- KC_O,
- KC_P,
- KC_Q,
- KC_R,
- KC_S,
- KC_T,
- KC_U,
- KC_V,
- KC_W,
- KC_X,
- KC_Y,
- KC_Z,
- KC_1,
- KC_2,
- KC_3, // 0x20
- KC_4,
- KC_5,
- KC_6,
- KC_7,
- KC_8,
- KC_9,
- KC_0,
- KC_ENTER,
- KC_ESCAPE,
- KC_BACKSPACE,
- KC_TAB,
- KC_SPACE,
- KC_MINUS,
- KC_EQUAL,
- KC_LEFT_BRACKET,
- KC_RIGHT_BRACKET, // 0x30
- KC_BACKSLASH,
- KC_NONUS_HASH,
- KC_SEMICOLON,
- KC_QUOTE,
- KC_GRAVE,
- KC_COMMA,
- KC_DOT,
- KC_SLASH,
- KC_CAPS_LOCK,
- KC_F1,
- KC_F2,
- KC_F3,
- KC_F4,
- KC_F5,
- KC_F6,
- KC_F7, // 0x40
- KC_F8,
- KC_F9,
- KC_F10,
- KC_F11,
- KC_F12,
- KC_PRINT_SCREEN,
- KC_SCROLL_LOCK,
- KC_PAUSE,
- KC_INSERT,
- KC_HOME,
- KC_PAGE_UP,
- KC_DELETE,
- KC_END,
- KC_PAGE_DOWN,
- KC_RIGHT,
- KC_LEFT, // 0x50
- KC_DOWN,
- KC_UP,
- KC_NUM_LOCK,
- KC_KP_SLASH,
- KC_KP_ASTERISK,
- KC_KP_MINUS,
- KC_KP_PLUS,
- KC_KP_ENTER,
- KC_KP_1,
- KC_KP_2,
- KC_KP_3,
- KC_KP_4,
- KC_KP_5,
- KC_KP_6,
- KC_KP_7,
- KC_KP_8, // 0x60
- KC_KP_9,
- KC_KP_0,
- KC_KP_DOT,
- KC_NONUS_BACKSLASH,
- KC_APPLICATION,
- KC_KB_POWER,
- KC_KP_EQUAL,
- KC_F13,
- KC_F14,
- KC_F15,
- KC_F16,
- KC_F17,
- KC_F18,
- KC_F19,
- KC_F20,
- KC_F21, // 0x70
- KC_F22,
- KC_F23,
- KC_F24,
- KC_EXECUTE,
- KC_HELP,
- KC_MENU,
- KC_SELECT,
- KC_STOP,
- KC_AGAIN,
- KC_UNDO,
- KC_CUT,
- KC_COPY,
- KC_PASTE,
- KC_FIND,
- KC_KB_MUTE,
- KC_KB_VOLUME_UP, // 0x80
- KC_KB_VOLUME_DOWN,
- KC_LOCKING_CAPS_LOCK,
- KC_LOCKING_NUM_LOCK,
- KC_LOCKING_SCROLL_LOCK,
- KC_KP_COMMA,
- KC_KP_EQUAL_AS400,
- KC_INTERNATIONAL_1,
- KC_INTERNATIONAL_2,
- KC_INTERNATIONAL_3,
- KC_INTERNATIONAL_4,
- KC_INTERNATIONAL_5,
- KC_INTERNATIONAL_6,
- KC_INTERNATIONAL_7,
- KC_INTERNATIONAL_8,
- KC_INTERNATIONAL_9,
- KC_LANGUAGE_1, // 0x90
- KC_LANGUAGE_2,
- KC_LANGUAGE_3,
- KC_LANGUAGE_4,
- KC_LANGUAGE_5,
- KC_LANGUAGE_6,
- KC_LANGUAGE_7,
- KC_LANGUAGE_8,
- KC_LANGUAGE_9,
- KC_ALTERNATE_ERASE,
- KC_SYSTEM_REQUEST,
- KC_CANCEL,
- KC_CLEAR,
- KC_PRIOR,
- KC_RETURN,
- KC_SEPARATOR,
- KC_OUT, // 0xA0
- KC_OPER,
- KC_CLEAR_AGAIN,
- KC_CRSEL,
- KC_EXSEL,
-
-#if 0
- // ***************************************************************
- // These keycodes are present in the HID spec, but are *
- // nonfunctional on modern OSes. QMK uses this range (0xA5-0xDF) *
- // for the media and function keys instead - see below. *
- // ***************************************************************
-
- KC_KP_00 = 0xB0,
- KC_KP_000,
- KC_THOUSANDS_SEPARATOR,
- KC_DECIMAL_SEPARATOR,
- KC_CURRENCY_UNIT,
- KC_CURRENCY_SUB_UNIT,
- KC_KP_LEFT_PARENTHESIS,
- KC_KP_RIGHT_PARENTHESIS,
- KC_KP_LEFT_BRACE,
- KC_KP_RIGHT_BRACE,
- KC_KP_TAB,
- KC_KP_BACKSPACE,
- KC_KP_A,
- KC_KP_B,
- KC_KP_C,
- KC_KP_D,
- KC_KP_E, //0xC0
- KC_KP_F,
- KC_KP_XOR,
- KC_KP_HAT,
- KC_KP_PERCENT,
- KC_KP_LESS_THAN,
- KC_KP_GREATER_THAN,
- KC_KP_AND,
- KC_KP_LAZY_AND,
- KC_KP_OR,
- KC_KP_LAZY_OR,
- KC_KP_COLON,
- KC_KP_HASH,
- KC_KP_SPACE,
- KC_KP_AT,
- KC_KP_EXCLAMATION,
- KC_KP_MEM_STORE, //0xD0
- KC_KP_MEM_RECALL,
- KC_KP_MEM_CLEAR,
- KC_KP_MEM_ADD,
- KC_KP_MEM_SUB,
- KC_KP_MEM_MUL,
- KC_KP_MEM_DIV,
- KC_KP_PLUS_MINUS,
- KC_KP_CLEAR,
- KC_KP_CLEAR_ENTRY,
- KC_KP_BINARY,
- KC_KP_OCTAL,
- KC_KP_DECIMAL,
- KC_KP_HEXADECIMAL,
-#endif
-
- /* Modifiers */
- KC_LEFT_CTRL = 0xE0,
- KC_LEFT_SHIFT,
- KC_LEFT_ALT,
- KC_LEFT_GUI,
- KC_RIGHT_CTRL,
- KC_RIGHT_SHIFT,
- KC_RIGHT_ALT,
- KC_RIGHT_GUI
-
- // **********************************************
- // * 0xF0-0xFF are unallocated in the HID spec. *
- // * QMK uses these for Mouse Keys - see below. *
- // **********************************************
-};
-
-/* Media and Function keys */
-enum internal_special_keycodes {
- /* Generic Desktop Page (0x01) */
- KC_SYSTEM_POWER = 0xA5,
- KC_SYSTEM_SLEEP,
- KC_SYSTEM_WAKE,
-
- /* Consumer Page (0x0C) */
- KC_AUDIO_MUTE,
- KC_AUDIO_VOL_UP,
- KC_AUDIO_VOL_DOWN,
- KC_MEDIA_NEXT_TRACK,
- KC_MEDIA_PREV_TRACK,
- KC_MEDIA_STOP,
- KC_MEDIA_PLAY_PAUSE,
- KC_MEDIA_SELECT,
- KC_MEDIA_EJECT, // 0xB0
- KC_MAIL,
- KC_CALCULATOR,
- KC_MY_COMPUTER,
- KC_WWW_SEARCH,
- KC_WWW_HOME,
- KC_WWW_BACK,
- KC_WWW_FORWARD,
- KC_WWW_STOP,
- KC_WWW_REFRESH,
- KC_WWW_FAVORITES,
- KC_MEDIA_FAST_FORWARD,
- KC_MEDIA_REWIND,
- KC_BRIGHTNESS_UP,
- KC_BRIGHTNESS_DOWN,
- KC_CONTROL_PANEL,
- KC_ASSISTANT // 0xC0
-};
-
-enum mouse_keys {
-/* Mouse Buttons */
-#ifdef VIA_ENABLE
- KC_MS_UP = 0xF0,
-#else
- KC_MS_UP = 0xCD,
-#endif
- KC_MS_DOWN,
- KC_MS_LEFT,
- KC_MS_RIGHT,
- KC_MS_BTN1,
- KC_MS_BTN2,
- KC_MS_BTN3,
- KC_MS_BTN4,
- KC_MS_BTN5,
-#ifdef VIA_ENABLE
- KC_MS_BTN6 = KC_MS_BTN5,
- KC_MS_BTN7 = KC_MS_BTN5,
- KC_MS_BTN8 = KC_MS_BTN5,
-#else
- KC_MS_BTN6,
- KC_MS_BTN7,
- KC_MS_BTN8,
-#endif
-
- /* Mouse Wheel */
- KC_MS_WH_UP,
- KC_MS_WH_DOWN,
- KC_MS_WH_LEFT,
- KC_MS_WH_RIGHT,
-
- /* Acceleration */
- KC_MS_ACCEL0,
- KC_MS_ACCEL1,
- KC_MS_ACCEL2 // 0xDF, or 0xFF if via enabled
-};
+// TODO: dd keycodes
+#include "keycodes.h"
diff --git a/quantum/keycodes.h b/quantum/keycodes.h
new file mode 100644
index 0000000000..6772bb6a4a
--- /dev/null
+++ b/quantum/keycodes.h
@@ -0,0 +1,1115 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*******************************************************************************
+ 88888888888 888 d8b .d888 d8b 888 d8b
+ 888 888 Y8P d88P" Y8P 888 Y8P
+ 888 888 888 888
+ 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
+ 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
+ 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
+ 888 888 888 888 X88 888 888 888 Y8b. 888 X88
+ 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
+ 888 888
+ 888 888
+ 888 888
+ .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
+ d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
+ 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
+ Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
+ "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
+ 888
+ Y8b d88P
+ "Y88P"
+*******************************************************************************/
+
+#pragma once
+// clang-format off
+
+enum qk_keycode_ranges {
+// Ranges
+ QK_BASIC = 0x0000,
+ QK_BASIC_MAX = 0x00FF,
+ QK_MODS = 0x0100,
+ QK_MODS_MAX = 0x1FFF,
+ QK_MOD_TAP = 0x2000,
+ QK_MOD_TAP_MAX = 0x3FFF,
+ QK_LAYER_TAP = 0x4000,
+ QK_LAYER_TAP_MAX = 0x4FFF,
+ QK_LAYER_MOD = 0x5000,
+ QK_LAYER_MOD_MAX = 0x51FF,
+ QK_TO = 0x5200,
+ QK_TO_MAX = 0x521F,
+ QK_MOMENTARY = 0x5220,
+ QK_MOMENTARY_MAX = 0x523F,
+ QK_DEF_LAYER = 0x5240,
+ QK_DEF_LAYER_MAX = 0x525F,
+ QK_TOGGLE_LAYER = 0x5260,
+ QK_TOGGLE_LAYER_MAX = 0x527F,
+ QK_ONE_SHOT_LAYER = 0x5280,
+ QK_ONE_SHOT_LAYER_MAX = 0x529F,
+ QK_ONE_SHOT_MOD = 0x52A0,
+ QK_ONE_SHOT_MOD_MAX = 0x52BF,
+ QK_LAYER_TAP_TOGGLE = 0x52C0,
+ QK_LAYER_TAP_TOGGLE_MAX = 0x52DF,
+ QK_SWAP_HANDS = 0x5600,
+ QK_SWAP_HANDS_MAX = 0x56FF,
+ QK_TAP_DANCE = 0x5700,
+ QK_TAP_DANCE_MAX = 0x57FF,
+ QK_MAGIC = 0x7000,
+ QK_MAGIC_MAX = 0x70FF,
+ QK_MIDI = 0x7100,
+ QK_MIDI_MAX = 0x71FF,
+ QK_SEQUENCER = 0x7200,
+ QK_SEQUENCER_MAX = 0x73FF,
+ QK_JOYSTICK = 0x7400,
+ QK_JOYSTICK_MAX = 0x743F,
+ QK_PROGRAMMABLE_BUTTON = 0x7440,
+ QK_PROGRAMMABLE_BUTTON_MAX = 0x747F,
+ QK_AUDIO = 0x7480,
+ QK_AUDIO_MAX = 0x74BF,
+ QK_STENO = 0x74C0,
+ QK_STENO_MAX = 0x74FF,
+ QK_MACRO = 0x7700,
+ QK_MACRO_MAX = 0x777F,
+ QK_LIGHTING = 0x7800,
+ QK_LIGHTING_MAX = 0x78FF,
+ QK_QUANTUM = 0x7C00,
+ QK_QUANTUM_MAX = 0x7DFF,
+ QK_KB = 0x7E00,
+ QK_KB_MAX = 0x7EFF,
+ QK_USER = 0x7F00,
+ QK_USER_MAX = 0x7FFF,
+ QK_UNICODE = 0x8000,
+ QK_UNICODE_MAX = 0xFFFF,
+};
+
+enum qk_keycode_defines {
+// Keycodes
+ KC_NO = 0x0000,
+ KC_TRANSPARENT = 0x0001,
+ KC_A = 0x0004,
+ KC_B = 0x0005,
+ KC_C = 0x0006,
+ KC_D = 0x0007,
+ KC_E = 0x0008,
+ KC_F = 0x0009,
+ KC_G = 0x000A,
+ KC_H = 0x000B,
+ KC_I = 0x000C,
+ KC_J = 0x000D,
+ KC_K = 0x000E,
+ KC_L = 0x000F,
+ KC_M = 0x0010,
+ KC_N = 0x0011,
+ KC_O = 0x0012,
+ KC_P = 0x0013,
+ KC_Q = 0x0014,
+ KC_R = 0x0015,
+ KC_S = 0x0016,
+ KC_T = 0x0017,
+ KC_U = 0x0018,
+ KC_V = 0x0019,
+ KC_W = 0x001A,
+ KC_X = 0x001B,
+ KC_Y = 0x001C,
+ KC_Z = 0x001D,
+ KC_1 = 0x001E,
+ KC_2 = 0x001F,
+ KC_3 = 0x0020,
+ KC_4 = 0x0021,
+ KC_5 = 0x0022,
+ KC_6 = 0x0023,
+ KC_7 = 0x0024,
+ KC_8 = 0x0025,
+ KC_9 = 0x0026,
+ KC_0 = 0x0027,
+ KC_ENTER = 0x0028,
+ KC_ESCAPE = 0x0029,
+ KC_BACKSPACE = 0x002A,
+ KC_TAB = 0x002B,
+ KC_SPACE = 0x002C,
+ KC_MINUS = 0x002D,
+ KC_EQUAL = 0x002E,
+ KC_LEFT_BRACKET = 0x002F,
+ KC_RIGHT_BRACKET = 0x0030,
+ KC_BACKSLASH = 0x0031,
+ KC_NONUS_HASH = 0x0032,
+ KC_SEMICOLON = 0x0033,
+ KC_QUOTE = 0x0034,
+ KC_GRAVE = 0x0035,
+ KC_COMMA = 0x0036,
+ KC_DOT = 0x0037,
+ KC_SLASH = 0x0038,
+ KC_CAPS_LOCK = 0x0039,
+ KC_F1 = 0x003A,
+ KC_F2 = 0x003B,
+ KC_F3 = 0x003C,
+ KC_F4 = 0x003D,
+ KC_F5 = 0x003E,
+ KC_F6 = 0x003F,
+ KC_F7 = 0x0040,
+ KC_F8 = 0x0041,
+ KC_F9 = 0x0042,
+ KC_F10 = 0x0043,
+ KC_F11 = 0x0044,
+ KC_F12 = 0x0045,
+ KC_PRINT_SCREEN = 0x0046,
+ KC_SCROLL_LOCK = 0x0047,
+ KC_PAUSE = 0x0048,
+ KC_INSERT = 0x0049,
+ KC_HOME = 0x004A,
+ KC_PAGE_UP = 0x004B,
+ KC_DELETE = 0x004C,
+ KC_END = 0x004D,
+ KC_PAGE_DOWN = 0x004E,
+ KC_RIGHT = 0x004F,
+ KC_LEFT = 0x0050,
+ KC_DOWN = 0x0051,
+ KC_UP = 0x0052,
+ KC_NUM_LOCK = 0x0053,
+ KC_KP_SLASH = 0x0054,
+ KC_KP_ASTERISK = 0x0055,
+ KC_KP_MINUS = 0x0056,
+ KC_KP_PLUS = 0x0057,
+ KC_KP_ENTER = 0x0058,
+ KC_KP_1 = 0x0059,
+ KC_KP_2 = 0x005A,
+ KC_KP_3 = 0x005B,
+ KC_KP_4 = 0x005C,
+ KC_KP_5 = 0x005D,
+ KC_KP_6 = 0x005E,
+ KC_KP_7 = 0x005F,
+ KC_KP_8 = 0x0060,
+ KC_KP_9 = 0x0061,
+ KC_KP_0 = 0x0062,
+ KC_KP_DOT = 0x0063,
+ KC_NONUS_BACKSLASH = 0x0064,
+ KC_APPLICATION = 0x0065,
+ KC_KB_POWER = 0x0066,
+ KC_KP_EQUAL = 0x0067,
+ KC_F13 = 0x0068,
+ KC_F14 = 0x0069,
+ KC_F15 = 0x006A,
+ KC_F16 = 0x006B,
+ KC_F17 = 0x006C,
+ KC_F18 = 0x006D,
+ KC_F19 = 0x006E,
+ KC_F20 = 0x006F,
+ KC_F21 = 0x0070,
+ KC_F22 = 0x0071,
+ KC_F23 = 0x0072,
+ KC_F24 = 0x0073,
+ KC_EXECUTE = 0x0074,
+ KC_HELP = 0x0075,
+ KC_MENU = 0x0076,
+ KC_SELECT = 0x0077,
+ KC_STOP = 0x0078,
+ KC_AGAIN = 0x0079,
+ KC_UNDO = 0x007A,
+ KC_CUT = 0x007B,
+ KC_COPY = 0x007C,
+ KC_PASTE = 0x007D,
+ KC_FIND = 0x007E,
+ KC_KB_MUTE = 0x007F,
+ KC_KB_VOLUME_UP = 0x0080,
+ KC_KB_VOLUME_DOWN = 0x0081,
+ KC_LOCKING_CAPS_LOCK = 0x0082,
+ KC_LOCKING_NUM_LOCK = 0x0083,
+ KC_LOCKING_SCROLL_LOCK = 0x0084,
+ KC_KP_COMMA = 0x0085,
+ KC_KP_EQUAL_AS400 = 0x0086,
+ KC_INTERNATIONAL_1 = 0x0087,
+ KC_INTERNATIONAL_2 = 0x0088,
+ KC_INTERNATIONAL_3 = 0x0089,
+ KC_INTERNATIONAL_4 = 0x008A,
+ KC_INTERNATIONAL_5 = 0x008B,
+ KC_INTERNATIONAL_6 = 0x008C,
+ KC_INTERNATIONAL_7 = 0x008D,
+ KC_INTERNATIONAL_8 = 0x008E,
+ KC_INTERNATIONAL_9 = 0x008F,
+ KC_LANGUAGE_1 = 0x0090,
+ KC_LANGUAGE_2 = 0x0091,
+ KC_LANGUAGE_3 = 0x0092,
+ KC_LANGUAGE_4 = 0x0093,
+ KC_LANGUAGE_5 = 0x0094,
+ KC_LANGUAGE_6 = 0x0095,
+ KC_LANGUAGE_7 = 0x0096,
+ KC_LANGUAGE_8 = 0x0097,
+ KC_LANGUAGE_9 = 0x0098,
+ KC_ALTERNATE_ERASE = 0x0099,
+ KC_SYSTEM_REQUEST = 0x009A,
+ KC_CANCEL = 0x009B,
+ KC_CLEAR = 0x009C,
+ KC_PRIOR = 0x009D,
+ KC_RETURN = 0x009E,
+ KC_SEPARATOR = 0x009F,
+ KC_OUT = 0x00A0,
+ KC_OPER = 0x00A1,
+ KC_CLEAR_AGAIN = 0x00A2,
+ KC_CRSEL = 0x00A3,
+ KC_EXSEL = 0x00A4,
+ KC_SYSTEM_POWER = 0x00A5,
+ KC_SYSTEM_SLEEP = 0x00A6,
+ KC_SYSTEM_WAKE = 0x00A7,
+ KC_AUDIO_MUTE = 0x00A8,
+ KC_AUDIO_VOL_UP = 0x00A9,
+ KC_AUDIO_VOL_DOWN = 0x00AA,
+ KC_MEDIA_NEXT_TRACK = 0x00AB,
+ KC_MEDIA_PREV_TRACK = 0x00AC,
+ KC_MEDIA_STOP = 0x00AD,
+ KC_MEDIA_PLAY_PAUSE = 0x00AE,
+ KC_MEDIA_SELECT = 0x00AF,
+ KC_MEDIA_EJECT = 0x00B0,
+ KC_MAIL = 0x00B1,
+ KC_CALCULATOR = 0x00B2,
+ KC_MY_COMPUTER = 0x00B3,
+ KC_WWW_SEARCH = 0x00B4,
+ KC_WWW_HOME = 0x00B5,
+ KC_WWW_BACK = 0x00B6,
+ KC_WWW_FORWARD = 0x00B7,
+ KC_WWW_STOP = 0x00B8,
+ KC_WWW_REFRESH = 0x00B9,
+ KC_WWW_FAVORITES = 0x00BA,
+ KC_MEDIA_FAST_FORWARD = 0x00BB,
+ KC_MEDIA_REWIND = 0x00BC,
+ KC_BRIGHTNESS_UP = 0x00BD,
+ KC_BRIGHTNESS_DOWN = 0x00BE,
+ KC_CONTROL_PANEL = 0x00BF,
+ KC_ASSISTANT = 0x00C0,
+ KC_MS_UP = 0x00CD,
+ KC_MS_DOWN = 0x00CE,
+ KC_MS_LEFT = 0x00CF,
+ KC_MS_RIGHT = 0x00D0,
+ KC_MS_BTN1 = 0x00D1,
+ KC_MS_BTN2 = 0x00D2,
+ KC_MS_BTN3 = 0x00D3,
+ KC_MS_BTN4 = 0x00D4,
+ KC_MS_BTN5 = 0x00D5,
+ KC_MS_BTN6 = 0x00D6,
+ KC_MS_BTN7 = 0x00D7,
+ KC_MS_BTN8 = 0x00D8,
+ KC_MS_WH_UP = 0x00D9,
+ KC_MS_WH_DOWN = 0x00DA,
+ KC_MS_WH_LEFT = 0x00DB,
+ KC_MS_WH_RIGHT = 0x00DC,
+ KC_MS_ACCEL0 = 0x00DD,
+ KC_MS_ACCEL1 = 0x00DE,
+ KC_MS_ACCEL2 = 0x00DF,
+ KC_LEFT_CTRL = 0x00E0,
+ KC_LEFT_SHIFT = 0x00E1,
+ KC_LEFT_ALT = 0x00E2,
+ KC_LEFT_GUI = 0x00E3,
+ KC_RIGHT_CTRL = 0x00E4,
+ KC_RIGHT_SHIFT = 0x00E5,
+ KC_RIGHT_ALT = 0x00E6,
+ KC_RIGHT_GUI = 0x00E7,
+ SH_TG = 0x56F0,
+ SH_TT = 0x56F1,
+ SH_MON = 0x56F2,
+ SH_MOFF = 0x56F3,
+ SH_OFF = 0x56F4,
+ SH_ON = 0x56F5,
+ SH_OS = 0x56F6,
+ MAGIC_SWAP_CONTROL_CAPSLOCK = 0x7000,
+ MAGIC_UNSWAP_CONTROL_CAPSLOCK = 0x7001,
+ MAGIC_TOGGLE_CONTROL_CAPSLOCK = 0x7002,
+ MAGIC_UNCAPSLOCK_TO_CONTROL = 0x7003,
+ MAGIC_CAPSLOCK_TO_CONTROL = 0x7004,
+ MAGIC_SWAP_LALT_LGUI = 0x7005,
+ MAGIC_UNSWAP_LALT_LGUI = 0x7006,
+ MAGIC_SWAP_RALT_RGUI = 0x7007,
+ MAGIC_UNSWAP_RALT_RGUI = 0x7008,
+ MAGIC_UNNO_GUI = 0x7009,
+ MAGIC_NO_GUI = 0x700A,
+ MAGIC_TOGGLE_GUI = 0x700B,
+ MAGIC_SWAP_GRAVE_ESC = 0x700C,
+ MAGIC_UNSWAP_GRAVE_ESC = 0x700D,
+ MAGIC_SWAP_BACKSLASH_BACKSPACE = 0x700E,
+ MAGIC_UNSWAP_BACKSLASH_BACKSPACE = 0x700F,
+ MAGIC_TOGGLE_BACKSLASH_BACKSPACE = 0x7010,
+ MAGIC_HOST_NKRO = 0x7011,
+ MAGIC_UNHOST_NKRO = 0x7012,
+ MAGIC_TOGGLE_NKRO = 0x7013,
+ MAGIC_SWAP_ALT_GUI = 0x7014,
+ MAGIC_UNSWAP_ALT_GUI = 0x7015,
+ MAGIC_TOGGLE_ALT_GUI = 0x7016,
+ MAGIC_SWAP_LCTL_LGUI = 0x7017,
+ MAGIC_UNSWAP_LCTL_LGUI = 0x7018,
+ MAGIC_SWAP_RCTL_RGUI = 0x7019,
+ MAGIC_UNSWAP_RCTL_RGUI = 0x701A,
+ MAGIC_SWAP_CTL_GUI = 0x701B,
+ MAGIC_UNSWAP_CTL_GUI = 0x701C,
+ MAGIC_TOGGLE_CTL_GUI = 0x701D,
+ MAGIC_EE_HANDS_LEFT = 0x701E,
+ MAGIC_EE_HANDS_RIGHT = 0x701F,
+ MAGIC_SWAP_ESCAPE_CAPSLOCK = 0x7020,
+ MAGIC_UNSWAP_ESCAPE_CAPSLOCK = 0x7021,
+ MAGIC_TOGGLE_ESCAPE_CAPSLOCK = 0x7022,
+ MI_ON = 0x7100,
+ MI_OFF = 0x7101,
+ MI_TOG = 0x7102,
+ MI_C = 0x7110,
+ MI_Cs = 0x7111,
+ MI_D = 0x7112,
+ MI_Ds = 0x7113,
+ MI_E = 0x7114,
+ MI_F = 0x7115,
+ MI_Fs = 0x7116,
+ MI_G = 0x7117,
+ MI_Gs = 0x7118,
+ MI_A = 0x7119,
+ MI_As = 0x711A,
+ MI_B = 0x711B,
+ MI_C_1 = 0x7120,
+ MI_Cs_1 = 0x7121,
+ MI_D_1 = 0x7122,
+ MI_Ds_1 = 0x7123,
+ MI_E_1 = 0x7124,
+ MI_F_1 = 0x7125,
+ MI_Fs_1 = 0x7126,
+ MI_G_1 = 0x7127,
+ MI_Gs_1 = 0x7128,
+ MI_A_1 = 0x7129,
+ MI_As_1 = 0x712A,
+ MI_B_1 = 0x712B,
+ MI_C_2 = 0x7130,
+ MI_Cs_2 = 0x7131,
+ MI_D_2 = 0x7132,
+ MI_Ds_2 = 0x7133,
+ MI_E_2 = 0x7134,
+ MI_F_2 = 0x7135,
+ MI_Fs_2 = 0x7136,
+ MI_G_2 = 0x7137,
+ MI_Gs_2 = 0x7138,
+ MI_A_2 = 0x7139,
+ MI_As_2 = 0x713A,
+ MI_B_2 = 0x713B,
+ MI_C_3 = 0x7140,
+ MI_Cs_3 = 0x7141,
+ MI_D_3 = 0x7142,
+ MI_Ds_3 = 0x7143,
+ MI_E_3 = 0x7144,
+ MI_F_3 = 0x7145,
+ MI_Fs_3 = 0x7146,
+ MI_G_3 = 0x7147,
+ MI_Gs_3 = 0x7148,
+ MI_A_3 = 0x7149,
+ MI_As_3 = 0x714A,
+ MI_B_3 = 0x714B,
+ MI_C_4 = 0x7150,
+ MI_Cs_4 = 0x7151,
+ MI_D_4 = 0x7152,
+ MI_Ds_4 = 0x7153,
+ MI_E_4 = 0x7154,
+ MI_F_4 = 0x7155,
+ MI_Fs_4 = 0x7156,
+ MI_G_4 = 0x7157,
+ MI_Gs_4 = 0x7158,
+ MI_A_4 = 0x7159,
+ MI_As_4 = 0x715A,
+ MI_B_4 = 0x715B,
+ MI_C_5 = 0x7160,
+ MI_Cs_5 = 0x7161,
+ MI_D_5 = 0x7162,
+ MI_Ds_5 = 0x7163,
+ MI_E_5 = 0x7164,
+ MI_F_5 = 0x7165,
+ MI_Fs_5 = 0x7166,
+ MI_G_5 = 0x7167,
+ MI_Gs_5 = 0x7168,
+ MI_A_5 = 0x7169,
+ MI_As_5 = 0x716A,
+ MI_B_5 = 0x716B,
+ MI_OCT_N2 = 0x7170,
+ MI_OCT_N1 = 0x7171,
+ MI_OCT_0 = 0x7172,
+ MI_OCT_1 = 0x7173,
+ MI_OCT_2 = 0x7174,
+ MI_OCT_3 = 0x7175,
+ MI_OCT_4 = 0x7176,
+ MI_OCT_5 = 0x7177,
+ MI_OCT_6 = 0x7178,
+ MI_OCT_7 = 0x7179,
+ MI_OCTD = 0x717A,
+ MI_OCTU = 0x717B,
+ MI_TRNS_N6 = 0x7180,
+ MI_TRNS_N5 = 0x7181,
+ MI_TRNS_N4 = 0x7182,
+ MI_TRNS_N3 = 0x7183,
+ MI_TRNS_N2 = 0x7184,
+ MI_TRNS_N1 = 0x7185,
+ MI_TRNS_0 = 0x7186,
+ MI_TRNS_1 = 0x7187,
+ MI_TRNS_2 = 0x7188,
+ MI_TRNS_3 = 0x7189,
+ MI_TRNS_4 = 0x718A,
+ MI_TRNS_5 = 0x718B,
+ MI_TRNS_6 = 0x718C,
+ MI_TRNSD = 0x718D,
+ MI_TRNSU = 0x718E,
+ MI_VEL_0 = 0x7190,
+ MI_VEL_1 = 0x7191,
+ MI_VEL_2 = 0x7192,
+ MI_VEL_3 = 0x7193,
+ MI_VEL_4 = 0x7194,
+ MI_VEL_5 = 0x7195,
+ MI_VEL_6 = 0x7196,
+ MI_VEL_7 = 0x7197,
+ MI_VEL_8 = 0x7198,
+ MI_VEL_9 = 0x7199,
+ MI_VEL_10 = 0x719A,
+ MI_VELD = 0x719B,
+ MI_VELU = 0x719C,
+ MI_CH1 = 0x71A0,
+ MI_CH2 = 0x71A1,
+ MI_CH3 = 0x71A2,
+ MI_CH4 = 0x71A3,
+ MI_CH5 = 0x71A4,
+ MI_CH6 = 0x71A5,
+ MI_CH7 = 0x71A6,
+ MI_CH8 = 0x71A7,
+ MI_CH9 = 0x71A8,
+ MI_CH10 = 0x71A9,
+ MI_CH11 = 0x71AA,
+ MI_CH12 = 0x71AB,
+ MI_CH13 = 0x71AC,
+ MI_CH14 = 0x71AD,
+ MI_CH15 = 0x71AE,
+ MI_CH16 = 0x71AF,
+ MI_CHD = 0x71B0,
+ MI_CHU = 0x71B1,
+ MI_ALLOFF = 0x71C0,
+ MI_SUS = 0x71C1,
+ MI_PORT = 0x71C2,
+ MI_SOST = 0x71C3,
+ MI_SOFT = 0x71C4,
+ MI_LEG = 0x71C5,
+ MI_MOD = 0x71C6,
+ MI_MODSD = 0x71C7,
+ MI_MODSU = 0x71C8,
+ MI_BENDD = 0x71C9,
+ MI_BENDU = 0x71CA,
+ SQ_ON = 0x7200,
+ SQ_OFF = 0x7201,
+ SQ_TOG = 0x7202,
+ SQ_TMPD = 0x7203,
+ SQ_TMPU = 0x7204,
+ SQ_RESD = 0x7205,
+ SQ_RESU = 0x7206,
+ SQ_SALL = 0x7207,
+ SQ_SCLR = 0x7208,
+ QK_JOYSTICK_BUTTON_0 = 0x7400,
+ QK_JOYSTICK_BUTTON_1 = 0x7401,
+ QK_JOYSTICK_BUTTON_2 = 0x7402,
+ QK_JOYSTICK_BUTTON_3 = 0x7403,
+ QK_JOYSTICK_BUTTON_4 = 0x7404,
+ QK_JOYSTICK_BUTTON_5 = 0x7405,
+ QK_JOYSTICK_BUTTON_6 = 0x7406,
+ QK_JOYSTICK_BUTTON_7 = 0x7407,
+ QK_JOYSTICK_BUTTON_8 = 0x7408,
+ QK_JOYSTICK_BUTTON_9 = 0x7409,
+ QK_JOYSTICK_BUTTON_10 = 0x740A,
+ QK_JOYSTICK_BUTTON_11 = 0x740B,
+ QK_JOYSTICK_BUTTON_12 = 0x740C,
+ QK_JOYSTICK_BUTTON_13 = 0x740D,
+ QK_JOYSTICK_BUTTON_14 = 0x740E,
+ QK_JOYSTICK_BUTTON_15 = 0x740F,
+ QK_JOYSTICK_BUTTON_16 = 0x7410,
+ QK_JOYSTICK_BUTTON_17 = 0x7411,
+ QK_JOYSTICK_BUTTON_18 = 0x7412,
+ QK_JOYSTICK_BUTTON_19 = 0x7413,
+ QK_JOYSTICK_BUTTON_20 = 0x7414,
+ QK_JOYSTICK_BUTTON_21 = 0x7415,
+ QK_JOYSTICK_BUTTON_22 = 0x7416,
+ QK_JOYSTICK_BUTTON_23 = 0x7417,
+ QK_JOYSTICK_BUTTON_24 = 0x7418,
+ QK_JOYSTICK_BUTTON_25 = 0x7419,
+ QK_JOYSTICK_BUTTON_26 = 0x741A,
+ QK_JOYSTICK_BUTTON_27 = 0x741B,
+ QK_JOYSTICK_BUTTON_28 = 0x741C,
+ QK_JOYSTICK_BUTTON_29 = 0x741D,
+ QK_JOYSTICK_BUTTON_30 = 0x741E,
+ QK_JOYSTICK_BUTTON_31 = 0x741F,
+ QK_PROGRAMMABLE_BUTTON_1 = 0x7440,
+ QK_PROGRAMMABLE_BUTTON_2 = 0x7441,
+ QK_PROGRAMMABLE_BUTTON_3 = 0x7442,
+ QK_PROGRAMMABLE_BUTTON_4 = 0x7443,
+ QK_PROGRAMMABLE_BUTTON_5 = 0x7444,
+ QK_PROGRAMMABLE_BUTTON_6 = 0x7445,
+ QK_PROGRAMMABLE_BUTTON_7 = 0x7446,
+ QK_PROGRAMMABLE_BUTTON_8 = 0x7447,
+ QK_PROGRAMMABLE_BUTTON_9 = 0x7448,
+ QK_PROGRAMMABLE_BUTTON_10 = 0x7449,
+ QK_PROGRAMMABLE_BUTTON_11 = 0x744A,
+ QK_PROGRAMMABLE_BUTTON_12 = 0x744B,
+ QK_PROGRAMMABLE_BUTTON_13 = 0x744C,
+ QK_PROGRAMMABLE_BUTTON_14 = 0x744D,
+ QK_PROGRAMMABLE_BUTTON_15 = 0x744E,
+ QK_PROGRAMMABLE_BUTTON_16 = 0x744F,
+ QK_PROGRAMMABLE_BUTTON_17 = 0x7450,
+ QK_PROGRAMMABLE_BUTTON_18 = 0x7451,
+ QK_PROGRAMMABLE_BUTTON_19 = 0x7452,
+ QK_PROGRAMMABLE_BUTTON_20 = 0x7453,
+ QK_PROGRAMMABLE_BUTTON_21 = 0x7454,
+ QK_PROGRAMMABLE_BUTTON_22 = 0x7455,
+ QK_PROGRAMMABLE_BUTTON_23 = 0x7456,
+ QK_PROGRAMMABLE_BUTTON_24 = 0x7457,
+ QK_PROGRAMMABLE_BUTTON_25 = 0x7458,
+ QK_PROGRAMMABLE_BUTTON_26 = 0x7459,
+ QK_PROGRAMMABLE_BUTTON_27 = 0x745A,
+ QK_PROGRAMMABLE_BUTTON_28 = 0x745B,
+ QK_PROGRAMMABLE_BUTTON_29 = 0x745C,
+ QK_PROGRAMMABLE_BUTTON_30 = 0x745D,
+ QK_PROGRAMMABLE_BUTTON_31 = 0x745E,
+ QK_PROGRAMMABLE_BUTTON_32 = 0x745F,
+ AU_ON = 0x7480,
+ AU_OFF = 0x7481,
+ AU_TOG = 0x7482,
+ CLICKY_TOGGLE = 0x748A,
+ CLICKY_ENABLE = 0x748B,
+ CLICKY_DISABLE = 0x748C,
+ CLICKY_UP = 0x748D,
+ CLICKY_DOWN = 0x748E,
+ CLICKY_RESET = 0x748F,
+ MU_ON = 0x7490,
+ MU_OFF = 0x7491,
+ MU_TOG = 0x7492,
+ MU_MOD = 0x7493,
+ MUV_IN = 0x7494,
+ MUV_DE = 0x7495,
+ QK_STENO_BOLT = 0x74F0,
+ QK_STENO_GEMINI = 0x74F1,
+ QK_STENO_COMB = 0x74F2,
+ QK_STENO_COMB_MAX = 0x74FC,
+ MACRO_0 = 0x7700,
+ MACRO_1 = 0x7701,
+ MACRO_2 = 0x7702,
+ MACRO_3 = 0x7703,
+ MACRO_4 = 0x7704,
+ MACRO_5 = 0x7705,
+ MACRO_6 = 0x7706,
+ MACRO_7 = 0x7707,
+ MACRO_8 = 0x7708,
+ MACRO_9 = 0x7709,
+ MACRO_10 = 0x770A,
+ MACRO_11 = 0x770B,
+ MACRO_12 = 0x770C,
+ MACRO_13 = 0x770D,
+ MACRO_14 = 0x770E,
+ MACRO_15 = 0x770F,
+ MACRO_16 = 0x7710,
+ MACRO_17 = 0x7711,
+ MACRO_18 = 0x7712,
+ MACRO_19 = 0x7713,
+ MACRO_20 = 0x7714,
+ MACRO_21 = 0x7715,
+ MACRO_22 = 0x7716,
+ MACRO_23 = 0x7717,
+ MACRO_24 = 0x7718,
+ MACRO_25 = 0x7719,
+ MACRO_26 = 0x771A,
+ MACRO_27 = 0x771B,
+ MACRO_28 = 0x771C,
+ MACRO_29 = 0x771D,
+ MACRO_30 = 0x771E,
+ MACRO_31 = 0x771F,
+ BL_ON = 0x7800,
+ BL_OFF = 0x7801,
+ BL_DEC = 0x7802,
+ BL_INC = 0x7803,
+ BL_TOGG = 0x7804,
+ BL_STEP = 0x7805,
+ BL_BRTG = 0x7806,
+ RGB_TOG = 0x7820,
+ RGB_MODE_FORWARD = 0x7821,
+ RGB_MODE_REVERSE = 0x7822,
+ RGB_HUI = 0x7823,
+ RGB_HUD = 0x7824,
+ RGB_SAI = 0x7825,
+ RGB_SAD = 0x7826,
+ RGB_VAI = 0x7827,
+ RGB_VAD = 0x7828,
+ RGB_SPI = 0x7829,
+ RGB_SPD = 0x782A,
+ RGB_MODE_PLAIN = 0x782B,
+ RGB_MODE_BREATHE = 0x782C,
+ RGB_MODE_RAINBOW = 0x782D,
+ RGB_MODE_SWIRL = 0x782E,
+ RGB_MODE_SNAKE = 0x782F,
+ RGB_MODE_KNIGHT = 0x7830,
+ RGB_MODE_XMAS = 0x7831,
+ RGB_MODE_GRADIENT = 0x7832,
+ RGB_MODE_RGBTEST = 0x7833,
+ RGB_MODE_TWINKLE = 0x7834,
+ QK_BOOTLOADER = 0x7C00,
+ QK_REBOOT = 0x7C01,
+ QK_DEBUG_TOGGLE = 0x7C02,
+ QK_CLEAR_EEPROM = 0x7C03,
+ QK_MAKE = 0x7C04,
+ QK_AUTO_SHIFT_DOWN = 0x7C10,
+ QK_AUTO_SHIFT_UP = 0x7C11,
+ QK_AUTO_SHIFT_REPORT = 0x7C12,
+ QK_AUTO_SHIFT_ON = 0x7C13,
+ QK_AUTO_SHIFT_OFF = 0x7C14,
+ QK_AUTO_SHIFT_TOGGLE = 0x7C15,
+ QK_GRAVE_ESCAPE = 0x7C16,
+ QK_VELOCIKEY_TOGGLE = 0x7C17,
+ QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN = 0x7C18,
+ QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE = 0x7C19,
+ QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN = 0x7C1A,
+ QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE = 0x7C1B,
+ QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN = 0x7C1C,
+ QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE = 0x7C1D,
+ QK_SPACE_CADET_RIGHT_SHIFT_ENTER = 0x7C1E,
+ OUT_AUTO = 0x7C20,
+ OUT_USB = 0x7C21,
+ OUT_BT = 0x7C22,
+ QK_UNICODE_MODE_NEXT = 0x7C30,
+ QK_UNICODE_MODE_PREVIOUS = 0x7C31,
+ QK_UNICODE_MODE_MACOS = 0x7C32,
+ QK_UNICODE_MODE_LINUX = 0x7C33,
+ QK_UNICODE_MODE_WINDOWS = 0x7C34,
+ QK_UNICODE_MODE_BSD = 0x7C35,
+ QK_UNICODE_MODE_WINCOMPOSE = 0x7C36,
+ QK_UNICODE_MODE_EMACS = 0x7C37,
+ HPT_ON = 0x7C40,
+ HPT_OFF = 0x7C41,
+ HPT_TOG = 0x7C42,
+ HPT_RST = 0x7C43,
+ HPT_FBK = 0x7C44,
+ HPT_BUZ = 0x7C45,
+ HPT_MODI = 0x7C46,
+ HPT_MODD = 0x7C47,
+ HPT_CONT = 0x7C48,
+ HPT_CONI = 0x7C49,
+ HPT_COND = 0x7C4A,
+ HPT_DWLI = 0x7C4B,
+ HPT_DWLD = 0x7C4C,
+ QK_COMBO_ON = 0x7C50,
+ QK_COMBO_OFF = 0x7C51,
+ QK_COMBO_TOGGLE = 0x7C52,
+ QK_DYNAMIC_MACRO_RECORD_START_1 = 0x7C53,
+ QK_DYNAMIC_MACRO_RECORD_START_2 = 0x7C54,
+ QK_DYNAMIC_MACRO_RECORD_STOP = 0x7C55,
+ QK_DYNAMIC_MACRO_PLAY_1 = 0x7C56,
+ QK_DYNAMIC_MACRO_PLAY_2 = 0x7C57,
+ QK_LEADER = 0x7C58,
+ QK_LOCK = 0x7C59,
+ QK_ONE_SHOT_ON = 0x7C5A,
+ QK_ONE_SHOT_OFF = 0x7C5B,
+ QK_ONE_SHOT_TOGGLE = 0x7C5C,
+ QK_KEY_OVERRIDE_TOGGLE = 0x7C5D,
+ QK_KEY_OVERRIDE_ON = 0x7C5E,
+ QK_KEY_OVERRIDE_OFF = 0x7C5F,
+ QK_SECURE_LOCK = 0x7C60,
+ QK_SECURE_UNLOCK = 0x7C61,
+ QK_SECURE_TOGGLE = 0x7C62,
+ QK_SECURE_REQUEST = 0x7C63,
+ DT_PRNT = 0x7C70,
+ DT_UP = 0x7C71,
+ DT_DOWN = 0x7C72,
+ PRINT_ON = 0x7C73,
+ PRINT_OFF = 0x7C74,
+ QK_CAPS_WORD_TOGGLE = 0x7C75,
+ QK_AUTOCORRECT_ON = 0x7C76,
+ QK_AUTOCORRECT_OFF = 0x7C77,
+ QK_AUTOCORRECT_TOGGLE = 0x7C78,
+ SAFE_RANGE = 0x7E00,
+
+// Alias
+ XXXXXXX = KC_NO,
+ _______ = KC_TRANSPARENT,
+ KC_TRNS = KC_TRANSPARENT,
+ KC_ENT = KC_ENTER,
+ KC_ESC = KC_ESCAPE,
+ KC_BSPC = KC_BACKSPACE,
+ KC_SPC = KC_SPACE,
+ KC_MINS = KC_MINUS,
+ KC_EQL = KC_EQUAL,
+ KC_LBRC = KC_LEFT_BRACKET,
+ KC_RBRC = KC_RIGHT_BRACKET,
+ KC_BSLS = KC_BACKSLASH,
+ KC_NUHS = KC_NONUS_HASH,
+ KC_SCLN = KC_SEMICOLON,
+ KC_QUOT = KC_QUOTE,
+ KC_GRV = KC_GRAVE,
+ KC_COMM = KC_COMMA,
+ KC_SLSH = KC_SLASH,
+ KC_CAPS = KC_CAPS_LOCK,
+ KC_PSCR = KC_PRINT_SCREEN,
+ KC_SCRL = KC_SCROLL_LOCK,
+ KC_BRMD = KC_SCROLL_LOCK,
+ KC_PAUS = KC_PAUSE,
+ KC_BRK = KC_PAUSE,
+ KC_BRMU = KC_PAUSE,
+ KC_INS = KC_INSERT,
+ KC_PGUP = KC_PAGE_UP,
+ KC_DEL = KC_DELETE,
+ KC_PGDN = KC_PAGE_DOWN,
+ KC_RGHT = KC_RIGHT,
+ KC_NUM = KC_NUM_LOCK,
+ KC_PSLS = KC_KP_SLASH,
+ KC_PAST = KC_KP_ASTERISK,
+ KC_PMNS = KC_KP_MINUS,
+ KC_PPLS = KC_KP_PLUS,
+ KC_PENT = KC_KP_ENTER,
+ KC_P1 = KC_KP_1,
+ KC_P2 = KC_KP_2,
+ KC_P3 = KC_KP_3,
+ KC_P4 = KC_KP_4,
+ KC_P5 = KC_KP_5,
+ KC_P6 = KC_KP_6,
+ KC_P7 = KC_KP_7,
+ KC_P8 = KC_KP_8,
+ KC_P9 = KC_KP_9,
+ KC_P0 = KC_KP_0,
+ KC_PDOT = KC_KP_DOT,
+ KC_NUBS = KC_NONUS_BACKSLASH,
+ KC_APP = KC_APPLICATION,
+ KC_PEQL = KC_KP_EQUAL,
+ KC_EXEC = KC_EXECUTE,
+ KC_SLCT = KC_SELECT,
+ KC_AGIN = KC_AGAIN,
+ KC_PSTE = KC_PASTE,
+ KC_LCAP = KC_LOCKING_CAPS_LOCK,
+ KC_LNUM = KC_LOCKING_NUM_LOCK,
+ KC_LSCR = KC_LOCKING_SCROLL_LOCK,
+ KC_PCMM = KC_KP_COMMA,
+ KC_INT1 = KC_INTERNATIONAL_1,
+ KC_INT2 = KC_INTERNATIONAL_2,
+ KC_INT3 = KC_INTERNATIONAL_3,
+ KC_INT4 = KC_INTERNATIONAL_4,
+ KC_INT5 = KC_INTERNATIONAL_5,
+ KC_INT6 = KC_INTERNATIONAL_6,
+ KC_INT7 = KC_INTERNATIONAL_7,
+ KC_INT8 = KC_INTERNATIONAL_8,
+ KC_INT9 = KC_INTERNATIONAL_9,
+ KC_LNG1 = KC_LANGUAGE_1,
+ KC_LNG2 = KC_LANGUAGE_2,
+ KC_LNG3 = KC_LANGUAGE_3,
+ KC_LNG4 = KC_LANGUAGE_4,
+ KC_LNG5 = KC_LANGUAGE_5,
+ KC_LNG6 = KC_LANGUAGE_6,
+ KC_LNG7 = KC_LANGUAGE_7,
+ KC_LNG8 = KC_LANGUAGE_8,
+ KC_LNG9 = KC_LANGUAGE_9,
+ KC_ERAS = KC_ALTERNATE_ERASE,
+ KC_SYRQ = KC_SYSTEM_REQUEST,
+ KC_CNCL = KC_CANCEL,
+ KC_CLR = KC_CLEAR,
+ KC_PRIR = KC_PRIOR,
+ KC_RETN = KC_RETURN,
+ KC_SEPR = KC_SEPARATOR,
+ KC_CLAG = KC_CLEAR_AGAIN,
+ KC_CRSL = KC_CRSEL,
+ KC_EXSL = KC_EXSEL,
+ KC_PWR = KC_SYSTEM_POWER,
+ KC_SLEP = KC_SYSTEM_SLEEP,
+ KC_WAKE = KC_SYSTEM_WAKE,
+ KC_MUTE = KC_AUDIO_MUTE,
+ KC_VOLU = KC_AUDIO_VOL_UP,
+ KC_VOLD = KC_AUDIO_VOL_DOWN,
+ KC_MNXT = KC_MEDIA_NEXT_TRACK,
+ KC_MPRV = KC_MEDIA_PREV_TRACK,
+ KC_MSTP = KC_MEDIA_STOP,
+ KC_MPLY = KC_MEDIA_PLAY_PAUSE,
+ KC_MSEL = KC_MEDIA_SELECT,
+ KC_EJCT = KC_MEDIA_EJECT,
+ KC_CALC = KC_CALCULATOR,
+ KC_MYCM = KC_MY_COMPUTER,
+ KC_WSCH = KC_WWW_SEARCH,
+ KC_WHOM = KC_WWW_HOME,
+ KC_WBAK = KC_WWW_BACK,
+ KC_WFWD = KC_WWW_FORWARD,
+ KC_WSTP = KC_WWW_STOP,
+ KC_WREF = KC_WWW_REFRESH,
+ KC_WFAV = KC_WWW_FAVORITES,
+ KC_MFFD = KC_MEDIA_FAST_FORWARD,
+ KC_MRWD = KC_MEDIA_REWIND,
+ KC_BRIU = KC_BRIGHTNESS_UP,
+ KC_BRID = KC_BRIGHTNESS_DOWN,
+ KC_CPNL = KC_CONTROL_PANEL,
+ KC_ASST = KC_ASSISTANT,
+ KC_MS_U = KC_MS_UP,
+ KC_MS_D = KC_MS_DOWN,
+ KC_MS_L = KC_MS_LEFT,
+ KC_MS_R = KC_MS_RIGHT,
+ KC_BTN1 = KC_MS_BTN1,
+ KC_BTN2 = KC_MS_BTN2,
+ KC_BTN3 = KC_MS_BTN3,
+ KC_BTN4 = KC_MS_BTN4,
+ KC_BTN5 = KC_MS_BTN5,
+ KC_BTN6 = KC_MS_BTN6,
+ KC_BTN7 = KC_MS_BTN7,
+ KC_BTN8 = KC_MS_BTN8,
+ KC_WH_U = KC_MS_WH_UP,
+ KC_WH_D = KC_MS_WH_DOWN,
+ KC_WH_L = KC_MS_WH_LEFT,
+ KC_WH_R = KC_MS_WH_RIGHT,
+ KC_ACL0 = KC_MS_ACCEL0,
+ KC_ACL1 = KC_MS_ACCEL1,
+ KC_ACL2 = KC_MS_ACCEL2,
+ KC_LCTL = KC_LEFT_CTRL,
+ KC_LSFT = KC_LEFT_SHIFT,
+ KC_LALT = KC_LEFT_ALT,
+ KC_LOPT = KC_LEFT_ALT,
+ KC_LGUI = KC_LEFT_GUI,
+ KC_LCMD = KC_LEFT_GUI,
+ KC_LWIN = KC_LEFT_GUI,
+ KC_RCTL = KC_RIGHT_CTRL,
+ KC_RSFT = KC_RIGHT_SHIFT,
+ KC_RALT = KC_RIGHT_ALT,
+ KC_ROPT = KC_RIGHT_ALT,
+ KC_ALGR = KC_RIGHT_ALT,
+ KC_RGUI = KC_RIGHT_GUI,
+ KC_RCMD = KC_RIGHT_GUI,
+ KC_RWIN = KC_RIGHT_GUI,
+ CL_SWAP = MAGIC_SWAP_CONTROL_CAPSLOCK,
+ CL_NORM = MAGIC_UNSWAP_CONTROL_CAPSLOCK,
+ CL_TOGG = MAGIC_TOGGLE_CONTROL_CAPSLOCK,
+ CL_CAPS = MAGIC_UNCAPSLOCK_TO_CONTROL,
+ CL_CTRL = MAGIC_CAPSLOCK_TO_CONTROL,
+ LAG_SWP = MAGIC_SWAP_LALT_LGUI,
+ LAG_NRM = MAGIC_UNSWAP_LALT_LGUI,
+ RAG_SWP = MAGIC_SWAP_RALT_RGUI,
+ RAG_NRM = MAGIC_UNSWAP_RALT_RGUI,
+ GUI_ON = MAGIC_UNNO_GUI,
+ GUI_OFF = MAGIC_NO_GUI,
+ GUI_TOG = MAGIC_TOGGLE_GUI,
+ GE_SWAP = MAGIC_SWAP_GRAVE_ESC,
+ GE_NORM = MAGIC_UNSWAP_GRAVE_ESC,
+ BS_SWAP = MAGIC_SWAP_BACKSLASH_BACKSPACE,
+ BS_NORM = MAGIC_UNSWAP_BACKSLASH_BACKSPACE,
+ BS_TOGG = MAGIC_TOGGLE_BACKSLASH_BACKSPACE,
+ NK_ON = MAGIC_HOST_NKRO,
+ NK_OFF = MAGIC_UNHOST_NKRO,
+ NK_TOGG = MAGIC_TOGGLE_NKRO,
+ AG_SWAP = MAGIC_SWAP_ALT_GUI,
+ AG_NORM = MAGIC_UNSWAP_ALT_GUI,
+ AG_TOGG = MAGIC_TOGGLE_ALT_GUI,
+ LCG_SWP = MAGIC_SWAP_LCTL_LGUI,
+ LCG_NRM = MAGIC_UNSWAP_LCTL_LGUI,
+ RCG_SWP = MAGIC_SWAP_RCTL_RGUI,
+ RCG_NRM = MAGIC_UNSWAP_RCTL_RGUI,
+ CG_SWAP = MAGIC_SWAP_CTL_GUI,
+ CG_NORM = MAGIC_UNSWAP_CTL_GUI,
+ CG_TOGG = MAGIC_TOGGLE_CTL_GUI,
+ EH_LEFT = MAGIC_EE_HANDS_LEFT,
+ EH_RGHT = MAGIC_EE_HANDS_RIGHT,
+ EC_SWAP = MAGIC_SWAP_ESCAPE_CAPSLOCK,
+ EC_NORM = MAGIC_UNSWAP_ESCAPE_CAPSLOCK,
+ EC_TOGG = MAGIC_TOGGLE_ESCAPE_CAPSLOCK,
+ MI_Db = MI_Cs,
+ MI_Eb = MI_Ds,
+ MI_Gb = MI_Fs,
+ MI_Ab = MI_Gs,
+ MI_Bb = MI_As,
+ MI_Db_1 = MI_Cs_1,
+ MI_Eb_1 = MI_Ds_1,
+ MI_Gb_1 = MI_Fs_1,
+ MI_Ab_1 = MI_Gs_1,
+ MI_Bb_1 = MI_As_1,
+ MI_Db_2 = MI_Cs_2,
+ MI_Eb_2 = MI_Ds_2,
+ MI_Gb_2 = MI_Fs_2,
+ MI_Ab_2 = MI_Gs_2,
+ MI_Bb_2 = MI_As_2,
+ MI_Db_3 = MI_Cs_3,
+ MI_Eb_3 = MI_Ds_3,
+ MI_Gb_3 = MI_Fs_3,
+ MI_Ab_3 = MI_Gs_3,
+ MI_Bb_3 = MI_As_3,
+ MI_Db_4 = MI_Cs_4,
+ MI_Eb_4 = MI_Ds_4,
+ MI_Gb_4 = MI_Fs_4,
+ MI_Ab_4 = MI_Gs_4,
+ MI_Bb_4 = MI_As_4,
+ MI_Db_5 = MI_Cs_5,
+ MI_Eb_5 = MI_Ds_5,
+ MI_Gb_5 = MI_Fs_5,
+ MI_Ab_5 = MI_Gs_5,
+ MI_Bb_5 = MI_As_5,
+ JS_0 = QK_JOYSTICK_BUTTON_0,
+ JS_1 = QK_JOYSTICK_BUTTON_1,
+ JS_2 = QK_JOYSTICK_BUTTON_2,
+ JS_3 = QK_JOYSTICK_BUTTON_3,
+ JS_4 = QK_JOYSTICK_BUTTON_4,
+ JS_5 = QK_JOYSTICK_BUTTON_5,
+ JS_6 = QK_JOYSTICK_BUTTON_6,
+ JS_7 = QK_JOYSTICK_BUTTON_7,
+ JS_8 = QK_JOYSTICK_BUTTON_8,
+ JS_9 = QK_JOYSTICK_BUTTON_9,
+ JS_10 = QK_JOYSTICK_BUTTON_10,
+ JS_11 = QK_JOYSTICK_BUTTON_11,
+ JS_12 = QK_JOYSTICK_BUTTON_12,
+ JS_13 = QK_JOYSTICK_BUTTON_13,
+ JS_14 = QK_JOYSTICK_BUTTON_14,
+ JS_15 = QK_JOYSTICK_BUTTON_15,
+ JS_16 = QK_JOYSTICK_BUTTON_16,
+ JS_17 = QK_JOYSTICK_BUTTON_17,
+ JS_18 = QK_JOYSTICK_BUTTON_18,
+ JS_19 = QK_JOYSTICK_BUTTON_19,
+ JS_20 = QK_JOYSTICK_BUTTON_20,
+ JS_21 = QK_JOYSTICK_BUTTON_21,
+ JS_22 = QK_JOYSTICK_BUTTON_22,
+ JS_23 = QK_JOYSTICK_BUTTON_23,
+ JS_24 = QK_JOYSTICK_BUTTON_24,
+ JS_25 = QK_JOYSTICK_BUTTON_25,
+ JS_26 = QK_JOYSTICK_BUTTON_26,
+ JS_27 = QK_JOYSTICK_BUTTON_27,
+ JS_28 = QK_JOYSTICK_BUTTON_28,
+ JS_29 = QK_JOYSTICK_BUTTON_29,
+ JS_30 = QK_JOYSTICK_BUTTON_30,
+ JS_31 = QK_JOYSTICK_BUTTON_31,
+ PB_1 = QK_PROGRAMMABLE_BUTTON_1,
+ PB_2 = QK_PROGRAMMABLE_BUTTON_2,
+ PB_3 = QK_PROGRAMMABLE_BUTTON_3,
+ PB_4 = QK_PROGRAMMABLE_BUTTON_4,
+ PB_5 = QK_PROGRAMMABLE_BUTTON_5,
+ PB_6 = QK_PROGRAMMABLE_BUTTON_6,
+ PB_7 = QK_PROGRAMMABLE_BUTTON_7,
+ PB_8 = QK_PROGRAMMABLE_BUTTON_8,
+ PB_9 = QK_PROGRAMMABLE_BUTTON_9,
+ PB_10 = QK_PROGRAMMABLE_BUTTON_10,
+ PB_11 = QK_PROGRAMMABLE_BUTTON_11,
+ PB_12 = QK_PROGRAMMABLE_BUTTON_12,
+ PB_13 = QK_PROGRAMMABLE_BUTTON_13,
+ PB_14 = QK_PROGRAMMABLE_BUTTON_14,
+ PB_15 = QK_PROGRAMMABLE_BUTTON_15,
+ PB_16 = QK_PROGRAMMABLE_BUTTON_16,
+ PB_17 = QK_PROGRAMMABLE_BUTTON_17,
+ PB_18 = QK_PROGRAMMABLE_BUTTON_18,
+ PB_19 = QK_PROGRAMMABLE_BUTTON_19,
+ PB_20 = QK_PROGRAMMABLE_BUTTON_20,
+ PB_21 = QK_PROGRAMMABLE_BUTTON_21,
+ PB_22 = QK_PROGRAMMABLE_BUTTON_22,
+ PB_23 = QK_PROGRAMMABLE_BUTTON_23,
+ PB_24 = QK_PROGRAMMABLE_BUTTON_24,
+ PB_25 = QK_PROGRAMMABLE_BUTTON_25,
+ PB_26 = QK_PROGRAMMABLE_BUTTON_26,
+ PB_27 = QK_PROGRAMMABLE_BUTTON_27,
+ PB_28 = QK_PROGRAMMABLE_BUTTON_28,
+ PB_29 = QK_PROGRAMMABLE_BUTTON_29,
+ PB_30 = QK_PROGRAMMABLE_BUTTON_30,
+ PB_31 = QK_PROGRAMMABLE_BUTTON_31,
+ PB_32 = QK_PROGRAMMABLE_BUTTON_32,
+ CK_TOGG = CLICKY_TOGGLE,
+ CK_ON = CLICKY_ENABLE,
+ CK_OFF = CLICKY_DISABLE,
+ CK_UP = CLICKY_UP,
+ CK_DOWN = CLICKY_DOWN,
+ CK_RST = CLICKY_RESET,
+ RGB_MOD = RGB_MODE_FORWARD,
+ RGB_RMOD = RGB_MODE_REVERSE,
+ RGB_M_P = RGB_MODE_PLAIN,
+ RGB_M_B = RGB_MODE_BREATHE,
+ RGB_M_R = RGB_MODE_RAINBOW,
+ RGB_M_SW = RGB_MODE_SWIRL,
+ RGB_M_SN = RGB_MODE_SNAKE,
+ RGB_M_K = RGB_MODE_KNIGHT,
+ RGB_M_X = RGB_MODE_XMAS,
+ RGB_M_G = RGB_MODE_GRADIENT,
+ RGB_M_T = RGB_MODE_RGBTEST,
+ RGB_M_TW = RGB_MODE_TWINKLE,
+ QK_BOOT = QK_BOOTLOADER,
+ QK_RBT = QK_REBOOT,
+ DB_TOGG = QK_DEBUG_TOGGLE,
+ EE_CLR = QK_CLEAR_EEPROM,
+ AS_DOWN = QK_AUTO_SHIFT_DOWN,
+ AS_UP = QK_AUTO_SHIFT_UP,
+ AS_RPT = QK_AUTO_SHIFT_REPORT,
+ AS_ON = QK_AUTO_SHIFT_ON,
+ AS_OFF = QK_AUTO_SHIFT_OFF,
+ AS_TOGG = QK_AUTO_SHIFT_TOGGLE,
+ QK_GESC = QK_GRAVE_ESCAPE,
+ VK_TOGG = QK_VELOCIKEY_TOGGLE,
+ SC_LCPO = QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN,
+ SC_RCPC = QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE,
+ SC_LSPO = QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN,
+ SC_RSPC = QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE,
+ SC_LAPO = QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN,
+ SC_RAPC = QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE,
+ SC_SENT = QK_SPACE_CADET_RIGHT_SHIFT_ENTER,
+ UC_NEXT = QK_UNICODE_MODE_NEXT,
+ UC_PREV = QK_UNICODE_MODE_PREVIOUS,
+ UC_MAC = QK_UNICODE_MODE_MACOS,
+ UC_LINX = QK_UNICODE_MODE_LINUX,
+ UC_WIN = QK_UNICODE_MODE_WINDOWS,
+ UC_BSD = QK_UNICODE_MODE_BSD,
+ UC_WINC = QK_UNICODE_MODE_WINCOMPOSE,
+ UC_EMAC = QK_UNICODE_MODE_EMACS,
+ CM_ON = QK_COMBO_ON,
+ CM_OFF = QK_COMBO_OFF,
+ CM_TOGG = QK_COMBO_TOGGLE,
+ DM_REC1 = QK_DYNAMIC_MACRO_RECORD_START_1,
+ DM_REC2 = QK_DYNAMIC_MACRO_RECORD_START_2,
+ DM_RSTP = QK_DYNAMIC_MACRO_RECORD_STOP,
+ DM_PLY1 = QK_DYNAMIC_MACRO_PLAY_1,
+ DM_PLY2 = QK_DYNAMIC_MACRO_PLAY_2,
+ QK_LEAD = QK_LEADER,
+ OS_ON = QK_ONE_SHOT_ON,
+ OS_OFF = QK_ONE_SHOT_OFF,
+ OS_TOGG = QK_ONE_SHOT_TOGGLE,
+ KO_TOGG = QK_KEY_OVERRIDE_TOGGLE,
+ KO_ON = QK_KEY_OVERRIDE_ON,
+ KO_OFF = QK_KEY_OVERRIDE_OFF,
+ SE_LOCK = QK_SECURE_LOCK,
+ SE_UNLK = QK_SECURE_UNLOCK,
+ SE_TOGG = QK_SECURE_TOGGLE,
+ SE_REQ = QK_SECURE_REQUEST,
+ CW_TOGG = QK_CAPS_WORD_TOGGLE,
+ AC_ON = QK_AUTOCORRECT_ON,
+ AC_OFF = QK_AUTOCORRECT_OFF,
+ AC_TOGG = QK_AUTOCORRECT_TOGGLE,
+};
+
+// Range Helpers
+#define IS_QK_BASIC(code) ((code) >= QK_BASIC && (code) <= QK_BASIC_MAX)
+#define IS_QK_MODS(code) ((code) >= QK_MODS && (code) <= QK_MODS_MAX)
+#define IS_QK_MOD_TAP(code) ((code) >= QK_MOD_TAP && (code) <= QK_MOD_TAP_MAX)
+#define IS_QK_LAYER_TAP(code) ((code) >= QK_LAYER_TAP && (code) <= QK_LAYER_TAP_MAX)
+#define IS_QK_LAYER_MOD(code) ((code) >= QK_LAYER_MOD && (code) <= QK_LAYER_MOD_MAX)
+#define IS_QK_TO(code) ((code) >= QK_TO && (code) <= QK_TO_MAX)
+#define IS_QK_MOMENTARY(code) ((code) >= QK_MOMENTARY && (code) <= QK_MOMENTARY_MAX)
+#define IS_QK_DEF_LAYER(code) ((code) >= QK_DEF_LAYER && (code) <= QK_DEF_LAYER_MAX)
+#define IS_QK_TOGGLE_LAYER(code) ((code) >= QK_TOGGLE_LAYER && (code) <= QK_TOGGLE_LAYER_MAX)
+#define IS_QK_ONE_SHOT_LAYER(code) ((code) >= QK_ONE_SHOT_LAYER && (code) <= QK_ONE_SHOT_LAYER_MAX)
+#define IS_QK_ONE_SHOT_MOD(code) ((code) >= QK_ONE_SHOT_MOD && (code) <= QK_ONE_SHOT_MOD_MAX)
+#define IS_QK_LAYER_TAP_TOGGLE(code) ((code) >= QK_LAYER_TAP_TOGGLE && (code) <= QK_LAYER_TAP_TOGGLE_MAX)
+#define IS_QK_SWAP_HANDS(code) ((code) >= QK_SWAP_HANDS && (code) <= QK_SWAP_HANDS_MAX)
+#define IS_QK_TAP_DANCE(code) ((code) >= QK_TAP_DANCE && (code) <= QK_TAP_DANCE_MAX)
+#define IS_QK_MAGIC(code) ((code) >= QK_MAGIC && (code) <= QK_MAGIC_MAX)
+#define IS_QK_MIDI(code) ((code) >= QK_MIDI && (code) <= QK_MIDI_MAX)
+#define IS_QK_SEQUENCER(code) ((code) >= QK_SEQUENCER && (code) <= QK_SEQUENCER_MAX)
+#define IS_QK_JOYSTICK(code) ((code) >= QK_JOYSTICK && (code) <= QK_JOYSTICK_MAX)
+#define IS_QK_PROGRAMMABLE_BUTTON(code) ((code) >= QK_PROGRAMMABLE_BUTTON && (code) <= QK_PROGRAMMABLE_BUTTON_MAX)
+#define IS_QK_AUDIO(code) ((code) >= QK_AUDIO && (code) <= QK_AUDIO_MAX)
+#define IS_QK_STENO(code) ((code) >= QK_STENO && (code) <= QK_STENO_MAX)
+#define IS_QK_MACRO(code) ((code) >= QK_MACRO && (code) <= QK_MACRO_MAX)
+#define IS_QK_LIGHTING(code) ((code) >= QK_LIGHTING && (code) <= QK_LIGHTING_MAX)
+#define IS_QK_QUANTUM(code) ((code) >= QK_QUANTUM && (code) <= QK_QUANTUM_MAX)
+#define IS_QK_KB(code) ((code) >= QK_KB && (code) <= QK_KB_MAX)
+#define IS_QK_USER(code) ((code) >= QK_USER && (code) <= QK_USER_MAX)
+#define IS_QK_UNICODE(code) ((code) >= QK_UNICODE && (code) <= QK_UNICODE_MAX)
+
+// Group Helpers
+#define IS_INTERNAL_KEYCODE(code) ((code) >= KC_NO && (code) <= KC_TRANSPARENT)
+#define IS_BASIC_KEYCODE(code) ((code) >= KC_A && (code) <= KC_EXSEL)
+#define IS_SYSTEM_KEYCODE(code) ((code) >= KC_SYSTEM_POWER && (code) <= KC_SYSTEM_WAKE)
+#define IS_MEDIA_KEYCODE(code) ((code) >= KC_AUDIO_MUTE && (code) <= KC_ASSISTANT)
+#define IS_MOUSE_KEYCODE(code) ((code) >= KC_MS_UP && (code) <= KC_MS_ACCEL2)
+#define IS_MODIFIERS_KEYCODE(code) ((code) >= KC_LEFT_CTRL && (code) <= KC_RIGHT_GUI)
+#define IS_SWAP_HANDS_KEYCODE(code) ((code) >= SH_TG && (code) <= SH_OS)
+#define IS_MAGIC_KEYCODE(code) ((code) >= MAGIC_SWAP_CONTROL_CAPSLOCK && (code) <= MAGIC_TOGGLE_ESCAPE_CAPSLOCK)
+#define IS_MIDI_KEYCODE(code) ((code) >= MI_ON && (code) <= MI_BENDU)
+#define IS_SEQUENCER_KEYCODE(code) ((code) >= SQ_ON && (code) <= SQ_SCLR)
+#define IS_JOYSTICK_KEYCODE(code) ((code) >= QK_JOYSTICK_BUTTON_0 && (code) <= QK_JOYSTICK_BUTTON_31)
+#define IS_PROGRAMMABLE_BUTTON_KEYCODE(code) ((code) >= QK_PROGRAMMABLE_BUTTON_1 && (code) <= QK_PROGRAMMABLE_BUTTON_32)
+#define IS_AUDIO_KEYCODE(code) ((code) >= AU_ON && (code) <= MUV_DE)
+#define IS_STENO_KEYCODE(code) ((code) >= QK_STENO_BOLT && (code) <= QK_STENO_COMB_MAX)
+#define IS_MACRO_KEYCODE(code) ((code) >= MACRO_0 && (code) <= MACRO_31)
+#define IS_BACKLIGHT_KEYCODE(code) ((code) >= BL_ON && (code) <= BL_BRTG)
+#define IS_RGB_KEYCODE(code) ((code) >= RGB_TOG && (code) <= RGB_MODE_TWINKLE)
+#define IS_QUANTUM_KEYCODE(code) ((code) >= QK_BOOTLOADER && (code) <= QK_AUTOCORRECT_TOGGLE)
+
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index 50e581cd87..a5997711f2 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -109,7 +109,7 @@ action_t action_for_keycode(uint16_t keycode) {
break;
case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:;
// OSM(mod) - One-shot mod
- mod = mod_config(keycode & 0xFF);
+ mod = mod_config(keycode & 0x1F);
action.code = ACTION_MODS_ONESHOT(mod);
break;
#endif
@@ -118,8 +118,8 @@ action_t action_for_keycode(uint16_t keycode) {
action.code = ACTION_LAYER_TAP_TOGGLE(keycode & 0xFF);
break;
case QK_LAYER_MOD ... QK_LAYER_MOD_MAX:
- mod = mod_config(keycode & 0xF);
- action_layer = (keycode >> 4) & 0xF;
+ mod = mod_config(keycode & 0x1F);
+ action_layer = (keycode >> 5) & 0xF;
action.code = ACTION_LAYER_MODS(action_layer, mod);
break;
#endif
diff --git a/quantum/process_keycode/process_joystick.c b/quantum/process_keycode/process_joystick.c
index c4c6fb59a8..43067b81db 100644
--- a/quantum/process_keycode/process_joystick.c
+++ b/quantum/process_keycode/process_joystick.c
@@ -19,11 +19,11 @@
bool process_joystick(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case QK_JOYSTICK_BUTTON_MIN ... QK_JOYSTICK_BUTTON_MAX:
+ case QK_JOYSTICK ... QK_JOYSTICK_MAX:
if (record->event.pressed) {
- register_joystick_button(keycode - QK_JOYSTICK_BUTTON_MIN);
+ register_joystick_button(keycode - QK_JOYSTICK);
} else {
- unregister_joystick_button(keycode - QK_JOYSTICK_BUTTON_MIN);
+ unregister_joystick_button(keycode - QK_JOYSTICK);
}
return false;
}
diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c
index 50816c5261..72332b20d7 100644
--- a/quantum/process_keycode/process_magic.c
+++ b/quantum/process_keycode/process_magic.c
@@ -40,158 +40,152 @@ float cg_swap_song[][2] = CG_SWAP_SONG;
bool process_magic(uint16_t keycode, keyrecord_t *record) {
// skip anything that isn't a keyup
if (record->event.pressed) {
- switch (keycode) {
- case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
- case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
- case MAGIC_TOGGLE_GUI:
- case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
- case MAGIC_TOGGLE_BACKSLASH_BACKSPACE:
- case MAGIC_SWAP_ESCAPE_CAPSLOCK ... MAGIC_TOGGLE_ESCAPE_CAPSLOCK:
- /* keymap config */
- keymap_config.raw = eeconfig_read_keymap();
- switch (keycode) {
- case MAGIC_SWAP_CONTROL_CAPSLOCK:
- keymap_config.swap_control_capslock = true;
- break;
- case MAGIC_SWAP_ESCAPE_CAPSLOCK:
- keymap_config.swap_escape_capslock = true;
- break;
- case MAGIC_CAPSLOCK_TO_CONTROL:
- keymap_config.capslock_to_control = true;
- break;
- case MAGIC_SWAP_LALT_LGUI:
- keymap_config.swap_lalt_lgui = true;
- break;
- case MAGIC_SWAP_RALT_RGUI:
- keymap_config.swap_ralt_rgui = true;
- break;
- case MAGIC_SWAP_LCTL_LGUI:
- keymap_config.swap_lctl_lgui = true;
- break;
- case MAGIC_SWAP_RCTL_RGUI:
- keymap_config.swap_rctl_rgui = true;
- break;
- case MAGIC_NO_GUI:
- keymap_config.no_gui = true;
- break;
- case MAGIC_SWAP_GRAVE_ESC:
- keymap_config.swap_grave_esc = true;
- break;
- case MAGIC_SWAP_BACKSLASH_BACKSPACE:
- keymap_config.swap_backslash_backspace = true;
- break;
- case MAGIC_HOST_NKRO:
- clear_keyboard(); // clear first buffer to prevent stuck keys
- keymap_config.nkro = true;
- break;
- case MAGIC_SWAP_ALT_GUI:
- keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = true;
+ if (IS_MAGIC_KEYCODE(keycode)) {
+ /* keymap config */
+ keymap_config.raw = eeconfig_read_keymap();
+ switch (keycode) {
+ case MAGIC_SWAP_CONTROL_CAPSLOCK:
+ keymap_config.swap_control_capslock = true;
+ break;
+ case MAGIC_SWAP_ESCAPE_CAPSLOCK:
+ keymap_config.swap_escape_capslock = true;
+ break;
+ case MAGIC_CAPSLOCK_TO_CONTROL:
+ keymap_config.capslock_to_control = true;
+ break;
+ case MAGIC_SWAP_LALT_LGUI:
+ keymap_config.swap_lalt_lgui = true;
+ break;
+ case MAGIC_SWAP_RALT_RGUI:
+ keymap_config.swap_ralt_rgui = true;
+ break;
+ case MAGIC_SWAP_LCTL_LGUI:
+ keymap_config.swap_lctl_lgui = true;
+ break;
+ case MAGIC_SWAP_RCTL_RGUI:
+ keymap_config.swap_rctl_rgui = true;
+ break;
+ case MAGIC_NO_GUI:
+ keymap_config.no_gui = true;
+ break;
+ case MAGIC_SWAP_GRAVE_ESC:
+ keymap_config.swap_grave_esc = true;
+ break;
+ case MAGIC_SWAP_BACKSLASH_BACKSPACE:
+ keymap_config.swap_backslash_backspace = true;
+ break;
+ case MAGIC_HOST_NKRO:
+ clear_keyboard(); // clear first buffer to prevent stuck keys
+ keymap_config.nkro = true;
+ break;
+ case MAGIC_SWAP_ALT_GUI:
+ keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = true;
#ifdef AUDIO_ENABLE
- PLAY_SONG(ag_swap_song);
+ PLAY_SONG(ag_swap_song);
#endif
- break;
- case MAGIC_SWAP_CTL_GUI:
- keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = true;
+ break;
+ case MAGIC_SWAP_CTL_GUI:
+ keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = true;
#ifdef AUDIO_ENABLE
- PLAY_SONG(cg_swap_song);
+ PLAY_SONG(cg_swap_song);
#endif
- break;
- case MAGIC_UNSWAP_CONTROL_CAPSLOCK:
- keymap_config.swap_control_capslock = false;
- break;
- case MAGIC_UNSWAP_ESCAPE_CAPSLOCK:
- keymap_config.swap_escape_capslock = false;
- break;
- case MAGIC_UNCAPSLOCK_TO_CONTROL:
- keymap_config.capslock_to_control = false;
- break;
- case MAGIC_UNSWAP_LALT_LGUI:
- keymap_config.swap_lalt_lgui = false;
- break;
- case MAGIC_UNSWAP_RALT_RGUI:
- keymap_config.swap_ralt_rgui = false;
- break;
- case MAGIC_UNSWAP_LCTL_LGUI:
- keymap_config.swap_lctl_lgui = false;
- break;
- case MAGIC_UNSWAP_RCTL_RGUI:
- keymap_config.swap_rctl_rgui = false;
- break;
- case MAGIC_UNNO_GUI:
- keymap_config.no_gui = false;
- break;
- case MAGIC_UNSWAP_GRAVE_ESC:
- keymap_config.swap_grave_esc = false;
- break;
- case MAGIC_UNSWAP_BACKSLASH_BACKSPACE:
- keymap_config.swap_backslash_backspace = false;
- break;
- case MAGIC_UNHOST_NKRO:
- clear_keyboard(); // clear first buffer to prevent stuck keys
- keymap_config.nkro = false;
- break;
- case MAGIC_UNSWAP_ALT_GUI:
- keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = false;
+ break;
+ case MAGIC_UNSWAP_CONTROL_CAPSLOCK:
+ keymap_config.swap_control_capslock = false;
+ break;
+ case MAGIC_UNSWAP_ESCAPE_CAPSLOCK:
+ keymap_config.swap_escape_capslock = false;
+ break;
+ case MAGIC_UNCAPSLOCK_TO_CONTROL:
+ keymap_config.capslock_to_control = false;
+ break;
+ case MAGIC_UNSWAP_LALT_LGUI:
+ keymap_config.swap_lalt_lgui = false;
+ break;
+ case MAGIC_UNSWAP_RALT_RGUI:
+ keymap_config.swap_ralt_rgui = false;
+ break;
+ case MAGIC_UNSWAP_LCTL_LGUI:
+ keymap_config.swap_lctl_lgui = false;
+ break;
+ case MAGIC_UNSWAP_RCTL_RGUI:
+ keymap_config.swap_rctl_rgui = false;
+ break;
+ case MAGIC_UNNO_GUI:
+ keymap_config.no_gui = false;
+ break;
+ case MAGIC_UNSWAP_GRAVE_ESC:
+ keymap_config.swap_grave_esc = false;
+ break;
+ case MAGIC_UNSWAP_BACKSLASH_BACKSPACE:
+ keymap_config.swap_backslash_backspace = false;
+ break;
+ case MAGIC_UNHOST_NKRO:
+ clear_keyboard(); // clear first buffer to prevent stuck keys
+ keymap_config.nkro = false;
+ break;
+ case MAGIC_UNSWAP_ALT_GUI:
+ keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = false;
#ifdef AUDIO_ENABLE
- PLAY_SONG(ag_norm_song);
+ PLAY_SONG(ag_norm_song);
#endif
- break;
- case MAGIC_UNSWAP_CTL_GUI:
- keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = false;
+ break;
+ case MAGIC_UNSWAP_CTL_GUI:
+ keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = false;
#ifdef AUDIO_ENABLE
- PLAY_SONG(cg_norm_song);
+ PLAY_SONG(cg_norm_song);
#endif
- break;
- case MAGIC_TOGGLE_ALT_GUI:
- keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui;
- keymap_config.swap_ralt_rgui = keymap_config.swap_lalt_lgui;
+ break;
+ case MAGIC_TOGGLE_ALT_GUI:
+ keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui;
+ keymap_config.swap_ralt_rgui = keymap_config.swap_lalt_lgui;
#ifdef AUDIO_ENABLE
- if (keymap_config.swap_ralt_rgui) {
- PLAY_SONG(ag_swap_song);
- } else {
- PLAY_SONG(ag_norm_song);
- }
+ if (keymap_config.swap_ralt_rgui) {
+ PLAY_SONG(ag_swap_song);
+ } else {
+ PLAY_SONG(ag_norm_song);
+ }
#endif
- break;
- case MAGIC_TOGGLE_CTL_GUI:
- keymap_config.swap_lctl_lgui = !keymap_config.swap_lctl_lgui;
- keymap_config.swap_rctl_rgui = keymap_config.swap_lctl_lgui;
+ break;
+ case MAGIC_TOGGLE_CTL_GUI:
+ keymap_config.swap_lctl_lgui = !keymap_config.swap_lctl_lgui;
+ keymap_config.swap_rctl_rgui = keymap_config.swap_lctl_lgui;
#ifdef AUDIO_ENABLE
- if (keymap_config.swap_rctl_rgui) {
- PLAY_SONG(cg_swap_song);
- } else {
- PLAY_SONG(cg_norm_song);
- }
+ if (keymap_config.swap_rctl_rgui) {
+ PLAY_SONG(cg_swap_song);
+ } else {
+ PLAY_SONG(cg_norm_song);
+ }
#endif
- break;
- case MAGIC_TOGGLE_BACKSLASH_BACKSPACE:
- keymap_config.swap_backslash_backspace = !keymap_config.swap_backslash_backspace;
- break;
- case MAGIC_TOGGLE_NKRO:
- clear_keyboard(); // clear first buffer to prevent stuck keys
- keymap_config.nkro = !keymap_config.nkro;
- break;
- case MAGIC_EE_HANDS_LEFT:
- eeconfig_update_handedness(true);
- break;
- case MAGIC_EE_HANDS_RIGHT:
- eeconfig_update_handedness(false);
- break;
- case MAGIC_TOGGLE_GUI:
- keymap_config.no_gui = !keymap_config.no_gui;
- break;
- case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
- keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;
- break;
- case MAGIC_TOGGLE_ESCAPE_CAPSLOCK:
- keymap_config.swap_escape_capslock = !keymap_config.swap_escape_capslock;
- break;
- }
+ break;
+ case MAGIC_TOGGLE_BACKSLASH_BACKSPACE:
+ keymap_config.swap_backslash_backspace = !keymap_config.swap_backslash_backspace;
+ break;
+ case MAGIC_TOGGLE_NKRO:
+ clear_keyboard(); // clear first buffer to prevent stuck keys
+ keymap_config.nkro = !keymap_config.nkro;
+ break;
+ case MAGIC_EE_HANDS_LEFT:
+ eeconfig_update_handedness(true);
+ break;
+ case MAGIC_EE_HANDS_RIGHT:
+ eeconfig_update_handedness(false);
+ break;
+ case MAGIC_TOGGLE_GUI:
+ keymap_config.no_gui = !keymap_config.no_gui;
+ break;
+ case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
+ keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;
+ break;
+ case MAGIC_TOGGLE_ESCAPE_CAPSLOCK:
+ keymap_config.swap_escape_capslock = !keymap_config.swap_escape_capslock;
+ break;
+ }
- eeconfig_update_keymap(keymap_config.raw);
- clear_keyboard(); // clear to prevent stuck keys
+ eeconfig_update_keymap(keymap_config.raw);
+ clear_keyboard(); // clear to prevent stuck keys
- return false;
+ return false;
}
}
diff --git a/quantum/process_keycode/process_programmable_button.c b/quantum/process_keycode/process_programmable_button.c
index d6a14e120c..03034edb61 100644
--- a/quantum/process_keycode/process_programmable_button.c
+++ b/quantum/process_keycode/process_programmable_button.c
@@ -19,8 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "programmable_button.h"
bool process_programmable_button(uint16_t keycode, keyrecord_t *record) {
- if (keycode >= QK_PROGRAMMABLE_BUTTON_MIN && keycode <= QK_PROGRAMMABLE_BUTTON_MAX) {
- uint8_t button = keycode - QK_PROGRAMMABLE_BUTTON_MIN + 1;
+ if (IS_QK_PROGRAMMABLE_BUTTON(keycode)) {
+ uint8_t button = keycode - QK_PROGRAMMABLE_BUTTON + 1;
if (record->event.pressed) {
programmable_button_register(button);
} else {
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 2df733fe1f..ec69fadbab 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -16,610 +16,28 @@
#pragma once
-#include "sequencer.h"
-
-// Fillers to make layering more clear
-#define _______ KC_TRANSPARENT
-#define XXXXXXX KC_NO
-
-enum quantum_keycodes {
- // Ranges used in shortcuts - not to be used directly
- QK_BASIC = 0x0000,
- QK_BASIC_MAX = 0x00FF,
- QK_MODS = 0x0100,
- QK_LCTL = 0x0100,
- QK_LSFT = 0x0200,
- QK_LALT = 0x0400,
- QK_LGUI = 0x0800,
- QK_RMODS_MIN = 0x1000,
- QK_RCTL = 0x1100,
- QK_RSFT = 0x1200,
- QK_RALT = 0x1400,
- QK_RGUI = 0x1800,
- QK_MODS_MAX = 0x1FFF,
- QK_LAYER_TAP = 0x4000,
- QK_LAYER_TAP_MAX = 0x4FFF,
- QK_TO = 0x5000,
- QK_TO_MAX = 0x50FF,
- QK_MOMENTARY = 0x5100,
- QK_MOMENTARY_MAX = 0x51FF,
- QK_DEF_LAYER = 0x5200,
- QK_DEF_LAYER_MAX = 0x52FF,
- QK_TOGGLE_LAYER = 0x5300,
- QK_TOGGLE_LAYER_MAX = 0x53FF,
- QK_ONE_SHOT_LAYER = 0x5400,
- QK_ONE_SHOT_LAYER_MAX = 0x54FF,
- QK_ONE_SHOT_MOD = 0x5500,
- QK_ONE_SHOT_MOD_MAX = 0x55FF,
- QK_SWAP_HANDS = 0x5600,
- QK_SWAP_HANDS_MAX = 0x56FF,
- QK_TAP_DANCE = 0x5700,
- QK_TAP_DANCE_MAX = 0x57FF,
- QK_LAYER_TAP_TOGGLE = 0x5800,
- QK_LAYER_TAP_TOGGLE_MAX = 0x58FF,
- QK_LAYER_MOD = 0x5900,
- QK_LAYER_MOD_MAX = 0x59FF,
- QK_STENO = 0x5A00,
- QK_STENO_BOLT = 0x5A30,
- QK_STENO_GEMINI = 0x5A31,
- QK_STENO_COMB = 0x5A32,
- QK_STENO_COMB_MAX = 0x5A3C,
- QK_STENO_MAX = 0x5A3F,
- // 0x5C00 - 0x5FFF are reserved, see below
- QK_MOD_TAP = 0x6000,
- QK_MOD_TAP_MAX = 0x7FFF,
- QK_UNICODE = 0x8000,
- QK_UNICODE_MAX = 0xFFFF,
- QK_UNICODEMAP = 0x8000,
- QK_UNICODEMAP_MAX = 0xBFFF,
- QK_UNICODEMAP_PAIR = 0xC000,
- QK_UNICODEMAP_PAIR_MAX = 0xFFFF,
-
- // Loose keycodes - to be used directly
- QK_BOOTLOADER = 0x5C00,
- QK_DEBUG_TOGGLE, // 5C01
-
- // Magic
- MAGIC_SWAP_CONTROL_CAPSLOCK, // 5C02
- MAGIC_CAPSLOCK_TO_CONTROL, // 5C03
- MAGIC_SWAP_LALT_LGUI, // 5C04
- MAGIC_SWAP_RALT_RGUI, // 5C05
- MAGIC_NO_GUI, // 5C06
- MAGIC_SWAP_GRAVE_ESC, // 5C07
- MAGIC_SWAP_BACKSLASH_BACKSPACE, // 5C08
- MAGIC_HOST_NKRO, // 5C09
- MAGIC_SWAP_ALT_GUI, // 5C0A
- MAGIC_UNSWAP_CONTROL_CAPSLOCK, // 5C0B
- MAGIC_UNCAPSLOCK_TO_CONTROL, // 5C0C
- MAGIC_UNSWAP_LALT_LGUI, // 5C0D
- MAGIC_UNSWAP_RALT_RGUI, // 5C0E
- MAGIC_UNNO_GUI, // 5C0F
- MAGIC_UNSWAP_GRAVE_ESC, // 5C10
- MAGIC_UNSWAP_BACKSLASH_BACKSPACE, // 5C11
- MAGIC_UNHOST_NKRO, // 5C12
- MAGIC_UNSWAP_ALT_GUI, // 5C13
- MAGIC_TOGGLE_NKRO, // 5C14
- MAGIC_TOGGLE_ALT_GUI, // 5C15
-
- // Grave Escape
- QK_GRAVE_ESCAPE, // 5C16
-
- // Auto Shift
- QK_AUTO_SHIFT_UP, // 5C17
- QK_AUTO_SHIFT_DOWN, // 5C18
- QK_AUTO_SHIFT_REPORT, // 5C19
- QK_AUTO_SHIFT_TOGGLE, // 5C1A
- QK_AUTO_SHIFT_ON, // 5C1B
- QK_AUTO_SHIFT_OFF, // 5C1C
-
- // Audio
- AU_ON, // 5C1D
- AU_OFF, // 5C1E
- AU_TOG, // 5C1F
-
- // Audio Clicky
- CLICKY_TOGGLE, // 5C20
- CLICKY_ENABLE, // 5C21
- CLICKY_DISABLE, // 5C22
- CLICKY_UP, // 5C23
- CLICKY_DOWN, // 5C24
- CLICKY_RESET, // 5C25
-
- // Music mode
- MU_ON, // 5C26
- MU_OFF, // 5C27
- MU_TOG, // 5C28
- MU_MOD, // 5C29
- MUV_IN, // 5C2A
- MUV_DE, // 5C2B
-
- // MIDI
- MI_ON, // 5C2C
- MI_OFF, // 5C2D
- MI_TOG, // 5C2E
-
- MI_C, // 5C2F
- MI_Cs, // 5C30
- MI_Db = MI_Cs,
- MI_D, // 5C31
- MI_Ds, // 5C32
- MI_Eb = MI_Ds,
- MI_E, // 5C33
- MI_F, // 5C34
- MI_Fs, // 5C35
- MI_Gb = MI_Fs,
- MI_G, // 5C36
- MI_Gs, // 5C37
- MI_Ab = MI_Gs,
- MI_A, // 5C38
- MI_As, // 5C39
- MI_Bb = MI_As,
- MI_B, // 5C3A
-
- MI_C_1, // 5C3B
- MI_Cs_1, // 5C3C
- MI_Db_1 = MI_Cs_1,
- MI_D_1, // 5C3D
- MI_Ds_1, // 5C3E
- MI_Eb_1 = MI_Ds_1,
- MI_E_1, // 5C3F
- MI_F_1, // 5C40
- MI_Fs_1, // 5C41
- MI_Gb_1 = MI_Fs_1,
- MI_G_1, // 5C42
- MI_Gs_1, // 5C43
- MI_Ab_1 = MI_Gs_1,
- MI_A_1, // 5C44
- MI_As_1, // 5C45
- MI_Bb_1 = MI_As_1,
- MI_B_1, // 5C46
-
- MI_C_2, // 5C47
- MI_Cs_2, // 5C48
- MI_Db_2 = MI_Cs_2,
- MI_D_2, // 5C49
- MI_Ds_2, // 5C4A
- MI_Eb_2 = MI_Ds_2,
- MI_E_2, // 5C4B
- MI_F_2, // 5C4C
- MI_Fs_2, // 5C4D
- MI_Gb_2 = MI_Fs_2,
- MI_G_2, // 5C4E
- MI_Gs_2, // 5C4F
- MI_Ab_2 = MI_Gs_2,
- MI_A_2, // 5C50
- MI_As_2, // 5C51
- MI_Bb_2 = MI_As_2,
- MI_B_2, // 5C52
-
- MI_C_3, // 5C53
- MI_Cs_3, // 5C54
- MI_Db_3 = MI_Cs_3,
- MI_D_3, // 5C55
- MI_Ds_3, // 5C56
- MI_Eb_3 = MI_Ds_3,
- MI_E_3, // 5C57
- MI_F_3, // 5C58
- MI_Fs_3, // 5C59
- MI_Gb_3 = MI_Fs_3,
- MI_G_3, // 5C5A
- MI_Gs_3, // 5C5B
- MI_Ab_3 = MI_Gs_3,
- MI_A_3, // 5C5C
- MI_As_3, // 5C5D
- MI_Bb_3 = MI_As_3,
- MI_B_3, // 5C5E
-
- MI_C_4, // 5C5F
- MI_Cs_4, // 5C60
- MI_Db_4 = MI_Cs_4,
- MI_D_4, // 5C61
- MI_Ds_4, // 5C62
- MI_Eb_4 = MI_Ds_4,
- MI_E_4, // 5C63
- MI_F_4, // 5C64
- MI_Fs_4, // 5C65
- MI_Gb_4 = MI_Fs_4,
- MI_G_4, // 5C66
- MI_Gs_4, // 5C67
- MI_Ab_4 = MI_Gs_4,
- MI_A_4, // 5C68
- MI_As_4, // 5C69
- MI_Bb_4 = MI_As_4,
- MI_B_4, // 5C6A
-
- MI_C_5, // 5C6B
- MI_Cs_5, // 5C6C
- MI_Db_5 = MI_Cs_5,
- MI_D_5, // 5C6D
- MI_Ds_5, // 5C6E
- MI_Eb_5 = MI_Ds_5,
- MI_E_5, // 5C6F
- MI_F_5, // 5C70
- MI_Fs_5, // 5C71
- MI_Gb_5 = MI_Fs_5,
- MI_G_5, // 5C72
- MI_Gs_5, // 5C73
- MI_Ab_5 = MI_Gs_5,
- MI_A_5, // 5C74
- MI_As_5, // 5C75
- MI_Bb_5 = MI_As_5,
- MI_B_5, // 5C76
-
- MI_OCT_N2, // 5C77
- MI_OCT_N1, // 5C78
- MI_OCT_0, // 5C79
- MI_OCT_1, // 5C7A
- MI_OCT_2, // 5C7B
- MI_OCT_3, // 5C7C
- MI_OCT_4, // 5C7D
- MI_OCT_5, // 5C7E
- MI_OCT_6, // 5C7F
- MI_OCT_7, // 5C80
- MI_OCTD, // 5C81
- MI_OCTU, // 5C82
-
- MI_TRNS_N6, // 5C83
- MI_TRNS_N5, // 5C84
- MI_TRNS_N4, // 5C85
- MI_TRNS_N3, // 5C86
- MI_TRNS_N2, // 5C87
- MI_TRNS_N1, // 5C88
- MI_TRNS_0, // 5C89
- MI_TRNS_1, // 5C8A
- MI_TRNS_2, // 5C8B
- MI_TRNS_3, // 5C8C
- MI_TRNS_4, // 5C8D
- MI_TRNS_5, // 5C8E
- MI_TRNS_6, // 5C8F
- MI_TRNSD, // 5C90
- MI_TRNSU, // 5C91
-
- MI_VEL_0, // 5C92
-#ifdef VIA_ENABLE
- MI_VEL_1 = MI_VEL_0,
-#else
- MI_VEL_1, // 5C93
-#endif
- MI_VEL_2, // 5C94
- MI_VEL_3, // 5C95
- MI_VEL_4, // 5C96
- MI_VEL_5, // 5C97
- MI_VEL_6, // 5C98
- MI_VEL_7, // 5C99
- MI_VEL_8, // 5C9A
- MI_VEL_9, // 5C9B
- MI_VEL_10, // 5C9C
- MI_VELD, // 5C9D
- MI_VELU, // 5C9E
-
- MI_CH1, // 5C9F
- MI_CH2, // 5CA0
- MI_CH3, // 5CA1
- MI_CH4, // 5CA2
- MI_CH5, // 5CA3
- MI_CH6, // 5CA4
- MI_CH7, // 5CA5
- MI_CH8, // 5CA6
- MI_CH9, // 5CA7
- MI_CH10, // 5CA8
- MI_CH11, // 5CA9
- MI_CH12, // 5CAA
- MI_CH13, // 5CAB
- MI_CH14, // 5CAC
- MI_CH15, // 5CAD
- MI_CH16, // 5CAE
- MI_CHD, // 5CAF
- MI_CHU, // 5CB0
-
- MI_ALLOFF, // 5CB1
-
- MI_SUS, // 5CB2
- MI_PORT, // 5CB3
- MI_SOST, // 5CB4
- MI_SOFT, // 5CB5
- MI_LEG, // 5CB6
-
- MI_MOD, // 5CB7
- MI_MODSD, // 5CB8
- MI_MODSU, // 5CB9
-
- MI_BENDD, // 5CBA
- MI_BENDU, // 5CBB
-
- // Backlight
- BL_ON, // 5CBC
- BL_OFF, // 5CBD
- BL_DEC, // 5CBE
- BL_INC, // 5CBF
- BL_TOGG, // 5CC0
- BL_STEP, // 5CC1
- BL_BRTG, // 5CC2
-
- // RGB underglow/matrix
- RGB_TOG, // 5CC3
- RGB_MODE_FORWARD, // 5CC4
- RGB_MODE_REVERSE, // 5CC5
- RGB_HUI, // 5CC6
- RGB_HUD, // 5CC7
- RGB_SAI, // 5CC8
- RGB_SAD, // 5CC9
- RGB_VAI, // 5CCA
- RGB_VAD, // 5CCB
- RGB_SPI, // 5CCC
- RGB_SPD, // 5CCD
- RGB_MODE_PLAIN, // 5CCE
- RGB_MODE_BREATHE, // 5CCF
- RGB_MODE_RAINBOW, // 5CD0
- RGB_MODE_SWIRL, // 5CD1
- RGB_MODE_SNAKE, // 5CD2
- RGB_MODE_KNIGHT, // 5CD3
- RGB_MODE_XMAS, // 5CD4
- RGB_MODE_GRADIENT, // 5CD5
- RGB_MODE_RGBTEST, // 5CD6
-
- // Velocikey
- QK_VELOCIKEY_TOGGLE, // 5CD7
-
- // Space Cadet
- QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN, // 5CD8
- QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE, // 5CD9
- QK_SPACE_CADET_RIGHT_SHIFT_ENTER, // 5CDA
-
- // Thermal Printer
- PRINT_ON, // 5CDB
- PRINT_OFF, // 5CDC
-
- // Bluetooth: output selection
- OUT_AUTO, // 5CDD
- OUT_USB, // 5CDE
-
- // Clear EEPROM
- QK_CLEAR_EEPROM, // 5CDF
-
- // Unicode
- QK_UNICODE_MODE_NEXT, // 5CE0
- QK_UNICODE_MODE_PREVIOUS, // 5CE1
- QK_UNICODE_MODE_MACOS, // 5CE2
- QK_UNICODE_MODE_LINUX, // 5CE3
- QK_UNICODE_MODE_WINDOWS, // 5CE4
- QK_UNICODE_MODE_BSD, // 5CE5
- QK_UNICODE_MODE_WINCOMPOSE, // 5CE6
-
- // Haptic
- HPT_ON, // 5CE7
- HPT_OFF, // 5CE8
- HPT_TOG, // 5CE9
- HPT_RST, // 5CEA
- HPT_FBK, // 5CEB
- HPT_BUZ, // 5CEC
- HPT_MODI, // 5CED
- HPT_MODD, // 5CEE
- HPT_CONT, // 5CEF
- HPT_CONI, // 5CF0
- HPT_COND, // 5CF1
- HPT_DWLI, // 5CF2
- HPT_DWLD, // 5CF3
-
- // Space Cadet (continued)
- QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN, // 5CF4
- QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE, // 5CF5
- QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN, // 5CF6
- QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE, // 5CF7
-
- // Combos
- QK_COMBO_ON, // 5CF8
- QK_COMBO_OFF, // 5CF9
- QK_COMBO_TOGGLE, // 5CFA
-
- // Magic (continued)
- MAGIC_SWAP_LCTL_LGUI, // 5CFB
- MAGIC_SWAP_RCTL_RGUI, // 5CFC
- MAGIC_UNSWAP_LCTL_LGUI, // 5CFD
- MAGIC_UNSWAP_RCTL_RGUI, // 5CFE
- MAGIC_SWAP_CTL_GUI, // 5CFF
- MAGIC_UNSWAP_CTL_GUI, // 5D00
- MAGIC_TOGGLE_CTL_GUI, // 5D01
- MAGIC_EE_HANDS_LEFT, // 5D02
- MAGIC_EE_HANDS_RIGHT, // 5D03
-
- // Dynamic Macros
- QK_DYNAMIC_MACRO_RECORD_START_1, // 5D04
- QK_DYNAMIC_MACRO_RECORD_START_2, // 5D05
- QK_DYNAMIC_MACRO_RECORD_STOP, // 5D06
- QK_DYNAMIC_MACRO_PLAY_1, // 5D07
- QK_DYNAMIC_MACRO_PLAY_2, // 5D08
-
- // Joystick
- QK_JOYSTICK_BUTTON_0, // 5D09
- QK_JOYSTICK_BUTTON_1, // 5D0A
- QK_JOYSTICK_BUTTON_2, // 5D0B
- QK_JOYSTICK_BUTTON_3, // 5D0C
- QK_JOYSTICK_BUTTON_4, // 5D0D
- QK_JOYSTICK_BUTTON_5, // 5D0E
- QK_JOYSTICK_BUTTON_6, // 5D0F
- QK_JOYSTICK_BUTTON_7, // 5D10
- QK_JOYSTICK_BUTTON_8, // 5D11
- QK_JOYSTICK_BUTTON_9, // 5D12
- QK_JOYSTICK_BUTTON_10, // 5D13
- QK_JOYSTICK_BUTTON_11, // 5D14
- QK_JOYSTICK_BUTTON_12, // 5D15
- QK_JOYSTICK_BUTTON_13, // 5D16
- QK_JOYSTICK_BUTTON_14, // 5D17
- QK_JOYSTICK_BUTTON_15, // 5D18
- QK_JOYSTICK_BUTTON_16, // 5D19
- QK_JOYSTICK_BUTTON_17, // 5D1A
- QK_JOYSTICK_BUTTON_18, // 5D1B
- QK_JOYSTICK_BUTTON_19, // 5D1C
- QK_JOYSTICK_BUTTON_20, // 5D1D
- QK_JOYSTICK_BUTTON_21, // 5D1E
- QK_JOYSTICK_BUTTON_22, // 5D1F
- QK_JOYSTICK_BUTTON_23, // 5D20
- QK_JOYSTICK_BUTTON_24, // 5D21
- QK_JOYSTICK_BUTTON_25, // 5D22
- QK_JOYSTICK_BUTTON_26, // 5D23
- QK_JOYSTICK_BUTTON_27, // 5D24
- QK_JOYSTICK_BUTTON_28, // 5D25
- QK_JOYSTICK_BUTTON_29, // 5D26
- QK_JOYSTICK_BUTTON_30, // 5D27
- QK_JOYSTICK_BUTTON_31, // 5D28
-
- // Leader Key
- QK_LEADER, // 5D29
-
- // Bluetooth: output selection (continued)
- OUT_BT, // 5D2A
-
- // Lock Key
- QK_LOCK, // 5D2B
-
- // Unused slots
- UNUSED_000, // 5D2C
- UNUSED_001, // 5D2D
-
- // Sequencer
- SQ_ON, // 5D2E
- SQ_OFF, // 5D2F
- SQ_TOG, // 5D30
-
- SQ_TMPD, // 5D31
- SQ_TMPU, // 5D32
-
- SQ_RESD, // 5D33
- SQ_RESU, // 5D34
-
- SQ_SALL, // 5D35
- SQ_SCLR, // 5D36
-
- SEQUENCER_STEP_MIN, // 5D37
- SEQUENCER_STEP_MAX = SEQUENCER_STEP_MIN + SEQUENCER_STEPS,
-
- SEQUENCER_RESOLUTION_MIN,
- SEQUENCER_RESOLUTION_MAX = SEQUENCER_RESOLUTION_MIN + SEQUENCER_RESOLUTIONS,
-
- SEQUENCER_TRACK_MIN,
- SEQUENCER_TRACK_MAX = SEQUENCER_TRACK_MIN + SEQUENCER_TRACKS,
+// Pull in dd keycodes to maintain header compatibility
+#include "keycodes.h"
-#define SQ_S(n) (n < SEQUENCER_STEPS ? SEQUENCER_STEP_MIN + n : KC_NO)
-#define SQ_R(n) (n < SEQUENCER_RESOLUTIONS ? SEQUENCER_RESOLUTION_MIN + n : KC_NO)
-#define SQ_T(n) (n < SEQUENCER_TRACKS ? SEQUENCER_TRACK_MIN + n : KC_NO)
+// US ANSI shifted keycode aliases
+#include "keymap_us.h"
- // One Shot
- QK_ONE_SHOT_ON,
- QK_ONE_SHOT_OFF,
- QK_ONE_SHOT_TOGGLE,
-
- // RGB underglow/matrix (continued)
- RGB_MODE_TWINKLE,
-
- // Key Overrides
- QK_KEY_OVERRIDE_TOGGLE,
- QK_KEY_OVERRIDE_ON,
- QK_KEY_OVERRIDE_OFF,
-
- // Additional magic key
- MAGIC_TOGGLE_GUI,
-
- // Adjust tapping term on the fly
- DT_PRNT,
- DT_UP,
- DT_DOWN,
-
- // Programmable Button
- QK_PROGRAMMABLE_BUTTON_1,
- QK_PROGRAMMABLE_BUTTON_2,
- QK_PROGRAMMABLE_BUTTON_3,
- QK_PROGRAMMABLE_BUTTON_4,
- QK_PROGRAMMABLE_BUTTON_5,
- QK_PROGRAMMABLE_BUTTON_6,
- QK_PROGRAMMABLE_BUTTON_7,
- QK_PROGRAMMABLE_BUTTON_8,
- QK_PROGRAMMABLE_BUTTON_9,
- QK_PROGRAMMABLE_BUTTON_10,
- QK_PROGRAMMABLE_BUTTON_11,
- QK_PROGRAMMABLE_BUTTON_12,
- QK_PROGRAMMABLE_BUTTON_13,
- QK_PROGRAMMABLE_BUTTON_14,
- QK_PROGRAMMABLE_BUTTON_15,
- QK_PROGRAMMABLE_BUTTON_16,
- QK_PROGRAMMABLE_BUTTON_17,
- QK_PROGRAMMABLE_BUTTON_18,
- QK_PROGRAMMABLE_BUTTON_19,
- QK_PROGRAMMABLE_BUTTON_20,
- QK_PROGRAMMABLE_BUTTON_21,
- QK_PROGRAMMABLE_BUTTON_22,
- QK_PROGRAMMABLE_BUTTON_23,
- QK_PROGRAMMABLE_BUTTON_24,
- QK_PROGRAMMABLE_BUTTON_25,
- QK_PROGRAMMABLE_BUTTON_26,
- QK_PROGRAMMABLE_BUTTON_27,
- QK_PROGRAMMABLE_BUTTON_28,
- QK_PROGRAMMABLE_BUTTON_29,
- QK_PROGRAMMABLE_BUTTON_30,
- QK_PROGRAMMABLE_BUTTON_31,
- QK_PROGRAMMABLE_BUTTON_32,
-
- // Dedicated macro keys for Configurator and VIA
- MACRO_0,
- MACRO_1,
- MACRO_2,
- MACRO_3,
- MACRO_4,
- MACRO_5,
- MACRO_6,
- MACRO_7,
- MACRO_8,
- MACRO_9,
- MACRO_10,
- MACRO_11,
- MACRO_12,
- MACRO_13,
- MACRO_14,
- MACRO_15,
- MACRO_16,
- MACRO_17,
- MACRO_18,
- MACRO_19,
- MACRO_20,
- MACRO_21,
- MACRO_22,
- MACRO_23,
- MACRO_24,
- MACRO_25,
- MACRO_26,
- MACRO_27,
- MACRO_28,
- MACRO_29,
- MACRO_30,
- MACRO_31,
-
- MAGIC_TOGGLE_CONTROL_CAPSLOCK,
-
- QK_MAKE,
- QK_REBOOT,
-
- QK_SECURE_LOCK,
- QK_SECURE_UNLOCK,
- QK_SECURE_TOGGLE,
- QK_SECURE_REQUEST,
-
- QK_CAPS_WORD_TOGGLE,
-
- MAGIC_SWAP_ESCAPE_CAPSLOCK,
- MAGIC_UNSWAP_ESCAPE_CAPSLOCK,
- MAGIC_TOGGLE_ESCAPE_CAPSLOCK,
-
- QK_UNICODE_MODE_EMACS,
-
- QK_AUTOCORRECT_ON,
- QK_AUTOCORRECT_OFF,
- QK_AUTOCORRECT_TOGGLE,
-
- MAGIC_TOGGLE_BACKSLASH_BACKSPACE,
-
- // Start of custom keycode range for keyboards and keymaps - always leave at the end
- SAFE_RANGE
-};
+// TODO: sub-ranges?
+// clang-format off
+#define QK_LCTL 0x0100
+#define QK_LSFT 0x0200
+#define QK_LALT 0x0400
+#define QK_LGUI 0x0800
+#define QK_RMODS_MIN 0x1000
+#define QK_RCTL 0x1100
+#define QK_RSFT 0x1200
+#define QK_RALT 0x1400
+#define QK_RGUI 0x1800
+#define QK_UNICODEMAP 0x8000
+#define QK_UNICODEMAP_MAX 0xBFFF
+#define QK_UNICODEMAP_PAIR 0xC000
+#define QK_UNICODEMAP_PAIR_MAX 0xFFFF
+// clang-format on
// Keycode modifiers & aliases
#define LCTL(kc) (QK_LCTL | (kc))
@@ -654,122 +72,35 @@ enum quantum_keycodes {
#define RCS(kc) (QK_RCTL | QK_RSFT | (kc))
#define SAGR(kc) RSA(kc)
-#define MOD_HYPR 0xF
-#define MOD_MEH 0x7
-
-// US ANSI shifted keycode aliases
-#include "keymap_us.h"
-
// Modified keycode aliases
#define C(kc) LCTL(kc)
#define S(kc) LSFT(kc)
#define A(kc) LALT(kc)
#define G(kc) LGUI(kc)
-#define QK_GESC QK_GRAVE_ESCAPE
-
-#define QK_BOOT QK_BOOTLOADER
-#define DB_TOGG QK_DEBUG_TOGGLE
-#define EE_CLR QK_CLEAR_EEPROM
-#define QK_RBT QK_REBOOT
-
-// Audio Clicky aliases
-#define CK_TOGG CLICKY_TOGGLE
-#define CK_RST CLICKY_RESET
-#define CK_UP CLICKY_UP
-#define CK_DOWN CLICKY_DOWN
-#define CK_ON CLICKY_ENABLE
-#define CK_OFF CLICKY_DISABLE
-
-// RGB aliases
-#define RGB_MOD RGB_MODE_FORWARD
-#define RGB_RMOD RGB_MODE_REVERSE
-#define RGB_M_P RGB_MODE_PLAIN
-#define RGB_M_B RGB_MODE_BREATHE
-#define RGB_M_R RGB_MODE_RAINBOW
-#define RGB_M_SW RGB_MODE_SWIRL
-#define RGB_M_SN RGB_MODE_SNAKE
-#define RGB_M_K RGB_MODE_KNIGHT
-#define RGB_M_X RGB_MODE_XMAS
-#define RGB_M_G RGB_MODE_GRADIENT
-#define RGB_M_T RGB_MODE_RGBTEST
-#define RGB_M_TW RGB_MODE_TWINKLE
-
-// Magic aliases
-#define CL_SWAP MAGIC_SWAP_CONTROL_CAPSLOCK
-#define CL_NORM MAGIC_UNSWAP_CONTROL_CAPSLOCK
-#define CL_CTRL MAGIC_CAPSLOCK_TO_CONTROL
-#define CL_CAPS MAGIC_UNCAPSLOCK_TO_CONTROL
-#define CL_TOGG MAGIC_TOGGLE_CONTROL_CAPSLOCK
-
-#define EC_SWAP MAGIC_SWAP_ESCAPE_CAPSLOCK
-#define EC_NORM MAGIC_UNSWAP_ESCAPE_CAPSLOCK
-#define EC_TOGG MAGIC_TOGGLE_ESCAPE_CAPSLOCK
-
-#define LCG_SWP MAGIC_SWAP_LCTL_LGUI
-#define LCG_NRM MAGIC_UNSWAP_LCTL_LGUI
-#define RCG_SWP MAGIC_SWAP_RCTL_RGUI
-#define RCG_NRM MAGIC_UNSWAP_RCTL_RGUI
-#define CG_SWAP MAGIC_SWAP_CTL_GUI
-#define CG_NORM MAGIC_UNSWAP_CTL_GUI
-#define CG_TOGG MAGIC_TOGGLE_CTL_GUI
-
-#define LAG_SWP MAGIC_SWAP_LALT_LGUI
-#define LAG_NRM MAGIC_UNSWAP_LALT_LGUI
-#define RAG_SWP MAGIC_SWAP_RALT_RGUI
-#define RAG_NRM MAGIC_UNSWAP_RALT_RGUI
-#define AG_SWAP MAGIC_SWAP_ALT_GUI
-#define AG_NORM MAGIC_UNSWAP_ALT_GUI
-#define AG_TOGG MAGIC_TOGGLE_ALT_GUI
-
-#define GUI_OFF MAGIC_NO_GUI
-#define GUI_ON MAGIC_UNNO_GUI
-#define GUI_TOG MAGIC_TOGGLE_GUI
-
-#define GE_SWAP MAGIC_SWAP_GRAVE_ESC
-#define GE_NORM MAGIC_UNSWAP_GRAVE_ESC
-
-#define BS_SWAP MAGIC_SWAP_BACKSLASH_BACKSPACE
-#define BS_NORM MAGIC_UNSWAP_BACKSLASH_BACKSPACE
-#define BS_TOGG MAGIC_TOGGLE_BACKSLASH_BACKSPACE
-
-#define NK_ON MAGIC_HOST_NKRO
-#define NK_OFF MAGIC_UNHOST_NKRO
-#define NK_TOGG MAGIC_TOGGLE_NKRO
-
-#define EH_LEFT MAGIC_EE_HANDS_LEFT
-#define EH_RGHT MAGIC_EE_HANDS_RIGHT
-
-#define AC_ON QK_AUTOCORRECT_ON
-#define AC_OFF QK_AUTOCORRECT_OFF
-#define AC_TOGG QK_AUTOCORRECT_TOGGLE
-
-// Velocikey
-#define VK_TOGG QK_VELOCIKEY_TOGGLE
-
-// GOTO layer - 256 layer max
-#define TO(layer) (QK_TO | ((layer)&0xFF))
-
-// Momentary switch layer - 256 layer max
-#define MO(layer) (QK_MOMENTARY | ((layer)&0xFF))
-
-// Set default layer - 256 layer max
-#define DF(layer) (QK_DEF_LAYER | ((layer)&0xFF))
-
-// Toggle to layer - 256 layer max
-#define TG(layer) (QK_TOGGLE_LAYER | ((layer)&0xFF))
-
-// One-shot layer - 256 layer max
-#define OSL(layer) (QK_ONE_SHOT_LAYER | ((layer)&0xFF))
-
-// L-ayer M-od: Momentary switch layer with modifiers active - 16 layer max, left mods only
-#define LM(layer, mod) (QK_LAYER_MOD | (((layer)&0xF) << 4) | ((mod)&0xF))
+// GOTO layer - 32 layer max
+#define TO(layer) (QK_TO | ((layer)&0x1F))
+
+// Momentary switch layer - 32 layer max
+#define MO(layer) (QK_MOMENTARY | ((layer)&0x1F))
+
+// Set default layer - 32 layer max
+#define DF(layer) (QK_DEF_LAYER | ((layer)&0x1F))
+
+// Toggle to layer - 32 layer max
+#define TG(layer) (QK_TOGGLE_LAYER | ((layer)&0x1F))
+
+// One-shot layer - 32 layer max
+#define OSL(layer) (QK_ONE_SHOT_LAYER | ((layer)&0x1F))
+
+// L-ayer M-od: Momentary switch layer with modifiers active - 16 layer max
+#define LM(layer, mod) (QK_LAYER_MOD | (((layer)&0xF) << 5) | ((mod)&0x1F))
// One-shot mod
-#define OSM(mod) (QK_ONE_SHOT_MOD | ((mod)&0xFF))
+#define OSM(mod) (QK_ONE_SHOT_MOD | ((mod)&0x1F))
-// Layer tap-toggle
-#define TT(layer) (QK_LAYER_TAP_TOGGLE | ((layer)&0xFF))
+// Layer tap-toggle - 32 layer max
+#define TT(layer) (QK_LAYER_TAP_TOGGLE | ((layer)&0x1F))
// L-ayer, T-ap - 256 keycode max, 16 layer max
#define LT(layer, kc) (QK_LAYER_TAP | (((layer)&0xF) << 8) | ((kc)&0xFF))
@@ -834,64 +165,8 @@ enum quantum_keycodes {
#define X(i) (QK_UNICODEMAP | (i))
#define XP(i, j) (QK_UNICODEMAP_PAIR | ((i)&0x7F) | (((j)&0x7F) << 7)) // 127 max i and j
-#define UC_NEXT QK_UNICODE_MODE_NEXT
-#define UC_PREV QK_UNICODE_MODE_PREVIOUS
-
-#define UC_MAC QK_UNICODE_MODE_MACOS
-#define UC_LINX QK_UNICODE_MODE_LINUX
-#define UC_WIN QK_UNICODE_MODE_WINDOWS
-#define UC_BSD QK_UNICODE_MODE_BSD
-#define UC_WINC QK_UNICODE_MODE_WINCOMPOSE
-#define UC_EMAC QK_UNICODE_MODE_EMACS
-
-// Auto Shift
-#define AS_UP QK_AUTO_SHIFT_UP
-#define AS_DOWN QK_AUTO_SHIFT_DOWN
-#define AS_RPT QK_AUTO_SHIFT_REPORT
-#define AS_TOGG QK_AUTO_SHIFT_TOGGLE
-#define AS_ON QK_AUTO_SHIFT_ON
-#define AS_OFF QK_AUTO_SHIFT_OFF
-
-// Leader key
-#define QK_LEAD QK_LEADER
-
-// Caps Word
-#define CW_TOGG QK_CAPS_WORD_TOGGLE
-
-// Key Overrides
-#define KO_TOGG QK_KEY_OVERRIDE_TOGGLE
-#define KO_ON QK_KEY_OVERRIDE_ON
-#define KO_OFF QK_KEY_OVERRIDE_OFF
-
-// Secure
-#define SE_LOCK QK_SECURE_LOCK
-#define SE_UNLK QK_SECURE_UNLOCK
-#define SE_TOGG QK_SECURE_TOGGLE
-#define SE_REQ QK_SECURE_REQUEST
-
-// Space Cadet
-#define SC_LSPO QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN
-#define SC_RSPC QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE
-#define SC_LCPO QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN
-#define SC_RCPC QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE
-#define SC_LAPO QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN
-#define SC_RAPC QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE
-#define SC_SENT QK_SPACE_CADET_RIGHT_SHIFT_ENTER
-
-// Combos
-#define CM_ON QK_COMBO_ON
-#define CM_OFF QK_COMBO_OFF
-#define CM_TOGG QK_COMBO_TOGGLE
-
// Swap Hands
#define SH_T(kc) (QK_SWAP_HANDS | (kc))
-#define SH_TG (QK_SWAP_HANDS | OP_SH_TOGGLE)
-#define SH_TT (QK_SWAP_HANDS | OP_SH_TAP_TOGGLE)
-#define SH_OS (QK_SWAP_HANDS | OP_SH_ONESHOT)
-#define SH_MON (QK_SWAP_HANDS | OP_SH_ON_OFF)
-#define SH_MOFF (QK_SWAP_HANDS | OP_SH_OFF_ON)
-#define SH_ON (QK_SWAP_HANDS | OP_SH_ON)
-#define SH_OFF (QK_SWAP_HANDS | OP_SH_OFF)
// MIDI aliases
#define MIDI_TONE_MIN MI_C
@@ -905,88 +180,20 @@ enum quantum_keycodes {
#define MIDI_CHANNEL_MIN MI_CH1
#define MIDI_CHANNEL_MAX MI_CH16
-// Dynamic Macros aliases
-#define DM_REC1 QK_DYNAMIC_MACRO_RECORD_START_1
-#define DM_REC2 QK_DYNAMIC_MACRO_RECORD_START_2
-#define DM_RSTP QK_DYNAMIC_MACRO_RECORD_STOP
-#define DM_PLY1 QK_DYNAMIC_MACRO_PLAY_1
-#define DM_PLY2 QK_DYNAMIC_MACRO_PLAY_2
-
-// Joystick aliases
-#define JS_0 QK_JOYSTICK_BUTTON_0
-#define JS_1 QK_JOYSTICK_BUTTON_1
-#define JS_2 QK_JOYSTICK_BUTTON_2
-#define JS_3 QK_JOYSTICK_BUTTON_3
-#define JS_4 QK_JOYSTICK_BUTTON_4
-#define JS_5 QK_JOYSTICK_BUTTON_5
-#define JS_6 QK_JOYSTICK_BUTTON_6
-#define JS_7 QK_JOYSTICK_BUTTON_7
-#define JS_8 QK_JOYSTICK_BUTTON_8
-#define JS_9 QK_JOYSTICK_BUTTON_9
-#define JS_10 QK_JOYSTICK_BUTTON_10
-#define JS_11 QK_JOYSTICK_BUTTON_11
-#define JS_12 QK_JOYSTICK_BUTTON_12
-#define JS_13 QK_JOYSTICK_BUTTON_13
-#define JS_14 QK_JOYSTICK_BUTTON_14
-#define JS_15 QK_JOYSTICK_BUTTON_15
-#define JS_16 QK_JOYSTICK_BUTTON_16
-#define JS_17 QK_JOYSTICK_BUTTON_17
-#define JS_18 QK_JOYSTICK_BUTTON_18
-#define JS_19 QK_JOYSTICK_BUTTON_19
-#define JS_20 QK_JOYSTICK_BUTTON_20
-#define JS_21 QK_JOYSTICK_BUTTON_21
-#define JS_22 QK_JOYSTICK_BUTTON_22
-#define JS_23 QK_JOYSTICK_BUTTON_23
-#define JS_24 QK_JOYSTICK_BUTTON_24
-#define JS_25 QK_JOYSTICK_BUTTON_25
-#define JS_26 QK_JOYSTICK_BUTTON_26
-#define JS_27 QK_JOYSTICK_BUTTON_27
-#define JS_28 QK_JOYSTICK_BUTTON_28
-#define JS_29 QK_JOYSTICK_BUTTON_29
-#define JS_30 QK_JOYSTICK_BUTTON_30
-#define JS_31 QK_JOYSTICK_BUTTON_31
-#define QK_JOYSTICK_BUTTON_MIN QK_JOYSTICK_BUTTON_0
-#define QK_JOYSTICK_BUTTON_MAX QK_JOYSTICK_BUTTON_31
-
-// One Shot aliases
-#define OS_TOGG QK_ONE_SHOT_TOGGLE
-#define OS_ON QK_ONE_SHOT_ON
-#define OS_OFF QK_ONE_SHOT_OFF
-
-// Programmable Button aliases
-#define PB_1 QK_PROGRAMMABLE_BUTTON_1
-#define PB_2 QK_PROGRAMMABLE_BUTTON_2
-#define PB_3 QK_PROGRAMMABLE_BUTTON_3
-#define PB_4 QK_PROGRAMMABLE_BUTTON_4
-#define PB_5 QK_PROGRAMMABLE_BUTTON_5
-#define PB_6 QK_PROGRAMMABLE_BUTTON_6
-#define PB_7 QK_PROGRAMMABLE_BUTTON_7
-#define PB_8 QK_PROGRAMMABLE_BUTTON_8
-#define PB_9 QK_PROGRAMMABLE_BUTTON_9
-#define PB_10 QK_PROGRAMMABLE_BUTTON_10
-#define PB_11 QK_PROGRAMMABLE_BUTTON_11
-#define PB_12 QK_PROGRAMMABLE_BUTTON_12
-#define PB_13 QK_PROGRAMMABLE_BUTTON_13
-#define PB_14 QK_PROGRAMMABLE_BUTTON_14
-#define PB_15 QK_PROGRAMMABLE_BUTTON_15
-#define PB_16 QK_PROGRAMMABLE_BUTTON_16
-#define PB_17 QK_PROGRAMMABLE_BUTTON_17
-#define PB_18 QK_PROGRAMMABLE_BUTTON_18
-#define PB_19 QK_PROGRAMMABLE_BUTTON_19
-#define PB_20 QK_PROGRAMMABLE_BUTTON_20
-#define PB_21 QK_PROGRAMMABLE_BUTTON_21
-#define PB_22 QK_PROGRAMMABLE_BUTTON_22
-#define PB_23 QK_PROGRAMMABLE_BUTTON_23
-#define PB_24 QK_PROGRAMMABLE_BUTTON_24
-#define PB_25 QK_PROGRAMMABLE_BUTTON_25
-#define PB_26 QK_PROGRAMMABLE_BUTTON_26
-#define PB_27 QK_PROGRAMMABLE_BUTTON_27
-#define PB_28 QK_PROGRAMMABLE_BUTTON_28
-#define PB_29 QK_PROGRAMMABLE_BUTTON_29
-#define PB_30 QK_PROGRAMMABLE_BUTTON_30
-#define PB_31 QK_PROGRAMMABLE_BUTTON_31
-#define PB_32 QK_PROGRAMMABLE_BUTTON_32
-#define QK_PROGRAMMABLE_BUTTON_MIN QK_PROGRAMMABLE_BUTTON_1
-#define QK_PROGRAMMABLE_BUTTON_MAX QK_PROGRAMMABLE_BUTTON_32
+// TODO: somehow migrate sequencer to DD?
+#include "sequencer.h"
+
+#define SEQUENCER_STEP_MIN (QK_SEQUENCER + 0xF)
+#define SEQUENCER_STEP_MAX (SEQUENCER_STEP_MIN + SEQUENCER_STEPS)
+
+#define SEQUENCER_RESOLUTION_MIN (SEQUENCER_STEP_MAX + 1)
+#define SEQUENCER_RESOLUTION_MAX (SEQUENCER_RESOLUTION_MIN + SEQUENCER_RESOLUTIONS)
+
+#define SEQUENCER_TRACK_MIN (SEQUENCER_RESOLUTION_MAX + 1)
+#define SEQUENCER_TRACK_MAX (SEQUENCER_TRACK_MIN + SEQUENCER_TRACKS)
+
+#define SQ_S(n) (n < SEQUENCER_STEPS ? SEQUENCER_STEP_MIN + n : KC_NO)
+#define SQ_R(n) (n < SEQUENCER_RESOLUTIONS ? SEQUENCER_RESOLUTION_MIN + n : KC_NO)
+#define SQ_T(n) (n < SEQUENCER_TRACKS ? SEQUENCER_TRACK_MIN + n : KC_NO)
#include "quantum_keycodes_legacy.h"
diff --git a/quantum/send_string/send_string_keycodes.h b/quantum/send_string/send_string_keycodes.h
index f9e1c101ff..54b8382053 100644
--- a/quantum/send_string/send_string_keycodes.h
+++ b/quantum/send_string/send_string_keycodes.h
@@ -389,48 +389,25 @@
#define X_ASSISTANT c0
/* Mouse Buttons (unallocated range in HID spec) */
-#ifdef VIA_ENABLE
-#define X_MS_UP f0
-#define X_MS_DOWN f1
-#define X_MS_LEFT f2
-#define X_MS_RIGHT f3
-#define X_MS_BTN1 f4
-#define X_MS_BTN2 f5
-#define X_MS_BTN3 f6
-#define X_MS_BTN4 f7
-#define X_MS_BTN5 f8
-#define X_MS_BTN6 f8
-#define X_MS_BTN7 f8
-#define X_MS_BTN8 f8
-#define X_MS_WH_UP f9
-#define X_MS_WH_DOWN fa
-#define X_MS_WH_LEFT fb
-#define X_MS_WH_RIGHT fc
-#define X_MS_ACCEL0 fd
-#define X_MS_ACCEL1 fe
-#define X_MS_ACCEL2 ff
-#else
-#define X_MS_UP cd
-#define X_MS_DOWN ce
-#define X_MS_LEFT cf
-#define X_MS_RIGHT d0
-#define X_MS_BTN1 d1
-#define X_MS_BTN2 d2
-#define X_MS_BTN3 d3
-#define X_MS_BTN4 d4
-#define X_MS_BTN5 d5
-#define X_MS_BTN6 d6
-#define X_MS_BTN7 d7
-#define X_MS_BTN8 d8
-#define X_MS_WH_UP d9
-#define X_MS_WH_DOWN da
-#define X_MS_WH_LEFT db
-#define X_MS_WH_RIGHT dc
-#define X_MS_ACCEL0 dd
-#define X_MS_ACCEL1 de
-#define X_MS_ACCEL2 df
-#endif
-
+#define X_MS_UP cd
+#define X_MS_DOWN ce
+#define X_MS_LEFT cf
+#define X_MS_RIGHT d0
+#define X_MS_BTN1 d1
+#define X_MS_BTN2 d2
+#define X_MS_BTN3 d3
+#define X_MS_BTN4 d4
+#define X_MS_BTN5 d5
+#define X_MS_BTN6 d6
+#define X_MS_BTN7 d7
+#define X_MS_BTN8 d8
+#define X_MS_WH_UP d9
+#define X_MS_WH_DOWN da
+#define X_MS_WH_LEFT db
+#define X_MS_WH_RIGHT dc
+#define X_MS_ACCEL0 dd
+#define X_MS_ACCEL1 de
+#define X_MS_ACCEL2 df
// Send string macros
#define STRINGIZE(z) #z
diff --git a/quantum/via.c b/quantum/via.c
index 37e2046a10..5afbee5a30 100644
--- a/quantum/via.c
+++ b/quantum/via.c
@@ -50,7 +50,6 @@
#include "dynamic_keymap.h"
#include "eeprom.h"
#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
-#include "via_ensure_keycode.h"
// Forward declare some helpers.
#if defined(VIA_QMK_BACKLIGHT_ENABLE)
diff --git a/quantum/via.h b/quantum/via.h
index 558ae95de4..84b264903f 100644
--- a/quantum/via.h
+++ b/quantum/via.h
@@ -58,7 +58,7 @@
// This is changed only when the command IDs change,
// so VIA Configurator can detect compatible firmware.
-#define VIA_PROTOCOL_VERSION 0x000A
+#define VIA_PROTOCOL_VERSION 0x000B
enum via_command_id {
id_get_protocol_version = 0x01, // always 0x01
@@ -103,13 +103,8 @@ enum via_lighting_value {
id_qmk_rgblight_color = 0x83,
};
-// Can't use SAFE_RANGE here, it might change if someone adds
-// new values to enum quantum_keycodes.
-// Need to keep checking 0x5F10 is still in the safe range.
-// TODO: merge this into quantum_keycodes
-// Backlight keycodes are in range 0x5F00-0x5F0F
enum via_keycodes {
- FN_MO13 = 0x5F10,
+ FN_MO13 = QK_MACRO,
FN_MO23,
MACRO00,
MACRO01,
@@ -130,7 +125,7 @@ enum via_keycodes {
};
enum user_keycodes {
- USER00 = 0x5F80,
+ USER00 = QK_USER,
USER01,
USER02,
USER03,
diff --git a/quantum/via_ensure_keycode.h b/quantum/via_ensure_keycode.h
deleted file mode 100644
index 48e611d0fa..0000000000
--- a/quantum/via_ensure_keycode.h
+++ /dev/null
@@ -1,344 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-#include "via.h"
-
-#ifndef VIA_HAS_BROKEN_KEYCODES
-
-// clang-format off
-
-_Static_assert(KC_NO == 0x0000, "");
-_Static_assert(KC_TRANSPARENT == 0x0001, "");
-
-_Static_assert(KC_A == 0x0004, "");
-_Static_assert(KC_B == 0x0005, "");
-_Static_assert(KC_C == 0x0006, "");
-_Static_assert(KC_D == 0x0007, "");
-_Static_assert(KC_E == 0x0008, "");
-_Static_assert(KC_F == 0x0009, "");
-_Static_assert(KC_G == 0x000A, "");
-_Static_assert(KC_H == 0x000B, "");
-_Static_assert(KC_I == 0x000C, "");
-_Static_assert(KC_J == 0x000D, "");
-_Static_assert(KC_K == 0x000E, "");
-_Static_assert(KC_L == 0x000F, "");
-_Static_assert(KC_M == 0x0010, "");
-_Static_assert(KC_N == 0x0011, "");
-_Static_assert(KC_O == 0x0012, "");
-_Static_assert(KC_P == 0x0013, "");
-_Static_assert(KC_Q == 0x0014, "");
-_Static_assert(KC_R == 0x0015, "");
-_Static_assert(KC_S == 0x0016, "");
-_Static_assert(KC_T == 0x0017, "");
-_Static_assert(KC_U == 0x0018, "");
-_Static_assert(KC_V == 0x0019, "");
-_Static_assert(KC_W == 0x001A, "");
-_Static_assert(KC_X == 0x001B, "");
-_Static_assert(KC_Y == 0x001C, "");
-_Static_assert(KC_Z == 0x001D, "");
-_Static_assert(KC_1 == 0x001E, "");
-_Static_assert(KC_2 == 0x001F, "");
-_Static_assert(KC_3 == 0x0020, "");
-_Static_assert(KC_4 == 0x0021, "");
-_Static_assert(KC_5 == 0x0022, "");
-_Static_assert(KC_6 == 0x0023, "");
-_Static_assert(KC_7 == 0x0024, "");
-_Static_assert(KC_8 == 0x0025, "");
-_Static_assert(KC_9 == 0x0026, "");
-_Static_assert(KC_0 == 0x0027, "");
-_Static_assert(KC_ENTER == 0x0028, "");
-_Static_assert(KC_ESCAPE == 0x0029, "");
-_Static_assert(KC_BACKSPACE == 0x002A, "");
-_Static_assert(KC_TAB == 0x002B, "");
-_Static_assert(KC_SPACE == 0x002C, "");
-_Static_assert(KC_MINUS == 0x002D, "");
-_Static_assert(KC_EQUAL == 0x002E, "");
-_Static_assert(KC_LEFT_BRACKET == 0x002F, "");
-_Static_assert(KC_RIGHT_BRACKET == 0x0030, "");
-_Static_assert(KC_BACKSLASH == 0x0031, "");
-_Static_assert(KC_NONUS_HASH == 0x0032, "");
-_Static_assert(KC_SEMICOLON == 0x0033, "");
-_Static_assert(KC_QUOTE == 0x0034, "");
-_Static_assert(KC_GRAVE == 0x0035, "");
-_Static_assert(KC_COMMA == 0x0036, "");
-_Static_assert(KC_DOT == 0x0037, "");
-_Static_assert(KC_SLASH == 0x0038, "");
-_Static_assert(KC_CAPS_LOCK == 0x0039, "");
-_Static_assert(KC_F1 == 0x003A, "");
-_Static_assert(KC_F2 == 0x003B, "");
-_Static_assert(KC_F3 == 0x003C, "");
-_Static_assert(KC_F4 == 0x003D, "");
-_Static_assert(KC_F5 == 0x003E, "");
-_Static_assert(KC_F6 == 0x003F, "");
-_Static_assert(KC_F7 == 0x0040, "");
-_Static_assert(KC_F8 == 0x0041, "");
-_Static_assert(KC_F9 == 0x0042, "");
-_Static_assert(KC_F10 == 0x0043, "");
-_Static_assert(KC_F11 == 0x0044, "");
-_Static_assert(KC_F12 == 0x0045, "");
-_Static_assert(KC_PRINT_SCREEN == 0x0046, "");
-_Static_assert(KC_SCROLL_LOCK == 0x0047, "");
-_Static_assert(KC_PAUSE == 0x0048, "");
-_Static_assert(KC_INSERT == 0x0049, "");
-_Static_assert(KC_HOME == 0x004A, "");
-_Static_assert(KC_PAGE_UP == 0x004B, "");
-_Static_assert(KC_DELETE == 0x004C, "");
-_Static_assert(KC_END == 0x004D, "");
-_Static_assert(KC_PAGE_DOWN == 0x004E, "");
-_Static_assert(KC_RIGHT == 0x004F, "");
-_Static_assert(KC_LEFT == 0x0050, "");
-_Static_assert(KC_DOWN == 0x0051, "");
-_Static_assert(KC_UP == 0x0052, "");
-_Static_assert(KC_NUM_LOCK == 0x0053, "");
-_Static_assert(KC_KP_SLASH == 0x0054, "");
-_Static_assert(KC_KP_ASTERISK == 0x0055, "");
-_Static_assert(KC_KP_MINUS == 0x0056, "");
-_Static_assert(KC_KP_PLUS == 0x0057, "");
-_Static_assert(KC_KP_ENTER == 0x0058, "");
-_Static_assert(KC_KP_1 == 0x0059, "");
-_Static_assert(KC_KP_2 == 0x005A, "");
-_Static_assert(KC_KP_3 == 0x005B, "");
-_Static_assert(KC_KP_4 == 0x005C, "");
-_Static_assert(KC_KP_5 == 0x005D, "");
-_Static_assert(KC_KP_6 == 0x005E, "");
-_Static_assert(KC_KP_7 == 0x005F, "");
-_Static_assert(KC_KP_8 == 0x0060, "");
-_Static_assert(KC_KP_9 == 0x0061, "");
-_Static_assert(KC_KP_0 == 0x0062, "");
-_Static_assert(KC_KP_DOT == 0x0063, "");
-_Static_assert(KC_NONUS_BACKSLASH == 0x0064, "");
-_Static_assert(KC_APPLICATION == 0x0065, "");
-_Static_assert(KC_KB_POWER == 0x0066, "");
-_Static_assert(KC_KP_EQUAL == 0x0067, "");
-_Static_assert(KC_F13 == 0x0068, "");
-_Static_assert(KC_F14 == 0x0069, "");
-_Static_assert(KC_F15 == 0x006A, "");
-_Static_assert(KC_F16 == 0x006B, "");
-_Static_assert(KC_F17 == 0x006C, "");
-_Static_assert(KC_F18 == 0x006D, "");
-_Static_assert(KC_F19 == 0x006E, "");
-_Static_assert(KC_F20 == 0x006F, "");
-_Static_assert(KC_F21 == 0x0070, "");
-_Static_assert(KC_F22 == 0x0071, "");
-_Static_assert(KC_F23 == 0x0072, "");
-_Static_assert(KC_F24 == 0x0073, "");
-_Static_assert(KC_EXECUTE == 0x0074, "");
-_Static_assert(KC_HELP == 0x0075, "");
-_Static_assert(KC_MENU == 0x0076, "");
-_Static_assert(KC_SELECT == 0x0077, "");
-_Static_assert(KC_STOP == 0x0078, "");
-_Static_assert(KC_AGAIN == 0x0079, "");
-_Static_assert(KC_UNDO == 0x007A, "");
-_Static_assert(KC_CUT == 0x007B, "");
-_Static_assert(KC_COPY == 0x007C, "");
-_Static_assert(KC_PASTE == 0x007D, "");
-_Static_assert(KC_FIND == 0x007E, "");
-
-_Static_assert(KC_LOCKING_CAPS_LOCK == 0x0082, "");
-_Static_assert(KC_LOCKING_NUM_LOCK == 0x0083, "");
-_Static_assert(KC_LOCKING_SCROLL_LOCK == 0x0084, "");
-_Static_assert(KC_KP_COMMA == 0x0085, "");
-_Static_assert(KC_KP_EQUAL_AS400 == 0x0086, "");
-_Static_assert(KC_INTERNATIONAL_1 == 0x0087, "");
-_Static_assert(KC_INTERNATIONAL_2 == 0x0088, "");
-_Static_assert(KC_INTERNATIONAL_3 == 0x0089, "");
-_Static_assert(KC_INTERNATIONAL_4 == 0x008A, "");
-_Static_assert(KC_INTERNATIONAL_5 == 0x008B, "");
-_Static_assert(KC_INTERNATIONAL_6 == 0x008C, "");
-_Static_assert(KC_INTERNATIONAL_7 == 0x008D, "");
-_Static_assert(KC_INTERNATIONAL_8 == 0x008E, "");
-_Static_assert(KC_INTERNATIONAL_9 == 0x008F, "");
-_Static_assert(KC_LANGUAGE_1 == 0x0090, "");
-_Static_assert(KC_LANGUAGE_2 == 0x0091, "");
-_Static_assert(KC_LANGUAGE_3 == 0x0092, "");
-_Static_assert(KC_LANGUAGE_4 == 0x0093, "");
-_Static_assert(KC_LANGUAGE_5 == 0x0094, "");
-_Static_assert(KC_LANGUAGE_6 == 0x0095, "");
-_Static_assert(KC_LANGUAGE_7 == 0x0096, "");
-_Static_assert(KC_LANGUAGE_8 == 0x0097, "");
-_Static_assert(KC_LANGUAGE_9 == 0x0098, "");
-_Static_assert(KC_ALTERNATE_ERASE == 0x0099, "");
-_Static_assert(KC_SYSTEM_REQUEST == 0x009A, "");
-_Static_assert(KC_CANCEL == 0x009B, "");
-_Static_assert(KC_CLEAR == 0x009C, "");
-_Static_assert(KC_PRIOR == 0x009D, "");
-
-_Static_assert(KC_OUT == 0x00A0, "");
-_Static_assert(KC_OPER == 0x00A1, "");
-_Static_assert(KC_CLEAR_AGAIN == 0x00A2, "");
-_Static_assert(KC_CRSEL == 0x00A3, "");
-_Static_assert(KC_EXSEL == 0x00A4, "");
-
-_Static_assert(KC_PWR == 0x00A5, "");
-_Static_assert(KC_SLEP == 0x00A6, "");
-_Static_assert(KC_WAKE == 0x00A7, "");
-_Static_assert(KC_MUTE == 0x00A8, "");
-_Static_assert(KC_VOLU == 0x00A9, "");
-_Static_assert(KC_VOLD == 0x00AA, "");
-_Static_assert(KC_MNXT == 0x00AB, "");
-_Static_assert(KC_MPRV == 0x00AC, "");
-_Static_assert(KC_MSTP == 0x00AD, "");
-_Static_assert(KC_MPLY == 0x00AE, "");
-_Static_assert(KC_MSEL == 0x00AF, "");
-_Static_assert(KC_EJCT == 0x00B0, "");
-_Static_assert(KC_MAIL == 0x00B1, "");
-_Static_assert(KC_CALC == 0x00B2, "");
-_Static_assert(KC_MYCM == 0x00B3, "");
-_Static_assert(KC_WSCH == 0x00B4, "");
-_Static_assert(KC_WHOM == 0x00B5, "");
-_Static_assert(KC_WBAK == 0x00B6, "");
-_Static_assert(KC_WFWD == 0x00B7, "");
-_Static_assert(KC_WSTP == 0x00B8, "");
-_Static_assert(KC_WREF == 0x00B9, "");
-_Static_assert(KC_WFAV == 0x00BA, "");
-_Static_assert(KC_MFFD == 0x00BB, "");
-_Static_assert(KC_MRWD == 0x00BC, "");
-_Static_assert(KC_BRIU == 0x00BD, "");
-_Static_assert(KC_BRID == 0x00BE, "");
-_Static_assert(KC_CPNL == 0x00BF, "");
-_Static_assert(KC_ASST == 0x00C0, "");
-
-_Static_assert(KC_LEFT_CTRL == 0x00E0, "");
-_Static_assert(KC_LEFT_SHIFT == 0x00E1, "");
-_Static_assert(KC_LEFT_ALT == 0x00E2, "");
-_Static_assert(KC_LEFT_GUI == 0x00E3, "");
-_Static_assert(KC_RIGHT_CTRL == 0x00E4, "");
-_Static_assert(KC_RIGHT_SHIFT == 0x00E5, "");
-_Static_assert(KC_RIGHT_ALT == 0x00E6, "");
-_Static_assert(KC_RIGHT_GUI == 0x00E7, "");
-
-_Static_assert(KC_MS_U == 0x00F0, "");
-_Static_assert(KC_MS_D == 0x00F1, "");
-_Static_assert(KC_MS_L == 0x00F2, "");
-_Static_assert(KC_MS_R == 0x00F3, "");
-_Static_assert(KC_BTN1 == 0x00F4, "");
-_Static_assert(KC_BTN2 == 0x00F5, "");
-_Static_assert(KC_BTN3 == 0x00F6, "");
-_Static_assert(KC_BTN4 == 0x00F7, "");
-_Static_assert(KC_BTN5 == 0x00F8, "");
-_Static_assert(KC_WH_U == 0x00F9, "");
-_Static_assert(KC_WH_D == 0x00FA, "");
-_Static_assert(KC_WH_L == 0x00FB, "");
-_Static_assert(KC_WH_R == 0x00FC, "");
-_Static_assert(KC_ACL0 == 0x00FD, "");
-_Static_assert(KC_ACL1 == 0x00FE, "");
-_Static_assert(KC_ACL2 == 0x00FF, "");
-
-_Static_assert(KC_EXLM == 0x021E, "");
-_Static_assert(KC_AT == 0x021F, "");
-_Static_assert(KC_HASH == 0x0220, "");
-_Static_assert(KC_DLR == 0x0221, "");
-_Static_assert(KC_PERC == 0x0222, "");
-_Static_assert(KC_CIRC == 0x0223, "");
-_Static_assert(KC_AMPR == 0x0224, "");
-_Static_assert(KC_ASTR == 0x0225, "");
-_Static_assert(KC_LPRN == 0x0226, "");
-_Static_assert(KC_RPRN == 0x0227, "");
-_Static_assert(KC_UNDS == 0x022D, "");
-_Static_assert(KC_PLUS == 0x022E, "");
-_Static_assert(KC_LCBR == 0x022F, "");
-_Static_assert(KC_RCBR == 0x0230, "");
-_Static_assert(KC_PIPE == 0x0231, "");
-_Static_assert(KC_COLN == 0x0233, "");
-_Static_assert(KC_DQUO == 0x0234, "");
-_Static_assert(KC_TILD == 0x0235, "");
-_Static_assert(KC_LT == 0x0236, "");
-_Static_assert(KC_GT == 0x0237, "");
-_Static_assert(KC_QUES == 0x0238, "");
-
-_Static_assert(QK_BOOTLOADER == 0x5C00, "");
-_Static_assert(QK_DEBUG_TOGGLE == 0x5C01, "");
-
-_Static_assert(MAGIC_TOGGLE_NKRO == 0x5C14, "");
-
-_Static_assert(QK_GRAVE_ESCAPE == 0x5C16, "");
-
-_Static_assert(AU_ON == 0x5C1D, "");
-_Static_assert(AU_OFF == 0x5C1E, "");
-_Static_assert(AU_TOG == 0x5C1F, "");
-
-_Static_assert(CLICKY_TOGGLE == 0x5C20, "");
-_Static_assert(CLICKY_ENABLE == 0x5C21, "");
-_Static_assert(CLICKY_DISABLE == 0x5C22, "");
-_Static_assert(CLICKY_UP == 0x5C23, "");
-_Static_assert(CLICKY_DOWN == 0x5C24, "");
-_Static_assert(CLICKY_RESET == 0x5C25, "");
-_Static_assert(MU_ON == 0x5C26, "");
-_Static_assert(MU_OFF == 0x5C27, "");
-_Static_assert(MU_TOG == 0x5C28, "");
-_Static_assert(MU_MOD == 0x5C29, "");
-
-_Static_assert(BL_ON == 0x5CBB, "");
-_Static_assert(BL_OFF == 0x5CBC, "");
-_Static_assert(BL_DEC == 0x5CBD, "");
-_Static_assert(BL_INC == 0x5CBE, "");
-_Static_assert(BL_TOGG == 0x5CBF, "");
-_Static_assert(BL_STEP == 0x5CC0, "");
-_Static_assert(BL_BRTG == 0x5CC1, "");
-_Static_assert(RGB_TOG == 0x5CC2, "");
-_Static_assert(RGB_MOD == 0x5CC3, "");
-_Static_assert(RGB_RMOD == 0x5CC4, "");
-_Static_assert(RGB_HUI == 0x5CC5, "");
-_Static_assert(RGB_HUD == 0x5CC6, "");
-_Static_assert(RGB_SAI == 0x5CC7, "");
-_Static_assert(RGB_SAD == 0x5CC8, "");
-_Static_assert(RGB_VAI == 0x5CC9, "");
-_Static_assert(RGB_VAD == 0x5CCA, "");
-_Static_assert(RGB_SPI == 0x5CCB, "");
-_Static_assert(RGB_SPD == 0x5CCC, "");
-_Static_assert(RGB_M_P == 0x5CCD, "");
-_Static_assert(RGB_M_B == 0x5CCE, "");
-_Static_assert(RGB_M_R == 0x5CCF, "");
-_Static_assert(RGB_M_SW == 0x5CD0, "");
-_Static_assert(RGB_M_SN == 0x5CD1, "");
-_Static_assert(RGB_M_K == 0x5CD2, "");
-_Static_assert(RGB_M_X == 0x5CD3, "");
-_Static_assert(RGB_M_G == 0x5CD4, "");
-_Static_assert(RGB_M_T == 0x5CD5, "");
-
-_Static_assert(SC_LSPO == 0x5CD7, "");
-_Static_assert(SC_RSPC == 0x5CD8, "");
-_Static_assert(SC_SENT == 0x5CD9, "");
-
-_Static_assert(SC_LCPO == 0x5CF3, "");
-_Static_assert(SC_RCPC == 0x5CF4, "");
-_Static_assert(SC_LAPO == 0x5CF5, "");
-_Static_assert(SC_RAPC == 0x5CF6, "");
-
-_Static_assert(FN_MO13 == 0x5F10, "");
-_Static_assert(FN_MO23 == 0x5F11, "");
-_Static_assert(MACRO00 == 0x5F12, "");
-_Static_assert(MACRO01 == 0x5F13, "");
-_Static_assert(MACRO02 == 0x5F14, "");
-_Static_assert(MACRO03 == 0x5F15, "");
-_Static_assert(MACRO04 == 0x5F16, "");
-_Static_assert(MACRO05 == 0x5F17, "");
-_Static_assert(MACRO06 == 0x5F18, "");
-_Static_assert(MACRO07 == 0x5F19, "");
-_Static_assert(MACRO08 == 0x5F1A, "");
-_Static_assert(MACRO09 == 0x5F1B, "");
-_Static_assert(MACRO10 == 0x5F1C, "");
-_Static_assert(MACRO11 == 0x5F1D, "");
-_Static_assert(MACRO12 == 0x5F1E, "");
-_Static_assert(MACRO13 == 0x5F1F, "");
-_Static_assert(MACRO14 == 0x5F20, "");
-_Static_assert(MACRO15 == 0x5F21, "");
-
-_Static_assert(USER00 == 0x5F80, "");
-_Static_assert(USER01 == 0x5F81, "");
-_Static_assert(USER02 == 0x5F82, "");
-_Static_assert(USER03 == 0x5F83, "");
-_Static_assert(USER04 == 0x5F84, "");
-_Static_assert(USER05 == 0x5F85, "");
-_Static_assert(USER06 == 0x5F86, "");
-_Static_assert(USER07 == 0x5F87, "");
-_Static_assert(USER08 == 0x5F88, "");
-_Static_assert(USER09 == 0x5F89, "");
-_Static_assert(USER10 == 0x5F8A, "");
-_Static_assert(USER11 == 0x5F8B, "");
-_Static_assert(USER12 == 0x5F8C, "");
-_Static_assert(USER13 == 0x5F8D, "");
-_Static_assert(USER14 == 0x5F8E, "");
-_Static_assert(USER15 == 0x5F8F, "");
-
-#endif