Remove pointless reversed_active_layers/active_layers difference

This commit is contained in:
Josh Klar 2019-07-12 15:31:27 -07:00
parent 1fe80fec92
commit 2947f81489
No known key found for this signature in database
GPG Key ID: A4A0C7B4E8EEE222
2 changed files with 30 additions and 25 deletions

View File

@ -3,24 +3,31 @@ from kmk.kmktime import ticks_diff, ticks_ms
def df_pressed(key, state, *args, **kwargs):
"""Switches the default layer"""
state.active_layers[0] = key.meta.layer
state.reversed_active_layers = list(reversed(state.active_layers))
state.active_layers[-1] = key.meta.layer
return state
def mo_pressed(key, state, *args, **kwargs):
"""Momentarily activates layer, switches off when you let go"""
state.active_layers.append(key.meta.layer)
state.reversed_active_layers = list(reversed(state.active_layers))
state.active_layers.insert(0, key.meta.layer)
return state
def mo_released(key, state, KC, *args, **kwargs):
state.active_layers = [
layer for layer in state.active_layers
if layer != key.meta.layer
]
state.reversed_active_layers = list(reversed(state.active_layers))
# remove the first instance of the target layer
# from the active list
# under almost all normal use cases, this will
# disable the layer (but preserve it if it was triggered
# 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
@ -62,23 +69,21 @@ def lt_released(key, state, *args, **kwargs):
def tg_pressed(key, state, *args, **kwargs):
"""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
def to_pressed(key, state, *args, **kwargs):
"""Activates layer and deactivates all other layers"""
state.active_layers = [key.meta.layer]
state.reversed_active_layers = list(reversed(state.active_layers))
state.active_layers.clear()
state.active_layers.insert(0, key.meta.layer)
return state

View File

@ -12,8 +12,12 @@ class InternalState:
leader_last_len = 0
hid_pending = False
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]
reversed_active_layers = list(reversed(active_layers))
start_time = {
'lt': None,
'tg': None,
@ -39,7 +43,6 @@ class InternalState:
'hid_pending={} '
'leader_mode_history={} '
'active_layers={} '
'reversed_active_layers={} '
'start_time={} '
'timeouts={} '
'tapping={} '
@ -54,7 +57,6 @@ class InternalState:
self.hid_pending,
self.leader_mode_history,
self.active_layers,
self.reversed_active_layers,
self.start_time,
self.timeouts,
self.tapping,
@ -79,9 +81,7 @@ class InternalState:
return None
# Later-added layers have priority. Sift through the layers
# in reverse order until we find a valid keycode object
for layer in self.reversed_active_layers:
for layer in self.active_layers:
layer_key = self.config.keymap[layer][idx]
if not layer_key or layer_key == KC.TRNS: