Implement XAP 'secure' core requirements (#16843)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
This commit is contained in:
		
							
								
								
									
										39
									
								
								quantum/process_keycode/process_secure.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								quantum/process_keycode/process_secure.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| // Copyright 2022 QMK | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later | ||||
|  | ||||
| #include "secure.h" | ||||
| #include "process_secure.h" | ||||
| #include "quantum_keycodes.h" | ||||
|  | ||||
| bool preprocess_secure(uint16_t keycode, keyrecord_t *record) { | ||||
|     if (secure_is_unlocking()) { | ||||
|         if (!record->event.pressed) { | ||||
|             secure_keypress_event(record->event.key.row, record->event.key.col); | ||||
|         } | ||||
|  | ||||
|         // Normal keypresses should be disabled until the sequence is completed | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     return true; | ||||
| } | ||||
|  | ||||
| bool process_secure(uint16_t keycode, keyrecord_t *record) { | ||||
| #ifndef SECURE_DISABLE_KEYCODES | ||||
|     if (!record->event.pressed) { | ||||
|         if (keycode == SECURE_LOCK) { | ||||
|             secure_lock(); | ||||
|             return false; | ||||
|         } | ||||
|         if (keycode == SECURE_UNLOCK) { | ||||
|             secure_unlock(); | ||||
|             return false; | ||||
|         } | ||||
|         if (keycode == SECURE_TOGGLE) { | ||||
|             secure_is_locked() ? secure_unlock() : secure_lock(); | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
|     return true; | ||||
| } | ||||
							
								
								
									
										15
									
								
								quantum/process_keycode/process_secure.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								quantum/process_keycode/process_secure.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| // Copyright 2022 QMK | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <stdbool.h> | ||||
| #include "action.h" | ||||
|  | ||||
| /** \brief Intercept keycodes and detect unlock sequences | ||||
|  */ | ||||
| bool preprocess_secure(uint16_t keycode, keyrecord_t *record); | ||||
|  | ||||
| /** \brief Handle any secure specific keycodes | ||||
|  */ | ||||
| bool process_secure(uint16_t keycode, keyrecord_t *record); | ||||
		Reference in New Issue
	
	Block a user