forked from mirrors/qmk_userspace
Refactored as well as added support for action keys in combos
This commit is contained in:
parent
b6bf4e0dce
commit
6e7cfa83b9
2 changed files with 90 additions and 69 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue