summary refs log tree commit diff
path: root/quantum/process_keycode/process_combo.h
diff options
context:
space:
mode:
authorOfer Plesser <plesserofer@gmail.com>2016-12-10 16:11:59 +0200
committerOfer Plesser <plesserofer@gmail.com>2016-12-10 16:11:59 +0200
commitb6bf4e0dce062a535685c4e772f613252d401ed3 (patch)
tree26ed7273077f84e33d5cea525f7cc662637212c3 /quantum/process_keycode/process_combo.h
parenteac8fa799909817bfc7cb4043448f85551154c6b (diff)
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 68786c0f19..c475acd332 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