summary refs log tree commit diff
path: root/quantum/process_keycode/process_secure.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/process_keycode/process_secure.c')
-rw-r--r--quantum/process_keycode/process_secure.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/quantum/process_keycode/process_secure.c b/quantum/process_keycode/process_secure.c
index 827ace597a..3224104c99 100644
--- a/quantum/process_keycode/process_secure.c
+++ b/quantum/process_keycode/process_secure.c
@@ -7,7 +7,9 @@
 
 bool preprocess_secure(uint16_t keycode, keyrecord_t *record) {
     if (secure_is_unlocking()) {
-        if (!record->event.pressed) {
+        // !pressed will trigger on any already held keys (such as layer keys),
+        // and cause the request secure check to prematurely fail.
+        if (record->event.pressed) {
             secure_keypress_event(record->event.key.row, record->event.key.col);
         }
 
@@ -33,7 +35,11 @@ bool process_secure(uint16_t keycode, keyrecord_t *record) {
             secure_is_locked() ? secure_unlock() : secure_lock();
             return false;
         }
+        if (keycode == SECURE_REQUEST) {
+            secure_request_unlock();
+            return false;
+        }
     }
 #endif
     return true;
-}
\ No newline at end of file
+}