Refactored as well as added support for action keys in combos

This commit is contained in:
Ofer Plesser 2016-12-16 21:50:28 +02:00
parent b6bf4e0dce
commit 6e7cfa83b9
2 changed files with 90 additions and 69 deletions

View file

@ -5,35 +5,39 @@
#include "progmem.h"
#include "quantum.h"
#ifndef COMBO_TERM
#define COMBO_TERM TAPPING_TERM
#endif
typedef struct
{
const uint16_t *keys;
uint16_t action;
uint16_t keycode;
#ifdef EXTRA_EXTRA_LONG_COMBOS
uint32_t state;
#if COMBO_TERM
#elif EXTRA_LONG_COMBOS
uint16_t state;
#else
uint8_t state;
#endif
uint16_t timer;
uint16_t key;
#ifdef COMBO_ALLOW_ACTION_KEYS
keyrecord_t prev_record;
#else
uint16_t prev_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(ck, ca) {.keys = &(ck)[0], .keycode = (ca)}
#define COMBO_ACTION(ck) {.keys = &(ck)[0]}
#define COMBO_END 0
#ifndef COMBO_COUNT
#define COMBO_COUNT 0
#endif
extern combo_t key_combos[COMBO_COUNT];
#ifndef COMBO_TERM
#define COMBO_TERM TAPPING_TERM
#endif
bool process_combo(uint16_t keycode, keyrecord_t *record);
void matrix_scan_combo(void);
void process_combo_event(uint8_t combo_index, bool pressed);
#endif
#endif