From 464228cb4b9e72cd0e9202d9dc0e028cdf9d77bd Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Fri, 25 Dec 2020 12:55:14 -0500 Subject: [PATCH] macro_optimizer: get rid of PRINTABLE dict, move into keycodes --- src/main/python/keycodes.py | 99 +++++++++++++++--------------- src/main/python/macro_optimizer.py | 47 +------------- 2 files changed, 53 insertions(+), 93 deletions(-) diff --git a/src/main/python/keycodes.py b/src/main/python/keycodes.py index c2449cf..e489b18 100644 --- a/src/main/python/keycodes.py +++ b/src/main/python/keycodes.py @@ -6,7 +6,7 @@ class Keycode: masked_keycodes = set() - def __init__(self, code, qmk_id, label, tooltip=None, masked=False): + def __init__(self, code, qmk_id, label, tooltip=None, masked=False, printable=None): self.code = code self.qmk_id = qmk_id self.label = label @@ -14,6 +14,9 @@ class Keycode: # whether this keycode requires another sub-keycode self.masked = masked + # if this is printable keycode, what character does it normally output (i.e. non-shifted state) + self.printable = printable + if masked: self.masked_keycodes.add(code) @@ -26,58 +29,58 @@ KEYCODES_SPECIAL = [ ] KEYCODES_BASIC = [ - K(0x04, "KC_A", "A"), - K(0x05, "KC_B", "B"), - K(0x06, "KC_C", "C"), - K(0x07, "KC_D", "D"), - K(0x08, "KC_E", "E"), - K(0x09, "KC_F", "F"), - K(0x0A, "KC_G", "G"), - K(0x0B, "KC_H", "H"), - K(0x0C, "KC_I", "I"), - K(0x0D, "KC_J", "J"), - K(0x0E, "KC_K", "K"), - K(0x0F, "KC_L", "L"), - K(0x10, "KC_M", "M"), - K(0x11, "KC_N", "N"), - K(0x12, "KC_O", "O"), - K(0x13, "KC_P", "P"), - K(0x14, "KC_Q", "Q"), - K(0x15, "KC_R", "R"), - K(0x16, "KC_S", "S"), - K(0x17, "KC_T", "T"), - K(0x18, "KC_U", "U"), - K(0x19, "KC_V", "V"), - K(0x1A, "KC_W", "W"), - K(0x1B, "KC_X", "X"), - K(0x1C, "KC_Y", "Y"), - K(0x1D, "KC_Z", "Z"), - K(0x1E, "KC_1", "!\n1"), - K(0x1F, "KC_2", "@\n2"), - K(0x20, "KC_3", "#\n3"), - K(0x21, "KC_4", "$\n4"), - K(0x22, "KC_5", "%\n5"), - K(0x23, "KC_6", "^\n6"), - K(0x24, "KC_7", "&\n7"), - K(0x25, "KC_8", "*\n8"), - K(0x26, "KC_9", "(\n9"), - K(0x27, "KC_0", ")\n0"), + K(0x04, "KC_A", "A", printable="a"), + K(0x05, "KC_B", "B", printable="b"), + K(0x06, "KC_C", "C", printable="c"), + K(0x07, "KC_D", "D", printable="d"), + K(0x08, "KC_E", "E", printable="e"), + K(0x09, "KC_F", "F", printable="f"), + K(0x0A, "KC_G", "G", printable="g"), + K(0x0B, "KC_H", "H", printable="h"), + K(0x0C, "KC_I", "I", printable="i"), + K(0x0D, "KC_J", "J", printable="j"), + K(0x0E, "KC_K", "K", printable="k"), + K(0x0F, "KC_L", "L", printable="l"), + K(0x10, "KC_M", "M", printable="m"), + K(0x11, "KC_N", "N", printable="n"), + K(0x12, "KC_O", "O", printable="o"), + K(0x13, "KC_P", "P", printable="p"), + K(0x14, "KC_Q", "Q", printable="q"), + K(0x15, "KC_R", "R", printable="r"), + K(0x16, "KC_S", "S", printable="s"), + K(0x17, "KC_T", "T", printable="t"), + K(0x18, "KC_U", "U", printable="u"), + K(0x19, "KC_V", "V", printable="v"), + K(0x1A, "KC_W", "W", printable="w"), + K(0x1B, "KC_X", "X", printable="x"), + K(0x1C, "KC_Y", "Y", printable="y"), + K(0x1D, "KC_Z", "Z", printable="z"), + K(0x1E, "KC_1", "!\n1", printable="1"), + K(0x1F, "KC_2", "@\n2", printable="2"), + K(0x20, "KC_3", "#\n3", printable="3"), + K(0x21, "KC_4", "$\n4", printable="4"), + K(0x22, "KC_5", "%\n5", printable="5"), + K(0x23, "KC_6", "^\n6", printable="6"), + K(0x24, "KC_7", "&\n7", printable="7"), + K(0x25, "KC_8", "*\n8", printable="8"), + K(0x26, "KC_9", "(\n9", printable="9"), + K(0x27, "KC_0", ")\n0", printable="0"), K(0x28, "KC_ENTER", "Enter"), K(0x29, "KC_ESCAPE", "Esc"), K(0x2A, "KC_BSPACE", "Bksp"), K(0x2B, "KC_TAB", "Tab"), K(0x2C, "KC_SPACE", "Space"), - K(0x2D, "KC_MINUS", "_\n-"), - K(0x2E, "KC_EQUAL", "+\n="), - K(0x2F, "KC_LBRACKET", "{\n["), - K(0x30, "KC_RBRACKET", "}\n]"), - K(0x31, "KC_BSLASH", "|\n\\"), - K(0x33, "KC_SCOLON", ":\n;"), - K(0x34, "KC_QUOTE", "\"\n'"), - K(0x35, "KC_GRAVE", "~\n`"), - K(0x36, "KC_COMMA", "<\n,"), - K(0x37, "KC_DOT", ">\n."), - K(0x38, "KC_SLASH", "?\n/"), + K(0x2D, "KC_MINUS", "_\n-", printable="-"), + K(0x2E, "KC_EQUAL", "+\n=", printable="="), + K(0x2F, "KC_LBRACKET", "{\n[", printable="["), + K(0x30, "KC_RBRACKET", "}\n]", printable="]"), + K(0x31, "KC_BSLASH", "|\n\\", printable="\\"), + K(0x33, "KC_SCOLON", ":\n;", printable=";"), + K(0x34, "KC_QUOTE", "\"\n'", printable="'"), + K(0x35, "KC_GRAVE", "~\n`", printable="`"), + K(0x36, "KC_COMMA", "<\n,", printable=","), + K(0x37, "KC_DOT", ">\n.", printable="."), + K(0x38, "KC_SLASH", "?\n/", printable="/"), K(0x39, "KC_CAPSLOCK", "Caps\nLock"), K(0x3A, "KC_F1", "F1"), K(0x3B, "KC_F2", "F2"), diff --git a/src/main/python/macro_optimizer.py b/src/main/python/macro_optimizer.py index 4d45aef..ab7a574 100644 --- a/src/main/python/macro_optimizer.py +++ b/src/main/python/macro_optimizer.py @@ -29,55 +29,12 @@ def replace_with_tap(sequence): return out -PRINTABLE = { - "KC_1": "1", "KC_2": "2", "KC_3": "3", "KC_4": "4", "KC_5": "5", "KC_6": "6", "KC_7": "7", - "KC_8": "8", "KC_9": "9", "KC_0": "0", - "KC_MINUS": "-", - "KC_EQUAL": "=", - "KC_Q": "q", - "KC_W": "w", - "KC_E": "e", - "KC_R": "r", - "KC_T": "t", - "KC_Y": "y", - "KC_U": "u", - "KC_I": "i", - "KC_O": "o", - "KC_P": "p", - "KC_LBRACKET": "[", - "KC_RBRACKET": "]", - "KC_A": "a", - "KC_S": "s", - "KC_D": "d", - "KC_F": "f", - "KC_G": "g", - "KC_H": "h", - "KC_J": "j", - "KC_K": "k", - "KC_L": "l", - "KC_SCOLON": ";", - "KC_QUOTE": "'", - "KC_GRAVE": "`", - "KC_BSLASH": "\\", - "KC_Z": "z", - "KC_X": "x", - "KC_C": "c", - "KC_V": "v", - "KC_B": "b", - "KC_N": "n", - "KC_M": "m", - "KC_COMMA": ",", - "KC_DOT": ".", - "KC_SLASH": "/", -} - - def is_printable_tap(k): - return isinstance(k, KeyTap) and k.keycode.qmk_id in PRINTABLE + return isinstance(k, KeyTap) and k.keycode.printable def get_printable_char(k): - return PRINTABLE[k.keycode.qmk_id] + return k.keycode.printable def replace_with_string(sequence):