layout.py 16 KB

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