From c94a57d613a7420453f3377b8de32bbadf4ed5f3 Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Sat, 21 Jun 2025 19:46:37 -0600 Subject: [PATCH] qmk_settings: add flow tap --- builddefs/build_vial.mk | 2 +- quantum/qmk_settings.c | 9 +++++++++ quantum/qmk_settings.h | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/builddefs/build_vial.mk b/builddefs/build_vial.mk index f80443f919..1002e93b5d 100644 --- a/builddefs/build_vial.mk +++ b/builddefs/build_vial.mk @@ -26,7 +26,7 @@ ifeq ($(strip $(QMK_SETTINGS)), yes) OPT_DEFS += -DQMK_SETTINGS \ -DAUTO_SHIFT_NO_SETUP -DAUTO_SHIFT_REPEAT_PER_KEY -DAUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY \ -DPERMISSIVE_HOLD_PER_KEY -DHOLD_ON_OTHER_KEY_PRESS_PER_KEY -DQUICK_TAP_TERM_PER_KEY -DRETRO_TAPPING_PER_KEY \ - -DCOMBO_TERM_PER_COMBO -DCHORDAL_HOLD + -DCOMBO_TERM_PER_COMBO -DCHORDAL_HOLD -DFLOW_TAP_TERM=321 endif # Generate Vial layout definition header from JSON diff --git a/quantum/qmk_settings.c b/quantum/qmk_settings.c index 32c71f0e62..e5312d0fdb 100644 --- a/quantum/qmk_settings.c +++ b/quantum/qmk_settings.c @@ -71,6 +71,7 @@ static const qmk_settings_proto_t protos[] PROGMEM = { DECLARE_STATIC_BITSETTING(24, tapping_v2, QS_tapping_retro_tapping_bit), DECLARE_STATIC_SETTING(25, quick_tap_term), DECLARE_STATIC_BITSETTING(26, tapping_v2, QS_tapping_chordal_hold_bit), + DECLARE_STATIC_SETTING(27, flow_tap_term), }; static void eeprom_settings_load(void) { @@ -212,6 +213,7 @@ void qmk_settings_reset(void) { QS.tap_code_delay = TAP_CODE_DELAY; QS.tap_hold_caps_delay = TAP_HOLD_CAPS_DELAY; QS.tapping_toggle = TAPPING_TOGGLE; + QS.flow_tap_term = 0; eeprom_settings_save(); @@ -336,3 +338,10 @@ bool get_chordal_hold(uint16_t tap_hold_keycode, keyrecord_t* tap_hold_record, return get_chordal_hold_default(tap_hold_record, other_record); return true; } + +uint16_t get_flow_tap_term(uint16_t keycode, keyrecord_t *record, uint16_t prev_keycode) { + if (is_flow_tap_key(keycode) && is_flow_tap_key(prev_keycode)) { + return QS.flow_tap_term; + } + return 0; +} diff --git a/quantum/qmk_settings.h b/quantum/qmk_settings.h index 08ebec30d8..f4a9674ab4 100644 --- a/quantum/qmk_settings.h +++ b/quantum/qmk_settings.h @@ -124,8 +124,9 @@ typedef struct { uint8_t tapping_toggle; uint8_t unused; uint16_t quick_tap_term; + uint16_t flow_tap_term; } qmk_settings_t; -_Static_assert(sizeof(qmk_settings_t) == 38, "unexpected size of the qmk_settings_t structure"); +_Static_assert(sizeof(qmk_settings_t) == 40, "unexpected size of the qmk_settings_t structure"); struct qmk_settings_proto_t;