From 89351fc203f3b2746202a57dd862ee6d6e48d3dc Mon Sep 17 00:00:00 2001 From: levpopov Date: Wed, 30 Mar 2022 18:31:45 -0700 Subject: [PATCH] Fix direct GPIO scanner for split keyboards https://github.com/KMKfw/kmk_firmware/issues/372 --- kmk/scanners/native_keypad_scanner.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/kmk/scanners/native_keypad_scanner.py b/kmk/scanners/native_keypad_scanner.py index 7aea040..4b1ced1 100644 --- a/kmk/scanners/native_keypad_scanner.py +++ b/kmk/scanners/native_keypad_scanner.py @@ -1,6 +1,7 @@ import keypad -from kmk.scanners import DiodeOrientation, Scanner +from kmk.matrix import DiodeOrientation, KeyEvent +from kmk.scanners import Scanner class NativeKeypadScanner(Scanner): @@ -14,6 +15,8 @@ class NativeKeypadScanner(Scanner): def __init__(self, pin_map, kp): self.pin_map = pin_map self.keypad = kp + # for split keyboards, the offset value will be assigned in Split module + self.offset = 0 self.coord_mapping = list(range(len(pin_map))) self.curr_event = keypad.Event() @@ -27,7 +30,10 @@ class NativeKeypadScanner(Scanner): ev = self.curr_event has_event = self.keypad.events.get_into(ev) if has_event: - return ev + if self.offset: + return KeyEvent(ev.key_number + self.offset, ev.pressed) + else: + return ev def keypad_matrix(row_pins, col_pins, direction=DiodeOrientation.COLUMNS):