diff options
| author | Anthony <anthonyrichir@users.noreply.github.com> | 2019-02-05 19:36:26 +0100 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2019-02-05 10:36:26 -0800 |
| commit | 5c7a31eae2518b2630f31cf825ecbb08e358ae76 (patch) | |
| tree | 7fcf0af3fab16fc58f5e386e5c4caf96ec24d187 /quantum | |
| parent | 47051f506fd4888bbb55fa7981cb7b24827f3d1b (diff) | |
| download | qmk_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.c | 37 |
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 | } |
