start modularizing ardux core code

This commit is contained in:
KemoNine 2023-04-19 12:03:27 -04:00
parent 0153acc2e2
commit dc61988af7
4 changed files with 32 additions and 27 deletions

0
ardux/__init__.py Normal file
View file

27
ardux/chord.py Normal file
View file

@ -0,0 +1,27 @@
from kmk.modules.combos import Chord
# TODO: fix up pass by reference trick (wrapped in array) thats used below
# likely deserves a global but KmN couldnt figure it out
class ArduxChord(Chord):
# Override default constructor to allow passing of required fields
def __init__(
self,
match: Tuple[Union[Key, int], ...],
result: Key,
fast_reset=None,
per_key_timeout=None,
timeout=None,
match_coord=None,
ardux_keyboard=[],
layers=[],
):
super().__init__(match, result, fast_reset, per_key_timeout, match_coord)
self.ardux_keyboard = ardux_keyboard
self.layers = layers
# Override standard kmk match logic to first check active vs allowed layers
def matches(self, key: Key, int_coord: int):
if self.ardux_keyboard is None or len(self.ardux_keyboard) == 0 or len(self.layers) == 0 or any(i in self.ardux_keyboard[0].active_layers for i in self.layers):
return super().matches(key, int_coord)
return False

View file

@ -1,38 +1,16 @@
import os
import board
from kmk.quickpin.pro_micro.kb2040 import pinout as pins
from kmk.kmk_keyboard import KMKKeyboard
from kmk.scanners.keypad import KeysScanner
from kmk.modules.layers import Layers
from kmk.modules.combos import Combos, Chord
from ardux.chord import ArduxChord
from kmk.keys import KC
@
# TODO: fix up pass by reference trick (wrapped in array) thats used below
# likely deserves a global but KmN couldnt figure it out
class ArduxChord(Chord):
# Override default constructor to allow passing of required fields
def __init__(
self,
match: Tuple[Union[Key, int], ...],
result: Key,
fast_reset=None,
per_key_timeout=None,
timeout=None,
match_coord=None,
ardux_keyboard=[],
layers=[],
):
super().__init__(match, result, fast_reset, per_key_timeout, match_coord)
self.ardux_keyboard = ardux_keyboard
self.layers = layers
# Override standard kmk match logic to first check active vs allowed layers
def matches(self, key: Key, int_coord: int):
if self.ardux_keyboard is None or len(self.ardux_keyboard) == 0 or len(self.layers) == 0 or any(i in self.ardux_keyboard[0].active_layers for i in self.layers):
return super().matches(key, int_coord)
return False
class ArduxKeyboard(KMKKeyboard):
coord_mapping = [

View file

@ -3,7 +3,7 @@ import os
#####
# Main keyboard object
from kb import ArduxKeyboard
from ardux.kb import ArduxKeyboard
ardux_keyboard = ArduxKeyboard()
#####