summaryrefslogtreecommitdiff
path: root/tmk_core/common/action.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2019-07-22 20:23:57 -0700
committerFlorian Didron <fdidron@users.noreply.github.com>2019-08-13 10:28:09 +0900
commit64566241cbb1a22b0d09773b2c72630b3bfdfa5c (patch)
tree465cafc0e722b76d626e661cda1357fe3346a75b /tmk_core/common/action.c
parent6d9eb7e97a11f40af0303d10df83e8fb396ec987 (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.c19
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);
}