aboutsummaryrefslogtreecommitdiff
path: root/docs/feature_advanced_keycodes.md
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-11-05 21:35:16 -0800
committerJack Humbert <jack.humb@gmail.com>2018-11-06 00:35:16 -0500
commit672926562519c1ee7370b3ef188c11525de326e5 (patch)
treebdcd1bd9bd8892c810586e2db0921a10545238b0 /docs/feature_advanced_keycodes.md
parent4636f0f623c71f1eda8628cbae4784fe08a8faf7 (diff)
downloadqmk_firmware-672926562519c1ee7370b3ef188c11525de326e5.tar.gz
qmk_firmware-672926562519c1ee7370b3ef188c11525de326e5.zip
Clarify the Mod Tap defines in documentation (#4352)
* Fix up Mod Tap settings keys * Change link names * permissive hold wordsmith Co-Authored-By: drashna <drashna@live.com> * ignore mod tap wordsmithing Co-Authored-By: drashna <drashna@live.com> * grammar fix Co-Authored-By: drashna <drashna@live.com> * wordsmithing Co-Authored-By: drashna <drashna@live.com> * word smithing Co-Authored-By: drashna <drashna@live.com>
Diffstat (limited to 'docs/feature_advanced_keycodes.md')
-rw-r--r--docs/feature_advanced_keycodes.md62
1 files changed, 47 insertions, 15 deletions
diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md
index f9a5c3980..bb5cb7419 100644
--- a/docs/feature_advanced_keycodes.md
+++ b/docs/feature_advanced_keycodes.md
@@ -170,30 +170,56 @@ As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new
170#define PERMISSIVE_HOLD 170#define PERMISSIVE_HOLD
171``` 171```
172 172
173This makes it easier for fast typists to use dual-function keys. Without this, if you let go of a held key inside the tapping term, it won't register. 173This makes tap and hold keys (like Mod Tap) work better for fast typist, or for high `TAPPING_TERM` settings.
174 174
175Example: (Tapping Term = 200ms) 175If you press a Mod Tap key, tap another key (press and release) and then release the Mod Tap key, all within the tapping term, it will output the "tapping" function for both keys.
176 176
177- SHFT_T(KC_A) Down 177For Instance:
178- KC_X Down 178
179- KC_X Up 179- `SHFT_T(KC_A)` Down
180- SHFT_T(KC_A) Up 180- `KC_X` Down
181- `KC_X` Up
182- `SHFT_T(KC_A)` Up
183
184Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this will be registered as `ax` by the firmware and host system. With permissive hold enabled, this modifies how this is handled by considering the Mod Tap keys as a Mod if another key is tapped, and would registered as `X` (`SHIFT`+`x`).
185
186?> If you have `Ignore Mod Tap Interrupt` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
187
188# Ignore Mod Tap Interrupt
189
190To enable this setting, add this to your `config.h`:
191
192```c
193#define IGNORE_MOD_TAP_INTERRUPT
194```
181 195
182With defaults, if above is typed within tapping term, this will emit `ax`. With permissive hold, if above is typed within tapping term, this will emit `X` (so, Shift+X). 196Similar to Permissive Hold, this alters how the firmware processes input for fast typist. If you press a Mod Tap key, press another key, release the Mod Tap key, and then release the normal key, it would normally output the "tapping" function for both keys. This may not be desirable for rolling combo keys.
183 197
184# Mod tap interrupt 198Setting `Ignore Mod Tap Interrupt` requires holding both keys for the `TAPPING_TERM` to trigger the hold function (the mod).
185 199
186When a dual role key used for a modifier is quickly followed by another keys, it is interpreted as held even before the tapping term elapsed. This is a problem if a key is used for example inside a rolling combo because the second key will be pressed before the first key is released. 200For Instance:
187 201
188For example, when trying to type the rolling combo "zx" and z being configured to send Ctrl when hold, z rapidly followed by x actually sends Ctrl-x. That's bad. 202- `SHFT_T(KC_A)` Down
203- `KC_X` Down
204- `SHFT_T(KC_A)` Up
205- `KC_X` Up
189 206
190You can disable this behavior by defining `IGNORE_MOD_TAP_INTERRUPT` in `config.h`. 207Normally, this would send `X` (`SHIFT`+`x`). With `Ignore Mod Tap Interrupt` enabled, holding both keys are required for the `TAPPING_TERM` to register the hold action. A quick tap will output `ax` in this case, while a hold on both will still output `X` (`SHIFT`+`x`).
191 208
192Note that this only concerns modifiers and not layer switching keys.
193 209
194# Hold after tap 210?> __Note__: This only concerns modifiers and not layer switching keys.
195 211
196When the user holds a key after tap, this repeats the tapped key rather to hold a modifier key. This allows to use auto repeat for the tapped key. If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`. 212?> If you have `Permissive Hold` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
213
214# Tapping Force Hold
215
216To enable `tapping force hold`, add the following to your `config.h`:
217
218```c
219#define TAPPING_FORCE_HOLD
220```
221
222When the user holds a key after tap, this repeats the tapped key rather to hold a modifier key. This allows to use auto repeat for the tapped key.
197 223
198Example: 224Example:
199 225
@@ -211,6 +237,12 @@ With `TAPPING_FORCE_HOLD`, the second press will be interpreted as a Shift, allo
211 237
212# Retro Tapping 238# Retro Tapping
213 239
240To enable `retro tapping`, add the following to your `config.h`:
241
242```c
243#define RETRO_TAPPING
244```
245
214Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term. 246Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.
215 247
216For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With `RETRO_TAPPING` defined in your `config.h`, it will send `KC_SPACE`. 248For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.