summary refs log tree commit diff
path: root/quantum/action_tapping.c
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2022-04-16 20:24:09 +0200
committerGitHub <noreply@github.com>2022-04-16 11:24:09 -0700
commit8f585153c470b07bb0c529ff49b39ef45f68d37e (patch)
tree5441986fa041cd2d966b800af3f82d69b55e4d58 /quantum/action_tapping.c
parentcad0af09a8a280d918b726eb472c86065dc5c079 (diff)
Add GET_TAPPING_TERM macro to reduce duplicate code (#16681)
* Add GET_TAPPING_TERM macro to reduce duplicate code

The macro gives the right tapping term depending on whether per-key
tapping terms and/or dynamic tapping terms are enabled. Unnecessary
function calls and variable resolution are avoided.

Fixes #16472.

* Use GET_TAPPING_TERM for Cirque trackpads

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
Diffstat (limited to 'quantum/action_tapping.c')
-rw-r--r--quantum/action_tapping.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/quantum/action_tapping.c b/quantum/action_tapping.c
index e436619428..3c8b5678b7 100644
--- a/quantum/action_tapping.c
+++ b/quantum/action_tapping.c
@@ -24,17 +24,20 @@
 #    else
 #        define IS_TAPPING_RECORD(r) (IS_TAPPING() && KEYEQ(tapping_key.event.key, (r->event.key)) && tapping_key.keycode == r->keycode)
 #    endif
+#    define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < GET_TAPPING_TERM(get_record_keycode(&tapping_key, false), &tapping_key))
 
+#    ifdef DYNAMIC_TAPPING_TERM_ENABLE
 uint16_t g_tapping_term = TAPPING_TERM;
+#    endif
 
+#    ifdef TAPPING_TERM_PER_KEY
 __attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+#        ifdef DYNAMIC_TAPPING_TERM_ENABLE
     return g_tapping_term;
+#        else
+    return TAPPING_TERM;
+#        endif
 }
-
-#    ifdef TAPPING_TERM_PER_KEY
-#        define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < get_tapping_term(get_record_keycode(&tapping_key, false), &tapping_key))
-#    else
-#        define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < g_tapping_term)
 #    endif
 
 #    ifdef TAPPING_FORCE_HOLD_PER_KEY
@@ -165,15 +168,7 @@ bool process_tapping(keyrecord_t *keyp) {
                 else if (
                     (
                         (
-                            (
-#        ifdef TAPPING_TERM_PER_KEY
-                                get_tapping_term(tapping_keycode, &tapping_key)
-#        else
-                                g_tapping_term
-#        endif
-                                >= 500
-                            )
-
+                            GET_TAPPING_TERM(tapping_keycode, &tapping_key) >= 500
 #        ifdef PERMISSIVE_HOLD_PER_KEY
                             || get_permissive_hold(tapping_keycode, &tapping_key)
 #        elif defined(PERMISSIVE_HOLD)