 5c7a31eae2
			
		
	
	
		5c7a31eae2
		
	
	
	
	
		
			
			* Improvement of Space Cadet Shift by preventing to automatically apply a modifier on the key and allow to override the default modifier. Closes qmk/qmk_firmware#3815 * Improve the use of the DISABLE_SPACE_CADET_MODIFIER flag to avoid unregistering KC_LSFT when equals to LSPO_MOD * change #if to if statement
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Space Cadet Shift: The Future, Built In
 | |
| 
 | |
| Steve Losh described the [Space Cadet Shift](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/) quite well. Essentially, when you tap Left Shift on its own, you get an opening parenthesis; tap Right Shift on its own and you get the closing one. When held, the Shift keys function as normal. Yes, it's as cool as it sounds.
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| Replace the Left Shift key in your keymap with `KC_LSPO` (Left Shift, Parenthesis Open), and Right Shift with `KC_RSPC` (Right Shift, Parenthesis Close).
 | |
| 
 | |
| ## Keycodes
 | |
| 
 | |
| |Keycode  |Description                           |
 | |
| |---------|--------------------------------------|
 | |
| |`KC_LSPO`|Left Shift when held, `(` when tapped |
 | |
| |`KC_RSPC`|Right Shift when held, `)` when tapped|
 | |
| 
 | |
| ## Caveats
 | |
| 
 | |
| Space Cadet's functionality can conflict with the default Command functionality when both Shift keys are held at the same time. Make sure that Command is disabled in your `rules.mk` with:
 | |
| 
 | |
| ```make
 | |
| COMMAND_ENABLE = no
 | |
| ```
 | |
| 
 | |
| ## Configuration
 | |
| 
 | |
| By default Space Cadet assumes a US ANSI layout, but if your layout uses different keys for parentheses, you can redefine them in your `config.h`.
 | |
| You can also disable the rollover, allowing you to use the opposite Shift key to cancel the Space Cadet state in the event of an erroneous press, instead of emitting a pair of parentheses when the keys are released.
 | |
| Also, by default, the Space Cadet applies modifiers LSPO_MOD and RSPC_MOD to keys defined by LSPO_KEY and RSPC_KEY. You can override this behavior by redefining those variables in your `config.h`. You can also prevent the Space Cadet to apply a modifier by defining DISABLE_SPACE_CADET_MODIFIER in your `config.h`.
 | |
| 
 | |
| |Define                        |Default      |Description                                                                     |
 | |
| |------------------------------|-------------|--------------------------------------------------------------------------------|
 | |
| |`LSPO_KEY`                    |`KC_9`       |The keycode to send when Left Shift is tapped                                   |
 | |
| |`RSPC_KEY`                    |`KC_0`       |The keycode to send when Right Shift is tapped                                  |
 | |
| |`LSPO_MOD`                    |`KC_LSFT`    |The keycode to send when Left Shift is tapped                                   |
 | |
| |`RSPC_MOD`                    |`KC_RSFT`    |The keycode to send when Right Shift is tapped                                  |
 | |
| |`DISABLE_SPACE_CADET_ROLLOVER`|*Not defined*|If defined, use the opposite Shift key to cancel Space Cadet                    |
 | |
| |`DISABLE_SPACE_CADET_MODIFIER`|*Not defined*|If defined, prevent the Space Cadet to apply a modifier to LSPO_KEY and RSPC_KEY|
 |