started on multikey
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
from nmlkpy.key_codes.se import SE
|
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.key_types.layer import Hold, Toggle
|
||||||
from nmlkpy.layer_manager import LayerManager
|
|
||||||
|
|
||||||
keymap = [[
|
keymap = [[
|
||||||
Hold(1), Toggle(2), Toggle(3), Toggle(4),
|
Hold(1), Toggle(2), Toggle(3), Toggle(4),
|
||||||
@@ -9,7 +8,7 @@ keymap = [[
|
|||||||
Keycode(SE.LEFT), Keycode(SE.DOWN), Keycode(
|
Keycode(SE.LEFT), Keycode(SE.DOWN), Keycode(
|
||||||
SE.UP), Keycode(SE.RIGHT),
|
SE.UP), Keycode(SE.RIGHT),
|
||||||
Keycode(SE.ENTER), Keycode(SE.J), Keycode(
|
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),
|
Hold(1), Toggle(2), Toggle(3), Toggle(4),
|
||||||
Keycode(SE.ONE), Hold(1), Keycode(SE.C), Keycode(SE.D),
|
Keycode(SE.ONE), Hold(1), Keycode(SE.C), Keycode(SE.D),
|
||||||
|
|||||||
0
lib/adafruit_mcp230xx/mcp23016.mpy
Executable file → Normal file
0
lib/adafruit_mcp230xx/mcp23016.mpy
Executable file → Normal file
0
lib/adafruit_mcp230xx/mcp23s08.mpy
Normal file → Executable file
0
lib/adafruit_mcp230xx/mcp23s08.mpy
Normal file → Executable file
0
lib/adafruit_mcp230xx/mcp23sxx.mpy
Executable file → Normal file
0
lib/adafruit_mcp230xx/mcp23sxx.mpy
Executable file → Normal file
0
lib/adafruit_mcp230xx/mcp23xxx.mpy
Normal file → Executable file
0
lib/adafruit_mcp230xx/mcp23xxx.mpy
Normal file → Executable file
0
nmlkpy/__init__.py
Normal file → Executable file
0
nmlkpy/__init__.py
Normal file → Executable file
0
nmlkpy/boot.py
Normal file → Executable file
0
nmlkpy/boot.py
Normal file → Executable file
0
nmlkpy/key_codes/se.py
Normal file → Executable file
0
nmlkpy/key_codes/se.py
Normal file → Executable file
@@ -17,11 +17,6 @@ class KeyChanges:
|
|||||||
|
|
||||||
|
|
||||||
class KeyBase:
|
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:
|
def calculate_changes(self, pin: PinState, custom_state: object) -> KeyChanges:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|||||||
@@ -39,3 +39,25 @@ class Modifier(KeycodeBase):
|
|||||||
def self_test(self, keymap):
|
def self_test(self, keymap):
|
||||||
if not self.keycode in _VALID_MODIFIERS:
|
if not self.keycode in _VALID_MODIFIERS:
|
||||||
raise Exception("Keycode is not valid")
|
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
|
||||||
|
|||||||
0
nmlkpy/keymap_manager.py
Executable file → Normal file
0
nmlkpy/keymap_manager.py
Executable file → Normal file
Reference in New Issue
Block a user