From 76215abd384ae9b44cb211c7ff4ecd5927be149d Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Mon, 13 Feb 2023 09:47:07 -0600 Subject: [PATCH] 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 --- quantum/vial.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/quantum/vial.c b/quantum/vial.c index 93bb15e4e9..6ef3f40dea 100644 --- a/quantum/vial.c +++ b/quantum/vial.c @@ -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; }