aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/process_keycode/process_combo.h
blob: c475acd33296244ed6fae77f2201723e28e6d5a9 (plain)
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