diff --git a/kmk/kmk_keyboard.py b/kmk/kmk_keyboard.py index 8ff202b..ffc4d0e 100644 --- a/kmk/kmk_keyboard.py +++ b/kmk/kmk_keyboard.py @@ -4,8 +4,7 @@ from kmk.consts import KMK_RELEASE, UnicodeMode from kmk.hid import BLEHID, USBHID, AbstractHID, HIDModes from kmk.keys import KC from kmk.kmktime import ticks_add, ticks_diff -from kmk.scanners import intify_coordinate -from kmk.scanners.digitalio_matrix import MatrixScanner +from kmk.scanners.native_keypad_scanner import keypad_matrix class Sandbox: @@ -26,7 +25,6 @@ class KMKKeyboard: col_pins = None diode_orientation = None matrix = None - matrix_scanner = MatrixScanner uart_buffer = [] unicode_mode = UnicodeMode.NOOP @@ -74,7 +72,7 @@ class KMKKeyboard: 'KMKKeyboard(' 'debug_enabled={} ' 'diode_orientation={} ' - 'matrix_scanner={} ' + 'matrix={} ' 'unicode_mode={} ' '_hid_helper={} ' 'keys_pressed={} ' @@ -86,7 +84,7 @@ class KMKKeyboard: ).format( self.debug_enabled, self.diode_orientation, - self.matrix_scanner, + self.matrix, self.unicode_mode, self._hid_helper, # internal state @@ -291,16 +289,9 @@ class KMKKeyboard: return if not self.coord_mapping: - self.coord_mapping = [] - rows_to_calc = len(self.row_pins) cols_to_calc = len(self.col_pins) - - for ridx in range(rows_to_calc): - for cidx in range(cols_to_calc): - self.coord_mapping.append( - intify_coordinate(ridx, cidx, cols_to_calc) - ) + self.coord_mapping = list(range(cols_to_calc * rows_to_calc)) def _init_hid(self): if self.hid_type == HIDModes.NOOP: @@ -317,14 +308,11 @@ class KMKKeyboard: def _init_matrix(self): if self.matrix is None: if self.debug_enabled: - print('Initialising matrix scanner from self.matrix_scanner') - self.matrix = self.matrix_scanner( - cols=self.col_pins, - rows=self.row_pins, - diode_orientation=self.diode_orientation, - rollover_cols_every_rows=getattr( - self, 'rollover_cols_every_rows', None - ), + print('Initialising default matrix scanner.') + self.matrix = keypad_matrix( + col_pins=self.col_pins, + row_pins=self.row_pins, + direction=self.diode_orientation, ) else: if self.debug_enabled: diff --git a/kmk/scanners/__init__.py b/kmk/scanners/__init__.py index fd6c972..db0f8d5 100644 --- a/kmk/scanners/__init__.py +++ b/kmk/scanners/__init__.py @@ -22,8 +22,7 @@ class Scanner: Base class for scanners. ''' - def __init__(self): - self.coord_mapping = None + coord_mapping = None def scan_for_changes(self): ''' diff --git a/tests/keyboard_test.py b/tests/keyboard_test.py index ac8941c..183940f 100644 --- a/tests/keyboard_test.py +++ b/tests/keyboard_test.py @@ -7,6 +7,7 @@ from kmk.hid import HIDModes from kmk.keys import ModifierKey from kmk.kmk_keyboard import KMKKeyboard from kmk.scanners import DiodeOrientation +from kmk.scanners.digitalio_matrix import MatrixScanner class DigitalInOut(Mock): @@ -29,6 +30,11 @@ class KeyboardTest: self.keyboard.col_pins = (DigitalInOut(),) self.keyboard.row_pins = self.pins self.keyboard.diode_orientation = DiodeOrientation.COL2ROW + self.keyboard.matrix = MatrixScanner( + cols=self.keyboard.col_pins, + rows=self.keyboard.row_pins, + diode_orientation=self.keyboard.diode_orientation, + ) self.keyboard.keymap = keymap self.keyboard._init(hid_type=HIDModes.NOOP)