Fix direct GPIO scanner for split keyboards

https://github.com/KMKfw/kmk_firmware/issues/372
This commit is contained in:
levpopov 2022-03-30 18:31:45 -07:00 committed by Kyle Brown
parent 4b03ba846a
commit 89351fc203

View File

@ -1,6 +1,7 @@
import keypad import keypad
from kmk.scanners import DiodeOrientation, Scanner from kmk.matrix import DiodeOrientation, KeyEvent
from kmk.scanners import Scanner
class NativeKeypadScanner(Scanner): class NativeKeypadScanner(Scanner):
@ -14,6 +15,8 @@ class NativeKeypadScanner(Scanner):
def __init__(self, pin_map, kp): def __init__(self, pin_map, kp):
self.pin_map = pin_map self.pin_map = pin_map
self.keypad = kp 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.coord_mapping = list(range(len(pin_map)))
self.curr_event = keypad.Event() self.curr_event = keypad.Event()
@ -27,6 +30,9 @@ class NativeKeypadScanner(Scanner):
ev = self.curr_event ev = self.curr_event
has_event = self.keypad.events.get_into(ev) has_event = self.keypad.events.get_into(ev)
if has_event: if has_event:
if self.offset:
return KeyEvent(ev.key_number + self.offset, ev.pressed)
else:
return ev return ev