Added support for timing out combos if a key as been pressed for longer than COMBO_TERM

This commit is contained in:
Ofer Plesser 2016-12-10 16:11:59 +02:00
parent eac8fa7999
commit b6bf4e0dce
3 changed files with 103 additions and 33 deletions

View file

@ -5,21 +5,35 @@
#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
#define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a])
#ifndef COMBO_COUNT
#define COMBO_COUNT 0
#endif
extern combo_t key_combos[1];
extern combo_t key_combos[COMBO_COUNT];
bool process_combo(uint16_t keycode, keyrecord_t *record);
void matrix_scan_combo(void);
#endif