From 8b1627c64dd6f5ac0b40795c58900991e8582915 Mon Sep 17 00:00:00 2001 From: Jurica Bacurin Date: Mon, 7 Aug 2023 21:40:02 +0200 Subject: [PATCH 1/2] add support for Caps Word --- src/main/python/keycodes/keycodes.py | 1 + src/main/python/keycodes/keycodes_v5.py | 2 ++ src/main/python/keycodes/keycodes_v6.py | 1 + 3 files changed, 4 insertions(+) diff --git a/src/main/python/keycodes/keycodes.py b/src/main/python/keycodes/keycodes.py index a29f206c9d..a709d3fcfa 100644 --- a/src/main/python/keycodes/keycodes.py +++ b/src/main/python/keycodes/keycodes.py @@ -653,6 +653,7 @@ def resolve(cls, qmk_constant): K("CMB_ON", "Combo\nOn", "Turns on Combo feature"), K("CMB_OFF", "Combo\nOff", "Turns off Combo feature"), K("CMB_TOG", "Combo\nToggle", "Toggles Combo feature on and off"), + K("FN_CAPSWORD", "Caps\nWord\nToggle", "Toggles Caps Word on and off"), ] KEYCODES_BACKLIGHT = [ diff --git a/src/main/python/keycodes/keycodes_v5.py b/src/main/python/keycodes/keycodes_v5.py index 852afd8728..6a2876f687 100644 --- a/src/main/python/keycodes/keycodes_v5.py +++ b/src/main/python/keycodes/keycodes_v5.py @@ -550,6 +550,8 @@ class keycodes_v5: "RESET": 0x5C00, + "FN_CAPSWORD": 0x5DAC, + "FN_MO13": 0x5F10, "FN_MO23": 0x5F11, diff --git a/src/main/python/keycodes/keycodes_v6.py b/src/main/python/keycodes/keycodes_v6.py index 1373c543f6..c74368528c 100644 --- a/src/main/python/keycodes/keycodes_v6.py +++ b/src/main/python/keycodes/keycodes_v6.py @@ -551,6 +551,7 @@ class keycodes_v6: "RESET": 0x7C00, + "FN_CAPSWORD": 0x7C73, "FN_MO13": 0x7C77, "FN_MO23": 0x7C78, From b864d735e0ae064251a99eade080017b3c6a59fd Mon Sep 17 00:00:00 2001 From: Jurica Bacurin Date: Sun, 13 Aug 2023 17:37:14 +0200 Subject: [PATCH 2/2] make keycodes protocol aware --- src/main/python/keycodes/keycodes.py | 20 +++++++++++++------- src/main/python/keycodes/keycodes_v5.py | 2 -- src/main/python/keycodes/keycodes_v6.py | 1 + src/main/python/tabbed_keycodes.py | 7 ++++--- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/python/keycodes/keycodes.py b/src/main/python/keycodes/keycodes.py index a709d3fcfa..5b69fdf6c0 100644 --- a/src/main/python/keycodes/keycodes.py +++ b/src/main/python/keycodes/keycodes.py @@ -14,11 +14,13 @@ class Keycode: recorder_alias_to_keycode = dict() qmk_id_to_keycode = dict() protocol = 0 + min_protocol = 0 - def __init__(self, qmk_id, label, tooltip=None, masked=False, printable=None, recorder_alias=None, alias=None): + def __init__(self, qmk_id, label, tooltip=None, masked=False, printable=None, recorder_alias=None, alias=None, min_protocol=0): self.qmk_id = qmk_id self.qmk_id_to_keycode[qmk_id] = self self.label = label + self.min_protocol = min_protocol # we cannot embed full CJK fonts due to large size, workaround like this for now if sys.platform == "emscripten" and not label.isascii() and qmk_id != "KC_TRNS": self.label = qmk_id.replace("KC_", "") @@ -583,8 +585,9 @@ def resolve(cls, qmk_constant): K("KC_RAPC", "RA\n)", "Right Alt when held, ) when tapped"), K("KC_SFTENT", "RS\nEnter", "Right Shift when held, Enter when tapped"), ] - KEYCODES_QUANTUM = [ +] +KEYCODES_QUANTUM_ALL = [ K("MAGIC_SWAP_CONTROL_CAPSLOCK", "Swap\nCtrl\nCaps", "Swap Caps Lock and Left Control", alias=["CL_SWAP"]), K("MAGIC_UNSWAP_CONTROL_CAPSLOCK", "Unswap\nCtrl\nCaps", "Unswap Caps Lock and Left Control", alias=["CL_NORM"]), K("MAGIC_CAPSLOCK_TO_CONTROL", "Caps\nto\nCtrl", "Treat Caps Lock as Control", alias=["CL_CTRL"]), @@ -653,7 +656,7 @@ def resolve(cls, qmk_constant): K("CMB_ON", "Combo\nOn", "Turns on Combo feature"), K("CMB_OFF", "Combo\nOff", "Turns off Combo feature"), K("CMB_TOG", "Combo\nToggle", "Toggles Combo feature on and off"), - K("FN_CAPSWORD", "Caps\nWord\nToggle", "Toggles Caps Word on and off"), + K("FN_CAPSWORD", "Caps\nWord\nToggle", "Toggles Caps Word on and off", min_protocol=6), ] KEYCODES_BACKLIGHT = [ @@ -947,10 +950,15 @@ def resolve(cls, qmk_constant): K = None -def recreate_keycodes(): +def recreate_keycodes(min_protocol=0): """ Regenerates global KEYCODES array """ KEYCODES.clear() + KEYCODES_QUANTUM.clear() + if min_protocol > 0: + for keycode in KEYCODES_QUANTUM_ALL: + if min_protocol >= keycode.min_protocol: + KEYCODES_QUANTUM.append(keycode) KEYCODES.extend(KEYCODES_SPECIAL + KEYCODES_BASIC + KEYCODES_SHIFTED + KEYCODES_ISO + KEYCODES_LAYERS + KEYCODES_BOOT + KEYCODES_MODIFIERS + KEYCODES_QUANTUM + KEYCODES_BACKLIGHT + KEYCODES_MEDIA + KEYCODES_TAP_DANCE + KEYCODES_MACRO + KEYCODES_USER + KEYCODES_HIDDEN + KEYCODES_MIDI) @@ -1060,7 +1068,5 @@ def generate_keycodes_for_mask(label, description): create_midi_keycodes(keyboard.midi) - recreate_keycodes() - + recreate_keycodes(keyboard.vial_protocol) -recreate_keycodes() diff --git a/src/main/python/keycodes/keycodes_v5.py b/src/main/python/keycodes/keycodes_v5.py index 6a2876f687..852afd8728 100644 --- a/src/main/python/keycodes/keycodes_v5.py +++ b/src/main/python/keycodes/keycodes_v5.py @@ -550,8 +550,6 @@ class keycodes_v5: "RESET": 0x5C00, - "FN_CAPSWORD": 0x5DAC, - "FN_MO13": 0x5F10, "FN_MO23": 0x5F11, diff --git a/src/main/python/keycodes/keycodes_v6.py b/src/main/python/keycodes/keycodes_v6.py index c74368528c..7d5da1ac3a 100644 --- a/src/main/python/keycodes/keycodes_v6.py +++ b/src/main/python/keycodes/keycodes_v6.py @@ -552,6 +552,7 @@ class keycodes_v6: "RESET": 0x7C00, "FN_CAPSWORD": 0x7C73, + "FN_MO13": 0x7C77, "FN_MO23": 0x7C78, diff --git a/src/main/python/tabbed_keycodes.py b/src/main/python/tabbed_keycodes.py index 155b0fcad6..4be16bcef3 100644 --- a/src/main/python/tabbed_keycodes.py +++ b/src/main/python/tabbed_keycodes.py @@ -173,9 +173,10 @@ def __init__(self, parent=None, keycode_filter=keycode_filter_any): (None, KEYCODES_ISO), ], prefix_buttons=[("Any", -1)]), SimpleTab(self, "Layers", KEYCODES_LAYERS), - Tab(self, "Quantum", [(mods, (KEYCODES_BOOT + KEYCODES_QUANTUM)), - (mods_narrow, (KEYCODES_BOOT + KEYCODES_QUANTUM)), - (None, (KEYCODES_BOOT + KEYCODES_MODIFIERS + KEYCODES_QUANTUM))]), + Tab(self, "Modifiers", [(mods, KEYCODES_BOOT), + (mods_narrow, KEYCODES_BOOT), + (None, KEYCODES_BOOT + KEYCODES_MODIFIERS)]), + SimpleTab(self, "Quantum", KEYCODES_QUANTUM), SimpleTab(self, "Backlight", KEYCODES_BACKLIGHT), SimpleTab(self, "App, Media and Mouse", KEYCODES_MEDIA), SimpleTab(self, "MIDI", KEYCODES_MIDI),