Restored files
This commit is contained in:
13
.vscode/settings.json
vendored
Normal file
13
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"python.languageServer": "Pylance",
|
||||
"python.linting.pylintEnabled": false,
|
||||
"python.analysis.diagnosticSeverityOverrides": {
|
||||
"reportMissingModuleSource": "none"
|
||||
},
|
||||
"python.analysis.extraPaths": [
|
||||
"",
|
||||
"/home/wholteza/.vscode/extensions/joedevivo.vscode-circuitpython-0.1.15/stubs",
|
||||
"/home/wholteza/.config/Code/User/globalStorage/joedevivo.vscode-circuitpython/bundle/20211231/adafruit-circuitpython-bundle-py-20211231/lib"
|
||||
],
|
||||
"circuitpython.board.version": "7.0.0"
|
||||
}
|
||||
44
Keyboard.py
Executable file
44
Keyboard.py
Executable file
@@ -0,0 +1,44 @@
|
||||
import usb_hid
|
||||
from micropython import const
|
||||
|
||||
__BYTE_ARRRAY_LENGTH = const(8)
|
||||
__MAX_KEYPRESSES = const(6)
|
||||
|
||||
class Keyboard():
|
||||
keyboard_device: usb_hid.Device
|
||||
report: bytearray
|
||||
def __init__(self):
|
||||
self.keyboard_device = usb_hid.Device.KEYBOARD
|
||||
self.report = bytearray(__BYTE_ARRRAY_LENGTH)
|
||||
self.report_modifier = memoryview(self.report)[0:__BYTE_ARRRAY_LENGTH-__MAX_KEYPRESSES-1]
|
||||
self.report_keys = memoryview(self.report)[__BYTE_ARRRAY_LENGTH-__MAX_KEYPRESSES:]
|
||||
|
||||
def press(self, *keycodes: int) -> None:
|
||||
for keycode in keycodes:
|
||||
self.add_key_to_report(keycode)
|
||||
self.keyboard_device.send_report(self.report)
|
||||
def add_key_to_report(self, keycode: int) -> None:
|
||||
for i in range(__MAX_KEYPRESSES):
|
||||
if self.report_keys[i] == keycode:
|
||||
return
|
||||
for i in range(__MAX_KEYPRESSES):
|
||||
if self.report_keys[i] == 0:
|
||||
self.report_keys[i] = keycode
|
||||
return
|
||||
raise ValueError(
|
||||
"bytearray full!"
|
||||
)
|
||||
def release(self, *keycodes: int) -> None:
|
||||
for keycode in keycodes:
|
||||
self.remove_key_from_report(keycode)
|
||||
self.keyboard_device.send_report(self.report)
|
||||
def remove_key_from_report(self, keycode: int) -> None:
|
||||
for i in range(__MAX_KEYPRESSES):
|
||||
if self.report_keys[i] == keycode:
|
||||
self.report_keys[i] = 0
|
||||
|
||||
def release_all(self) -> None:
|
||||
"""Release all"""
|
||||
for i in range(__BYTE_ARRRAY_LENGTH):
|
||||
self.report[i] = 0
|
||||
self.keyboard_device.send_report(self.report)
|
||||
@@ -1,4 +1,4 @@
|
||||
from adafruit_hid.keyboard import Keyboard
|
||||
from Keyboard import Keyboard
|
||||
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
|
||||
from adafruit_hid.keycode import Keycode
|
||||
from adafruit_rgbled import RGBLED
|
||||
@@ -29,14 +29,11 @@ class KeyboardStateManager:
|
||||
pinout: list[list[int]]
|
||||
pins: list[list[digitalio.DigitalInOut]]
|
||||
keyboard: Keyboard
|
||||
keyboard_layout: KeyboardLayoutUS
|
||||
mcp: MCP23017
|
||||
led: RGBLED
|
||||
|
||||
def __init__(self, keymap: list[list[Keycode]]):
|
||||
self.keymap = keymap
|
||||
self.keyboard = Keyboard(usb_hid.devices)
|
||||
self.keyboard_layout = KeyboardLayoutUS(self.keyboard)
|
||||
self.keyboard = Keyboard()
|
||||
self.initialize_io_extender()
|
||||
self.initialize_pins(PINOUT)
|
||||
self.initialize_led()
|
||||
|
||||
9
code.py
9
code.py
@@ -2,12 +2,6 @@ import time
|
||||
from adafruit_hid.keycode import Keycode
|
||||
from KeyboardStateManager import KeyboardStateManager
|
||||
|
||||
pinout_rows = [
|
||||
[7, 11, 15, 0],
|
||||
[8, 4, 14, 1],
|
||||
[6, 10, 13, 2],
|
||||
[9, 5, 12, 3]
|
||||
]
|
||||
|
||||
keymap_rows = [
|
||||
[Keycode.ONE, Keycode.TWO, Keycode.THREE, Keycode.FOUR],
|
||||
@@ -20,8 +14,9 @@ keymap_rows = [
|
||||
# Sleep to avoid OS problems
|
||||
time.sleep(1)
|
||||
|
||||
keyboard_state_manager = KeyboardStateManager(pinout_rows, keymap_rows)
|
||||
keyboard_state_manager = KeyboardStateManager( keymap_rows)
|
||||
|
||||
|
||||
while True:
|
||||
keyboard_state_manager.loop()
|
||||
dfssssssssdddfffqqwweererqwerasdxc
|
||||
Reference in New Issue
Block a user