Commit | Line | Data |
---|---|---|
65faab3b JH |
1 | #include "process_leader.h" |
2 | ||
3 | __attribute__ ((weak)) | |
4 | void leader_start(void) {} | |
5 | ||
6 | __attribute__ ((weak)) | |
7 | void leader_end(void) {} | |
8 | ||
9 | // Leader key stuff | |
10 | bool leading = false; | |
11 | uint16_t leader_time = 0; | |
12 | ||
13 | uint16_t leader_sequence[5] = {0, 0, 0, 0, 0}; | |
14 | uint8_t leader_sequence_size = 0; | |
15 | ||
16 | bool process_leader(uint16_t keycode, keyrecord_t *record) { | |
17 | // Leader key set-up | |
18 | if (record->event.pressed) { | |
19 | if (!leading && keycode == KC_LEAD) { | |
20 | leader_start(); | |
21 | leading = true; | |
22 | leader_time = timer_read(); | |
23 | leader_sequence_size = 0; | |
24 | leader_sequence[0] = 0; | |
25 | leader_sequence[1] = 0; | |
26 | leader_sequence[2] = 0; | |
27 | leader_sequence[3] = 0; | |
28 | leader_sequence[4] = 0; | |
29 | return false; | |
30 | } | |
31 | if (leading && timer_elapsed(leader_time) < LEADER_TIMEOUT) { | |
32 | leader_sequence[leader_sequence_size] = keycode; | |
33 | leader_sequence_size++; | |
34 | return false; | |
35 | } | |
36 | } | |
37 | return true; | |
38 | } |