aboutsummaryrefslogtreecommitdiff
path: root/quantum/layer_lock.c
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2024-11-21 13:02:49 +0000
committerGitHub <noreply@github.com>2024-11-21 13:02:49 +0000
commit968a611476c7add787f737be9521d2968d1f4451 (patch)
tree57038a01ca75e2a33870696a84665d452ce6cc98 /quantum/layer_lock.c
parent65a8a5ff69289a5cb8fce6555b774573e4452a79 (diff)
Review fixes for layer lock feature (#24627)
Diffstat (limited to 'quantum/layer_lock.c')
-rw-r--r--quantum/layer_lock.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/quantum/layer_lock.c b/quantum/layer_lock.c
index 9ee3c307dc..9fc84bcfca 100644
--- a/quantum/layer_lock.c
+++ b/quantum/layer_lock.c
@@ -23,12 +23,18 @@ layer_state_t locked_layers = 0;
# if defined(LAYER_LOCK_IDLE_TIMEOUT) && LAYER_LOCK_IDLE_TIMEOUT > 0
uint32_t layer_lock_timer = 0;
-void layer_lock_task(void) {
+void layer_lock_timeout_task(void) {
if (locked_layers && timer_elapsed32(layer_lock_timer) > LAYER_LOCK_IDLE_TIMEOUT) {
layer_lock_all_off();
layer_lock_timer = timer_read32();
}
}
+void layer_lock_activity_trigger(void) {
+ layer_lock_timer = timer_read32();
+}
+# else
+void layer_lock_timeout_task(void) {}
+void layer_lock_activity_trigger(void) {}
# endif // LAYER_LOCK_IDLE_TIMEOUT > 0
bool is_layer_locked(uint8_t layer) {
@@ -44,9 +50,7 @@ void layer_lock_invert(uint8_t layer) {
}
# endif // NO_ACTION_ONESHOT
layer_on(layer);
-# if defined(LAYER_LOCK_IDLE_TIMEOUT) && LAYER_LOCK_IDLE_TIMEOUT > 0
- layer_lock_timer = timer_read32();
-# endif // LAYER_LOCK_IDLE_TIMEOUT > 0
+ layer_lock_activity_trigger();
} else { // Layer is being unlocked.
layer_off(layer);
}
@@ -72,10 +76,25 @@ void layer_lock_all_off(void) {
layer_lock_set_kb(locked_layers);
}
+#else // NO_ACTION_LAYER
+bool is_layer_locked(uint8_t layer) {
+ return false;
+}
+void layer_lock_on(uint8_t layer) {}
+void layer_lock_off(uint8_t layer) {}
+void layer_lock_all_off(void) {}
+void layer_lock_invert(uint8_t layer) {}
+void layer_lock_timeout_task(void) {}
+void layer_lock_activity_trigger(void) {}
+#endif // NO_ACTION_LAYER
+
__attribute__((weak)) bool layer_lock_set_kb(layer_state_t locked_layers) {
return layer_lock_set_user(locked_layers);
}
__attribute__((weak)) bool layer_lock_set_user(layer_state_t locked_layers) {
return true;
}
-#endif // NO_ACTION_LAYER
+
+void layer_lock_task(void) {
+ layer_lock_timeout_task();
+}