diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md index 42ea2339623..bb1c2c80346 100644 --- a/docs/feature_tap_dance.md +++ b/docs/feature_tap_dance.md @@ -173,7 +173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations - action = &tap_dance_actions[TD_INDEX(keycode)]; + action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)]; if (!record->event.pressed && action->state.count && !action->state.finished) { tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data; tap_code16(tap_hold->tap); diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index b8a8d32f350..ce3b8fc81f7 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -133,7 +133,7 @@ bool preprocess_tap_dance(uint16_t keycode, keyrecord_t *record) { if (!active_td || keycode == active_td) return false; - action = &tap_dance_actions[TD_INDEX(active_td)]; + action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(active_td)]; action->state.interrupted = true; action->state.interrupting_keycode = keycode; process_tap_dance_action_on_dance_finished(action); @@ -154,7 +154,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: - action = &tap_dance_actions[TD_INDEX(keycode)]; + action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)]; action->state.pressed = record->event.pressed; if (record->event.pressed) { @@ -182,7 +182,7 @@ void tap_dance_task(void) { if (!active_td || timer_elapsed(last_tap_time) <= GET_TAPPING_TERM(active_td, &(keyrecord_t){})) return; - action = &tap_dance_actions[TD_INDEX(active_td)]; + action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(active_td)]; if (!action->state.interrupted) { process_tap_dance_action_on_dance_finished(action); } diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index 2b114dabd36..c0137c14a33 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -19,6 +19,7 @@ #include #include #include "action.h" +#include "quantum_keycodes.h" typedef struct { uint16_t interrupting_keycode; @@ -74,8 +75,7 @@ typedef struct { #define ACTION_TAP_DANCE_FN_ADVANCED_WITH_RELEASE(user_fn_on_each_tap, user_fn_on_each_release, user_fn_on_dance_finished, user_fn_on_dance_reset) \ { .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, user_fn_on_each_release}, .user_data = NULL, } -#define TD(n) (QK_TAP_DANCE | TD_INDEX(n)) -#define TD_INDEX(code) ((code)&0xFF) +#define TD_INDEX(code) QK_TAP_DANCE_GET_INDEX(code) #define TAP_DANCE_KEYCODE(state) TD(((tap_dance_action_t *)state) - tap_dance_actions) extern tap_dance_action_t tap_dance_actions[]; diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index d3249bd4555..882e1d07aec 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -190,6 +190,10 @@ #define SH_T(kc) (QK_SWAP_HANDS | ((kc)&0xFF)) #define QK_SWAP_HANDS_GET_TAP_KEYCODE(kc) ((kc)&0xFF) +// Tap dance +#define TD(i) (QK_TAP_DANCE | ((i)&0xFF)) +#define QK_TAP_DANCE_GET_INDEX(kc) ((kc)&0xFF) + // MIDI aliases #define MIDI_TONE_MIN QK_MIDI_NOTE_C_0 #define MIDI_TONE_MAX QK_MIDI_NOTE_B_5 diff --git a/tests/tap_dance/examples.c b/tests/tap_dance/examples.c index 13086bbb4bb..5377b397d3c 100644 --- a/tests/tap_dance/examples.c +++ b/tests/tap_dance/examples.c @@ -83,7 +83,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case TD(CT_CLN): - action = &tap_dance_actions[TD_INDEX(keycode)]; + action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)]; if (!record->event.pressed && action->state.count && !action->state.finished) { tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data; tap_code16(tap_hold->tap);