summaryrefslogtreecommitdiff
path: root/quantum/vial.c
diff options
context:
space:
mode:
authorIlya Zhuravlev <whatever@xyz.is>2021-07-03 14:09:08 -0400
committerIlya Zhuravlev <whatever@xyz.is>2021-07-17 23:46:10 -0400
commitbe80d90f425c04718ed70d048d8c60528cb2c0a3 (patch)
tree535e3f874de4da0ee46a4c22d38726ea458629c5 /quantum/vial.c
parent5f4aa29c0d33fc7b6ded42c41b05f3d700a50c27 (diff)
vial/tap-dance: adjust behavior for double tap+hold
Diffstat (limited to 'quantum/vial.c')
-rw-r--r--quantum/vial.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/quantum/vial.c b/quantum/vial.c
index 9d0f0411b8..3afd1fd392 100644
--- a/quantum/vial.c
+++ b/quantum/vial.c
@@ -346,7 +346,7 @@ static void on_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
if (td_entry.on_double_tap) {
register_code16(td_entry.on_double_tap);
} else if (td_entry.on_tap) {
- register_code16(td_entry.on_tap);
+ tap_code16(td_entry.on_tap);
register_code16(td_entry.on_tap);
}
break;
@@ -355,7 +355,10 @@ static void on_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
if (td_entry.on_tap_hold) {
register_code16(td_entry.on_tap_hold);
} else {
- if (td_entry.on_tap) {
+ if (td_entry.on_double_tap) {
+ tap_code16(td_entry.on_double_tap);
+ register_code16(td_entry.on_double_tap);
+ } else if (td_entry.on_tap) {
tap_code16(td_entry.on_tap);
if (td_entry.on_hold)
register_code16(td_entry.on_hold);
@@ -381,7 +384,6 @@ static void on_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
uint8_t index = (uintptr_t)user_data;
if (dynamic_keymap_get_tap_dance(index, &td_entry) != 0)
return;
- wait_ms(10);
switch (dance_state[index]) {
case SINGLE_TAP: {
if (td_entry.on_tap)
@@ -400,7 +402,6 @@ static void on_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
unregister_code16(td_entry.on_double_tap);
} else if (td_entry.on_tap) {
unregister_code16(td_entry.on_tap);
- unregister_code16(td_entry.on_tap);
}
break;
}
@@ -408,7 +409,9 @@ static void on_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
if (td_entry.on_tap_hold) {
unregister_code16(td_entry.on_tap_hold);
} else {
- if (td_entry.on_tap) {
+ if (td_entry.on_double_tap) {
+ unregister_code16(td_entry.on_double_tap);
+ } else if (td_entry.on_tap) {
if (td_entry.on_hold)
unregister_code16(td_entry.on_hold);
else