Updated state manager

This commit is contained in:
2021-12-31 12:26:25 +01:00
parent 57f0c7c726
commit 1e34d84f49

View File

@@ -12,6 +12,15 @@ import usb_hid
PRESSED = False
UNPRESSED = True
MCP_ADDRESS = 32
PINOUT = [
[7, 11, 15, 0],
[8, 4, 14, 1],
[6, 10, 13, 2],
[9, 5, 12, 3]
]
class KeyboardStateManager:
active_layer: int
@@ -24,17 +33,23 @@ class KeyboardStateManager:
mcp: MCP23017
led: RGBLED
def __init__(self, pinout, keymap):
self.pinout = pinout
def __init__(self, keymap: list[list[Keycode]]):
self.keymap = keymap
self.keyboard = Keyboard(usb_hid.devices)
self.keyboard_layout = KeyboardLayoutUS(self.keyboard)
self.mcp = MCP23017(busio.I2C(board.GP1, board.GP0), 32)
self.initialize_io_extender()
self.initialize_pins(PINOUT)
self.initialize_led()
def initialize_led(self) -> None:
self.led = RGBLED(board.LED_R, board.LED_G, board.LED_B, True)
self.initialize_pins()
self.reset_led()
def initialize_pins(self):
def initialize_io_extender(self) -> None:
self.mcp = MCP23017(busio.I2C(board.GP1, board.GP0), MCP_ADDRESS)
def initialize_pins(self, pinout: list[list[int]]) -> None:
self.pinout = pinout
self.pins = []
self.state = []
for pinout_row in self.pinout:
@@ -71,4 +86,31 @@ class KeyboardStateManager:
self.led.color = value
def reset_led(self):
self.led.color = (0, 1, 0)
self.led.color = (0, 255, 0)
# Create interface for key of different type
# interface has method to handle keypress and release and gets access to key keyboards state and keyboard instance
# keyboard state should be increased with layer
# layer keys take a type, a set layer, and a color combination
# class LayerKeyType(Enum):
# hold = 1
# toggle = 2
# def handle_key(raw_keymap:list[list]]):
# for row in raw_keymap:
# for key in row:
# if key in Keycode:
# # handle as keycode
# pass
# if key.
# class LayerKey:
# type: LayerKeyType
# def __init__(self, type: LayerKeyType, layer: int):
# class KeycodeKey:
# def __init__(self):
# pass