~ruther/qmk_firmware

a69ab05dd687cb9aa38e0c125e4f64956c7da6c7 — Joel Challis 2 years ago a070c4c
Initial DD keycode migration (#18643)

* Initial DD keycode migration

* Sort magic keycodes
A data/constants/keycodes/keycodes_0.0.1.hjson => data/constants/keycodes/keycodes_0.0.1.hjson +96 -0
@@ 0,0 1,96 @@
{
    "ranges": {
        "0x0000/0x00FF": {
            "define": "QK_BASIC"
        },
        "0x0100/0x1EFF": {
            "define": "QK_MODS"
        },
        "0x2000/0x1FFF": {
            "define": "QK_MOD_TAP"
        },
        "0x4000/0x0FFF": {
            "define": "QK_LAYER_TAP"
        },
        "0x5000/0x01FF": {
            "define": "QK_LAYER_MOD"
        },
        "0x5200/0x001F": {
            "define": "QK_TO"
        },
        "0x5220/0x001F": {
            "define": "QK_MOMENTARY"
        },
        "0x5240/0x001F": {
            "define": "QK_DEF_LAYER"
        },
        "0x5260/0x001F": {
            "define": "QK_TOGGLE_LAYER"
        },
        "0x5280/0x001F": {
            "define": "QK_ONE_SHOT_LAYER"
        },
        "0x52A0/0x001F": {
            "define": "QK_ONE_SHOT_MOD"
        },
        "0x52C0/0x001F": {
            "define": "QK_LAYER_TAP_TOGGLE"
        },
        // 0x52E0/0x001F - UNUSED
        // 0x5300/0x02FF - UNUSED
        "0x5600/0x00FF": {
            "define": "QK_SWAP_HANDS"
        },
        "0x5700/0x00FF": {
            "define": "QK_TAP_DANCE"
        },
        // 0x5800/0x17FF - UNUSED
        "0x7000/0x00FF": {
            "define": "QK_MAGIC"
        },
        "0x7100/0x00FF": {
            "define": "QK_MIDI"
        },
        "0x7200/0x01FF": {
            "define": "QK_SEQUENCER"
        },
        "0x7400/0x003F": {
            "define": "QK_JOYSTICK"
        },
        "0x7440/0x003F": {
            "define": "QK_PROGRAMMABLE_BUTTON"
        },
        "0x7480/0x003F": {
            "define": "QK_AUDIO"
        },
        "0x74C0/0x003F": {
            "define": "QK_STENO"
        },
        // 0x7500/0x01FF - UNUSED
        "0x7700/0x007F": {
            "define": "QK_MACRO"
        },
        // 0x7780/0x007F - UNUSED
        "0x7800/0x00FF": {
            "define": "QK_LIGHTING"
        },
        // 0x7900/0x02FF - UNUSED
        "0x7C00/0x01FF": {
            "define": "QK_QUANTUM"
        },
        "0x7E00/0x00FF": {
            "define": "QK_KB"
        },
        "0x7F00/0x00FF": {
            "define": "QK_USER"
        },
        "0x8000/0x7FFF": {
            "define": "QK_UNICODE"
        }
    },
    "keycodes": {
        "0x7E00": {
            "key": "SAFE_RANGE"
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_audio.hjson => data/constants/keycodes/keycodes_0.0.1_audio.hjson +84 -0
@@ 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"
        }
    }
}

A data/constants/keycodes/keycodes_0.0.1_basic.hjson => data/constants/keycodes/keycodes_0.0.1_basic.hjson +1515 -0
@@ 0,0 1,1515 @@
{
    "keycodes": {
        "0x0000": {
            "group": "internal",
            "key": "KC_NO",
            "label": "",
            "aliases": [
                "XXXXXXX"
            ]
        },
        "0x0001": {
            "group": "internal",
            "key": "KC_TRANSPARENT",
            "label": "",
            "aliases": [
                "_______",
                "KC_TRNS"
            ]
        },
        "0x0004": {
            "group": "basic",
            "key": "KC_A",
            "label": "A"
        },
        "0x0005": {
            "group": "basic",
            "key": "KC_B",
            "label": "B"
        },
        "0x0006": {
            "group": "basic",
            "key": "KC_C",
            "label": "C"
        },
        "0x0007": {
            "group": "basic",
            "key": "KC_D",
            "label": "D"
        },
        "0x0008": {
            "group": "basic",
            "key": "KC_E",
            "label": "E"
        },
        "0x0009": {
            "group": "basic",
            "key": "KC_F",
            "label": "F"
        },
        "0x000A": {
            "group": "basic",
            "key": "KC_G",
            "label": "G"
        },
        "0x000B": {
            "group": "basic",
            "key": "KC_H",
            "label": "H"
        },
        "0x000C": {
            "group": "basic",
            "key": "KC_I",
            "label": "I"
        },
        "0x000D": {
            "group": "basic",
            "key": "KC_J",
            "label": "J"
        },
        "0x000E": {
            "group": "basic",
            "key": "KC_K",
            "label": "K"
        },
        "0x000F": {
            "group": "basic",
            "key": "KC_L",
            "label": "L"
        },
        "0x0010": {
            "group": "basic",
            "key": "KC_M",
            "label": "M"
        },
        "0x0011": {
            "group": "basic",
            "key": "KC_N",
            "label": "N"
        },
        "0x0012": {
            "group": "basic",
            "key": "KC_O",
            "label": "O"
        },
        "0x0013": {
            "group": "basic",
            "key": "KC_P",
            "label": "P"
        },
        "0x0014": {
            "group": "basic",
            "key": "KC_Q",
            "label": "Q"
        },
        "0x0015": {
            "group": "basic",
            "key": "KC_R",
            "label": "R"
        },
        "0x0016": {
            "group": "basic",
            "key": "KC_S",
            "label": "S"
        },
        "0x0017": {
            "group": "basic",
            "key": "KC_T",
            "label": "T"
        },
        "0x0018": {
            "group": "basic",
            "key": "KC_U",
            "label": "U"
        },
        "0x0019": {
            "group": "basic",
            "key": "KC_V",
            "label": "V"
        },
        "0x001A": {
            "group": "basic",
            "key": "KC_W",
            "label": "W"
        },
        "0x001B": {
            "group": "basic",
            "key": "KC_X",
            "label": "X"
        },
        "0x001C": {
            "group": "basic",
            "key": "KC_Y",
            "label": "Y"
        },
        "0x001D": {
            "group": "basic",
            "key": "KC_Z",
            "label": "Z"
        },
        "0x001E": {
            "group": "basic",
            "key": "KC_1",
            "label": "1"
        },
        "0x001F": {
            "group": "basic",
            "key": "KC_2",
            "label": "2"
        },
        "0x0020": {
            "group": "basic",
            "key": "KC_3",
            "label": "3"
        },
        "0x0021": {
            "group": "basic",
            "key": "KC_4",
            "label": "4"
        },
        "0x0022": {
            "group": "basic",
            "key": "KC_5",
            "label": "5"
        },
        "0x0023": {
            "group": "basic",
            "key": "KC_6",
            "label": "6"
        },
        "0x0024": {
            "group": "basic",
            "key": "KC_7",
            "label": "7"
        },
        "0x0025": {
            "group": "basic",
            "key": "KC_8",
            "label": "8"
        },
        "0x0026": {
            "group": "basic",
            "key": "KC_9",
            "label": "9"
        },
        "0x0027": {
            "group": "basic",
            "key": "KC_0",
            "label": "0"
        },
        "0x0028": {
            "group": "basic",
            "key": "KC_ENTER",
            "label": "Enter",
            "aliases": [
                "KC_ENT"
            ]
        },
        "0x0029": {
            "group": "basic",
            "key": "KC_ESCAPE",
            "label": "Esc",
            "aliases": [
                "KC_ESC"
            ]
        },
        "0x002A": {
            "group": "basic",
            "key": "KC_BACKSPACE",
            "label": "Backspace",
            "aliases": [
                "KC_BSPC"
            ]
        },
        "0x002B": {
            "group": "basic",
            "key": "KC_TAB",
            "label": "Tab"
        },
        "0x002C": {
            "group": "basic",
            "key": "KC_SPACE",
            "label": "Spacebar",
            "aliases": [
                "KC_SPC"
            ]
        },
        "0x002D": {
            "group": "basic",
            "key": "KC_MINUS",
            "label": "-",
            "aliases": [
                "KC_MINS"
            ]
        },
        "0x002E": {
            "group": "basic",
            "key": "KC_EQUAL",
            "label": "=",
            "aliases": [
                "KC_EQL"
            ]
        },
        "0x002F": {
            "group": "basic",
            "key": "KC_LEFT_BRACKET",
            "label": "]",
            "aliases": [
                "KC_LBRC"
            ]
        },
        "0x0030": {
            "group": "basic",
            "key": "KC_RIGHT_BRACKET",
            "label": "[",
            "aliases": [
                "KC_RBRC"
            ]
        },
        "0x0031": {
            "group": "basic",
            "key": "KC_BACKSLASH",
            "label": "\\",
            "aliases": [
                "KC_BSLS"
            ]
        },
        "0x0032": {
            "group": "basic",
            "key": "KC_NONUS_HASH",
            "label": "#",
            "aliases": [
                "KC_NUHS"
            ]
        },
        "0x0033": {
            "group": "basic",
            "key": "KC_SEMICOLON",
            "label": ";",
            "aliases": [
                "KC_SCLN"
            ]
        },
        "0x0034": {
            "group": "basic",
            "key": "KC_QUOTE",
            "label": "'",
            "aliases": [
                "KC_QUOT"
            ]
        },
        "0x0035": {
            "group": "basic",
            "key": "KC_GRAVE",
            "label": "`",
            "aliases": [
                "KC_GRV"
            ]
        },
        "0x0036": {
            "group": "basic",
            "key": "KC_COMMA",
            "label": ",",
            "aliases": [
                "KC_COMM"
            ]
        },
        "0x0037": {
            "group": "basic",
            "key": "KC_DOT",
            "label": "."
        },
        "0x0038": {
            "group": "basic",
            "key": "KC_SLASH",
            "label": "/",
            "aliases": [
                "KC_SLSH"
            ]
        },
        "0x0039": {
            "group": "basic",
            "key": "KC_CAPS_LOCK",
            "label": "Caps Lock",
            "aliases": [
                "KC_CAPS"
            ]
        },
        "0x003A": {
            "group": "basic",
            "key": "KC_F1",
            "label": "F1"
        },
        "0x003B": {
            "group": "basic",
            "key": "KC_F2",
            "label": "F2"
        },
        "0x003C": {
            "group": "basic",
            "key": "KC_F3",
            "label": "F3"
        },
        "0x003D": {
            "group": "basic",
            "key": "KC_F4",
            "label": "F4"
        },
        "0x003E": {
            "group": "basic",
            "key": "KC_F5",
            "label": "F5"
        },
        "0x003F": {
            "group": "basic",
            "key": "KC_F6",
            "label": "F6"
        },
        "0x0040": {
            "group": "basic",
            "key": "KC_F7",
            "label": "F7"
        },
        "0x0041": {
            "group": "basic",
            "key": "KC_F8",
            "label": "F8"
        },
        "0x0042": {
            "group": "basic",
            "key": "KC_F9",
            "label": "F9"
        },
        "0x0043": {
            "group": "basic",
            "key": "KC_F10",
            "label": "F10"
        },
        "0x0044": {
            "group": "basic",
            "key": "KC_F11",
            "label": "F11"
        },
        "0x0045": {
            "group": "basic",
            "key": "KC_F12",
            "label": "F12"
        },
        "0x0046": {
            "group": "basic",
            "key": "KC_PRINT_SCREEN",
            "label": "Print Screen",
            "aliases": [
                "KC_PSCR"
            ]
        },
        "0x0047": {
            "group": "basic",
            "key": "KC_SCROLL_LOCK",
            "label": "Scroll Lock",
            "aliases": [
                "KC_SCRL",
                "KC_BRMD"
            ]
        },
        "0x0048": {
            "group": "basic",
            "key": "KC_PAUSE",
            "label": "Pause",
            "aliases": [
                "KC_PAUS",
                "KC_BRK",
                "KC_BRMU"
            ]
        },
        "0x0049": {
            "group": "basic",
            "key": "KC_INSERT",
            "label": "Insert",
            "aliases": [
                "KC_INS"
            ]
        },
        "0x004A": {
            "group": "basic",
            "key": "KC_HOME",
            "label": "Home"
        },
        "0x004B": {
            "group": "basic",
            "key": "KC_PAGE_UP",
            "label": "Page Up",
            "aliases": [
                "KC_PGUP"
            ]
        },
        "0x004C": {
            "group": "basic",
            "key": "KC_DELETE",
            "label": "Delete",
            "aliases": [
                "KC_DEL"
            ]
        },
        "0x004D": {
            "group": "basic",
            "key": "KC_END",
            "label": "End"
        },
        "0x004E": {
            "group": "basic",
            "key": "KC_PAGE_DOWN",
            "label": "Page Down",
            "aliases": [
                "KC_PGDN"
            ]
        },
        "0x004F": {
            "group": "basic",
            "key": "KC_RIGHT",
            "label": "Right",
            "aliases": [
                "KC_RGHT"
            ]
        },
        "0x0050": {
            "group": "basic",
            "key": "KC_LEFT",
            "label": "Left"
        },
        "0x0051": {
            "group": "basic",
            "key": "KC_DOWN",
            "label": "Down"
        },
        "0x0052": {
            "group": "basic",
            "key": "KC_UP",
            "label": "Up"
        },
        "0x0053": {
            "group": "basic",
            "key": "KC_NUM_LOCK",
            "label": "Num Lock",
            "aliases": [
                "KC_NUM"
            ]
        },
        "0x0054": {
            "group": "basic",
            "key": "KC_KP_SLASH",
            "label": "/",
            "aliases": [
                "KC_PSLS"
            ]
        },
        "0x0055": {
            "group": "basic",
            "key": "KC_KP_ASTERISK",
            "label": "*",
            "aliases": [
                "KC_PAST"
            ]
        },
        "0x0056": {
            "group": "basic",
            "key": "KC_KP_MINUS",
            "label": "-",
            "aliases": [
                "KC_PMNS"
            ]
        },
        "0x0057": {
            "group": "basic",
            "key": "KC_KP_PLUS",
            "label": "+",
            "aliases": [
                "KC_PPLS"
            ]
        },
        "0x0058": {
            "group": "basic",
            "key": "KC_KP_ENTER",
            "label": "Enter",
            "aliases": [
                "KC_PENT"
            ]
        },
        "0x0059": {
            "group": "basic",
            "key": "KC_KP_1",
            "label": "1",
            "aliases": [
                "KC_P1"
            ]
        },
        "0x005A": {
            "group": "basic",
            "key": "KC_KP_2",
            "label": "2",
            "aliases": [
                "KC_P2"
            ]
        },
        "0x005B": {
            "group": "basic",
            "key": "KC_KP_3",
            "label": "3",
            "aliases": [
                "KC_P3"
            ]
        },
        "0x005C": {
            "group": "basic",
            "key": "KC_KP_4",
            "label": "4",
            "aliases": [
                "KC_P4"
            ]
        },
        "0x005D": {
            "group": "basic",
            "key": "KC_KP_5",
            "label": "5",
            "aliases": [
                "KC_P5"
            ]
        },
        "0x005E": {
            "group": "basic",
            "key": "KC_KP_6",
            "label": "6",
            "aliases": [
                "KC_P6"
            ]
        },
        "0x005F": {
            "group": "basic",
            "key": "KC_KP_7",
            "label": "7",
            "aliases": [
                "KC_P7"
            ]
        },
        "0x0060": {
            "group": "basic",
            "key": "KC_KP_8",
            "label": "8",
            "aliases": [
                "KC_P8"
            ]
        },
        "0x0061": {
            "group": "basic",
            "key": "KC_KP_9",
            "label": "9",
            "aliases": [
                "KC_P9"
            ]
        },
        "0x0062": {
            "group": "basic",
            "key": "KC_KP_0",
            "label": "0",
            "aliases": [
                "KC_P0"
            ]
        },
        "0x0063": {
            "group": "basic",
            "key": "KC_KP_DOT",
            "label": ".",
            "aliases": [
                "KC_PDOT"
            ]
        },
        "0x0064": {
            "group": "basic",
            "key": "KC_NONUS_BACKSLASH",
            "label": "\\",
            "aliases": [
                "KC_NUBS"
            ]
        },
        "0x0065": {
            "group": "basic",
            "key": "KC_APPLICATION",
            "label": "Application",
            "aliases": [
                "KC_APP"
            ]
        },
        "0x0066": {
            "group": "basic",
            "key": "KC_KB_POWER",
            "label": "Application"
        },
        "0x0067": {
            "group": "basic",
            "key": "KC_KP_EQUAL",
            "label": "=",
            "aliases": [
                "KC_PEQL"
            ]
        },
        "0x0068": {
            "group": "basic",
            "key": "KC_F13",
            "label": "F13"
        },
        "0x0069": {
            "group": "basic",
            "key": "KC_F14",
            "label": "F14"
        },
        "0x006A": {
            "group": "basic",
            "key": "KC_F15",
            "label": "F15"
        },
        "0x006B": {
            "group": "basic",
            "key": "KC_F16",
            "label": "F16"
        },
        "0x006C": {
            "group": "basic",
            "key": "KC_F17",
            "label": "F17"
        },
        "0x006D": {
            "group": "basic",
            "key": "KC_F18",
            "label": "F18"
        },
        "0x006E": {
            "group": "basic",
            "key": "KC_F19",
            "label": "F19"
        },
        "0x006F": {
            "group": "basic",
            "key": "KC_F20",
            "label": "F20"
        },
        "0x0070": {
            "group": "basic",
            "key": "KC_F21",
            "label": "F21"
        },
        "0x0071": {
            "group": "basic",
            "key": "KC_F22",
            "label": "F22"
        },
        "0x0072": {
            "group": "basic",
            "key": "KC_F23",
            "label": "F23"
        },
        "0x0073": {
            "group": "basic",
            "key": "KC_F24",
            "label": "F24"
        },
        "0x0074": {
            "group": "basic",
            "key": "KC_EXECUTE",
            "label": "Execute",
            "aliases": [
                "KC_EXEC"
            ]
        },
        "0x0075": {
            "group": "basic",
            "key": "KC_HELP",
            "label": "Help"
        },
        "0x0076": {
            "group": "basic",
            "key": "KC_MENU",
            "label": "Menu"
        },
        "0x0077": {
            "group": "basic",
            "key": "KC_SELECT",
            "label": "Select",
            "aliases": [
                "KC_SLCT"
            ]
        },
        "0x0078": {
            "group": "basic",
            "key": "KC_STOP",
            "label": "Stop"
        },
        "0x0079": {
            "group": "basic",
            "key": "KC_AGAIN",
            "label": "Again",
            "aliases": [
                "KC_AGIN"
            ]
        },
        "0x007A": {
            "group": "basic",
            "key": "KC_UNDO",
            "label": "Undo"
        },
        "0x007B": {
            "group": "basic",
            "key": "KC_CUT",
            "label": "Cut"
        },
        "0x007C": {
            "group": "basic",
            "key": "KC_COPY",
            "label": "Copy"
        },
        "0x007D": {
            "group": "basic",
            "key": "KC_PASTE",
            "label": "Paste",
            "aliases": [
                "KC_PSTE"
            ]
        },
        "0x007E": {
            "group": "basic",
            "key": "KC_FIND",
            "label": "Find"
        },
        "0x007F": {
            "group": "basic",
            "key": "KC_KB_MUTE",
            "label": "Mute"
        },
        "0x0080": {
            "group": "basic",
            "key": "KC_KB_VOLUME_UP",
            "label": "Volume Up"
        },
        "0x0081": {
            "group": "basic",
            "key": "KC_KB_VOLUME_DOWN",
            "label": "Volume Down"
        },
        "0x0082": {
            "group": "basic",
            "key": "KC_LOCKING_CAPS_LOCK",
            "label": "Caps Lock",
            "aliases": [
                "KC_LCAP"
            ]
        },
        "0x0083": {
            "group": "basic",
            "key": "KC_LOCKING_NUM_LOCK",
            "label": "Num Lock",
            "aliases": [
                "KC_LNUM"
            ]
        },
        "0x0084": {
            "group": "basic",
            "key": "KC_LOCKING_SCROLL_LOCK",
            "label": "Scroll Lock",
            "aliases": [
                "KC_LSCR"
            ]
        },
        "0x0085": {
            "group": "basic",
            "key": "KC_KP_COMMA",
            "label": ",",
            "aliases": [
                "KC_PCMM"
            ]
        },
        "0x0086": {
            "group": "basic",
            "key": "KC_KP_EQUAL_AS400",
            "label": "="
        },
        "0x0087": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_1",
            "label": "INT 1",
            "aliases": [
                "KC_INT1"
            ]
        },
        "0x0088": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_2",
            "label": "INT 2",
            "aliases": [
                "KC_INT2"
            ]
        },
        "0x0089": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_3",
            "label": "INT 3",
            "aliases": [
                "KC_INT3"
            ]
        },
        "0x008A": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_4",
            "label": "INT 4",
            "aliases": [
                "KC_INT4"
            ]
        },
        "0x008B": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_5",
            "label": "INT 5",
            "aliases": [
                "KC_INT5"
            ]
        },
        "0x008C": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_6",
            "label": "INT 6",
            "aliases": [
                "KC_INT6"
            ]
        },
        "0x008D": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_7",
            "label": "INT 7",
            "aliases": [
                "KC_INT7"
            ]
        },
        "0x008E": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_8",
            "label": "INT 8",
            "aliases": [
                "KC_INT8"
            ]
        },
        "0x008F": {
            "group": "basic",
            "key": "KC_INTERNATIONAL_9",
            "label": "INT 9",
            "aliases": [
                "KC_INT9"
            ]
        },
        "0x0090": {
            "group": "basic",
            "key": "KC_LANGUAGE_1",
            "label": "LANG 1",
            "aliases": [
                "KC_LNG1"
            ]
        },
        "0x0091": {
            "group": "basic",
            "key": "KC_LANGUAGE_2",
            "label": "LANG 2",
            "aliases": [
                "KC_LNG2"
            ]
        },
        "0x0092": {
            "group": "basic",
            "key": "KC_LANGUAGE_3",
            "label": "LANG 3",
            "aliases": [
                "KC_LNG3"
            ]
        },
        "0x0093": {
            "group": "basic",
            "key": "KC_LANGUAGE_4",
            "label": "LANG 4",
            "aliases": [
                "KC_LNG4"
            ]
        },
        "0x0094": {
            "group": "basic",
            "key": "KC_LANGUAGE_5",
            "label": "LANG 5",
            "aliases": [
                "KC_LNG5"
            ]
        },
        "0x0095": {
            "group": "basic",
            "key": "KC_LANGUAGE_6",
            "label": "LANG 6",
            "aliases": [
                "KC_LNG6"
            ]
        },
        "0x0096": {
            "group": "basic",
            "key": "KC_LANGUAGE_7",
            "label": "LANG 7",
            "aliases": [
                "KC_LNG7"
            ]
        },
        "0x0097": {
            "group": "basic",
            "key": "KC_LANGUAGE_8",
            "label": "LANG 8",
            "aliases": [
                "KC_LNG8"
            ]
        },
        "0x0098": {
            "group": "basic",
            "key": "KC_LANGUAGE_9",
            "label": "LANG 9",
            "aliases": [
                "KC_LNG9"
            ]
        },
        "0x0099": {
            "group": "basic",
            "key": "KC_ALTERNATE_ERASE",
            "label": "Alternate Erase",
            "aliases": [
                "KC_ERAS"
            ]
        },
        "0x009A": {
            "group": "basic",
            "key": "KC_SYSTEM_REQUEST",
            "label": "SysReq/Attention",
            "aliases": [
                "KC_SYRQ"
            ]
        },
        "0x009B": {
            "group": "basic",
            "key": "KC_CANCEL",
            "label": "Cancel",
            "aliases": [
                "KC_CNCL"
            ]
        },
        "0x009C": {
            "group": "basic",
            "key": "KC_CLEAR",
            "label": "Clear",
            "aliases": [
                "KC_CLR"
            ]
        },
        "0x009D": {
            "group": "basic",
            "key": "KC_PRIOR",
            "label": "Prior",
            "aliases": [
                "KC_PRIR"
            ]
        },
        "0x009E": {
            "group": "basic",
            "key": "KC_RETURN",
            "label": "Return",
            "aliases": [
                "KC_RETN"
            ]
        },
        "0x009F": {
            "group": "basic",
            "key": "KC_SEPARATOR",
            "label": "Separator",
            "aliases": [
                "KC_SEPR"
            ]
        },
        "0x00A0": {
            "group": "basic",
            "key": "KC_OUT",
            "label": "Out"
        },
        "0x00A1": {
            "group": "basic",
            "key": "KC_OPER",
            "label": "Oper"
        },
        "0x00A2": {
            "group": "basic",
            "key": "KC_CLEAR_AGAIN",
            "label": "Clear/Again",
            "aliases": [
                "KC_CLAG"
            ]
        },
        "0x00A3": {
            "group": "basic",
            "key": "KC_CRSEL",
            "label": "CrSel/Props",
            "aliases": [
                "KC_CRSL"
            ]
        },
        "0x00A4": {
            "group": "basic",
            "key": "KC_EXSEL",
            "label": "ExSel",
            "aliases": [
                "KC_EXSL"
            ]
        },
        "0x00A5": {
            "group": "system",
            "key": "KC_SYSTEM_POWER",
            "label": "System Power Down",
            "aliases": [
                "KC_PWR"
            ]
        },
        "0x00A6": {
            "group": "system",
            "key": "KC_SYSTEM_SLEEP",
            "label": "System Sleep",
            "aliases": [
                "KC_SLEP"
            ]
        },
        "0x00A7": {
            "group": "system",
            "key": "KC_SYSTEM_WAKE",
            "label": "System Wake",
            "aliases": [
                "KC_WAKE"
            ]
        },
        "0x00A8": {
            "group": "media",
            "key": "KC_AUDIO_MUTE",
            "label": "Mute",
            "aliases": [
                "KC_MUTE"
            ]
        },
        "0x00A9": {
            "group": "media",
            "key": "KC_AUDIO_VOL_UP",
            "label": "Volume Up",
            "aliases": [
                "KC_VOLU"
            ]
        },
        "0x00AA": {
            "group": "media",
            "key": "KC_AUDIO_VOL_DOWN",
            "label": "Volume Down",
            "aliases": [
                "KC_VOLD"
            ]
        },
        "0x00AB": {
            "group": "media",
            "key": "KC_MEDIA_NEXT_TRACK",
            "label": "Next",
            "aliases": [
                "KC_MNXT"
            ]
        },
        "0x00AC": {
            "group": "media",
            "key": "KC_MEDIA_PREV_TRACK",
            "label": "Previous",
            "aliases": [
                "KC_MPRV"
            ]
        },
        "0x00AD": {
            "group": "media",
            "key": "KC_MEDIA_STOP",
            "label": "Stop",
            "aliases": [
                "KC_MSTP"
            ]
        },
        "0x00AE": {
            "group": "media",
            "key": "KC_MEDIA_PLAY_PAUSE",
            "label": "Mute",
            "aliases": [
                "KC_MPLY"
            ]
        },
        "0x00AF": {
            "group": "media",
            "key": "KC_MEDIA_SELECT",
            "label": "Launch Player",
            "aliases": [
                "KC_MSEL"
            ]
        },
        "0x00B0": {
            "group": "media",
            "key": "KC_MEDIA_EJECT",
            "label": "Eject",
            "aliases": [
                "KC_EJCT"
            ]
        },
        "0x00B1": {
            "group": "media",
            "key": "KC_MAIL",
            "label": "Launch Mail"
        },
        "0x00B2": {
            "group": "media",
            "key": "KC_CALCULATOR",
            "label": "Launch Calculator",
            "aliases": [
                "KC_CALC"
            ]
        },
        "0x00B3": {
            "group": "media",
            "key": "KC_MY_COMPUTER",
            "label": "Launch My Computer",
            "aliases": [
                "KC_MYCM"
            ]
        },
        "0x00B4": {
            "group": "media",
            "key": "KC_WWW_SEARCH",
            "label": "Browser Search",
            "aliases": [
                "KC_WSCH"
            ]
        },
        "0x00B5": {
            "group": "media",
            "key": "KC_WWW_HOME",
            "label": "Browser Home",
            "aliases": [
                "KC_WHOM"
            ]
        },
        "0x00B6": {
            "group": "media",
            "key": "KC_WWW_BACK",
            "label": "Browser Back",
            "aliases": [
                "KC_WBAK"
            ]
        },
        "0x00B7": {
            "group": "media",
            "key": "KC_WWW_FORWARD",
            "label": "Browser Forward",
            "aliases": [
                "KC_WFWD"
            ]
        },
        "0x00B8": {
            "group": "media",
            "key": "KC_WWW_STOP",
            "label": "Browser Stop",
            "aliases": [
                "KC_WSTP"
            ]
        },
        "0x00B9": {
            "group": "media",
            "key": "KC_WWW_REFRESH",
            "label": "Browser Refresh",
            "aliases": [
                "KC_WREF"
            ]
        },
        "0x00BA": {
            "group": "media",
            "key": "KC_WWW_FAVORITES",
            "label": "Browser Favorites",
            "aliases": [
                "KC_WFAV"
            ]
        },
        "0x00BB": {
            "group": "media",
            "key": "KC_MEDIA_FAST_FORWARD",
            "label": "Next Track",
            "aliases": [
                "KC_MFFD"
            ]
        },
        "0x00BC": {
            "group": "media",
            "key": "KC_MEDIA_REWIND",
            "label": "Previous Track",
            "aliases": [
                "KC_MRWD"
            ]
        },
        "0x00BD": {
            "group": "media",
            "key": "KC_BRIGHTNESS_UP",
            "label": "Brightness Up",
            "aliases": [
                "KC_BRIU"
            ]
        },
        "0x00BE": {
            "group": "media",
            "key": "KC_BRIGHTNESS_DOWN",
            "label": "Brightness Down",
            "aliases": [
                "KC_BRID"
            ]
        },
        "0x00BF": {
            "group": "media",
            "key": "KC_CONTROL_PANEL",
            "label": "Open Control Panel",
            "aliases": [
                "KC_CPNL"
            ]
        },
        "0x00C0": {
            "group": "media",
            "key": "KC_ASSISTANT",
            "label": "Launch Assistant",
            "aliases": [
                "KC_ASST"
            ]
        },

        "0x00CD": {
            "group": "mouse",
            "key": "KC_MS_UP",
            "label": "Move cursor up",
            "aliases": [
                "KC_MS_U"
            ]
        },
        "0x00CE": {
            "group": "mouse",
            "key": "KC_MS_DOWN",
            "label": "Move cursor down",
            "aliases": [
                "KC_MS_D"
            ]
        },
        "0x00CF": {
            "group": "mouse",
            "key": "KC_MS_LEFT",
            "label": "Move cursor left",
            "aliases": [
                "KC_MS_L"
            ]
        },
        "0x00D0": {
            "group": "mouse",
            "key": "KC_MS_RIGHT",
            "label": "Move cursor right",
            "aliases": [
                "KC_MS_R"
            ]
        },
        "0x00D1": {
            "group": "mouse",
            "key": "KC_MS_BTN1",
            "label": "Press button 1",
            "aliases": [
                "KC_BTN1"
            ]
        },
        "0x00D2": {
            "group": "mouse",
            "key": "KC_MS_BTN2",
            "label": "Press button 2",
            "aliases": [
                "KC_BTN2"
            ]
        },
        "0x00D3": {
            "group": "mouse",
            "key": "KC_MS_BTN3",
            "label": "Press button 3",
            "aliases": [
                "KC_BTN3"
            ]
        },
        "0x00D4": {
            "group": "mouse",
            "key": "KC_MS_BTN4",
            "label": "Press button 4",
            "aliases": [
                "KC_BTN4"
            ]
        },
        "0x00D5": {
            "group": "mouse",
            "key": "KC_MS_BTN5",
            "label": "Press button 5",
            "aliases": [
                "KC_BTN5"
            ]
        },
        "0x00D6": {
            "group": "mouse",
            "key": "KC_MS_BTN6",
            "label": "Press button 6",
            "aliases": [
                "KC_BTN6"
            ]
        },
        "0x00D7": {
            "group": "mouse",
            "key": "KC_MS_BTN7",
            "label": "Press button 7",
            "aliases": [
                "KC_BTN7"
            ]
        },
        "0x00D8": {
            "group": "mouse",
            "key": "KC_MS_BTN8",
            "label": "Press button 8",
            "aliases": [
                "KC_BTN8"
            ]
        },
        "0x00D9": {
            "group": "mouse",
            "key": "KC_MS_WH_UP",
            "label": "Move wheel up",
            "aliases": [
                "KC_WH_U"
            ]
        },
        "0x00DA": {
            "group": "mouse",
            "key": "KC_MS_WH_DOWN",
            "label": "Move wheel down",
            "aliases": [
                "KC_WH_D"
            ]
        },
        "0x00DB": {
            "group": "mouse",
            "key": "KC_MS_WH_LEFT",
            "label": "Move wheel left",
            "aliases": [
                "KC_WH_L"
            ]
        },
        "0x00DC": {
            "group": "mouse",
            "key": "KC_MS_WH_RIGHT",
            "label": "Move wheel right",
            "aliases": [
                "KC_WH_R"
            ]
        },
        "0x00DD": {
            "group": "mouse",
            "key": "KC_MS_ACCEL0",
            "label": "Set speed to 0",
            "aliases": [
                "KC_ACL0"
            ]
        },
        "0x00DE": {
            "group": "mouse",
            "key": "KC_MS_ACCEL1",
            "label": "Set speed to 1",
            "aliases": [
                "KC_ACL1"
            ]
        },
        "0x00DF": {
            "group": "mouse",
            "key": "KC_MS_ACCEL2",
            "label": "Set speed to 2",
            "aliases": [
                "KC_ACL2"
            ]
        },

        "0x00E0": {
            "group": "modifiers",
            "key": "KC_LEFT_CTRL",
            "label": "Left Control",
            "aliases": [
                "KC_LCTL"
            ]
        },
        "0x00E1": {
            "group": "modifiers",
            "key": "KC_LEFT_SHIFT",
            "label": "Left Shift",
            "aliases": [
                "KC_LSFT"
            ]
        },
        "0x00E2": {
            "group": "modifiers",
            "key": "KC_LEFT_ALT",
            "label": "Left Alt",
            "aliases": [
                "KC_LALT",
                "KC_LOPT"
            ]
        },
        "0x00E3": {
            "group": "modifiers",
            "key": "KC_LEFT_GUI",
            "label": "Left GUI",
            "aliases": [
                "KC_LGUI",
                "KC_LCMD",
                "KC_LWIN"
            ]
        },
        "0x00E4": {
            "group": "modifiers",
            "key": "KC_RIGHT_CTRL",
            "label": "Right Control",
            "aliases": [
                "KC_RCTL"
            ]
        },
        "0x00E5": {
            "group": "modifiers",
            "key": "KC_RIGHT_SHIFT",
            "label": "Right Shift",
            "aliases": [
                "KC_RSFT"
            ]
        },
        "0x00E6": {
            "group": "modifiers",
            "key": "KC_RIGHT_ALT",
            "label": "Right Alt",
            "aliases": [
                "KC_RALT",
                "KC_ROPT",
                "KC_ALGR"
            ]
        },
        "0x00E7": {
            "group": "modifiers",
            "key": "KC_RIGHT_GUI",
            "label": "Right GUI",
            "aliases": [
                "KC_RGUI",
                "KC_RCMD",
                "KC_RWIN"
            ]
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_joystick.hjson => data/constants/keycodes/keycodes_0.0.1_joystick.hjson +228 -0
@@ 0,0 1,228 @@
{
    "keycodes": {
        "0x7400": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_0",
            "aliases": [
                "JS_0"
            ]
        },
        "0x7401": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_1",
            "aliases": [
                "JS_1"
            ]
        },
        "0x7402": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_2",
            "aliases": [
                "JS_2"
            ]
        },
        "0x7403": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_3",
            "aliases": [
                "JS_3"
            ]
        },
        "0x7404": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_4",
            "aliases": [
                "JS_4"
            ]
        },
        "0x7405": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_5",
            "aliases": [
                "JS_5"
            ]
        },
        "0x7406": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_6",
            "aliases": [
                "JS_6"
            ]
        },
        "0x7407": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_7",
            "aliases": [
                "JS_7"
            ]
        },
        "0x7408": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_8",
            "aliases": [
                "JS_8"
            ]
        },
        "0x7409": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_9",
            "aliases": [
                "JS_9"
            ]
        },
        "0x740A": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_10",
            "aliases": [
                "JS_10"
            ]
        },
        "0x740B": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_11",
            "aliases": [
                "JS_11"
            ]
        },
        "0x740C": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_12",
            "aliases": [
                "JS_12"
            ]
        },
        "0x740D": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_13",
            "aliases": [
                "JS_13"
            ]
        },
        "0x740E": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_14",
            "aliases": [
                "JS_14"
            ]
        },
        "0x740F": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_15",
            "aliases": [
                "JS_15"
            ]
        },
        "0x7410": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_16",
            "aliases": [
                "JS_16"
            ]
        },
        "0x7411": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_17",
            "aliases": [
                "JS_17"
            ]
        },
        "0x7412": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_18",
            "aliases": [
                "JS_18"
            ]
        },
        "0x7413": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_19",
            "aliases": [
                "JS_19"
            ]
        },
        "0x7414": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_20",
            "aliases": [
                "JS_20"
            ]
        },
        "0x7415": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_21",
            "aliases": [
                "JS_21"
            ]
        },
        "0x7416": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_22",
            "aliases": [
                "JS_22"
            ]
        },
        "0x7417": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_23",
            "aliases": [
                "JS_23"
            ]
        },
        "0x7418": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_24",
            "aliases": [
                "JS_24"
            ]
        },
        "0x7419": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_25",
            "aliases": [
                "JS_25"
            ]
        },
        "0x741A": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_26",
            "aliases": [
                "JS_26"
            ]
        },
        "0x741B": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_27",
            "aliases": [
                "JS_27"
            ]
        },
        "0x741C": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_28",
            "aliases": [
                "JS_28"
            ]
        },
        "0x741D": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_29",
            "aliases": [
                "JS_29"
            ]
        },
        "0x741E": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_30",
            "aliases": [
                "JS_30"
            ]
        },
        "0x741F": {
            "group": "joystick",
            "key": "QK_JOYSTICK_BUTTON_31",
            "aliases": [
                "JS_31"
            ]
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_lighting.hjson => data/constants/keycodes/keycodes_0.0.1_lighting.hjson +154 -0
@@ 0,0 1,154 @@
{
    "keycodes": {
        "0x7800": {
            "group": "backlight",
            "key": "BL_ON"
        },
        "0x7801": {
            "group": "backlight",
            "key": "BL_OFF"
        },
        "0x7802": {
            "group": "backlight",
            "key": "BL_DEC"
        },
        "0x7803": {
            "group": "backlight",
            "key": "BL_INC"
        },
        "0x7804": {
            "group": "backlight",
            "key": "BL_TOGG"
        },
        "0x7805": {
            "group": "backlight",
            "key": "BL_STEP"
        },
        "0x7806": {
            "group": "backlight",
            "key": "BL_BRTG"
        },

        "0x7820": {
            "group": "rgb",
            "key": "RGB_TOG"
        },
        "0x7821": {
            "group": "rgb",
            "key": "RGB_MODE_FORWARD",
            "aliases": [
                "RGB_MOD"
            ]
        },
        "0x7822": {
            "group": "rgb",
            "key": "RGB_MODE_REVERSE",
            "aliases": [
                "RGB_RMOD"
            ]
        },
        "0x7823": {
            "group": "rgb",
            "key": "RGB_HUI"
        },
        "0x7824": {
            "group": "rgb",
            "key": "RGB_HUD"
        },
        "0x7825": {
            "group": "rgb",
            "key": "RGB_SAI"
        },
        "0x7826": {
            "group": "rgb",
            "key": "RGB_SAD"
        },
        "0x7827": {
            "group": "rgb",
            "key": "RGB_VAI"
        },
        "0x7828": {
            "group": "rgb",
            "key": "RGB_VAD"
        },
        "0x7829": {
            "group": "rgb",
            "key": "RGB_SPI"
        },
        "0x782A": {
            "group": "rgb",
            "key": "RGB_SPD"
        },

        "0x782B": {
            "group": "rgb",
            "key": "RGB_MODE_PLAIN",
            "aliases": [
                "RGB_M_P"
            ]
        },
        "0x782C": {
            "group": "rgb",
            "key": "RGB_MODE_BREATHE",
            "aliases": [
                "RGB_M_B"
            ]
        },
        "0x782D": {
            "group": "rgb",
            "key": "RGB_MODE_RAINBOW",
            "aliases": [
                "RGB_M_R"
            ]
        },
        "0x782E": {
            "group": "rgb",
            "key": "RGB_MODE_SWIRL",
            "aliases": [
                "RGB_M_SW"
            ]
        },
        "0x782F": {
            "group": "rgb",
            "key": "RGB_MODE_SNAKE",
            "aliases": [
                "RGB_M_SN"
            ]
        },
        "0x7830": {
            "group": "rgb",
            "key": "RGB_MODE_KNIGHT",
            "aliases": [
                "RGB_M_K"
            ]
        },
        "0x7831": {
            "group": "rgb",
            "key": "RGB_MODE_XMAS",
            "aliases": [
                "RGB_M_X"
            ]
        },
        "0x7832": {
            "group": "rgb",
            "key": "RGB_MODE_GRADIENT",
            "aliases": [
                "RGB_M_G"
            ]
        },
        "0x7833": {
            "group": "rgb",
            "key": "RGB_MODE_RGBTEST",
            "aliases": [
                "RGB_M_T"
            ]
        },
        "0x7834": {
            "group": "rgb",
            "key": "RGB_MODE_TWINKLE",
            "aliases": [
                "RGB_M_TW"
            ]
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_macro.hjson => data/constants/keycodes/keycodes_0.0.1_macro.hjson +133 -0
@@ 0,0 1,133 @@
{
    "keycodes": {

        "0x7700": {
            "group": "macro",
            "key": "MACRO_0"
        },
        "0x7701": {
            "group": "macro",
            "key": "MACRO_1"
        },
        "0x7702": {
            "group": "macro",
            "key": "MACRO_2"
        },
        "0x7703": {
            "group": "macro",
            "key": "MACRO_3"
        },
        "0x7704": {
            "group": "macro",
            "key": "MACRO_4"
        },
        "0x7705": {
            "group": "macro",
            "key": "MACRO_5"
        },
        "0x7706": {
            "group": "macro",
            "key": "MACRO_6"
        },
        "0x7707": {
            "group": "macro",
            "key": "MACRO_7"
        },
        "0x7708": {
            "group": "macro",
            "key": "MACRO_8"
        },
        "0x7709": {
            "group": "macro",
            "key": "MACRO_9"
        },
        "0x770A": {
            "group": "macro",
            "key": "MACRO_10"
        },
        "0x770B": {
            "group": "macro",
            "key": "MACRO_11"
        },
        "0x770C": {
            "group": "macro",
            "key": "MACRO_12"
        },
        "0x770D": {
            "group": "macro",
            "key": "MACRO_13"
        },
        "0x770E": {
            "group": "macro",
            "key": "MACRO_14"
        },
        "0x770F": {
            "group": "macro",
            "key": "MACRO_15"
        },
        "0x7710": {
            "group": "macro",
            "key": "MACRO_16"
        },
        "0x7711": {
            "group": "macro",
            "key": "MACRO_17"
        },
        "0x7712": {
            "group": "macro",
            "key": "MACRO_18"
        },
        "0x7713": {
            "group": "macro",
            "key": "MACRO_19"
        },
        "0x7714": {
            "group": "macro",
            "key": "MACRO_20"
        },
        "0x7715": {
            "group": "macro",
            "key": "MACRO_21"
        },
        "0x7716": {
            "group": "macro",
            "key": "MACRO_22"
        },
        "0x7717": {
            "group": "macro",
            "key": "MACRO_23"
        },
        "0x7718": {
            "group": "macro",
            "key": "MACRO_24"
        },
        "0x7719": {
            "group": "macro",
            "key": "MACRO_25"
        },
        "0x771A": {
            "group": "macro",
            "key": "MACRO_26"
        },
        "0x771B": {
            "group": "macro",
            "key": "MACRO_27"
        },
        "0x771C": {
            "group": "macro",
            "key": "MACRO_28"
        },
        "0x771D": {
            "group": "macro",
            "key": "MACRO_29"
        },
        "0x771E": {
            "group": "macro",
            "key": "MACRO_30"
        },
        "0x771F": {
            "group": "macro",
            "key": "MACRO_31"
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_magic.hjson => data/constants/keycodes/keycodes_0.0.1_magic.hjson +249 -0
@@ 0,0 1,249 @@
{
    "keycodes": {
        "0x7000": {
            "group": "magic",
            "key": "MAGIC_SWAP_CONTROL_CAPSLOCK",
            "aliases": [
                "CL_SWAP"
            ]
        },
        "0x7001": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_CONTROL_CAPSLOCK",
            "aliases": [
                "CL_NORM"
            ]
        },
        "0x7002": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_CONTROL_CAPSLOCK",
            "aliases": [
                "CL_TOGG"
            ]
        },
        "0x7003": {
            "group": "magic",
            "key": "MAGIC_UNCAPSLOCK_TO_CONTROL",
            "aliases": [
                "CL_CAPS"
            ]
        },
        "0x7004": {
            "group": "magic",
            "key": "MAGIC_CAPSLOCK_TO_CONTROL",
            "aliases": [
                "CL_CTRL"
            ]
        },
        "0x7005": {
            "group": "magic",
            "key": "MAGIC_SWAP_LALT_LGUI",
            "aliases": [
                "LAG_SWP"
            ]
        },
        "0x7006": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_LALT_LGUI",
            "aliases": [
                "LAG_NRM"
            ]
        },
        "0x7007": {
            "group": "magic",
            "key": "MAGIC_SWAP_RALT_RGUI",
            "aliases": [
                "RAG_SWP"
            ]
        },
        "0x7008": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_RALT_RGUI",
            "aliases": [
                "RAG_NRM"
            ]
        },
        "0x7009": {
            "group": "magic",
            "key": "MAGIC_UNNO_GUI",
            "aliases": [
                "GUI_ON"
            ]
        },
        "0x700A": {
            "group": "magic",
            "key": "MAGIC_NO_GUI",
            "aliases": [
                "GUI_OFF"
            ]
        },
        "0x700B": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_GUI",
            "aliases": [
                "GUI_TOG"
            ]
        },
        "0x700C": {
            "group": "magic",
            "key": "MAGIC_SWAP_GRAVE_ESC",
            "aliases": [
                "GE_SWAP"
            ]
        },
        "0x700D": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_GRAVE_ESC",
            "aliases": [
                "GE_NORM"
            ]
        },
        "0x700E": {
            "group": "magic",
            "key": "MAGIC_SWAP_BACKSLASH_BACKSPACE",
            "aliases": [
                "BS_SWAP"
            ]
        },
        "0x700F": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_BACKSLASH_BACKSPACE",
            "aliases": [
                "BS_NORM"
            ]
        },
        "0x7010": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_BACKSLASH_BACKSPACE",
            "aliases": [
                "BS_TOGG"
            ]
        },
        "0x7011": {
            "group": "magic",
            "key": "MAGIC_HOST_NKRO",
            "aliases": [
                "NK_ON"
            ]
        },
        "0x7012": {
            "group": "magic",
            "key": "MAGIC_UNHOST_NKRO",
            "aliases": [
                "NK_OFF"
            ]
        },
        "0x7013": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_NKRO",
            "aliases": [
                "NK_TOGG"
            ]
        },
        "0x7014": {
            "group": "magic",
            "key": "MAGIC_SWAP_ALT_GUI",
            "aliases": [
                "AG_SWAP"
            ]
        },
        "0x7015": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_ALT_GUI",
            "aliases": [
                "AG_NORM"
            ]
        },
        "0x7016": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_ALT_GUI",
            "aliases": [
                "AG_TOGG"
            ]
        },
        "0x7017": {
            "group": "magic",
            "key": "MAGIC_SWAP_LCTL_LGUI",
            "aliases": [
                "LCG_SWP"
            ]
        },
        "0x7018": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_LCTL_LGUI",
            "aliases": [
                "LCG_NRM"
            ]
        },
        "0x7019": {
            "group": "magic",
            "key": "MAGIC_SWAP_RCTL_RGUI",
            "aliases": [
                "RCG_SWP"
            ]
        },
        "0x701A": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_RCTL_RGUI",
            "aliases": [
                "RCG_NRM"
            ]
        },
        "0x701B": {
            "group": "magic",
            "key": "MAGIC_SWAP_CTL_GUI",
            "aliases": [
                "CG_SWAP"
            ]
        },
        "0x701C": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_CTL_GUI",
            "aliases": [
                "CG_NORM"
            ]
        },
        "0x701D": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_CTL_GUI",
            "aliases": [
                "CG_TOGG"
            ]
        },
        "0x701E": {
            "group": "magic",
            "key": "MAGIC_EE_HANDS_LEFT",
            "aliases": [
                "EH_LEFT"
            ]
        },
        "0x701F": {
            "group": "magic",
            "key": "MAGIC_EE_HANDS_RIGHT",
            "aliases": [
                "EH_RGHT"
            ]
        },
        "0x7020": {
            "group": "magic",
            "key": "MAGIC_SWAP_ESCAPE_CAPSLOCK",
            "aliases": [
                "EC_SWAP"
            ]
        },
        "0x7021": {
            "group": "magic",
            "key": "MAGIC_UNSWAP_ESCAPE_CAPSLOCK",
            "aliases": [
                "EC_NORM"
            ]
        },
        "0x7022": {
            "group": "magic",
            "key": "MAGIC_TOGGLE_ESCAPE_CAPSLOCK",
            "aliases": [
                "EC_TOGG"
            ]
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_midi.hjson => data/constants/keycodes/keycodes_0.0.1_midi.hjson +670 -0
@@ 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"
        }
    }
}

