Browse Source

Initial DD keycode migration (#18643)

* Initial DD keycode migration

* Sort magic keycodes
Joel Challis 2 years ago
parent
commit
a69ab05dd6
30 changed files with 5472 additions and 1879 deletions
  1. 96 0
      data/constants/keycodes/keycodes_0.0.1.hjson
  2. 84 0
      data/constants/keycodes/keycodes_0.0.1_audio.hjson
  3. 1515 0
      data/constants/keycodes/keycodes_0.0.1_basic.hjson
  4. 228 0
      data/constants/keycodes/keycodes_0.0.1_joystick.hjson
  5. 154 0
      data/constants/keycodes/keycodes_0.0.1_lighting.hjson
  6. 133 0
      data/constants/keycodes/keycodes_0.0.1_macro.hjson
  7. 249 0
      data/constants/keycodes/keycodes_0.0.1_magic.hjson
  8. 670 0
      data/constants/keycodes/keycodes_0.0.1_midi.hjson
  9. 228 0
      data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson
  10. 464 0
      data/constants/keycodes/keycodes_0.0.1_quantum.hjson
  11. 40 0
      data/constants/keycodes/keycodes_0.0.1_sequencer.hjson
  12. 20 0
      data/constants/keycodes/keycodes_0.0.1_steno.hjson
  13. 32 0
      data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson
  14. 57 0
      data/schemas/keycodes.jsonschema
  15. 1 0
      lib/python/qmk/cli/__init__.py
  16. 14 0
      lib/python/qmk/cli/generate/api.py
  17. 88 0
      lib/python/qmk/cli/generate/keycodes.py
  18. 57 0
      lib/python/qmk/keycodes.py
  19. 3 0
      quantum/action_code.h
  20. 7 490
      quantum/keycode.h
  21. 1115 0
      quantum/keycodes.h
  22. 3 3
      quantum/keymap_common.c
  23. 3 3
      quantum/process_keycode/process_joystick.c
  24. 132 138
      quantum/process_keycode/process_magic.c
  25. 2 2
      quantum/process_keycode/process_programmable_button.c
  26. 55 848
      quantum/quantum_keycodes.h
  27. 19 42
      quantum/send_string/send_string_keycodes.h
  28. 0 1
      quantum/via.c
  29. 3 8
      quantum/via.h
  30. 0 344
      quantum/via_ensure_keycode.h

+ 96 - 0
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"
+        }
+    }
+}

+ 84 - 0
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"
+        }
+    }
+}

+ 1515 - 0
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"
+            ]
+        }
+    }
+}

+ 228 - 0
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"
+            ]
+        }
+    }
+}

+ 154 - 0
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"
+            ]
+        }
+    }
+}

+ 133 - 0
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"
+        }
+    }
+}

+ 249 - 0
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"
+            ]
+        }
+    }
+}

+ 670 - 0
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"
+        }
+    }
+}

+ 228 - 0
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"
+            ]
+        }
+    }
+}

+ 464 - 0
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"
+            ]
+        }
+    }
+}

+ 40 - 0
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"
+        }
+    }
+}

+ 20 - 0
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"
+        }
+    }
+}

+ 32 - 0
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"
+        }
+    }
+}

+ 57 - 0
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"
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 1 - 0
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',

+ 14 - 0
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)

+ 88 - 0
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)

+ 57 - 0
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

+ 3 - 0
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,

+ 7 - 490
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"

+ 1115 - 0
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)
+

+ 3 - 3
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

+ 3 - 3
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;
     }

+ 132 - 138
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;
         }
     }
 

+ 2 - 2
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 {

+ 55 - 848
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"

+ 19 - 42
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

+ 0 - 1
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)

+ 3 - 8
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,

+ 0 - 344
quantum/via_ensure_keycode.h

@@ -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