aboutsummaryrefslogtreecommitdiff
path: root/quantum
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 10:36:26 -0800
commit5c7a31eae2518b2630f31cf825ecbb08e358ae76 (patch)
tree7fcf0af3fab16fc58f5e386e5c4caf96ec24d187 /quantum
parent47051f506fd4888bbb55fa7981cb7b24827f3d1b (diff)
downloadqmk_firmware-5c7a31eae2518b2630f31cf825ecbb08e358ae76.tar.gz
qmk_firmware-5c7a31eae2518b2630f31cf825ecbb08e358ae76.zip
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')
-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) {
195 #define RSPC_KEY KC_0 195 #define RSPC_KEY KC_0
196#endif 196#endif
197 197
198#ifndef LSPO_MOD
199 #define LSPO_MOD KC_LSFT
200#endif
201#ifndef RSPC_MOD
202 #define RSPC_MOD KC_RSFT
203#endif
204
198// Shift / Enter setup 205// Shift / Enter setup
199#ifndef SFTENT_KEY 206#ifndef SFTENT_KEY
200 #define SFTENT_KEY KC_ENT 207 #define SFTENT_KEY KC_ENT
@@ -674,14 +681,27 @@ bool process_record_quantum(keyrecord_t *record) {
674 } 681 }
675 else { 682 else {
676 #ifdef DISABLE_SPACE_CADET_ROLLOVER 683 #ifdef DISABLE_SPACE_CADET_ROLLOVER
677 if (get_mods() & MOD_BIT(KC_RSFT)) { 684 if (get_mods() & MOD_BIT(RSPC_MOD)) {
678 shift_interrupted[0] = true; 685 shift_interrupted[0] = true;
679 shift_interrupted[1] = true; 686 shift_interrupted[1] = true;
680 } 687 }
681 #endif 688 #endif
682 if (!shift_interrupted[0] && timer_elapsed(scs_timer[0]) < TAPPING_TERM) { 689 if (!shift_interrupted[0] && timer_elapsed(scs_timer[0]) < TAPPING_TERM) {
690 #ifdef DISABLE_SPACE_CADET_MODIFIER
691 unregister_mods(MOD_BIT(KC_LSFT));
692 #else
693 if( LSPO_MOD != KC_LSFT ){
694 unregister_mods(MOD_BIT(KC_LSFT));
695 register_mods(MOD_BIT(LSPO_MOD));
696 }
697 #endif
683 register_code(LSPO_KEY); 698 register_code(LSPO_KEY);
684 unregister_code(LSPO_KEY); 699 unregister_code(LSPO_KEY);
700 #ifndef DISABLE_SPACE_CADET_MODIFIER
701 if( LSPO_MOD != KC_LSFT ){
702 unregister_mods(MOD_BIT(LSPO_MOD));
703 }
704 #endif
685 } 705 }
686 unregister_mods(MOD_BIT(KC_LSFT)); 706 unregister_mods(MOD_BIT(KC_LSFT));
687 } 707 }
@@ -696,14 +716,27 @@ bool process_record_quantum(keyrecord_t *record) {
696 } 716 }
697 else { 717 else {
698 #ifdef DISABLE_SPACE_CADET_ROLLOVER 718 #ifdef DISABLE_SPACE_CADET_ROLLOVER
699 if (get_mods() & MOD_BIT(KC_LSFT)) { 719 if (get_mods() & MOD_BIT(LSPO_MOD)) {
700 shift_interrupted[0] = true; 720 shift_interrupted[0] = true;
701 shift_interrupted[1] = true; 721 shift_interrupted[1] = true;
702 } 722 }
703 #endif 723 #endif
704 if (!shift_interrupted[1] && timer_elapsed(scs_timer[1]) < TAPPING_TERM) { 724 if (!shift_interrupted[1] && timer_elapsed(scs_timer[1]) < TAPPING_TERM) {
725 #ifdef DISABLE_SPACE_CADET_MODIFIER
726 unregister_mods(MOD_BIT(KC_RSFT));
727 #else
728 if( RSPC_MOD != KC_RSFT ){
729 unregister_mods(MOD_BIT(KC_RSFT));
730 register_mods(MOD_BIT(RSPC_MOD));
731 }
732 #endif
705 register_code(RSPC_KEY); 733 register_code(RSPC_KEY);
706 unregister_code(RSPC_KEY); 734 unregister_code(RSPC_KEY);
735 #ifndef DISABLE_SPACE_CADET_MODIFIER
736 if ( RSPC_MOD != KC_RSFT ){
737 unregister_mods(MOD_BIT(RSPC_MOD));
738 }
739 #endif
707 } 740 }
708 unregister_mods(MOD_BIT(KC_RSFT)); 741 unregister_mods(MOD_BIT(KC_RSFT));
709 } 742 }