diff options
| author | Drashna Jaelre <drashna@live.com> | 2019-07-22 20:23:57 -0700 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-07-22 20:23:57 -0700 |
| commit | 3261c408e454dbc3cc2a1591ba62575036af19ad (patch) | |
| tree | bf877266d79a30b5e0ab8cb115338e7382702259 | |
| parent | d41961c9eddb78591d3b55ea65e6e0baff4bdd69 (diff) | |
| download | qmk_firmware-3261c408e454dbc3cc2a1591ba62575036af19ad.tar.gz qmk_firmware-3261c408e454dbc3cc2a1591ba62575036af19ad.zip | |
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
| -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 285786cb7..5172e8650 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c | |||
| @@ -44,6 +44,9 @@ int retro_tapping_counter = 0; | |||
| 44 | #include <fauxclicky.h> | 44 | #include <fauxclicky.h> |
| 45 | #endif | 45 | #endif |
| 46 | 46 | ||
| 47 | #ifndef TAP_CODE_DELAY | ||
| 48 | # define TAP_CODE_DELAY 0 | ||
| 49 | #endif | ||
| 47 | #ifndef TAP_HOLD_CAPS_DELAY | 50 | #ifndef TAP_HOLD_CAPS_DELAY |
| 48 | # define TAP_HOLD_CAPS_DELAY 80 | 51 | # define TAP_HOLD_CAPS_DELAY 80 |
| 49 | #endif | 52 | #endif |
| @@ -330,6 +333,9 @@ void process_action(keyrecord_t *record, action_t action) | |||
| 330 | } else { | 333 | } else { |
| 331 | if (tap_count > 0) { | 334 | if (tap_count > 0) { |
| 332 | dprint("MODS_TAP: Tap: unregister_code\n"); | 335 | dprint("MODS_TAP: Tap: unregister_code\n"); |
| 336 | if (action.layer_tap.code == KC_CAPS) { | ||
| 337 | wait_ms(TAP_HOLD_CAPS_DELAY); | ||
| 338 | } | ||
| 333 | unregister_code(action.key.code); | 339 | unregister_code(action.key.code); |
| 334 | } else { | 340 | } else { |
| 335 | dprint("MODS_TAP: No tap: add_mods\n"); | 341 | dprint("MODS_TAP: No tap: add_mods\n"); |
| @@ -522,7 +528,9 @@ void process_action(keyrecord_t *record, action_t action) | |||
| 522 | dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n"); | 528 | dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n"); |
| 523 | if (action.layer_tap.code == KC_CAPS) { | 529 | if (action.layer_tap.code == KC_CAPS) { |
| 524 | wait_ms(TAP_HOLD_CAPS_DELAY); | 530 | wait_ms(TAP_HOLD_CAPS_DELAY); |
| 525 | } | 531 | } else { |
| 532 | wait_ms(TAP_CODE_DELAY); | ||
| 533 | } | ||
| 526 | unregister_code(action.layer_tap.code); | 534 | unregister_code(action.layer_tap.code); |
| 527 | } else { | 535 | } else { |
| 528 | dprint("KEYMAP_TAP_KEY: No tap: Off on release\n"); | 536 | dprint("KEYMAP_TAP_KEY: No tap: Off on release\n"); |
| @@ -618,6 +626,7 @@ void process_action(keyrecord_t *record, action_t action) | |||
| 618 | if (event.pressed) { | 626 | if (event.pressed) { |
| 619 | register_code(action.swap.code); | 627 | register_code(action.swap.code); |
| 620 | } else { | 628 | } else { |
| 629 | wait_ms(TAP_CODE_DELAY); | ||
| 621 | unregister_code(action.swap.code); | 630 | unregister_code(action.swap.code); |
| 622 | *record = (keyrecord_t){}; // hack: reset tap mode | 631 | *record = (keyrecord_t){}; // hack: reset tap mode |
| 623 | } | 632 | } |
| @@ -670,8 +679,7 @@ void process_action(keyrecord_t *record, action_t action) | |||
| 670 | retro_tapping_counter = 0; | 679 | retro_tapping_counter = 0; |
| 671 | } else { | 680 | } else { |
| 672 | if (retro_tapping_counter == 2) { | 681 | if (retro_tapping_counter == 2) { |
| 673 | register_code(action.layer_tap.code); | 682 | tap_code(action.layer_tap.code); |
| 674 | unregister_code(action.layer_tap.code); | ||
| 675 | } | 683 | } |
| 676 | retro_tapping_counter = 0; | 684 | retro_tapping_counter = 0; |
| 677 | } | 685 | } |
| @@ -858,12 +866,9 @@ void tap_code(uint8_t code) { | |||
| 858 | register_code(code); | 866 | register_code(code); |
| 859 | if (code == KC_CAPS) { | 867 | if (code == KC_CAPS) { |
| 860 | wait_ms(TAP_HOLD_CAPS_DELAY); | 868 | wait_ms(TAP_HOLD_CAPS_DELAY); |
| 861 | } | 869 | } else { |
| 862 | #if TAP_CODE_DELAY > 0 | ||
| 863 | else { | ||
| 864 | wait_ms(TAP_CODE_DELAY); | 870 | wait_ms(TAP_CODE_DELAY); |
| 865 | } | 871 | } |
| 866 | #endif | ||
| 867 | unregister_code(code); | 872 | unregister_code(code); |
| 868 | } | 873 | } |
| 869 | 874 | ||
