Parent directory

process_secure.c

1282 bytes
 1// Copyright 2022 QMK
 2// SPDX-License-Identifier: GPL-2.0-or-later
 3
 4#include "secure.h"
 5#include "process_secure.h"
 6#include "quantum_keycodes.h"
 7
 8bool preprocess_secure(uint16_t keycode, keyrecord_t *record) {
 9    if (secure_is_unlocking()) {
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) {
13            secure_keypress_event(record->event.key.row, record->event.key.col);
14        }
15
16        // Normal keypresses should be disabled until the sequence is completed
17        return false;
18    }
19
20    return true;
21}
22
23bool process_secure(uint16_t keycode, keyrecord_t *record) {
24#ifndef SECURE_DISABLE_KEYCODES
25    if (!record->event.pressed) {
26        if (keycode == QK_SECURE_LOCK) {
27            secure_lock();
28            return false;
29        }
30        if (keycode == QK_SECURE_UNLOCK) {
31            secure_unlock();
32            return false;
33        }
34        if (keycode == QK_SECURE_TOGGLE) {
35            secure_is_locked() ? secure_unlock() : secure_lock();
36            return false;
37        }
38        if (keycode == QK_SECURE_REQUEST) {
39            secure_request_unlock();
40            return false;
41        }
42    }
43#endif
44    return true;
45}