1
0
Fork 0

Review fixes for layer lock feature (#24627)

This commit is contained in:
Joel Challis 2024-11-21 13:02:49 +00:00 committed by GitHub
parent 65a8a5ff69
commit 968a611476
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 35 additions and 114 deletions

View file

@ -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();
}