From 71ba995142047649fa7b56f5367a61b3bd8bad18 Mon Sep 17 00:00:00 2001 From: Zackarias Montell Date: Sat, 5 Feb 2022 09:57:34 +0100 Subject: [PATCH] started on multikey --- code.py | 0 keyboards/macropad_rev1/default/keymap.py | 5 ++--- lib/adafruit_mcp230xx/mcp23016.mpy | Bin lib/adafruit_mcp230xx/mcp23s08.mpy | Bin lib/adafruit_mcp230xx/mcp23sxx.mpy | Bin lib/adafruit_mcp230xx/mcp23xxx.mpy | Bin nmlkpy/__init__.py | 0 nmlkpy/boot.py | 0 nmlkpy/key_codes/se.py | 0 nmlkpy/key_types/base.py | 5 ----- nmlkpy/key_types/keycode.py | 22 ++++++++++++++++++++++ nmlkpy/keymap_manager.py | 0 12 files changed, 24 insertions(+), 8 deletions(-) mode change 100755 => 100644 code.py mode change 100755 => 100644 lib/adafruit_mcp230xx/mcp23016.mpy mode change 100644 => 100755 lib/adafruit_mcp230xx/mcp23s08.mpy mode change 100755 => 100644 lib/adafruit_mcp230xx/mcp23sxx.mpy mode change 100644 => 100755 lib/adafruit_mcp230xx/mcp23xxx.mpy mode change 100644 => 100755 nmlkpy/__init__.py mode change 100644 => 100755 nmlkpy/boot.py mode change 100644 => 100755 nmlkpy/key_codes/se.py mode change 100755 => 100644 nmlkpy/keymap_manager.py diff --git a/code.py b/code.py old mode 100755 new mode 100644 diff --git a/keyboards/macropad_rev1/default/keymap.py b/keyboards/macropad_rev1/default/keymap.py index 220cb65..315ce5b 100644 --- a/keyboards/macropad_rev1/default/keymap.py +++ b/keyboards/macropad_rev1/default/keymap.py @@ -1,7 +1,6 @@ from nmlkpy.key_codes.se import SE -from nmlkpy.key_types.keycode import Keycode, Modifier +from nmlkpy.key_types.keycode import Keycode, Modifier, Multikey from nmlkpy.key_types.layer import Hold, Toggle -from nmlkpy.layer_manager import LayerManager keymap = [[ Hold(1), Toggle(2), Toggle(3), Toggle(4), @@ -9,7 +8,7 @@ keymap = [[ Keycode(SE.LEFT), Keycode(SE.DOWN), Keycode( SE.UP), Keycode(SE.RIGHT), Keycode(SE.ENTER), Keycode(SE.J), Keycode( - SE.K), Modifier(SE.LEFT_SHIFT) + SE.K), Multikey(SE.G, SE.A, SE.C, SE.P, SE.ENTER) ], [ Hold(1), Toggle(2), Toggle(3), Toggle(4), Keycode(SE.ONE), Hold(1), Keycode(SE.C), Keycode(SE.D), diff --git a/lib/adafruit_mcp230xx/mcp23016.mpy b/lib/adafruit_mcp230xx/mcp23016.mpy old mode 100755 new mode 100644 diff --git a/lib/adafruit_mcp230xx/mcp23s08.mpy b/lib/adafruit_mcp230xx/mcp23s08.mpy old mode 100644 new mode 100755 diff --git a/lib/adafruit_mcp230xx/mcp23sxx.mpy b/lib/adafruit_mcp230xx/mcp23sxx.mpy old mode 100755 new mode 100644 diff --git a/lib/adafruit_mcp230xx/mcp23xxx.mpy b/lib/adafruit_mcp230xx/mcp23xxx.mpy old mode 100644 new mode 100755 diff --git a/nmlkpy/__init__.py b/nmlkpy/__init__.py old mode 100644 new mode 100755 diff --git a/nmlkpy/boot.py b/nmlkpy/boot.py old mode 100644 new mode 100755 diff --git a/nmlkpy/key_codes/se.py b/nmlkpy/key_codes/se.py old mode 100644 new mode 100755 diff --git a/nmlkpy/key_types/base.py b/nmlkpy/key_types/base.py index 61c64e7..c94a9d7 100755 --- a/nmlkpy/key_types/base.py +++ b/nmlkpy/key_types/base.py @@ -17,11 +17,6 @@ class KeyChanges: class KeyBase: - #identifier: KeyIdentifier - # def enrich(self, identifier: KeyIdentifier): - # assert identifier is not None - # self.identifier = identifier - def calculate_changes(self, pin: PinState, custom_state: object) -> KeyChanges: raise NotImplementedError() diff --git a/nmlkpy/key_types/keycode.py b/nmlkpy/key_types/keycode.py index adf1b99..018dde7 100755 --- a/nmlkpy/key_types/keycode.py +++ b/nmlkpy/key_types/keycode.py @@ -39,3 +39,25 @@ class Modifier(KeycodeBase): def self_test(self, keymap): if not self.keycode in _VALID_MODIFIERS: raise Exception("Keycode is not valid") + + +class Multikey(KeyBase): + """Basic press and release functionality that appends a keycode to the report when active""" + keycodes: list[int] + + def __init__(self, *keycodes: int): + self.keycodes = list(keycodes) + + def calculate_changes(self, pin: PinState, custom_state: object) -> KeyChanges: + assert pin is not None + changes = KeyChanges() + if pin.is_pressed(): + for keycode in self.keycodes: + changes.keymap_delta.press(keycode) + else: + for keycode in self.keycodes: + changes.keymap_delta.unpress(keycode) + return changes + + def self_test(self, keymap): + pass diff --git a/nmlkpy/keymap_manager.py b/nmlkpy/keymap_manager.py old mode 100755 new mode 100644