From 3261c408e454dbc3cc2a1591ba62575036af19ad Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 22 Jul 2019 20:23:57 -0700 Subject: [PATCH] Add support for TAP_CODE_DELAY to Hold-Tap keys (#5400) * Add support for TAP_CODE_DELAY to Hold-Tap keys * Better handling for tap code delay and caps version --- tmk_core/common/action.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 285786cb7..5172e8650 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -44,6 +44,9 @@ int retro_tapping_counter = 0; #include #endif +#ifndef TAP_CODE_DELAY +# define TAP_CODE_DELAY 0 +#endif #ifndef TAP_HOLD_CAPS_DELAY # define TAP_HOLD_CAPS_DELAY 80 #endif @@ -330,6 +333,9 @@ void process_action(keyrecord_t *record, action_t action) } else { if (tap_count > 0) { dprint("MODS_TAP: Tap: unregister_code\n"); + if (action.layer_tap.code == KC_CAPS) { + wait_ms(TAP_HOLD_CAPS_DELAY); + } unregister_code(action.key.code); } else { dprint("MODS_TAP: No tap: add_mods\n"); @@ -522,7 +528,9 @@ void process_action(keyrecord_t *record, action_t action) dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n"); if (action.layer_tap.code == KC_CAPS) { wait_ms(TAP_HOLD_CAPS_DELAY); - } + } else { + wait_ms(TAP_CODE_DELAY); + } unregister_code(action.layer_tap.code); } else { dprint("KEYMAP_TAP_KEY: No tap: Off on release\n"); @@ -618,6 +626,7 @@ void process_action(keyrecord_t *record, action_t action) if (event.pressed) { register_code(action.swap.code); } else { + wait_ms(TAP_CODE_DELAY); unregister_code(action.swap.code); *record = (keyrecord_t){}; // hack: reset tap mode } @@ -670,8 +679,7 @@ void process_action(keyrecord_t *record, action_t action) retro_tapping_counter = 0; } else { if (retro_tapping_counter == 2) { - register_code(action.layer_tap.code); - unregister_code(action.layer_tap.code); + tap_code(action.layer_tap.code); } retro_tapping_counter = 0; } @@ -858,12 +866,9 @@ void tap_code(uint8_t code) { register_code(code); if (code == KC_CAPS) { wait_ms(TAP_HOLD_CAPS_DELAY); - } - #if TAP_CODE_DELAY > 0 - else { + } else { wait_ms(TAP_CODE_DELAY); } - #endif unregister_code(code); }