blob: c475acd33296244ed6fae77f2201723e28e6d5a9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#ifndef PROCESS_COMBO_H
#define PROCESS_COMBO_H
#include <stdint.h>
#include "progmem.h"
#include "quantum.h"
#ifndef COMBO_TERM
#define COMBO_TERM TAPPING_TERM
#endif
typedef struct
{
const uint16_t *keys;
uint16_t action;
uint32_t state;
#if COMBO_TERM
uint16_t timer;
uint16_t key;
#endif
} combo_t;
#if COMBO_TERM
#define COMBO(ck, ca) {.keys = &(ck)[0], .action = (ca), .state = 0, .timer = 0, .key = 0}
#else
#define COMBO(ck, ca) {.keys = &(ck)[0], .action = (ca), .state = 0 }
#endif
#define COMBO_END 0
#ifndef COMBO_COUNT
#define COMBO_COUNT 0
#endif
extern combo_t key_combos[COMBO_COUNT];
bool process_combo(uint16_t keycode, keyrecord_t *record);
void matrix_scan_combo(void);
#endif
|