process_secure.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2022 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "secure.h"
  4. #include "process_secure.h"
  5. #include "quantum_keycodes.h"
  6. bool preprocess_secure(uint16_t keycode, keyrecord_t *record) {
  7. if (secure_is_unlocking()) {
  8. // !pressed will trigger on any already held keys (such as layer keys),
  9. // and cause the request secure check to prematurely fail.
  10. if (record->event.pressed) {
  11. secure_keypress_event(record->event.key.row, record->event.key.col);
  12. }
  13. // Normal keypresses should be disabled until the sequence is completed
  14. return false;
  15. }
  16. return true;
  17. }
  18. bool process_secure(uint16_t keycode, keyrecord_t *record) {
  19. #ifndef SECURE_DISABLE_KEYCODES
  20. if (!record->event.pressed) {
  21. if (keycode == QK_SECURE_LOCK) {
  22. secure_lock();
  23. return false;
  24. }
  25. if (keycode == QK_SECURE_UNLOCK) {
  26. secure_unlock();
  27. return false;
  28. }
  29. if (keycode == QK_SECURE_TOGGLE) {
  30. secure_is_locked() ? secure_unlock() : secure_lock();
  31. return false;
  32. }
  33. if (keycode == QK_SECURE_REQUEST) {
  34. secure_request_unlock();
  35. return false;
  36. }
  37. }
  38. #endif
  39. return true;
  40. }