Updated state manager
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user