+#define COMBO_TIMER_ELAPSED -1
+
+#if COMBO_TERM
+#define IS_COMBO_KEY_HELD(combo) (COMBO_TIMER_ELAPSED == combo->timer ? false : true)
+#define RESET_COMBO_TIMER_AND_KEY(combo) combo->timer = 0; combo->key = 0
+#else
+#define IS_COMBO_KEY_HELD(combo) (true)
+#define RESET_COMBO_TIMER_AND_KEY(combo) do {} while (0)
+#endif
+
+
+__attribute__ ((weak))
+combo_t key_combos[COMBO_COUNT] = {
+
+};
+
+static inline void reset_combo(combo_t *combo)
+{
+ combo->state = 0;
+ RESET_COMBO_TIMER_AND_KEY(combo);
+}