From 49af06fcac6c132b77e4538ca522ab01c9e8ca3a Mon Sep 17 00:00:00 2001 From: rootiest Date: Sat, 11 Apr 2026 00:24:24 -0400 Subject: [PATCH] feat(q5_max): add per-key tapping term with 50ms for home/end tap-dance Define TAPPING_TERM (200ms default) and TAPPING_TERM_PER_KEY in config.h, then implement get_tapping_term() to set a tight 50ms window for TD_HOME_END so a single Home tap never accidentally resolves as End. --- .../keychron/q5_max/ansi_encoder/keymaps/via/config.h | 5 +++++ .../keychron/q5_max/ansi_encoder/keymaps/via/keymap.c | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/config.h index e9fd63dd8e..e341c556f3 100644 --- a/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/config.h +++ b/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/config.h @@ -16,3 +16,8 @@ // Always resolve combo keycodes from BASE (layer 0) so the // COMM+DOT+SLSH fallback combo fires regardless of the active layer. #define COMBO_ONLY_FROM_LAYER 0 + +// Default tapping term for mod-tap, layer-tap, and tap-dance keys. +#define TAPPING_TERM 200 +// Allow per-key overrides via get_tapping_term() in keymap.c. +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/keymap.c index 9e08e26ed6..a2ba6f9f51 100644 --- a/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/keymap.c +++ b/keyboards/keychron/q5_max/ansi_encoder/keymaps/via/keymap.c @@ -438,6 +438,15 @@ bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { } #endif // RGB_MATRIX_ENABLE +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_HOME_END): + return 175; + default: + return TAPPING_TERM; + } +} + // Tap Dance definitions tap_dance_action_t tap_dance_actions[] = { // Tap once for Home, twice for End -- 2.52.0