diff options
author | Jack Humbert <jack.humb@gmail.com> | 2017-03-28 09:24:22 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-28 09:24:22 -0400 |
commit | 216f669276b30393fb35a409011ccdad8b521156 (patch) | |
tree | a26991d2e44ecb1ed6247eb011d7f6e0ca78741b | |
parent | cc2fb56ed837d60a959938d2d89fce62a99cd3bc (diff) | |
parent | 64f9779fe54facecdef9d1a6a7c1d893f79ca20e (diff) |
Merge pull request #1098 from lambdalisue/tapping-force-hold
Add TAPPING_FORCE_HOLD to regulate behaviour
-rw-r--r-- | doc/keymap.md | 3 | ||||
-rw-r--r-- | tmk_core/common/action_tapping.c | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/doc/keymap.md b/doc/keymap.md index 6f2a663fc8..2b0d2cd959 100644 --- a/doc/keymap.md +++ b/doc/keymap.md @@ -549,6 +549,9 @@ Layer switching with tap key: [dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys +When user hold a key after tap, it repeat the tapped key rather to hold a modifier key. +If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`. +See https://github.com/qmk/qmk_firmware/issues/889 for the detail. ### 4.2 Tap Toggle This is a feature to assign both toggle layer and momentary switch layer action to just same one physical key. It works as momentary layer switch when holding a key but toggle switch with several taps. diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c index ff78d7f2ab..bd9a69ae0a 100644 --- a/tmk_core/common/action_tapping.c +++ b/tmk_core/common/action_tapping.c @@ -228,6 +228,7 @@ bool process_tapping(keyrecord_t *keyp) if (WITHIN_TAPPING_TERM(event)) { if (event.pressed) { if (IS_TAPPING_KEY(event.key)) { +#ifndef TAPPING_FORCE_HOLD if (!tapping_key.tap.interrupted && tapping_key.tap.count > 0) { // sequential tap. keyp->tap = tapping_key.tap; @@ -237,11 +238,11 @@ bool process_tapping(keyrecord_t *keyp) tapping_key = *keyp; debug_tapping_key(); return true; - } else { - // FIX: start new tap again - tapping_key = *keyp; - return true; } +#endif + // FIX: start new tap again + tapping_key = *keyp; + return true; } else if (is_tap_key(event.key)) { // Sequential tap can be interfered with other tap key. debug("Tapping: Start with interfering other tap.\n"); |