Merge pull request #769 from pvinis/fix/tap-dance-each-tap-restore
[tap dance] restore each_tap functionality
This commit is contained in:
commit
bd57faa7bf
|
@ -70,6 +70,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
|
||||||
action->state.keycode = keycode;
|
action->state.keycode = keycode;
|
||||||
action->state.count++;
|
action->state.count++;
|
||||||
action->state.timer = timer_read();
|
action->state.timer = timer_read();
|
||||||
|
process_tap_dance_action_on_each_tap (action);
|
||||||
|
|
||||||
if (last_td && last_td != keycode) {
|
if (last_td && last_td != keycode) {
|
||||||
qk_tap_dance_action_t *paction = &tap_dance_actions[last_td - QK_TAP_DANCE];
|
qk_tap_dance_action_t *paction = &tap_dance_actions[last_td - QK_TAP_DANCE];
|
||||||
|
|
|
@ -39,15 +39,17 @@ typedef struct
|
||||||
|
|
||||||
#define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) { \
|
#define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) { \
|
||||||
.fn = { NULL, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset }, \
|
.fn = { NULL, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset }, \
|
||||||
.user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }) \
|
.user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }), \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ACTION_TAP_DANCE_FN(user_fn) { \
|
#define ACTION_TAP_DANCE_FN(user_fn) { \
|
||||||
.fn = { NULL, user_fn, NULL } \
|
.fn = { NULL, user_fn, NULL }, \
|
||||||
|
.user_data = NULL, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset) { \
|
#define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset) { \
|
||||||
.fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset } \
|
.fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset }, \
|
||||||
|
.user_data = NULL, \
|
||||||
}
|
}
|
||||||
|
|
||||||
extern qk_tap_dance_action_t tap_dance_actions[];
|
extern qk_tap_dance_action_t tap_dance_actions[];
|
||||||
|
|
|
@ -526,7 +526,7 @@ This array specifies what actions shall be taken when a tap-dance key is in acti
|
||||||
|
|
||||||
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
|
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
|
||||||
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
|
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
|
||||||
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
|
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
|
||||||
|
|
||||||
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
|
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue