* 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
2.6 KiB
Space Cadet Shift: The Future, Built In
Steve Losh described the Space Cadet Shift 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:
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 |