def intify_coordinate(row, col, len_cols): return len_cols * row + col class DiodeOrientation: ''' Orientation of diodes on handwired boards. You can think of: COLUMNS = vertical ROWS = horizontal COL2ROW and ROW2COL are equivalent to their meanings in QMK. ''' COLUMNS = 0 ROWS = 1 COL2ROW = COLUMNS ROW2COL = ROWS class Scanner: ''' Base class for scanners. ''' # for split keyboards, the offset value will be assigned in Split module offset = 0 @property def coord_mapping(self): return tuple(range(self.offset, self.offset + self.key_count)) @property def key_count(self): raise NotImplementedError def scan_for_changes(self): ''' Scan for key events and return a key report if an event exists. The key report is a byte array with contents [row, col, True if pressed else False] ''' raise NotImplementedError