aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/process_keycode/process_combo.h
diff options
context:
space:
mode:
authorGravatar Ofer Plesser <plesserofer@gmail.com>2016-12-10 16:11:59 +0200
committerGravatar Ofer Plesser <plesserofer@gmail.com>2016-12-10 16:11:59 +0200
commitb6bf4e0dce062a535685c4e772f613252d401ed3 (patch)
tree26ed7273077f84e33d5cea525f7cc662637212c3 /quantum/process_keycode/process_combo.h
parenteac8fa799909817bfc7cb4043448f85551154c6b (diff)
downloadqmk_firmware-b6bf4e0dce062a535685c4e772f613252d401ed3.tar.gz
Added support for timing out combos if a key as been pressed for longer than COMBO_TERM
Diffstat (limited to 'quantum/process_keycode/process_combo.h')
-rw-r--r--quantum/process_keycode/process_combo.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h
index 68786c0f1..c475acd33 100644
--- a/quantum/process_keycode/process_combo.h
+++ b/quantum/process_keycode/process_combo.h
@@ -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 \ No newline at end of file