A data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson => data/constants/keycodes/keycodes_0.0.1_programmable_button.hjson +228 -0
@@ 0,0 1,228 @@
{
    "keycodes": {
        "0x7440": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_1",
            "aliases": [
                "PB_1"
            ]
        },
        "0x7441": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_2",
            "aliases": [
                "PB_2"
            ]
        },
        "0x7442": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_3",
            "aliases": [
                "PB_3"
            ]
        },
        "0x7443": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_4",
            "aliases": [
                "PB_4"
            ]
        },
        "0x7444": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_5",
            "aliases": [
                "PB_5"
            ]
        },
        "0x7445": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_6",
            "aliases": [
                "PB_6"
            ]
        },
        "0x7446": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_7",
            "aliases": [
                "PB_7"
            ]
        },
        "0x7447": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_8",
            "aliases": [
                "PB_8"
            ]
        },
        "0x7448": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_9",
            "aliases": [
                "PB_9"
            ]
        },
        "0x7449": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_10",
            "aliases": [
                "PB_10"
            ]
        },
        "0x744A": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_11",
            "aliases": [
                "PB_11"
            ]
        },
        "0x744B": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_12",
            "aliases": [
                "PB_12"
            ]
        },
        "0x744C": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_13",
            "aliases": [
                "PB_13"
            ]
        },
        "0x744D": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_14",
            "aliases": [
                "PB_14"
            ]
        },
        "0x744E": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_15",
            "aliases": [
                "PB_15"
            ]
        },
        "0x744F": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_16",
            "aliases": [
                "PB_16"
            ]
        },
        "0x7450": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_17",
            "aliases": [
                "PB_17"
            ]
        },
        "0x7451": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_18",
            "aliases": [
                "PB_18"
            ]
        },
        "0x7452": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_19",
            "aliases": [
                "PB_19"
            ]
        },
        "0x7453": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_20",
            "aliases": [
                "PB_20"
            ]
        },
        "0x7454": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_21",
            "aliases": [
                "PB_21"
            ]
        },
        "0x7455": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_22",
            "aliases": [
                "PB_22"
            ]
        },
        "0x7456": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_23",
            "aliases": [
                "PB_23"
            ]
        },
        "0x7457": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_24",
            "aliases": [
                "PB_24"
            ]
        },
        "0x7458": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_25",
            "aliases": [
                "PB_25"
            ]
        },
        "0x7459": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_26",
            "aliases": [
                "PB_26"
            ]
        },
        "0x745A": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_27",
            "aliases": [
                "PB_27"
            ]
        },
        "0x745B": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_28",
            "aliases": [
                "PB_28"
            ]
        },
        "0x745C": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_29",
            "aliases": [
                "PB_29"
            ]
        },
        "0x745D": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_30",
            "aliases": [
                "PB_30"
            ]
        },
        "0x745E": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_31",
            "aliases": [
                "PB_31"
            ]
        },
        "0x745F": {
            "group": "programmable_button",
            "key": "QK_PROGRAMMABLE_BUTTON_32",
            "aliases": [
                "PB_32"
            ]
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_quantum.hjson => data/constants/keycodes/keycodes_0.0.1_quantum.hjson +464 -0
@@ 0,0 1,464 @@
{
    "keycodes": {
        "0x7C00": {
            "group": "quantum",
            "key": "QK_BOOTLOADER",
            "aliases": [
                "QK_BOOT"
            ]
        },
        "0x7C01": {
            "group": "quantum",
            "key": "QK_REBOOT",
            "aliases": [
                "QK_RBT"
            ]
        },
        "0x7C02": {
            "group": "quantum",
            "key": "QK_DEBUG_TOGGLE",
            "aliases": [
                "DB_TOGG"
            ]
        },
        "0x7C03": {
            "group": "quantum",
            "key": "QK_CLEAR_EEPROM",
            "aliases": [
                "EE_CLR"
            ]
        },
        "0x7C04": {
            "group": "quantum",
            "key": "QK_MAKE"
        },

        "0x7C10": {
            "group": "quantum",
            "key": "QK_AUTO_SHIFT_DOWN",
            "aliases": [
                "AS_DOWN"
            ]
        },
        "0x7C11": {
            "group": "quantum",
            "key": "QK_AUTO_SHIFT_UP",
            "aliases": [
                "AS_UP"
            ]
        },
        "0x7C12": {
            "group": "quantum",
            "key": "QK_AUTO_SHIFT_REPORT",
            "aliases": [
                "AS_RPT"
            ]
        },
        "0x7C13": {
            "group": "quantum",
            "key": "QK_AUTO_SHIFT_ON",
            "aliases": [
                "AS_ON"
            ]
        },
        "0x7C14": {
            "group": "quantum",
            "key": "QK_AUTO_SHIFT_OFF",
            "aliases": [
                "AS_OFF"
            ]
        },
        "0x7C15": {
            "group": "quantum",
            "key": "QK_AUTO_SHIFT_TOGGLE",
            "aliases": [
                "AS_TOGG"
            ]
        },

        "0x7C16": {
            "group": "quantum",
            "key": "QK_GRAVE_ESCAPE",
            "aliases": [
                "QK_GESC"
            ]
        },

        "0x7C17": {
            "group": "quantum",
            "key": "QK_VELOCIKEY_TOGGLE",
            "aliases": [
                "VK_TOGG"
            ]
        },

        "0x7C18": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN",
            "aliases": [
                "SC_LCPO"
            ]
        },
        "0x7C19": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE",
            "aliases": [
                "SC_RCPC"
            ]
        },
        "0x7C1A": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN",
            "aliases": [
                "SC_LSPO"
            ]
        },
        "0x7C1B": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE",
            "aliases": [
                "SC_RSPC"
            ]
        },
        "0x7C1C": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN",
            "aliases": [
                "SC_LAPO"
            ]
        },
        "0x7C1D": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE",
            "aliases": [
                "SC_RAPC"
            ]
        },
        "0x7C1E": {
            "group": "quantum",
            "key": "QK_SPACE_CADET_RIGHT_SHIFT_ENTER",
            "aliases": [
                "SC_SENT"
            ]
        },

        "0x7C20": {
            "group": "quantum",
            "key": "OUT_AUTO"
        },
        "0x7C21": {
            "group": "quantum",
            "key": "OUT_USB"
        },
        "0x7C22": {
            "group": "quantum",
            "key": "OUT_BT"
        },

        "0x7C30": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_NEXT",
            "aliases": [
                "UC_NEXT"
            ]
        },
        "0x7C31": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_PREVIOUS",
            "aliases": [
                "UC_PREV"
            ]
        },
        "0x7C32": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_MACOS",
            "aliases": [
                "UC_MAC"
            ]
        },
        "0x7C33": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_LINUX",
            "aliases": [
                "UC_LINX"
            ]
        },
        "0x7C34": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_WINDOWS",
            "aliases": [
                "UC_WIN"
            ]
        },
        "0x7C35": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_BSD",
            "aliases": [
                "UC_BSD"
            ]
        },
        "0x7C36": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_WINCOMPOSE",
            "aliases": [
                "UC_WINC"
            ]
        },
        "0x7C37": {
            "group": "quantum",
            "key": "QK_UNICODE_MODE_EMACS",
            "aliases": [
                "UC_EMAC"
            ]
        },

        "0x7C40": {
            "group": "quantum",
            "key": "HPT_ON"
        },
        "0x7C41": {
            "group": "quantum",
            "key": "HPT_OFF"
        },
        "0x7C42": {
            "group": "quantum",
            "key": "HPT_TOG"
        },
        "0x7C43": {
            "group": "quantum",
            "key": "HPT_RST"
        },
        "0x7C44": {
            "group": "quantum",
            "key": "HPT_FBK"
        },
        "0x7C45": {
            "group": "quantum",
            "key": "HPT_BUZ"
        },
        "0x7C46": {
            "group": "quantum",
            "key": "HPT_MODI"
        },
        "0x7C47": {
            "group": "quantum",
            "key": "HPT_MODD"
        },
        "0x7C48": {
            "group": "quantum",
            "key": "HPT_CONT"
        },
        "0x7C49": {
            "group": "quantum",
            "key": "HPT_CONI"
        },
        "0x7C4A": {
            "group": "quantum",
            "key": "HPT_COND"
        },
        "0x7C4B": {
            "group": "quantum",
            "key": "HPT_DWLI"
        },
        "0x7C4C": {
            "group": "quantum",
            "key": "HPT_DWLD"
        },

        "0x7C50": {
            "group": "quantum",
            "key": "QK_COMBO_ON",
            "aliases": [
                "CM_ON"
            ]
        },
        "0x7C51": {
            "group": "quantum",
            "key": "QK_COMBO_OFF",
            "aliases": [
                "CM_OFF"
            ]
        },
        "0x7C52": {
            "group": "quantum",
            "key": "QK_COMBO_TOGGLE",
            "aliases": [
                "CM_TOGG"
            ]
        },

        "0x7C53": {
            "group": "quantum",
            "key": "QK_DYNAMIC_MACRO_RECORD_START_1",
            "aliases": [
                "DM_REC1"
            ]
        },
        "0x7C54": {
            "group": "quantum",
            "key": "QK_DYNAMIC_MACRO_RECORD_START_2",
            "aliases": [
                "DM_REC2"
            ]
        },
        "0x7C55": {
            "group": "quantum",
            "key": "QK_DYNAMIC_MACRO_RECORD_STOP",
            "aliases": [
                "DM_RSTP"
            ]
        },
        "0x7C56": {
            "group": "quantum",
            "key": "QK_DYNAMIC_MACRO_PLAY_1",
            "aliases": [
                "DM_PLY1"
            ]
        },
        "0x7C57": {
            "group": "quantum",
            "key": "QK_DYNAMIC_MACRO_PLAY_2",
            "aliases": [
                "DM_PLY2"
            ]
        },

        "0x7C58": {
            "group": "quantum",
            "key": "QK_LEADER",
            "aliases": [
                "QK_LEAD"
            ]
        },

        "0x7C59": {
            "group": "quantum",
            "key": "QK_LOCK"
        },

        "0x7C5A": {
            "group": "quantum",
            "key": "QK_ONE_SHOT_ON",
            "aliases": [
                "OS_ON"
            ]
        },
        "0x7C5B": {
            "group": "quantum",
            "key": "QK_ONE_SHOT_OFF",
            "aliases": [
                "OS_OFF"
            ]
        },
        "0x7C5C": {
            "group": "quantum",
            "key": "QK_ONE_SHOT_TOGGLE",
            "aliases": [
                "OS_TOGG"
            ]
        },

        "0x7C5D": {
            "group": "quantum",
            "key": "QK_KEY_OVERRIDE_TOGGLE",
            "aliases": [
                "KO_TOGG"
            ]
        },
        "0x7C5E": {
            "group": "quantum",
            "key": "QK_KEY_OVERRIDE_ON",
            "aliases": [
                "KO_ON"
            ]
        },
        "0x7C5F": {
            "group": "quantum",
            "key": "QK_KEY_OVERRIDE_OFF",
            "aliases": [
                "KO_OFF"
            ]
        },

        "0x7C60": {
            "group": "quantum",
            "key": "QK_SECURE_LOCK",
            "aliases": [
                "SE_LOCK"
            ]
        },
        "0x7C61": {
            "group": "quantum",
            "key": "QK_SECURE_UNLOCK",
            "aliases": [
                "SE_UNLK"
            ]
        },
        "0x7C62": {
            "group": "quantum",
            "key": "QK_SECURE_TOGGLE",
            "aliases": [
                "SE_TOGG"
            ]
        },
        "0x7C63": {
            "group": "quantum",
            "key": "QK_SECURE_REQUEST",
            "aliases": [
                "SE_REQ"
            ]
        },

        "0x7C70": {
            "group": "quantum",
            "key": "DT_PRNT"
        },
        "0x7C71": {
            "group": "quantum",
            "key": "DT_UP"
        },
        "0x7C72": {
            "group": "quantum",
            "key": "DT_DOWN"
        },

        "0x7C73": {
            "group": "quantum",
            "key": "PRINT_ON"
        },
        "0x7C74": {
            "group": "quantum",
            "key": "PRINT_OFF"
        },

        "0x7C75": {
            "group": "quantum",
            "key": "QK_CAPS_WORD_TOGGLE",
            "aliases": [
                "CW_TOGG"
            ]
        },

        "0x7C76": {
            "group": "quantum",
            "key": "QK_AUTOCORRECT_ON",
            "aliases": [
                "AC_ON"
            ]
        },
        "0x7C77": {
            "group": "quantum",
            "key": "QK_AUTOCORRECT_OFF",
            "aliases": [
                "AC_OFF"
            ]
        },
        "0x7C78": {
            "group": "quantum",
            "key": "QK_AUTOCORRECT_TOGGLE",
            "aliases": [
                "AC_TOGG"
            ]
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_sequencer.hjson => data/constants/keycodes/keycodes_0.0.1_sequencer.hjson +40 -0
@@ 0,0 1,40 @@
{
    "keycodes": {
        "0x7200": {
            "group": "sequencer",
            "key": "SQ_ON"
        },
        "0x7201": {
            "group": "sequencer",
            "key": "SQ_OFF"
        },
        "0x7202": {
            "group": "sequencer",
            "key": "SQ_TOG"
        },
        "0x7203": {
            "group": "sequencer",
            "key": "SQ_TMPD"
        },
        "0x7204": {
            "group": "sequencer",
            "key": "SQ_TMPU"
        },
        "0x7205": {
            "group": "sequencer",
            "key": "SQ_RESD"
        },
        "0x7206": {
            "group": "sequencer",
            "key": "SQ_RESU"
        },
        "0x7207": {
            "group": "sequencer",
            "key": "SQ_SALL"
        },
        "0x7208": {
            "group": "sequencer",
            "key": "SQ_SCLR"
        }
    }
}
\ No newline at end of file

A data/constants/keycodes/keycodes_0.0.1_steno.hjson => data/constants/keycodes/keycodes_0.0.1_steno.hjson +20 -0
@@ 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"
        }
    }
}

