summaryrefslogtreecommitdiffstats
path: root/quantum/quantum.c
diff options
context:
space:
mode:
authorAnthony <anthonyrichir@users.noreply.github.com>2019-02-05 19:36:26 +0100
committerDrashna Jaelre <drashna@live.com>2019-02-05 19:36:26 +0100
commit5c7a31eae2518b2630f31cf825ecbb08e358ae76 (patch)
tree7fcf0af3fab16fc58f5e386e5c4caf96ec24d187 /quantum/quantum.c
parent47051f506fd4888bbb55fa7981cb7b24827f3d1b (diff)
downloadqmk_firmware-5c7a31eae2518b2630f31cf825ecbb08e358ae76.tar.gz
qmk_firmware-5c7a31eae2518b2630f31cf825ecbb08e358ae76.tar.xz
Improvements to Space Cadet Shift (#3856)
* 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
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index c1829c768..bd3715c80 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -195,6 +195,13 @@ void reset_keyboard(void) {
#define RSPC_KEY KC_0
#endif
+#ifndef LSPO_MOD
+ #define LSPO_MOD KC_LSFT
+#endif
+#ifndef RSPC_MOD
+ #define RSPC_MOD KC_RSFT
+#endif
+
// Shift / Enter setup
#ifndef SFTENT_KEY
#define SFTENT_KEY KC_ENT
@@ -674,14 +681,27 @@ bool process_record_quantum(keyrecord_t *record) {
}
else {
#ifdef DISABLE_SPACE_CADET_ROLLOVER
- if (get_mods() & MOD_BIT(KC_RSFT)) {
+ if (get_mods() & MOD_BIT(RSPC_MOD)) {
shift_interrupted[0] = true;
shift_interrupted[1] = true;
}
#endif
if (!shift_interrupted[0] && timer_elapsed(scs_timer[0]) < TAPPING_TERM) {
+ #ifdef DISABLE_SPACE_CADET_MODIFIER
+ unregister_mods(MOD_BIT(KC_LSFT));
+ #else
+ if( LSPO_MOD != KC_LSFT ){
+ unregister_mods(MOD_BIT(KC_LSFT));
+ register_mods(MOD_BIT(LSPO_MOD));
+ }
+ #endif
register_code(LSPO_KEY);
unregister_code(LSPO_KEY);
+ #ifndef DISABLE_SPACE_CADET_MODIFIER
+ if( LSPO_MOD != KC_LSFT ){
+ unregister_mods(MOD_BIT(LSPO_MOD));
+ }
+ #endif
}
unregister_mods(MOD_BIT(KC_LSFT));
}
@@ -696,14 +716,27 @@ bool process_record_quantum(keyrecord_t *record) {
}
else {
#ifdef DISABLE_SPACE_CADET_ROLLOVER
- if (get_mods() & MOD_BIT(KC_LSFT)) {
+ if (get_mods() & MOD_BIT(LSPO_MOD)) {
shift_interrupted[0] = true;
shift_interrupted[1] = true;
}
#endif
if (!shift_interrupted[1] && timer_elapsed(scs_timer[1]) < TAPPING_TERM) {
+ #ifdef DISABLE_SPACE_CADET_MODIFIER
+ unregister_mods(MOD_BIT(KC_RSFT));
+ #else
+ if( RSPC_MOD != KC_RSFT ){
+ unregister_mods(MOD_BIT(KC_RSFT));
+ register_mods(MOD_BIT(RSPC_MOD));
+ }
+ #endif
register_code(RSPC_KEY);
unregister_code(RSPC_KEY);
+ #ifndef DISABLE_SPACE_CADET_MODIFIER
+ if ( RSPC_MOD != KC_RSFT ){
+ unregister_mods(MOD_BIT(RSPC_MOD));
+ }
+ #endif
}
unregister_mods(MOD_BIT(KC_RSFT));
}