diff options
Diffstat (limited to 'quantum/process_keycode/process_secure.c')
| -rw-r--r-- | quantum/process_keycode/process_secure.c | 10 |
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 @@ | |||
| 7 | 7 | ||
| 8 | bool preprocess_secure(uint16_t keycode, keyrecord_t *record) { | 8 | bool preprocess_secure(uint16_t keycode, keyrecord_t *record) { |
| 9 | if (secure_is_unlocking()) { | 9 | if (secure_is_unlocking()) { |
| 10 | if (!record->event.pressed) { | 10 | // !pressed will trigger on any already held keys (such as layer keys), |
| 11 | // and cause the request secure check to prematurely fail. | ||
| 12 | if (record->event.pressed) { | ||
| 11 | secure_keypress_event(record->event.key.row, record->event.key.col); | 13 | secure_keypress_event(record->event.key.row, record->event.key.col); |
| 12 | } | 14 | } |
| 13 | 15 | ||
| @@ -33,7 +35,11 @@ bool process_secure(uint16_t keycode, keyrecord_t *record) { | |||
| 33 | secure_is_locked() ? secure_unlock() : secure_lock(); | 35 | secure_is_locked() ? secure_unlock() : secure_lock(); |
| 34 | return false; | 36 | return false; |
| 35 | } | 37 | } |
| 38 | if (keycode == SECURE_REQUEST) { | ||
| 39 | secure_request_unlock(); | ||
| 40 | return false; | ||
| 41 | } | ||
| 36 | } | 42 | } |
| 37 | #endif | 43 | #endif |
| 38 | return true; | 44 | return true; |
| 39 | } \ No newline at end of file | 45 | } |
