qmk-firmware/keyboards/signum/3_0/elitec/keymaps/default/layout.py
Jan Christoph Ebersbach eef00e4da1 [Keyboard] Add Signum 3.0 for the elite-c (#5478)
* Add keyboard Signum 3.0 for the elite-c

* Update readme.md

* Remove unused macros

* Use bootmagic lite instead of full

* Add warning to keymap.c that it's auto-generate

* Add description for customizing keyboard layouts

* Make generate_km.py executable

* Make right shift available in numpad layer

* Update keyboards/signum/3_0/elitec/readme.md

Co-Authored-By: jceb <jceb@e-jc.de>

* Update keyboards/signum/3_0/elitec/readme.md

Co-Authored-By: jceb <jceb@e-jc.de>

* Fix typo in symbol name
2019-04-07 19:20:09 -07:00

494 lines
16 KiB
Python

from sortedcontainers import SortedDict
# Add all used Unicode symbols to this list.
# 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.
# The key is also used in this file to define the layout, so use recognizeable names.
# The value (e.g. "0x1f40d") is used in keymap.c for "unicode_map" and to automatically generate the "ASCII"-art comments.
# When adding new Unicode names, use "0x1f40d" until you looked up the correct Unicode code point.
uc_dict = SortedDict({
"SNEK": "0x1f40d", ## Error
## qwertz
"ACUTE": "0x00b4",
## QWERTZ
"INV_EXCL": "0x00a1",
"INV_QST": "0x00bf",
## numpad
"SUP1": "0x00b9",
"SUP2": "0x00b2",
"SUP3": "0x00b3",
"SUP_MIN": "0x207b",
"ROOT": "0x221a",
"DEGREE": "0x00b0",
"MINUTE": "0x02b9",
"SECOND": "0x02ba",
"CURRENCY": "0x00a4",
"CENT": "0x00a2",
"YEN": "0x00a5",
"POUND": "0x00a3",
"EURO": "0x20ac",
"DIVISION": "0x00f7",
"MICRO": "0x00b5",
"OHM": "0x2126",
"BITCOIN": "0x20bf",
"SECTION": "0x00a7",
## NAV_TYPO
"SQT1": "0x203a",
"SQT2": "0x201a",
"SQT3": "0x2018",
"SQT4": "0x2019",
"SQT5": "0x2039",
"SUP_A": "0x00aa",
"SUP_O": "0x00ba",
"TMARK": "0x2122",
"COPYR": "0x00a9",
"REGTM": "0x00ae",
"DOTS": "0x2026",
"CROSS": "0x2020",
"BULLET": "0x2022",
"EMDASH": "0x2014",
"PERMIL": "0x2030",
"DQT1": "0x00bb",
"DQT2": "0x201e",
"DQT3": "0x201c",
"DQT4": "0x201d",
"DQT5": "0x00ab",
## lang
"ae": "0x00e4",
"oe": "0x00f6",
"ue": "0x00fc",
"sz": "0x00df",
"n_tilde": "0x00f1",
## LANG
"AE": "0x00c4",
"OE": "0x00d6",
"UE": "0x00dc",
"SZ": "0x1e9e",
"N_TILDE": "0x00d1",
## greek
"alpha": "0x03b1",
"beta": "0x03b2",
"gamma": "0x03b3",
"delta": "0x03b4",
"epsilon": "0x03b5",
"zeta": "0x03b6",
"eta": "0x03b7",
"theta": "0x03b8",
"iota": "0x03b9",
"kappa": "0x03ba",
"lambda": "0x03bb",
"my": "0x03bc",
"ny": "0x03bd",
"xi": "0x03be",
"omikron": "0x03bf",
"pi": "0x03c0",
"rho": "0x03c1",
"sigma": "0x03c3",
"tau": "0x03c4",
"ypsilon": "0x03c5",
"phi": "0x03c6",
"chi": "0x03c7",
"psi": "0x03c8",
"omega": "0x03c9",
# variants
"beta2": "0x03d0",
"epsi2": "0x03f5",
"theta2": "0x03d1",
"kappa2": "0x03f0",
"pi2": "0x03d6",
"rho2": "0x03f1",
"sigma2": "0x03c2",
"sigma3": "0x03f2",
"phi2": "0x03d5",
# non-standard
"digamma": "0x03dd",
"stigma": "0x03db",
"heta": "0x0371",
"san": "0x03fb",
"koppa": "0x03d9",
"sampi": "0x0373",
"scho": "0x03f8",
## GREEK
"ALPHA": "0x0391",
"BETA": "0x0392",
"GAMMA": "0x0393",
"DELTA": "0x0394",
"EPSILON": "0x0395",
"ZETA": "0x0396",
"ETA": "0x0397",
"THETA": "0x0398",
"IOTA": "0x0399",
"KAPPA": "0x039a",
"LAMBDA": "0x039b",
"MY": "0x039c",
"NY": "0x039d",
"XI": "0x039e",
"OMIKRON": "0x039f",
"PI": "0x03a0",
"RHO": "0x03a1",
"SIGMA": "0x03a3",
"TAU": "0x03a4",
"YPSILON": "0x03a5",
"PHI": "0x03a6",
"CHI": "0x03a7",
"PSI": "0x03a8",
"OMEGA": "0x03a9",
# variants
"YPSI2": "0x03d2",
# non-standard
"DIGAMMA": "0x03dc",
"STIGMA": "0x03da",
"HETA": "0x0370",
"SAN": "0x03fa",
"KOPPA": "0x03d8",
"SAMPI": "0x0372",
"SCHO": "0x03f7",
## symbol
"SHOGI_WD": "0x26c9",
"FLAG_W": "0x2690",
"LETTER": "0x2709",
"PHONE": "0x2706",
"INFO": "0x1f6c8",
"REWIND": "0x23ee",
"PLAY": "0x23ef",
"FORWARD": "0x23ed",
"STOP": "0x25fc",
"EJECT": "0x23cf",
"SHOGI_W": "0x2616",
"FEMALE": "0x2640",
"MALE": "0x2642",
"NO": "0x2717",
"YES": "0x2713",
"FLAT": "0x266d",
"NATURAL": "0x266e",
"SHARP": "0x266f",
"COMMON_T": "0x1d134",
"ALLA_BR": "0x1d135",
"PAWN_W": "0x2659",
"DIAMS_W": "0x2662",
"HEARTS_W": "0x2661",
"SPADES_W": "0x2664",
"CLUBS_W": "0x2667",
"WHOLE_N": "0x1d15d",
"HALF_N": "0x1d15e",
"QUART_N": "0x1d15f",
"EIGHTH_N": "0x1d160",
"SIXT_N": "0x1d161",
"ROOK_W": "0x2656",
"KNIGHT_W": "0x2658",
"BISHOP_W": "0x2657",
"QUEEN_W": "0x2655",
"KING_W": "0x2654",
"C_CLEF": "0x1d121",
"G_CLEF": "0x1d11e",
"F_CLEF": "0x1d122",
"PEDAL": "0x1d1ae",
"PEDAL_UP": "0x1d1af",
## SYMBOL
"SHOGI_BD": "0x26ca",
"FLAG_B": "0x2691",
"SPEAKER_UP": "0x1f50a",
"SPEAKER_TG": "0x1f507",
"SPEAKER_DN": "0x1f509",
"SHOGI_B": "0x2617",
"KEY": "0x1f511",
"LOCK": "0x1f512",
"LOCK_OPEN": "0x1f513",
"STAFF": "0x1d11a",
"BARLINE": "0x1d100",
"BARLINE_D": "0x1d101",
"BARLINE_FIN": "0x1d102",
"CODA": "0x1d10c",
"PAWN_B": "0x265f",
"DIAMS_B": "0x2666",
"HEARTS_B": "0x2665",
"SPADES_B": "0x2660",
"CLUBS_B": "0x2663",
"WHOLE_P": "0x1d13b",
"HALF_P": "0x1d13c",
"QUART_P": "0x1d13d",
"EIGHTH_P": "0x1d13e",
"SIXT_P": "0x1d13f",
"ROOK_B": "0x265c",
"KNIGHT_B": "0x265e",
"BISHOP_B": "0x265d",
"QUEEN_B": "0x265b",
"KING_B": "0x265a",
"REPEAT_S": "0x1d106",
"REPEAT_E": "0x1d107",
"SEGNO": "0x1d10b",
"DALSEGNO": "0x1d109",
"DACAPO": "0x1d10a",
## math
"EXISTS": "0x2203",
"FORALL": "0x2200",
"EQUIV": "0x2261",
"CORRESP": "0x2259",
"INEQUAL": "0x2260",
"DEFINE": "0x2254",
"TO": "0x27f6",
"MAPSTO": "0x27fc",
"SETMINUS": "0x2216",
"QED": "0x220e",
"OR_": "0x22c1",
"AND_": "0x22c0",
"OR": "0x2228",
"AND": "0x2227",
"NOT": "0x00ac",
"BICOND": "0x21d4",
"IMPL_REV": "0x21d0",
"IMPL": "0x21d2",
"TOP": "0x22a4",
"BOTTOM": "0x22a5",
"SUM_": "0x2211",
"PROD_": "0x220f",
"MDOT": "0x22c5",
"NOTIN": "0x2209",
"IN": "0x2208",
"LS_EQ": "0x2264",
"GR_EQ": "0x2265",
"INFTY": "0x221e",
"UNION_": "0x22c3",
"INTERS_": "0x22c2",
"UNION": "0x222a",
"INTERS": "0x2229",
"NOTSUBS": "0x2288",
"PR_SUBSET": "0x2282",
"SUBSET": "0x2286",
"SUBSET_REV": "0x2287",
"EMPTYSET": "0x2205",
## MATHSCRIPT
"LEFT_CEIL": "0x2308",
"REAL_P": "0x211c",
"NABLA": "0x2207",
"RIGHT_CEIL": "0x2309",
"LEFT_FLOOR": "0x230a",
"BRA": "0x27e8",
"IMAG_P": "0x2111",
"KET": "0x27e9",
"RIGHT_FLOOR": "0x230b",
"Q_SET": "0x211a",
"e_FUN": "0x0065",
"R_SET": "0x211d",
"Z_SET": "0x2124",
"U_SET": "0x1d54c",
"i_UNIT": "0x0069",
"BIG_O": "0x1d4aa",
"POWERSET": "0x1d4ab",
"A_SET": "0x1d538",
"INTEGRAL": "0x222b",
"PARTIAL": "0x2202",
"F_SET": "0x1d53d",
"H_SET": "0x210d",
"K_SET": "0x1d542",
"LENGTH": "0x2113",
"ALEPH": "0x2135",
"BETH": "0x2136",
"C_SET": "0x2102",
"B_SET": "0x1d539",
"N_SET": "0x2115",
"INDICATOR": "0x1d7cf",
"FOURIER": "0x2131",
"HAMILTON": "0x210b",
"LAPLACE": "0x2112",
## MATHEXT
"RIGHT_TACK": "0x22a2",
"MODELS": "0x22a7",
"AB_VEC": "0x20d7",
"AB_LINE": "0x0305",
"AB_ARC": "0x0361",
"LESS_LESS": "0x226a",
"PRED": "0x227a",
"EMBED": "0x21aa",
"SUCC": "0x227b",
"GREAT_GREAT": "0x226b",
"TRIANGLE": "0x25b3",
"SQUARE": "0x25a1",
"CIRCLE": "0x25cb",
"DOT_OP": "0x2299",
"PLUS_OP": "0x2295",
"MINUS_OP": "0x2296",
"ROUGHLY": "0x2248",
"ISOMORPH": "0x2245",
"LTIMES": "0x22c9",
"RTIMES": "0x22ca",
"BOWTIE": "0x22c8",
"M_ANGLE": "0x2221",
"ANGLE": "0x2220",
"CIRC_MID": "0x2218",
"AST_MID": "0x2217",
"TIMES": "0x00d7",
"PLUS_MINUS": "0x00b1",
"MINUS_PLUS": "0x2213",
"LEFT_OUTER": "0x27d5",
"RIGHT_OUTER": "0x27d6",
"FULL_OUTER": "0x27d7",
"SQ_LS": "0x228f",
"SQ_LS_EQ": "0x2291",
"PROP_TO": "0x221d",
"PARALLEL": "0x2225",
"NOT_PARA": "0x2226",
"TIMES_OP": "0x2297",
"NOT_DIV": "0x2224"
})
# Add all used Keycodes to this list.
# 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.
qmk_dict = {
# test cases (These are handled in generate_km.py within toKC() and toLgd(), so these definitions will be ignored.
# If you find "BAD" in your keymaps, then something went wrong.)
"a": "BAD", "A": "BAD", "0": "BAD",
# Basic Keycodes
"XXX": "XXXXXXX", "": "KC_TRNS",
"!": "S(KC_1)", "@": "S(KC_2)", "#": "S(KC_3)", "$": "S(KC_4)", "%": "S(KC_5)",
"^": "S(KC_6)", "&": "S(KC_7)", "*": "S(KC_8)", "(": "S(KC_9)", ")": "S(KC_0)",
"Enter": "KC_ENT", "Esc": "KC_ESC", "BSpace": "KC_BSPC", "Tab": "KC_TAB",
"Space": "KC_SPC", "-": "KC_MINS", "_": "S(KC_MINS)", "=": "KC_EQL",
"+": "S(KC_EQL)", "[": "KC_LBRC", "{": "S(KC_LBRC)", "]": "KC_RBRC",
"}": "S(KC_RBRC)", "\\": "KC_BSLS", "|": "S(KC_BSLS)", ";": "KC_SCLN",
":": "S(KC_SCLN)", "'": "KC_QUOT", "\"": "S(KC_QUOT)", "`": "KC_GRV",
"~": "S(KC_GRV)", ",": "KC_COMM", "<": "S(KC_COMM)", ".": "KC_DOT",
">": "S(KC_DOT)", "/": "KC_SLSH", "?": "S(KC_SLSH)", "Caps": "KC_CAPS",
"Pr Scr": "KC_PSCR", "Scr Lck": "KC_SLCK", "Pause": "KC_BRK", "Insert": "KC_INS", "SInsert": "SFT_T(KC_INS)",
"Home": "KC_HOME", "Pg Up": "KC_PGUP", "Del": "KC_DEL", "End": "KC_END",
"Pg Down": "KC_PGDN", "> Arrow": "KC_RIGHT", "< Arrow": "KC_LEFT",
"v Arrow": "KC_DOWN", "^ Arrow": "KC_UP",
# Keypad keycodes missing
"App": "KC_APP", "Menu": "KC_MENU",
# Command keycodes missing (Execute, Help, ..., Find)
# Basic Keycodes missing from Print Screen onwards, included as fallback
# random Keycodes
"RGui": "KC_RGUI", "LGui": "KC_LGUI", "LAlt": "KC_LALT", "RAlt": "KC_RALT", "LShift": "KC_LSFT", "LCtrl": "KC_LCTRL", "RCtrl": "KC_RCTRL",
"LShift(": "KC_LSPO", "RShift)": "KC_RSPC",
"L1_ENT": "LT(1, KC_ENT)", "LT6_SPC": "LT(6, KC_SPC)",
"CPg Dn": "CTL_T(KC_PGDN)", "CPg Up": "CTL_T(KC_PGUP)",
"S_Enter": "S(KC_ENT)", "S_Tab": "S(KC_TAB)", "Compose": "KC_ALGR",
"RShift": "KC_RSFT",
"Vol 0": "KC_MUTE", "Vol +": "KC_VOLU", "Vol -": "KC_VOLD",
">>|": "KC_MNXT", "|<<": "KC_MPRV", "play/ps": "KC_MPLY",
"Bri +": "KC_BRIU", "Bri -": "KC_BRID",
# Quantum Keycodes
"_reset": "RESET", "_debug": "DEBUG", "_eep_re": "EEP_RST",
# Audio Keys missing
# Backlighting
"Led 0": "BL_TOGG", "Led +": "BL_INC", "Led -": "BL_DEC", "Led ~": "BL_BRTG",
# Bootmagic missing
# Bluetooth
"OUT_AUTO": "OUT_AUTO", "OUT_USB": "OUT_USB", "OUT_BT": "OUT_BT",
# Layer Switching missing, Lx -> MO(x), Tx -> TG(x)
"qwertz": "DF(0)", "neo": "DF(2)",
# Mouse Keys
"^ Mouse": "KC_MS_U", "v Mouse": "KC_MS_D", "< Mouse": "KC_MS_L",
"> Mouse": "KC_MS_R", "Mouse 1": "KC_BTN1", "Mouse 2": "KC_BTN2",
"Mouse 3": "KC_BTN3", "Mouse 4": "KC_BTN4", "Mouse 5": "KC_BTN5",
"^ Wheel": "KC_WH_U", "v Wheel": "KC_WH_D", "< Wheel": "KC_WH_L",
"> Wheel": "KC_WH_R", "acc0": "KC_ACL0", "acc1": "KC_ACL1",
"acc2": "KC_ACL2",
# Modifiers missinng, add entry for each specific application
# Mod-Tap Keys missing, add entry for each specific application
"_Sh_swp": "LSFT_T(SH_TG)",
# RGB Lighting missing
# RGB Matrix Lighting missing
# Thermal Printer missing
# US ANSI Shifted Symbols done via S(), don't add KC_entries
# One Shot Keys missing
# Swap Hands
"_sp_swp": "SHT(KC_SPC)",
# Unicode support (via X()) included implicitly
# Switching Unicode Input Modes
"UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_osx": "UC_M_OS",
# custom keys
"altF4": "LALT(KC_F4)",
"Undo": "LCTL(KC_Z)", "Cut": "LCTL(KC_X)", "Copy": "LCTL(KC_C)", "Paste": "LCTL(KC_V)",
"< Tab": "LCTL(S(KC_TAB))", "> Tab": "LCTL(KC_TAB)",
"Tab x": "LCTL(KC_W)", "Tab n": "LCTL(KC_T)",
"Gui Tab": "LGUI_T(KC_TAB)", "< Gui": "LGUI_T(KC_LEFT)", "< Gui": "LGUI_T(KC_RIGHT)",
"C+A+Del": "LCTL(LALT(KC_DEL))", "Mic 0": "LCTL(KC_M)",
"Power": "KC_PWR", "Sleep": "KC_SLEP",
# macros
"Macro 1": "KC_1", "Macro 2": "KC_2", "Macro 3": "KC_3", "Macro 4": "KC_4", "Macro 5": "KC_5",
# custom layers
"GREEK": "GREEK",
"SYMBOL": "SYMBOL",
"MATH": "MATH",
"GAME": "GAME",
"MOUSE": "MOUSE",
"NEO": "TG(2)"
}
# These keys are repeated in all layers.
# Generate a keymap.c with the python script and refer to the "ASCII"-art comments, to see which positions this concerns.
# If you want to put different keycodes in these positions for different layers, you need to modify the python script by yourself.
static = ["NEO", "GREEK", "GREEK", "GREEK", "GREEK", "MOUSE"]
# mutex_layers = {"GREEK": 8, "GAME": 10, "MOUSE": 11}
# layer_graph = ...
# 0
qwerty = [
["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "["],
["LCtrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'"],
["LShift(", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift)"],
["MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl"],
]
# 1
colemak = [
["Tab", "q", "w", "f", "p", "g", "j", "l", "u", "y", ";", "["],
["LCtrl", "a", "r", "s", "t", "d", "h", "n", "e", "i", "o", "'"],
["LShift(", "z", "x", "c", "v", "b", "k", "m", ",", ".", "/", "RShift)"],
["MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl"],
]
# 2
numpad = [
["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "]"],
["", "DF0", "DF1", "XXX", "XXX", "MO3", "4", "4", "5", "6", "-", "="],
["", "MO5", "XXX", "XXX", "XXX", "XXX", "1", "1", "2", "3", "\\", ""],
["TG2", "", "", "", "", "", "", "", "0", "", "", ""],
]
# 3
fpad = [
["", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "XXX"],
["", "XXX", "XXX", "XXX", "XXX", "MO3", "F4", "F4", "F5", "F6", "XXX", "XXX"],
["", "XXX", "XXX", "XXX", "XXX", "XXX", "F1", "F1", "F2", "F3", "XXX", ""],
["TG3", "", "", "", "", "", "F10", "F11", "F12", "", "", ""],
]
# 4
movement = [
["", "Esc", "Tab x", "Tab n", "CPg Dn", "CPg Dn", "Pg Down", "Home", "^ Arrow", "Insert", "SInsert", "Esc"],
["", "Caps", "< Gui", "Gui Tab", "> Gui", "> Gui", "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End", "Pr Scr"],
["", "XXX", "XXX", "XXX", "CPg Up", "CPg Up", "Pg Up", "XXX", "v Arrow", "XXX", "App", ""],
["TG4", "", "", "", "", "", "", "", "", "", "", ""],
]
# 5
media = [
["", "XXX", "play/ps", "Vol +", "Vol +", "XXX", "XXX", "XXX", "XXX", "XXX", "_reset", "Power"],
["", "XXX", "|<<", "Vol 0", ">>|", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "Sleep"],
["", "XXX", "XXX", "Vol -", "Vol -", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX"],
["TG5", "", "", "", "", "", "", "", "", "", "", ""],
]
# 6
mouse = [
["", "acc1", "XXX", "XXX", "XXX", "XXX", "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX", "XXX"],
["", "acc2", "Mouse 3", "Mouse 2", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX", "XXX"],
["", "acc0", "XXX", "XXX", "XXX", "XXX", "v Wheel", "XXX", "v Mouse", "XXX", "XXX", ""],
["TG6", "", "", "", "", "", "", "", "", "", "", ""],
]
layers = [
qwerty,
colemak,
numpad,
fpad,
movement,
media,
mouse
]