2.5 KiB
Tap Flow
Module | getreuer/tap_flow |
Version | 2025-03-15 |
Maintainer | Pascal Getreuer (@getreuer) |
License | Apache 2.0 |
Documentation | https://getreuer.info/posts/keyboards/tap-flow |
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 avoid accidental mod triggers in fast typing.
To use this module, add the following to your keymap.json
:
{
"modules": ["getreuer/tap_flow"]
}
Tap Flow's term can be tuned on the fly with the following keycodes:
Keycode | Alias | Description |
---|---|---|
TAP_FLOW_PRINT |
TFLOW_P |
Type the current value. |
TAP_FLOW_UP |
TFLOW_U |
Increase by 5 ms. |
TAP_FLOW_DOWN |
TFLOW_D |
Decrease by 5 ms. |
Tap Flow's default behavior is:
-
Filtering is done only when a tap-hold press is within
TAP_FLOW_TERM
of the previous key event, which defaults to 150 ms. UseTFLOW_U
/TFLOW_D
to tune, then defineTAP_FLOW_TERM
in yourconfig.h
to set the value printed byTFLOW_P
. -
Filtering is done only when both the tap-hold key and the previous key are among Space, letters A–Z, and punctuations , . ; /. Define the
get_tap_flow()
callback to customize this logic.
Tap Flow modifies the tap-hold decision such that when a tap-hold key is pressed within a short timeout of the preceding key, the tapping function is used. The assumption is that during fast typing, only the tap function of tap-hold keys is desired (though perhaps with an exception for Shift or AltGr, noted below), whereas the hold functions (mods and layers) are used in isolation, or at least with a brief pause preceding the tap-hold key press.
Optionally, the feature can be customized with the get_tap_flow()
callback. In
this way, exceptions may be made for Shift and AltGr (or whatever you wish) to
use a shorter time or to disable filtering for those keys entirely.
For full documentation, see https://getreuer.info/posts/keyboards/tap-flow