A data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson => data/constants/keycodes/keycodes_0.0.1_swap_hands.hjson +32 -0
@@ 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"
        }
    }
}

A data/schemas/keycodes.jsonschema => data/schemas/keycodes.jsonschema +57 -0
@@ 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"
                        }
                    }
                }
            }
        }
    }
}

M lib/python/qmk/cli/__init__.py => lib/python/qmk/cli/__init__.py +1 -0
@@ 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',

M lib/python/qmk/cli/generate/api.py => lib/python/qmk/cli/generate/api.py +14 -0
@@ 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)

A lib/python/qmk/cli/generate/keycodes.py => lib/python/qmk/cli/generate/keycodes.py +88 -0
@@ 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)

A lib/python/qmk/keycodes.py => lib/python/qmk/keycodes.py +57 -0
@@ 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

M quantum/action_code.h => quantum/action_code.h +3 -0
@@ 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,

M quantum/keycode.h => quantum/keycode.h +7 -490
@@ 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"

A quantum/keycodes.h => quantum/keycodes.h +1115 -0
@@ 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)


M quantum/keymap_common.c => quantum/keymap_common.c +3 -3
@@ 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

M quantum/process_keycode/process_joystick.c => quantum/process_keycode/process_joystick.c +3 -3
@@ 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;
    }

M quantum/process_keycode/process_magic.c => quantum/process_keycode/process_magic.c +132 -138
@@ 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;
        }
    }


M quantum/process_keycode/process_programmable_button.c => quantum/process_keycode/process_programmable_button.c +2 -2
@@ 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 {

M quantum/quantum_keycodes.h => quantum/quantum_keycodes.h +55 -848
@@ 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"

M quantum/send_string/send_string_keycodes.h => quantum/send_string/send_string_keycodes.h +19 -42
@@ 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

M quantum/via.c => quantum/via.c +0 -1
@@ 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)

M quantum/via.h => quantum/via.h +3 -8
@@ 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,

D quantum/via_ensure_keycode.h => quantum/via_ensure_keycode.h +0 -344
@@ 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