keyboard stuff
1# Secure
2
3The secure feature aims to prevent unwanted interaction without user intervention.
4
5::: tip
6Secure does **not** currently implement encryption/decryption/etc and should not be a replacement where a strong hardware/software based solution is required.
7:::
8
9### Unlock sequence
10
11To unlock, the user must perform a set of actions. This can optionally be configured to be multiple keys.
12
13* While unlocking all keyboard input is ignored
14* Incorrect attempts will revert back to the previously locked state
15
16### Automatic Locking
17
18Once unlocked, the keyboard will revert back to a locked state after the configured timeout.
19The timeout can be refreshed by using the `secure_activity_event` function, for example from one of the various [hooks](../custom_quantum_functions).
20
21## Usage
22
23Add the following to your `rules.mk`:
24
25```make
26SECURE_ENABLE = yes
27```
28
29## Keycodes
30
31| Key |Aliases | Description |
32|---------------------|---------|--------------------------------------------------------------------------------|
33| `QK_SECURE_LOCK` |`SE_LOCK`| Revert back to a locked state |
34| `QK_SECURE_UNLOCK` |`SE_UNLK`| Forces unlock without performing a unlock sequence |
35| `QK_SECURE_TOGGLE` |`SE_TOGG`| Toggle directly between locked and unlock without performing a unlock sequence |
36| `QK_SECURE_REQUEST` |`SE_REQ` | Request that user perform the unlock sequence |
37
38## Configuration
39
40| Define | Default | Description |
41|-------------------------|----------------|---------------------------------------------------------------------------------|
42|`SECURE_UNLOCK_TIMEOUT` | `5000` | Timeout for the user to perform the configured unlock sequence - `0` to disable |
43|`SECURE_IDLE_TIMEOUT` | `60000` | Timeout while unlocked before returning to locked - `0` to disable |
44|`SECURE_UNLOCK_SEQUENCE` | `{ { 0, 0 } }` | Array of matrix locations describing a sequential sequence of keypresses |
45
46## Functions
47
48| Function | Description |
49|---------------------------|----------------------------------------------------------------------------|
50| `secure_is_locked()` | Check if the device is currently locked |
51| `secure_is_unlocking()` | Check if an unlock sequence is currently in progress |
52| `secure_is_unlocked()` | Check if the device is currently unlocked |
53| `secure_lock()` | Lock down the device |
54| `secure_unlock()` | Force unlock the device - bypasses user unlock sequence |
55| `secure_request_unlock()` | Begin listening for an unlock sequence |
56| `secure_activity_event()` | Flag that user activity has happened and the device should remain unlocked |