diff --git a/quantum/process_keycode/process_key_lock.c b/quantum/process_keycode/process_key_lock.c index 304a89c5cda..67a8186b572 100644 --- a/quantum/process_keycode/process_key_lock.c +++ b/quantum/process_keycode/process_key_lock.c @@ -57,7 +57,11 @@ static inline uint16_t translate_keycode(uint16_t keycode) { void cancel_key_lock(void) { watching = false; - UNSET_KEY_STATE(0x0); + // Clear the full 256-bit state, otherwise every actually-locked key will still be latched. + key_state[0] = 0; + key_state[1] = 0; + key_state[2] = 0; + key_state[3] = 0; } bool process_key_lock(uint16_t *keycode, keyrecord_t *record) {