docs/tap_hold.md fixes: Note that Chordal Hold supports multiple same-side mods and fix heading for Speculative Hold. (#25924)

* Note Chordal Hold supports multiple same-side mods.

* Fix "Speculative Hold" heading from H3 -> H2.
This commit is contained in:
Pascal Getreuer 2026-01-03 15:00:50 -08:00 committed by GitHub
parent 8c035c2116
commit 3194862502
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -604,6 +604,20 @@ Or if the two keys are on opposite hands and the `PERMISSIVE_HOLD` option is
enabled, this will produce `C` with `SFT_T(KC_A)` settled as held when that
`KC_C` is released.
As an exception to the opposite hands rule, Chordal Hold supports combining
multiple same-side modifiers within the tapping term. This is useful for
multi-mod hotkeys like Ctrl + Shift + V. For instance with Chordal Hold together
with either Permissive Hold or Hold On Other Key Press, the following input
results in Ctrl + Shift + V being sent, supposing `J` and `K` are on the right
hand side and `V` is on the left hand side:
- `SFT_T(KC_J)` Down
- `CTL_T(KC_K)` Down
- `KC_V` Down
- `KC_V` Up
- `SFT_T(KC_J)` Up
- `CTL_T(KC_K)` Up
### Chordal Hold Handedness
Determining whether keys are on the same or opposite hands involves defining the
@ -779,7 +793,7 @@ Do not use `MOD_xxx` constants like `MOD_LSFT` or `MOD_RALT`, since they're 5-bi
[Auto Shift](features/auto_shift) has its own version of `retro tapping` called `retro shift`. It is extremely similar to `retro tapping`, but holding the key past `AUTO_SHIFT_TIMEOUT` results in the value it sends being shifted. Other configurations also affect it differently; see [here](features/auto_shift#retro-shift) for more information.
### Speculative Hold
## Speculative Hold
Speculative Hold makes mod-tap keys more responsive by applying the modifier instantly on keydown, before the tap-hold decision is made. This is especially useful for actions like Shift+Click with a mouse, which can feel laggy with standard mod-taps.
@ -820,4 +834,4 @@ Well, it's simple really: customization. But specifically, it depends on how you
## Why are there no `*_kb` or `*_user` functions?!
Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum- or keyboard-level function. Only user-level functions are useful here, so there is no need to mark them as such.
Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum- or keyboard-level function. Only user-level functions are useful here, so there is no need to mark them as such.