Merge pull request #1098 from lambdalisue/tapping-force-hold
Add TAPPING_FORCE_HOLD to regulate behaviour
This commit is contained in:
		
						commit
						216f669276
					
				
					 2 changed files with 8 additions and 4 deletions
				
			
		| 
						 | 
					@ -549,6 +549,9 @@ Layer switching with tap key:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
 | 
					[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
 | 
					### 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.
 | 
					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.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -228,6 +228,7 @@ bool process_tapping(keyrecord_t *keyp)
 | 
				
			||||||
        if (WITHIN_TAPPING_TERM(event)) {
 | 
					        if (WITHIN_TAPPING_TERM(event)) {
 | 
				
			||||||
            if (event.pressed) {
 | 
					            if (event.pressed) {
 | 
				
			||||||
                if (IS_TAPPING_KEY(event.key)) {
 | 
					                if (IS_TAPPING_KEY(event.key)) {
 | 
				
			||||||
 | 
					#ifndef TAPPING_FORCE_HOLD
 | 
				
			||||||
                    if (!tapping_key.tap.interrupted && tapping_key.tap.count > 0) {
 | 
					                    if (!tapping_key.tap.interrupted && tapping_key.tap.count > 0) {
 | 
				
			||||||
                        // sequential tap.
 | 
					                        // sequential tap.
 | 
				
			||||||
                        keyp->tap = tapping_key.tap;
 | 
					                        keyp->tap = tapping_key.tap;
 | 
				
			||||||
| 
						 | 
					@ -237,11 +238,11 @@ bool process_tapping(keyrecord_t *keyp)
 | 
				
			||||||
                        tapping_key = *keyp;
 | 
					                        tapping_key = *keyp;
 | 
				
			||||||
                        debug_tapping_key();
 | 
					                        debug_tapping_key();
 | 
				
			||||||
                        return true;
 | 
					                        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)) {
 | 
					                } else if (is_tap_key(event.key)) {
 | 
				
			||||||
                    // Sequential tap can be interfered with other tap key.
 | 
					                    // Sequential tap can be interfered with other tap key.
 | 
				
			||||||
                    debug("Tapping: Start with interfering other tap.\n");
 | 
					                    debug("Tapping: Start with interfering other tap.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue