]> git.donarmstrong.com Git - qmk_firmware.git/blob - quantum/process_keycode/process_leader.c
Moves features to their own files (process_*), adds tap dance feature (#460)
[qmk_firmware.git] / quantum / process_keycode / process_leader.c
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 }