diff options
author | Drashna Jaelre <drashna@live.com> | 2019-07-22 20:23:57 -0700 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2019-08-13 10:28:09 +0900 |
commit | 64566241cbb1a22b0d09773b2c72630b3bfdfa5c (patch) | |
tree | 465cafc0e722b76d626e661cda1357fe3346a75b /tmk_core/common/action.c | |
parent | 6d9eb7e97a11f40af0303d10df83e8fb396ec987 (diff) |
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
Diffstat (limited to 'tmk_core/common/action.c')
-rw-r--r-- | tmk_core/common/action.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 285786cb7c..5172e8650a 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -44,6 +44,9 @@ int retro_tapping_counter = 0; #include <fauxclicky.h> #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); } |