]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/process_keycode/process_combo.h
Added support for timing out combos if a key as been pressed for longer than COMBO_TERM
[qmk_firmware.git] / quantum / process_keycode / process_combo.h
index 68786c0f198d3afcd349b03f982dd746207b10c7..c475acd33296244ed6fae77f2201723e28e6d5a9 100644 (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
\ No newline at end of file