qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

layout.py (16945B)


      1 # -*- coding: utf-8 -*-
      2 # yapf: disable
      3 
      4 # Add all used Unicode symbols to this list.
      5 # The key (e.g. "SNEK") is used in keymap.c for "enum", "unicode_map" and "keymaps", so it needs to be a valid C variable name.
      6 # The key is also used in this file to define the layout, so use recognizeable names.
      7 # The value (e.g. "0x1f40d") is used in keymap.c for "unicode_map" and to automatically generate the "ASCII"-art comments.
      8 # When adding new Unicode names, use "0x1f40d" until you looked up the correct Unicode code point.
      9 uc_dict = {
     10     "SNEK": "0x1f40d", ## Error
     11     ## qwertz
     12     "ACUTE": "0x00b4",
     13     ## QWERTZ
     14     "INV_EXCL": "0x00a1",
     15     "INV_QST": "0x00bf",
     16     ## numpad
     17     "SUP1": "0x00b9",
     18     "SUP2": "0x00b2",
     19     "SUP3": "0x00b3",
     20     "SUP_MIN": "0x207b",
     21     "ROOT": "0x221a",
     22     "DEGREE": "0x00b0",
     23     "MINUTE": "0x02b9",
     24     "SECOND": "0x02ba",
     25     "CURRENCY": "0x00a4",
     26     "CENT": "0x00a2",
     27     "YEN": "0x00a5",
     28     "POUND": "0x00a3",
     29     "EURO": "0x20ac",
     30     "DIVISION": "0x00f7",
     31     "MICRO": "0x00b5",
     32     "OHM": "0x2126",
     33     "BITCOIN": "0x20bf",
     34     "SECTION": "0x00a7",
     35     ## NAV_TYPO
     36     "SQT1": "0x203a",
     37     "SQT2": "0x201a",
     38     "SQT3": "0x2018",
     39     "SQT4": "0x2019",
     40     "SQT5": "0x2039",
     41     "SUP_A": "0x00aa",
     42     "SUP_O": "0x00ba",
     43     "TMARK": "0x2122",
     44     "COPYR": "0x00a9",
     45     "REGTM": "0x00ae",
     46     "DOTS": "0x2026",
     47     "CROSS": "0x2020",
     48     "BULLET": "0x2022",
     49     "EMDASH": "0x2014",
     50     "PERMIL": "0x2030",
     51     "DQT1": "0x00bb",
     52     "DQT2": "0x201e",
     53     "DQT3": "0x201c",
     54     "DQT4": "0x201d",
     55     "DQT5": "0x00ab",
     56     ## lang
     57     "ae": "0x00e4",
     58     "oe": "0x00f6",
     59     "ue": "0x00fc",
     60     "sz": "0x00df",
     61     "n_tilde": "0x00f1",
     62     ## LANG
     63     "AE": "0x00c4",
     64     "OE": "0x00d6",
     65     "UE": "0x00dc",
     66     "SZ": "0x1e9e",
     67     "N_TILDE": "0x00d1",
     68     ## greek
     69     "alpha": "0x03b1",
     70     "beta": "0x03b2",
     71     "gamma": "0x03b3",
     72     "delta": "0x03b4",
     73     "epsilon": "0x03b5",
     74     "zeta": "0x03b6",
     75     "eta": "0x03b7",
     76     "theta": "0x03b8",
     77     "iota": "0x03b9",
     78     "kappa": "0x03ba",
     79     "lambda": "0x03bb",
     80     "my": "0x03bc",
     81     "ny": "0x03bd",
     82     "xi": "0x03be",
     83     "omikron": "0x03bf",
     84     "pi": "0x03c0",
     85     "rho": "0x03c1",
     86     "sigma": "0x03c3",
     87     "tau": "0x03c4",
     88     "ypsilon": "0x03c5",
     89     "phi": "0x03c6",
     90     "chi": "0x03c7",
     91     "psi": "0x03c8",
     92     "omega": "0x03c9",
     93     # variants
     94     "beta2": "0x03d0",
     95     "epsi2": "0x03f5",
     96     "theta2": "0x03d1",
     97     "kappa2": "0x03f0",
     98     "pi2": "0x03d6",
     99     "rho2": "0x03f1",
    100     "sigma2": "0x03c2",
    101     "sigma3": "0x03f2",
    102     "phi2": "0x03d5",
    103     # non-standard
    104     "digamma": "0x03dd",
    105     "stigma": "0x03db",
    106     "heta": "0x0371",
    107     "san": "0x03fb",
    108     "koppa": "0x03d9",
    109     "sampi": "0x0373",
    110     "scho": "0x03f8",
    111     ## GREEK
    112     "ALPHA": "0x0391",
    113     "BETA": "0x0392",
    114     "GAMMA": "0x0393",
    115     "DELTA": "0x0394",
    116     "EPSILON": "0x0395",
    117     "ZETA": "0x0396",
    118     "ETA": "0x0397",
    119     "THETA": "0x0398",
    120     "IOTA": "0x0399",
    121     "KAPPA": "0x039a",
    122     "LAMBDA": "0x039b",
    123     "MY": "0x039c",
    124     "NY": "0x039d",
    125     "XI": "0x039e",
    126     "OMIKRON": "0x039f",
    127     "PI": "0x03a0",
    128     "RHO": "0x03a1",
    129     "SIGMA": "0x03a3",
    130     "TAU": "0x03a4",
    131     "YPSILON": "0x03a5",
    132     "PHI": "0x03a6",
    133     "CHI": "0x03a7",
    134     "PSI": "0x03a8",
    135     "OMEGA": "0x03a9",
    136     # variants
    137     "YPSI2": "0x03d2",
    138     # non-standard
    139     "DIGAMMA": "0x03dc",
    140     "STIGMA": "0x03da",
    141     "HETA": "0x0370",
    142     "SAN": "0x03fa",
    143     "KOPPA": "0x03d8",
    144     "SAMPI": "0x0372",
    145     "SCHO": "0x03f7",
    146     ## symbol
    147     "SHOGI_WD": "0x26c9",
    148     "FLAG_W": "0x2690",
    149     "LETTER": "0x2709",
    150     "PHONE": "0x2706",
    151     "INFO": "0x1f6c8",
    152     "REWIND": "0x23ee",
    153     "PLAY": "0x23ef",
    154     "FORWARD": "0x23ed",
    155     "STOP": "0x25fc",
    156     "EJECT": "0x23cf",
    157     "SHOGI_W": "0x2616",
    158     "FEMALE": "0x2640",
    159     "MALE": "0x2642",
    160     "NO": "0x2717",
    161     "YES": "0x2713",
    162     "FLAT": "0x266d",
    163     "NATURAL": "0x266e",
    164     "SHARP": "0x266f",
    165     "COMMON_T": "0x1d134",
    166     "ALLA_BR": "0x1d135",
    167     "PAWN_W": "0x2659",
    168     "DIAMS_W": "0x2662",
    169     "HEARTS_W": "0x2661",
    170     "SPADES_W": "0x2664",
    171     "CLUBS_W": "0x2667",
    172     "WHOLE_N": "0x1d15d",
    173     "HALF_N": "0x1d15e",
    174     "QUART_N": "0x1d15f",
    175     "EIGHTH_N": "0x1d160",
    176     "SIXT_N": "0x1d161",
    177     "ROOK_W": "0x2656",
    178     "KNIGHT_W": "0x2658",
    179     "BISHOP_W": "0x2657",
    180     "QUEEN_W": "0x2655",
    181     "KING_W": "0x2654",
    182     "C_CLEF": "0x1d121",
    183     "G_CLEF": "0x1d11e",
    184     "F_CLEF": "0x1d122",
    185     "PEDAL": "0x1d1ae",
    186     "PEDAL_UP": "0x1d1af",
    187     ## SYMBOL
    188     "SHOGI_BD": "0x26ca",
    189     "FLAG_B": "0x2691",
    190     "SPEAKER_UP": "0x1f50a",
    191     "SPEAKER_TG": "0x1f507",
    192     "SPEAKER_DN": "0x1f509",
    193     "SHOGI_B": "0x2617",
    194     "KEY": "0x1f511",
    195     "LOCK": "0x1f512",
    196     "LOCK_OPEN": "0x1f513",
    197     "STAFF": "0x1d11a",
    198     "BARLINE": "0x1d100",
    199     "BARLINE_D": "0x1d101",
    200     "BARLINE_FIN": "0x1d102",
    201     "CODA": "0x1d10c",
    202     "PAWN_B": "0x265f",
    203     "DIAMS_B": "0x2666",
    204     "HEARTS_B": "0x2665",
    205     "SPADES_B": "0x2660",
    206     "CLUBS_B": "0x2663",
    207     "WHOLE_P": "0x1d13b",
    208     "HALF_P": "0x1d13c",
    209     "QUART_P": "0x1d13d",
    210     "EIGHTH_P": "0x1d13e",
    211     "SIXT_P": "0x1d13f",
    212     "ROOK_B": "0x265c",
    213     "KNIGHT_B": "0x265e",
    214     "BISHOP_B": "0x265d",
    215     "QUEEN_B": "0x265b",
    216     "KING_B": "0x265a",
    217     "REPEAT_S": "0x1d106",
    218     "REPEAT_E": "0x1d107",
    219     "SEGNO": "0x1d10b",
    220     "DALSEGNO": "0x1d109",
    221     "DACAPO": "0x1d10a",
    222     ## math
    223     "EXISTS": "0x2203",
    224     "FORALL": "0x2200",
    225     "EQUIV": "0x2261",
    226     "CORRESP": "0x2259",
    227     "INEQUAL": "0x2260",
    228     "DEFINE": "0x2254",
    229     "TO": "0x27f6",
    230     "MAPSTO": "0x27fc",
    231     "SETMINUS": "0x2216",
    232     "QED": "0x220e",
    233     "OR_": "0x22c1",
    234     "AND_": "0x22c0",
    235     "OR": "0x2228",
    236     "AND": "0x2227",
    237     "NOT": "0x00ac",
    238     "BICOND": "0x21d4",
    239     "IMPL_REV": "0x21d0",
    240     "IMPL": "0x21d2",
    241     "TOP": "0x22a4",
    242     "BOTTOM": "0x22a5",
    243     "SUM_": "0x2211",
    244     "PROD_": "0x220f",
    245     "MDOT": "0x22c5",
    246     "NOTIN": "0x2209",
    247     "IN": "0x2208",
    248     "LS_EQ": "0x2264",
    249     "GR_EQ": "0x2265",
    250     "INFTY": "0x221e",
    251     "UNION_": "0x22c3",
    252     "INTERS_": "0x22c2",
    253     "UNION": "0x222a",
    254     "INTERS": "0x2229",
    255     "NOTSUBS": "0x2288",
    256     "PR_SUBSET": "0x2282",
    257     "SUBSET": "0x2286",
    258     "SUBSET_REV": "0x2287",
    259     "EMPTYSET": "0x2205",
    260     ## MATHSCRIPT
    261     "LEFT_CEIL": "0x2308",
    262     "REAL_P": "0x211c",
    263     "NABLA": "0x2207",
    264     "RIGHT_CEIL": "0x2309",
    265     "LEFT_FLOOR": "0x230a",
    266     "BRA": "0x27e8",
    267     "IMAG_P": "0x2111",
    268     "KET": "0x27e9",
    269     "RIGHT_FLOOR": "0x230b",
    270     "Q_SET": "0x211a",
    271     "e_FUN": "0x0065",
    272     "R_SET": "0x211d",
    273     "Z_SET": "0x2124",
    274     "U_SET": "0x1d54c",
    275     "i_UNIT": "0x0069",
    276     "BIG_O": "0x1d4aa",
    277     "POWERSET": "0x1d4ab",
    278     "A_SET": "0x1d538",
    279     "INTEGRAL": "0x222b",
    280     "PARTIAL": "0x2202",
    281     "F_SET": "0x1d53d",
    282     "H_SET": "0x210d",
    283     "K_SET": "0x1d542",
    284     "LENGTH": "0x2113",
    285     "ALEPH": "0x2135",
    286     "BETH": "0x2136",
    287     "C_SET": "0x2102",
    288     "B_SET": "0x1d539",
    289     "N_SET": "0x2115",
    290     "INDICATOR": "0x1d7cf",
    291     "FOURIER": "0x2131",
    292     "HAMILTON": "0x210b",
    293     "LAPLACE": "0x2112",
    294     ## MATHEXT
    295     "RIGHT_TACK": "0x22a2",
    296     "MODELS": "0x22a7",
    297     "AB_VEC": "0x20d7",
    298     "AB_LINE": "0x0305",
    299     "AB_ARC": "0x0361",
    300     "LESS_LESS": "0x226a",
    301     "PRED": "0x227a",
    302     "EMBED": "0x21aa",
    303     "SUCC": "0x227b",
    304     "GREAT_GREAT": "0x226b",
    305     "TRIANGLE": "0x25b3",
    306     "SQUARE": "0x25a1",
    307     "CIRCLE": "0x25cb",
    308     "DOT_OP": "0x2299",
    309     "PLUS_OP": "0x2295",
    310     "MINUS_OP": "0x2296",
    311     "ROUGHLY": "0x2248",
    312     "ISOMORPH": "0x2245",
    313     "LTIMES": "0x22c9",
    314     "RTIMES": "0x22ca",
    315     "BOWTIE": "0x22c8",
    316     "M_ANGLE": "0x2221",
    317     "ANGLE": "0x2220",
    318     "CIRC_MID": "0x2218",
    319     "AST_MID": "0x2217",
    320     "TIMES": "0x00d7",
    321     "PLUS_MINUS": "0x00b1",
    322     "MINUS_PLUS": "0x2213",
    323     "LEFT_OUTER": "0x27d5",
    324     "RIGHT_OUTER": "0x27d6",
    325     "FULL_OUTER": "0x27d7",
    326     "SQ_LS": "0x228f",
    327     "SQ_LS_EQ": "0x2291",
    328     "PROP_TO": "0x221d",
    329     "PARALLEL": "0x2225",
    330     "NOT_PARA": "0x2226",
    331     "TIMES_OP": "0x2297",
    332     "NOT_DIV": "0x2224"
    333 }
    334 
    335 # Add all used Keycodes to this list.
    336 # The key (e.g. "a") is used in keymap.c to automatically generate the comments. The first 7 chars will show as a keycap legend.
    337 qmk_dict = {
    338     # test cases (These are handled in generate_km.py within toKC() and toLgd(), so these definitions will be ignored.
    339     # If you find "BAD" in your keymaps, then something went wrong.)
    340     "a": "BAD", "A": "BAD", "0": "BAD",
    341     # Basic Keycodes
    342     "XXX": "KC_NO", "": "KC_TRNS",
    343     "!": "S(KC_1)", "@": "S(KC_2)", "#": "S(KC_3)", "$": "S(KC_4)", "%": "S(KC_5)",
    344     "^": "S(KC_6)", "&": "S(KC_7)", "*": "S(KC_8)", "(": "S(KC_9)", ")": "S(KC_0)",
    345     "Enter": "KC_ENT", "Esc": "KC_ESC", "BSpace": "KC_BSPC", "Tab": "KC_TAB",
    346     "Space": "KC_SPC", "-": "KC_MINS", "_": "S(KC_MINS)", "=": "KC_EQL",
    347     "+": "S(KC_EQL)", "[": "KC_LBRC", "{": "S(KC_LBRC)", "]": "KC_RBRC",
    348     "}": "S(KC_RBRC)", "\\": "KC_BSLS", "|": "S(KC_BSLS)", ";": "KC_SCLN",
    349     ":": "S(KC_SCLN)", "'": "KC_QUOT", "\"": "S(KC_QUOT)", "`": "KC_GRV",
    350     "~": "S(KC_GRV)", ",": "KC_COMM", "<": "S(KC_COMM)", ".": "KC_DOT",
    351     ">": "S(KC_DOT)", "/": "KC_SLSH", "?": "S(KC_SLSH)", "Caps": "KC_CAPS",
    352     "Pr Scr": "KC_PSCR", "Scr Lck": "KC_SCRL", "Pause": "KC_BRK", "Insert": "KC_INS", "SInsert": "LSFT(KC_INS)",
    353     "Home": "KC_HOME", "Pg Up": "KC_PGUP", "Del": "KC_DEL", "End": "KC_END",
    354     "Pg Down": "KC_PGDN", "> Arrow": "KC_RGHT", "< Arrow": "KC_LEFT",
    355     "v Arrow": "KC_DOWN", "^ Arrow": "KC_UP",
    356     # Keypad keycodes missing
    357     "App": "KC_APP", "Menu": "KC_MENU",
    358     # Command keycodes missing (Execute, Help, ..., Find)
    359     # Basic Keycodes missing from Print Screen onwards, included as fallback
    360     # random Keycodes
    361     "RGui": "KC_RGUI", "LGui": "KC_LGUI", "LAlt": "KC_LALT", "RLAlt": "LALT_T(KC_RALT)", "RAlt": "KC_RALT", "LShift": "KC_LSFT", "LCtrl": "KC_LCTL", "LCtTBsp": "LCTL_T(KC_BSPC)", "LCtTEsc": "LCTL_T(KC_ESC)", "RCtrl": "KC_RCTL",
    362     "LShift(": "SC_LSPO", "RShift)": "SC_RSPC",
    363     # "LShift(": "LSFT_T(KC_9)", "RShift)": "RSFT_T(RSFT(KC_0))",
    364     "LCtrl[": "LCTL_T(KC_LBRC)", "RCtrl]": "RCTL_T(KC_RBRC)",
    365     "L1_ENT": "LT(1, KC_ENT)", "LT2_BSP":  "LT(2,KC_BSPC)", "LT4_DEL":  "LT(4,KC_DEL)", "LT4_ENT":  "LT(4,KC_ENT)", "LT6_SPC": "LT(6,KC_SPC)",
    366     "CPg Dn": "LCTL(KC_PGDN)", "CPg Up": "LCTL(KC_PGUP)",
    367     "S_Enter": "S(KC_ENT)", "S_Tab": "S(KC_TAB)", "Compose": "KC_ALGR",
    368     "RShift": "KC_RSFT",
    369     "Vol 0": "KC_MUTE", "Vol +": "KC_VOLU", "Vol -": "KC_VOLD",
    370     ">>|": "KC_MNXT", "|<<": "KC_MPRV", "play/ps": "KC_MPLY",
    371     "Bri +": "KC_BRIU", "Bri -": "KC_BRID",
    372     # Quantum Keycodes
    373     "_reset": "QK_BOOT", "_debug": "DB_TOGG", "_eep_re": "EE_CLR",
    374     # Audio Keys missing
    375     # Backlighting
    376     "Led 0": "BL_TOGG", "Led +": "BL_UP", "Led -": "BL_DOWN", "Led ~": "BL_BRTG",
    377     # Bootmagic missing
    378     # Bluetooth
    379     "OU_AUTO": "OU_AUTO", "OU_USB": "OU_USB", "OU_BT": "OU_BT",
    380     # Layer Switching missing, Lx -> MO(x), Tx -> TG(x)
    381     "qwertz": "DF(0)", "neo": "DF(2)",
    382     # Mouse Keys
    383     "^ Mouse": "MS_UP", "v Mouse": "MS_DOWN", "< Mouse": "MS_LEFT",
    384     "> Mouse": "MS_RGHT", "Mouse 1": "MS_BTN1", "Mouse 2": "MS_BTN2",
    385     "Mouse 3": "MS_BTN3", "Mouse 4": "MS_BTN4", "Mouse 5": "MS_BTN5",
    386     "^ Wheel": "MS_WHLU", "v Wheel": "MS_WHLD", "< Wheel": "MS_WHLL",
    387     "> Wheel": "MS_WHLR", "acc0": "MS_ACL0", "acc1": "MS_ACL1",
    388     "acc2": "MS_ACL2",
    389     # Modifiers missinng, add entry for each specific application
    390     # Mod-Tap Keys missing, add entry for each specific application
    391     "_Sh_swp": "LSFT_T(SH_TOGG)",
    392     # RGB Lighting missing
    393     # RGB Matrix Lighting missing
    394     # Thermal Printer missing
    395     # US ANSI Shifted Symbols done via S(), don't add KC_entries
    396     # One Shot Keys missing
    397     # Swap Hands
    398     "_sp_swp": "SHT(KC_SPC)",
    399     # Unicode support included implicitly
    400     # Switching Unicode Input Modes
    401     "UC_win": "UC_WINC", "UC_lnx": "UC_LINX", "UC_mac": "UC_MAC",
    402 
    403     # custom keys
    404     "altF4": "LALT(KC_F4)",
    405     "Undo": "LCTL(KC_Z)", "Cut": "LCTL(KC_X)", "Copy": "LCTL(KC_C)", "Paste": "LCTL(KC_V)",
    406     "< Tab": "LCTL(S(KC_TAB))", "> Tab": "LCTL(KC_TAB)",
    407     "Tab x": "LCTL(KC_W)", "Tab n": "LCTL(KC_T)",
    408     "Gui Tab":  "LGUI(KC_TAB)", "< Gui":  "LGUI(KC_LEFT)", "> Gui":  "LGUI(KC_RGHT)",
    409     "C+A+Del": "LCTL(LALT(KC_DEL))", "Mic 0": "LCTL(KC_M)",
    410     "Power": "KC_PWR", "Sleep": "KC_SLEP",
    411 
    412     # macros
    413     "Macro 1": "KC_1", "Macro 2": "KC_2", "Macro 3": "KC_3", "Macro 4": "KC_4", "Macro 5": "KC_5",
    414 
    415     # custom layers
    416     "GREEK": "GREEK",
    417     "SYMBOL": "SYMBOL",
    418     "MATH": "MATH",
    419     "GAME": "GAME",
    420     "MOUSE": "MOUSE",
    421     "NEO": "TG(2)"
    422 }
    423 
    424 # These keys are repeated in all layers.
    425 # Generate a keymap.c with the python script and refer to the "ASCII"-art comments, to see which positions this concerns.
    426 # If you want to put different keycodes in these positions for different layers, you need to modify the python script by yourself.
    427 static = ["NEO", "GREEK", "GREEK", "GREEK", "GREEK", "MOUSE"]
    428 
    429 # mutex_layers = {"GREEK": 8, "GAME": 10, "MOUSE": 11}
    430 # layer_graph = ...
    431 
    432 # 0
    433 qwerty = [
    434     "Tab",     "q",    "w",       "e",       "r",       "t",       "y",       "u",       "i",       "o",       "p",       "[",
    435     "LCtTEsc", "a",    "s",       "d",       "f",       "g",       "h",       "j",       "k",       "l",       ";",       "'",
    436     "LShift(", "z",    "x",       "c",       "v",       "b",       "n",       "m",       ",",       ".",       "/",       "RShift)",
    437     "LCtrl[",  "LAlt", "LGui",    "TT2",     "LT6_SPC", "LT4_DEL", "LT4_ENT", "Space",   "LT2_BSP", "RGui",    "RLAlt",    "RCtrl]",
    438     ]
    439 
    440 # 1
    441 colemak = [
    442     "Tab",     "q",    "w",       "f",       "p",       "g",       "j",       "l",       "u",       "y",       ";",       "[",
    443     "LCtTEsc", "a",    "r",       "s",       "t",       "d",       "h",       "n",       "e",       "i",       "o",       "'",
    444     "LShift(", "z",    "x",       "c",       "v",       "b",       "k",       "m",       ",",       ".",       "/",       "RShift)",
    445     "LCtrl[",  "LAlt", "LGui",    "TT2",     "LT6_SPC", "LT4_DEL", "LT4_ENT", "Space",   "LT2_BSP", "RGui",    "RLAlt",    "RCtrl]",
    446     ]
    447 
    448 # 2
    449 numpad = [
    450     "`",       "1",    "2",       "3",       "4",       "5",       "6",       "7",       "8",       "9",       "0",       "]",
    451     "",        "DF0",  "DF1",     "XXX",     "MO3",     "MO3",     "4",       "4",       "5",       "6",       "-",       "=",
    452     "",        "MO5",  "XXX",     "XXX",     "XXX",     "XXX",     "1",       "1",       "2",       "3",       "\\",      "",
    453     "TG2",     "",     "",        "",        "",        "Del",     "",        "0",       "BSpace",  "",        "",        "",
    454     ]
    455 
    456 # 3
    457 fpad = [
    458     "",        "F1",   "F2",      "F3",      "F4",      "F5",      "F6",      "F7",      "F8",      "F9",      "F10",     "XXX",
    459     "",        "XXX",  "XXX",     "XXX",     "MO3",     "MO3",     "F4",      "F4",      "F5",      "F6",      "F11",     "XXX",
    460     "",        "XXX",  "XXX",     "XXX",     "XXX",     "XXX",     "F1",      "F1",      "F2",      "F3",      "F12",     "",
    461     "TG3",     "",     "",        "",        "",        "",        "",        "",        "",        "",        "",        "",
    462     ]
    463 
    464 # 4
    465 movement = [
    466     "Esc",     "Esc",  "Tab x",   "Tab n",   "CPg Dn",  "CPg Dn",  "Pg Down", "Home",    "^ Arrow", "Insert",  "SInsert", "Esc",
    467     "",        "Caps", "< Gui",   "Gui Tab", "> Gui",   "> Gui",   "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End",     "Pr Scr",
    468     "",        "XXX",  "XXX",     "XXX",     "CPg Up",  "CPg Up",  "Pg Up",   "",        "v Arrow", "XXX",     "App",     "",
    469     "TG4",     "",     "",        "",        "",        "Del",     "",        "BSpace",  "",        "",        "",        "",
    470     ]
    471 
    472 # 5
    473 media = [
    474     "",        "XXX",  "play/ps", "Vol +",   "Vol +",   "XXX",     "XXX",     "XXX",     "XXX",     "XXX",     "_reset",  "Power",
    475     "",        "XXX",  "|<<",     "Vol 0",   ">>|",     "XXX",     "XXX",     "XXX",     "XXX",     "XXX",     "XXX",     "Sleep",
    476     "",        "MO5",  "XXX",     "Vol -",   "Vol -",   "XXX",     "XXX",     "XXX",     "XXX",     "XXX",     "XXX",     "XXX",
    477     "TG5",     "",     "",        "",        "",        "",        "",        "",        "",        "",        "",        "",
    478     ]
    479 
    480 # 6
    481 mouse = [
    482     "",        "acc1", "XXX",     "XXX",     "XXX",     "XXX",     "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX",     "XXX",
    483     "",        "acc2", "Mouse 2", "Mouse 3", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX",     "XXX",
    484     "",        "acc0", "XXX",     "XXX",     "XXX",     "XXX",     "v Wheel", "XXX",     "v Mouse", "XXX",     "XXX",     "",
    485     "TG6",     "",     "",        "",        "",        "",        "",        "",        "",        "",        "",        "",
    486     ]
    487 
    488 layers = [
    489     qwerty,
    490     colemak,
    491     numpad,
    492     fpad,
    493     movement,
    494     media,
    495     mouse
    496     ]