diff --git a/kmk/firmware.py b/kmk/firmware.py index 4225bfb..a905dcb 100644 --- a/kmk/firmware.py +++ b/kmk/firmware.py @@ -139,7 +139,14 @@ class Firmware: if self.is_master is not None: return self.is_master - return supervisor.runtime.serial_connected + # Working around https://github.com/adafruit/circuitpython/issues/1769 + try: + self._hid_helper_inst.create_report([]).send() + self.is_master = True + except OSError: + self.is_master = False + + return self.is_master def init_uart(self, pin, timeout=20): if self._master_half(): @@ -153,6 +160,8 @@ class Firmware: assert self.col_pins, 'no GPIO pins defined for matrix columns' assert self.diode_orientation is not None, 'diode orientation must be defined' + self._hid_helper_inst = self.hid_helper() + # Split keyboard Init if self.split_flip and not self._master_half(): self.col_pins = list(reversed(self.col_pins)) @@ -173,8 +182,6 @@ class Firmware: swap_indicies=getattr(self, 'swap_indicies', None), ) - self._hid_helper_inst = self.hid_helper() - # Compile string leader sequences for k, v in self.leader_dictionary.items(): if not isinstance(k, tuple):