tap dance: fix behavior when interrupted and hold is defined but not tap

fall into hold on interrupt if corresponding tap action isn't defined
for the case of double-tap vs tap-then-hold, continue to prefer the
double-tap interrupt following the existing permissive=false model
This commit is contained in:
Ilya Zhuravlev 2023-02-13 09:47:07 -06:00
commit 76215abd38

View file

@ -376,6 +376,8 @@ static void on_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
case SINGLE_TAP: {
if (td_entry.on_tap)
vial_keycode_down(td_entry.on_tap);
else if (td_entry.on_hold)
vial_keycode_down(td_entry.on_hold);
break;
}
case SINGLE_HOLD: {
@ -414,6 +416,10 @@ static void on_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
if (td_entry.on_tap) {
vial_keycode_tap(td_entry.on_tap);
vial_keycode_down(td_entry.on_tap);
} else if (td_entry.on_double_tap) {
vial_keycode_down(td_entry.on_double_tap);
} else if (td_entry.on_tap_hold) {
vial_keycode_down(td_entry.on_tap_hold);
}
break;
}
@ -432,6 +438,8 @@ static void on_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
case SINGLE_TAP: {
if (td_entry.on_tap)
vial_keycode_up(td_entry.on_tap);
else if (td_entry.on_hold)
vial_keycode_up(td_entry.on_hold);
break;
}
case SINGLE_HOLD: {
@ -467,6 +475,10 @@ static void on_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
case DOUBLE_SINGLE_TAP: {
if (td_entry.on_tap) {
vial_keycode_up(td_entry.on_tap);
} else if (td_entry.on_double_tap) {
vial_keycode_up(td_entry.on_double_tap);
} else if (td_entry.on_tap_hold) {
vial_keycode_up(td_entry.on_tap_hold);
}
break;
}