From c13bcb8f56d3444fee981da83e537b749eed216c Mon Sep 17 00:00:00 2001 From: KemoNine Date: Wed, 19 Apr 2023 15:33:07 -0400 Subject: [PATCH] fixup combos, store references to more complex key codes for re-use with combos --- ardux/kb.py | 83 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 28 deletions(-) diff --git a/ardux/kb.py b/ardux/kb.py index 423ba75..19bfd3e 100644 --- a/ardux/kb.py +++ b/ardux/kb.py @@ -6,14 +6,23 @@ from kmk.quickpin.pro_micro.kb2040 import pinout as pins from kmk.kmk_keyboard import KMKKeyboard from kmk.scanners.keypad import KeysScanner +from kmk.keys import KC +from ardux.chord import ArduxChord + +from kmk.modules.holdtap import HoldTap from kmk.modules.layers import Layers from kmk.modules.combos import Combos, Chord from kmk.modules.mouse_keys import MouseKeys - from kmk.extensions.media_keys import MediaKeys -from ardux.chord import ArduxChord -from kmk.keys import KC +# constants +LAYER_ID_BASE = 0 +LAYER_ID_PARENS = 1 +LAYER_ID_NUMBERS = 2 +LAYER_ID_NAVIGATION = 3 +LAYER_ID_SYMBOLS = 4 +LAYER_ID_CUSTOM = 5 +LAYER_ID_MOUSE = 6 class ArduxKeyboard(KMKKeyboard): coord_mapping = [ @@ -21,29 +30,7 @@ class ArduxKeyboard(KMKKeyboard): 4, 5, 6, 7, ] - keymap = [ - # std - left - base - [KC.S, KC.T, KC.R, KC.A, - KC.O, KC.I, KC.Y, KC.E], - # std - left - parenthesis - [KC.RIGHT_CURLY_BRACE, KC.LEFT_PAREN, KC.RIGHT_PAREN, KC.TRANSPARENT, - KC.LEFT_CURLY_BRACE, KC.LBRACKET, KC.RBRACKET, KC.NO], - # std - left - number - [KC.TRANSPARENT, KC.N3, KC.N2, KC.N1, - KC.NO, KC.N6, KC.N5, KC.N4], - # std - left - navigation - [KC.PGUP, KC.END, KC.UP, KC.HOME, - KC.PGDOWN, KC.LEFT, KC.DOWN, KC.RIGHT], - # std - left - symbols - [KC.GRAVE, KC.SCOLON, KC.BSLASH, KC.EXCLAIM, - KC.EQUAL, KC.MINUS, KC.QUESTION, KC.TRANSPARENT], - # std - left - custom - [KC.NO, KC.AUDIO_VOL_UP, KC.INSERT, KC.AUDIO_MUTE, - KC.TRANSPARENT, KC.AUDIO_VOL_DOWN, KC.PSCREEN, KC.RSHIFT], - # std - left - mouse - [KC.MW_DOWN, KC.MB_RMB, KC.MS_UP, KC.MB_LMB, - KC.MW_DOWN, KC.MS_LEFT, KC.MS_DOWN, KC.MS_RIGHT] - ] + keymap = [] # Init / constructor / setup def __init__(self): @@ -58,6 +45,11 @@ class ArduxKeyboard(KMKKeyboard): # Direct wire & matrix setup self.matrix = KeysScanner([pins[16], pins[17], pins[18], pins[19], pins[12], pins[13], pins[14], pins[15]]) + # HoldTap + self.holdtap_module = HoldTap() + self.holdtap_module.tap_time = 175 + self.modules.append(self.holdtap_module) + # Layers self.modules.append(Layers()) @@ -70,14 +62,49 @@ class ArduxKeyboard(KMKKeyboard): # Combos self.combo_module = Combos() self.modules.append(self.combo_module) + + # Setup kemap as last step + self.setup_keymap() + + # Setup combos self.setup_combos() + # Define keymap + def setup_keymap(self): + self.base_s_numbers = KC.LT(LAYER_ID_NUMBERS, KC.S, prefer_hold=False) + self.base_a_parens = KC.LT(LAYER_ID_PARENS, KC.A, prefer_hold=False) + self.base_o_custom = KC.LT(LAYER_ID_CUSTOM, KC.O, prefer_hold=False) + self.base_e_symbols = KC.LT(LAYER_ID_SYMBOLS, KC.E, prefer_hold=False) + self.keymap = [ + # std - left - base + [self.base_s_numbers, KC.T, KC.R, self.base_a_parens, + self.base_o_custom, KC.I, KC.Y, self.base_e_symbols], + # std - left - parenthesis + [KC.RIGHT_CURLY_BRACE, KC.LEFT_PAREN, KC.RIGHT_PAREN, KC.TRANSPARENT, + KC.LEFT_CURLY_BRACE, KC.LBRACKET, KC.RBRACKET, KC.NO], + # std - left - number + [KC.TRANSPARENT, KC.N3, KC.N2, KC.N1, + KC.NO, KC.N6, KC.N5, KC.N4], + # std - left - navigation + [KC.PGUP, KC.END, KC.UP, KC.HOME, + KC.PGDOWN, KC.LEFT, KC.DOWN, KC.RIGHT], + # std - left - symbols + [KC.GRAVE, KC.SCOLON, KC.BSLASH, KC.EXCLAIM, + KC.EQUAL, KC.MINUS, KC.QUESTION, KC.TRANSPARENT], + # std - left - custom + [KC.NO, KC.AUDIO_VOL_UP, KC.INSERT, KC.AUDIO_MUTE, + KC.TRANSPARENT, KC.AUDIO_VOL_DOWN, KC.PSCREEN, KC.RSHIFT], + # std - left - mouse + [KC.MW_DOWN, KC.MB_RMB, KC.MS_UP, KC.MB_LMB, + KC.MW_DOWN, KC.MS_LEFT, KC.MS_DOWN, KC.MS_RIGHT] + ] + # Define combos for ardux def setup_combos(self): self.combo_module.combos = [] - combo_enter = ArduxChord((KC.A, KC.E), KC.ENTER, ardux_keyboard=[self], layers=[0]) + combo_enter = ArduxChord((self.base_a_parens, self.base_e_symbols), KC.ENTER, ardux_keyboard=[self], layers=[0]) self.combo_module.combos.append(combo_enter) - combo_space = ArduxChord((KC.O, KC.I, KC.Y, KC.E), KC.SPACE, ardux_keyboard=[self], layers=[1]) + combo_space = ArduxChord((self.base_o_custom, KC.I, KC.Y, self.base_e_symbols), KC.SPACE, ardux_keyboard=[self], layers=[1]) self.combo_module.combos.append(combo_space)