Try to fix various advanced layers
This commit is contained in:
parent
b92aceb682
commit
e2ed95556a
@ -63,6 +63,15 @@ class Firmware:
|
|||||||
self._hid_helper_inst.create_report(self._state.keys_pressed).send()
|
self._hid_helper_inst.create_report(self._state.keys_pressed).send()
|
||||||
self._state.resolve_hid()
|
self._state.resolve_hid()
|
||||||
|
|
||||||
|
def _send_key(self, key):
|
||||||
|
if not getattr(key, 'no_press', None):
|
||||||
|
self._state.force_keycode_down(key)
|
||||||
|
self._send_hid()
|
||||||
|
|
||||||
|
if not getattr(key, 'no_release', None):
|
||||||
|
self._state.force_keycode_up(key)
|
||||||
|
self._send_hid()
|
||||||
|
|
||||||
def go(self):
|
def go(self):
|
||||||
assert self.keymap, 'must define a keymap with at least one row'
|
assert self.keymap, 'must define a keymap with at least one row'
|
||||||
assert self.row_pins, 'no GPIO pins defined for matrix rows'
|
assert self.row_pins, 'no GPIO pins defined for matrix rows'
|
||||||
@ -95,15 +104,13 @@ class Firmware:
|
|||||||
if self._state.hid_pending:
|
if self._state.hid_pending:
|
||||||
self._send_hid()
|
self._send_hid()
|
||||||
|
|
||||||
|
for key in self._state.pending_keys:
|
||||||
|
self._send_key(key)
|
||||||
|
self._state.pending_key_handled()
|
||||||
|
|
||||||
if self._state.macro_pending:
|
if self._state.macro_pending:
|
||||||
for key in self._state.macro_pending(self):
|
for key in self._state.macro_pending(self):
|
||||||
if not getattr(key, 'no_press', None):
|
self._send_key(key)
|
||||||
self._state.force_keycode_down(key)
|
|
||||||
self._send_hid()
|
|
||||||
|
|
||||||
if not getattr(key, 'no_release', None):
|
|
||||||
self._state.force_keycode_up(key)
|
|
||||||
self._send_hid()
|
|
||||||
|
|
||||||
self._state.resolve_macro()
|
self._state.resolve_macro()
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ GESC_TRIGGERS = {
|
|||||||
|
|
||||||
class InternalState:
|
class InternalState:
|
||||||
keys_pressed = set()
|
keys_pressed = set()
|
||||||
pending_keys = set()
|
pending_keys = []
|
||||||
macro_pending = None
|
macro_pending = None
|
||||||
leader_pending = None
|
leader_pending = None
|
||||||
leader_last_len = 0
|
leader_last_len = 0
|
||||||
@ -176,10 +176,10 @@ class InternalState:
|
|||||||
# Sets the timer start and acts like MO otherwise
|
# Sets the timer start and acts like MO otherwise
|
||||||
self.start_time['lm'] = ticks_ms()
|
self.start_time['lm'] = ticks_ms()
|
||||||
self.keys_pressed.add(changed_key.kc)
|
self.keys_pressed.add(changed_key.kc)
|
||||||
return self._layer_mo(changed_key, is_pressed)
|
else:
|
||||||
|
|
||||||
self.keys_pressed.discard(changed_key.kc)
|
self.keys_pressed.discard(changed_key.kc)
|
||||||
self.start_time['lm'] = None
|
self.start_time['lm'] = None
|
||||||
|
|
||||||
return self._layer_mo(changed_key, is_pressed)
|
return self._layer_mo(changed_key, is_pressed)
|
||||||
|
|
||||||
def _layer_lt(self, changed_key, is_pressed):
|
def _layer_lt(self, changed_key, is_pressed):
|
||||||
@ -187,17 +187,18 @@ class InternalState:
|
|||||||
if is_pressed:
|
if is_pressed:
|
||||||
# Sets the timer start and acts like MO otherwise
|
# Sets the timer start and acts like MO otherwise
|
||||||
self.start_time['lt'] = ticks_ms()
|
self.start_time['lt'] = ticks_ms()
|
||||||
return self._layer_mo(changed_key, is_pressed)
|
self._layer_mo(changed_key, is_pressed)
|
||||||
|
else:
|
||||||
# On keyup, check timer, and press key if needed.
|
# On keyup, check timer, and press key if needed.
|
||||||
if self.start_time['lt'] and (
|
if self.start_time['lt'] and (
|
||||||
ticks_diff(ticks_ms(), self.start_time['lt']) < self.config.tap_time
|
ticks_diff(ticks_ms(), self.start_time['lt']) < self.config.tap_time
|
||||||
):
|
):
|
||||||
self.hid_pending = True
|
self.hid_pending = True
|
||||||
self.pending_keys.add(changed_key.kc)
|
self.pending_keys.append(changed_key.kc)
|
||||||
|
|
||||||
|
self._layer_mo(changed_key, is_pressed)
|
||||||
self.start_time['lt'] = None
|
self.start_time['lt'] = None
|
||||||
return self._layer_mo(changed_key, is_pressed)
|
return self
|
||||||
|
|
||||||
def _layer_tg(self, changed_key, is_pressed):
|
def _layer_tg(self, changed_key, is_pressed):
|
||||||
"""Toggles the layer (enables it if not active, and vise versa)"""
|
"""Toggles the layer (enables it if not active, and vise versa)"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user