summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlambdalisue <lambdalisue@hashnote.net>2017-02-14 14:12:54 +0900
committerlambdalisue <lambdalisue@hashnote.net>2017-02-14 14:12:54 +0900
commit64f9779fe54facecdef9d1a6a7c1d893f79ca20e (patch)
tree0df64f7cccf718bc2fa01a928006a8ee1ee0f242
parentfd2925efbac0d7963f3d267dd5264f08a0a4e9dc (diff)
Add TAPPING_FORCE_HOLD to regulate behaviour
See #889 for the detail.
-rw-r--r--doc/keymap.md3
-rw-r--r--tmk_core/common/action_tapping.c9
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 e16e11be7f..66044d8bce 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");