diff options
Diffstat (limited to 'layout.py')
-rw-r--r-- | layout.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/layout.py b/layout.py new file mode 100644 index 0000000..3dfb828 --- /dev/null +++ b/layout.py @@ -0,0 +1,46 @@ +# Describe the layout used in the keyboard +# +import board +from digitalio import Pull + +from kmk.scanners import DiodeOrientation +col_pins = (board.GP26,board.GP27,board.GP28,board.GP29) +row_pins = (board.GP22,board.GP20,board.GP23,board.GP21) + + +diode_orientation = DiodeOrientation.ROW2COL + +from digitalio import DigitalInOut, Direction, Pull + +def check_key(): + """ Check if a key is pressed and return True if so. + Scan all the keys only once, and return False if nothing where pressed. + """ + if DiodeOrientation == DiodeOrientation.ROW2COL: + inputs = row_pins + outputs = col_pins + else: + inputs = col_pins + outputs = row_pins + + for in_pin in inputs: + with DigitalInOut(in_pin) as in_io: + in_io.direction = Direction.INPUT + in_io.pull = Pull.DOWN + + for out_pin in outputs: + with DigitalInOut(out_pin) as out_io: + out_io.direction = Direction.OUTPUT + out_io.value = True + result = in_io.value + + if result: + return result + return False + +def set_keyboard(keyboard): + """ Initialize the kmk keyboard with the values defined here. + """ + keyboard.row_pins = row_pins + keyboard.col_pins = col_pins + keyboard.diode_orientation = diode_orientation |