Add LeaderMode.TIMEOUT (QMK default Leader mode)

This allows leader sequences to "time out" rather than requiring an
Enter keypress to end.

This also rolls back some unnecessary changes from #72 to the matrix
scanner for performance reasons.

In theory we can use this in the future for Tap Dance support (#40)

Resolves #1
Resolves #37
This commit is contained in:
Josh Klar
2018-10-19 01:49:37 -07:00
parent aa4b164067
commit 2d1290a12c
5 changed files with 77 additions and 50 deletions

View File

@@ -55,6 +55,7 @@ class Firmware:
tap_time = 300
leader_mode = LeaderMode.ENTER
leader_dictionary = {}
leader_timeout = 1000
hid_helper = USB_HID
@@ -94,28 +95,30 @@ class Firmware:
print("Firin' lazers. Keyboard is booted.")
while True:
for update in self.matrix.scan_for_changes():
if update is not None:
self._state.matrix_changed(
update[0],
update[1],
update[2],
)
update = self.matrix.scan_for_changes()
if update is not None:
self._state.matrix_changed(
update[0],
update[1],
update[2],
)
if self._state.hid_pending:
self._send_hid()
if self._state.hid_pending:
self._send_hid()
for key in self._state.pending_keys:
self._send_key(key)
self._state.pending_key_handled()
if self.debug_enabled:
print('New State: {}'.format(self._state._to_dict()))
if self._state.macro_pending:
for key in self._state.macro_pending(self):
self._send_key(key)
self._state.process_timeouts()
self._state.resolve_macro()
for key in self._state.pending_keys:
self._send_key(key)
self._state.pending_key_handled()
if self.debug_enabled:
print('New State: {}'.format(self._state._to_dict()))
if self._state.macro_pending:
for key in self._state.macro_pending(self):
self._send_key(key)
self._state.resolve_macro()
gc.collect()