Remove pointless reversed_active_layers/active_layers difference
This commit is contained in:
parent
1fe80fec92
commit
2947f81489
@ -3,24 +3,31 @@ from kmk.kmktime import ticks_diff, ticks_ms
|
|||||||
|
|
||||||
def df_pressed(key, state, *args, **kwargs):
|
def df_pressed(key, state, *args, **kwargs):
|
||||||
"""Switches the default layer"""
|
"""Switches the default layer"""
|
||||||
state.active_layers[0] = key.meta.layer
|
state.active_layers[-1] = key.meta.layer
|
||||||
state.reversed_active_layers = list(reversed(state.active_layers))
|
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
def mo_pressed(key, state, *args, **kwargs):
|
def mo_pressed(key, state, *args, **kwargs):
|
||||||
"""Momentarily activates layer, switches off when you let go"""
|
"""Momentarily activates layer, switches off when you let go"""
|
||||||
state.active_layers.append(key.meta.layer)
|
state.active_layers.insert(0, key.meta.layer)
|
||||||
state.reversed_active_layers = list(reversed(state.active_layers))
|
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
def mo_released(key, state, KC, *args, **kwargs):
|
def mo_released(key, state, KC, *args, **kwargs):
|
||||||
state.active_layers = [
|
# remove the first instance of the target layer
|
||||||
layer for layer in state.active_layers
|
# from the active list
|
||||||
if layer != key.meta.layer
|
# under almost all normal use cases, this will
|
||||||
]
|
# disable the layer (but preserve it if it was triggered
|
||||||
state.reversed_active_layers = list(reversed(state.active_layers))
|
# as a default layer, etc.)
|
||||||
|
# this also resolves an issue where using DF() on a layer
|
||||||
|
# triggered by MO() and then defaulting to the MO()'s layer
|
||||||
|
# would result in no layers active
|
||||||
|
try:
|
||||||
|
del_idx = state.active_layers.index(key.meta.layer)
|
||||||
|
del state.active_layers[del_idx]
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
@ -62,23 +69,21 @@ def lt_released(key, state, *args, **kwargs):
|
|||||||
|
|
||||||
def tg_pressed(key, state, *args, **kwargs):
|
def tg_pressed(key, state, *args, **kwargs):
|
||||||
"""Toggles the layer (enables it if not active, and vise versa)"""
|
"""Toggles the layer (enables it if not active, and vise versa)"""
|
||||||
if key.meta.layer in state.active_layers:
|
|
||||||
state.active_layers = [
|
|
||||||
layer for layer in state.active_layers
|
|
||||||
if layer != key.meta.layer
|
|
||||||
]
|
|
||||||
else:
|
|
||||||
state.active_layers.append(key.meta.layer)
|
|
||||||
|
|
||||||
state.reversed_active_layers = list(reversed(state.active_layers))
|
# See mo_released for implementation details around this
|
||||||
|
try:
|
||||||
|
del_idx = state.active_layers.index(key.meta.layer)
|
||||||
|
del state.active_layers[del_idx]
|
||||||
|
except ValueError:
|
||||||
|
state.active_layers.insert(0, key.meta.layer)
|
||||||
|
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
def to_pressed(key, state, *args, **kwargs):
|
def to_pressed(key, state, *args, **kwargs):
|
||||||
"""Activates layer and deactivates all other layers"""
|
"""Activates layer and deactivates all other layers"""
|
||||||
state.active_layers = [key.meta.layer]
|
state.active_layers.clear()
|
||||||
state.reversed_active_layers = list(reversed(state.active_layers))
|
state.active_layers.insert(0, key.meta.layer)
|
||||||
|
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
@ -12,8 +12,12 @@ class InternalState:
|
|||||||
leader_last_len = 0
|
leader_last_len = 0
|
||||||
hid_pending = False
|
hid_pending = False
|
||||||
leader_mode_history = []
|
leader_mode_history = []
|
||||||
|
|
||||||
|
# this should almost always be PREpended to, replaces
|
||||||
|
# former use of reversed_active_layers which had pointless
|
||||||
|
# overhead (the underlying list was never used anyway)
|
||||||
active_layers = [0]
|
active_layers = [0]
|
||||||
reversed_active_layers = list(reversed(active_layers))
|
|
||||||
start_time = {
|
start_time = {
|
||||||
'lt': None,
|
'lt': None,
|
||||||
'tg': None,
|
'tg': None,
|
||||||
@ -39,7 +43,6 @@ class InternalState:
|
|||||||
'hid_pending={} '
|
'hid_pending={} '
|
||||||
'leader_mode_history={} '
|
'leader_mode_history={} '
|
||||||
'active_layers={} '
|
'active_layers={} '
|
||||||
'reversed_active_layers={} '
|
|
||||||
'start_time={} '
|
'start_time={} '
|
||||||
'timeouts={} '
|
'timeouts={} '
|
||||||
'tapping={} '
|
'tapping={} '
|
||||||
@ -54,7 +57,6 @@ class InternalState:
|
|||||||
self.hid_pending,
|
self.hid_pending,
|
||||||
self.leader_mode_history,
|
self.leader_mode_history,
|
||||||
self.active_layers,
|
self.active_layers,
|
||||||
self.reversed_active_layers,
|
|
||||||
self.start_time,
|
self.start_time,
|
||||||
self.timeouts,
|
self.timeouts,
|
||||||
self.tapping,
|
self.tapping,
|
||||||
@ -79,9 +81,7 @@ class InternalState:
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Later-added layers have priority. Sift through the layers
|
for layer in self.active_layers:
|
||||||
# in reverse order until we find a valid keycode object
|
|
||||||
for layer in self.reversed_active_layers:
|
|
||||||
layer_key = self.config.keymap[layer][idx]
|
layer_key = self.config.keymap[layer][idx]
|
||||||
|
|
||||||
if not layer_key or layer_key == KC.TRNS:
|
if not layer_key or layer_key == KC.TRNS:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user