diff --git a/modules/getreuer/README.md b/modules/getreuer/README.md index 40a550c..e8d17e3 100644 --- a/modules/getreuer/README.md +++ b/modules/getreuer/README.md @@ -77,7 +77,7 @@ file `keymap.json` in your keymap folder with the content ```json { - "modules": ["getreuer/achordion"] + "modules": ["getreuer/tap_flow"] } ``` @@ -86,7 +86,7 @@ multiple modules like: ```json { - "modules": ["getreuer/achordion", "getreuer/sentence_case"] + "modules": ["getreuer/tap_flow", "getreuer/sentence_case"] } ``` diff --git a/modules/getreuer/tap_flow/README.md b/modules/getreuer/tap_flow/README.md index 0d9f171..41d65ac 100644 --- a/modules/getreuer/tap_flow/README.md +++ b/modules/getreuer/tap_flow/README.md @@ -2,7 +2,7 @@ - +
Modulegetreuer/tap_flow
Version2025-03-15
Version2025-03-19
MaintainerPascal Getreuer (@getreuer)
LicenseApache 2.0
Documentation @@ -11,7 +11,7 @@
This module is an implementation of "global quick tap" (GQT), aka "require -priori idle," for tap-hold keys. It is particularly useful for home row mods to +prior idle," for tap-hold keys. It is particularly useful for home row mods to avoid accidental mod triggers in fast typing. To use this module, add the following to your `keymap.json`: diff --git a/modules/getreuer/tap_flow/tap_flow.c b/modules/getreuer/tap_flow/tap_flow.c index b413994..b7ca577 100644 --- a/modules/getreuer/tap_flow/tap_flow.c +++ b/modules/getreuer/tap_flow/tap_flow.c @@ -31,6 +31,7 @@ ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0); #error "tap_flow: Please enable Combos (COMBO_ENABLE = true) or Repeat Key (REPEAT_KEY_ENABLE = yes), or both, in rules.mk." #else +uint32_t last_input = 0; uint16_t g_tap_flow_term = TAP_FLOW_TERM; static uint16_t prev_keycode = KC_NO; @@ -96,7 +97,7 @@ bool pre_process_record_tap_flow(uint16_t keycode, keyrecord_t* record) { const uint8_t bit_mask = UINT8_C(1) << (index % 8); if (record->event.pressed) { // On press. - const uint32_t idle_time = last_input_activity_elapsed(); + const uint32_t idle_time = timer_elapsed32(last_input); uint16_t tap_flow_term = get_tap_flow(keycode, record, prev_keycode); if (tap_flow_term > 500) { tap_flow_term = 500; @@ -156,6 +157,12 @@ bool pre_process_record_tap_flow(uint16_t keycode, keyrecord_t* record) { prev_keycode = keycode; } + // Update last input time. Ignore mods and mod-tap keys in this update to + // allow for chording multiple mods for hotkeys like "Ctrl+Shift+arrow". + if (!IS_MODIFIER_KEYCODE(keycode) && !IS_QK_MOD_TAP(keycode)) { + last_input = timer_read32(); + } + return true; } diff --git a/modules/getreuer/tap_flow/tap_flow.h b/modules/getreuer/tap_flow/tap_flow.h index 932d94f..0a5606a 100644 --- a/modules/getreuer/tap_flow/tap_flow.h +++ b/modules/getreuer/tap_flow/tap_flow.h @@ -17,7 +17,7 @@ * @brief Tap Flow module: disable HRMs during fast typing * * This module is an implementation of "global quick tap" (GQT), aka "require - * priori idle," for tap-hold keys. It is particularly useful for home row mods + * prior idle," for tap-hold keys. It is particularly useful for home row mods * to avoid accidental mod triggers in fast typing. * * Tap Flow modifies the tap-hold decision such that when a tap-hold key is