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 os
import board import board
from kmk.quickpin.pro_micro.kb2040 import pinout as pins from kmk.quickpin.pro_micro.kb2040 import pinout as pins
from kmk.kmk_keyboard import KMKKeyboard from kmk.kmk_keyboard import KMKKeyboard
from kmk.scanners.keypad import KeysScanner from kmk.scanners.keypad import KeysScanner
from kmk.modules.layers import Layers from kmk.modules.layers import Layers
from kmk.modules.combos import Combos, Chord from kmk.modules.combos import Combos, Chord
from ardux.chord import ArduxChord
from kmk.keys import KC 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): class ArduxKeyboard(KMKKeyboard):
coord_mapping = [ coord_mapping = [

View file

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