aboutsummaryrefslogtreecommitdiff
path: root/quantum/process_keycode
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2019-07-06 23:00:05 -0500
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-07-06 21:00:05 -0700
commitd16db6936715a98b6ae769463d5ccafab25b7203 (patch)
treeffb87385b4126a69b85de1074463b8045ea716d5 /quantum/process_keycode
parenta07da6e2452cd17699a01530f5435272ab6a732f (diff)
downloadqmk_firmware-d16db6936715a98b6ae769463d5ccafab25b7203.tar.gz
qmk_firmware-d16db6936715a98b6ae769463d5ccafab25b7203.zip
Added mod carry over from press to release. (#5866)
Update docs/feature_space_cadet.md Co-Authored-By: fauxpark <fauxpark@gmail.com>
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r--quantum/process_keycode/process_space_cadet.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c
index 089199eee..c8721d446 100644
--- a/quantum/process_keycode/process_space_cadet.c
+++ b/quantum/process_keycode/process_space_cadet.c
@@ -81,11 +81,17 @@
81 81
82static uint8_t sc_last = 0; 82static uint8_t sc_last = 0;
83static uint16_t sc_timer = 0; 83static uint16_t sc_timer = 0;
84#ifdef SPACE_CADET_MODIFIER_CARRYOVER
85static uint8_t sc_mods = 0;
86#endif
84 87
85void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) { 88void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) {
86 if (record->event.pressed) { 89 if (record->event.pressed) {
87 sc_last = holdMod; 90 sc_last = holdMod;
88 sc_timer = timer_read (); 91 sc_timer = timer_read ();
92#ifdef SPACE_CADET_MODIFIER_CARRYOVER
93 sc_mods = get_mods();
94#endif
89 if (IS_MOD(holdMod)) { 95 if (IS_MOD(holdMod)) {
90 register_mods(MOD_BIT(holdMod)); 96 register_mods(MOD_BIT(holdMod));
91 } 97 }
@@ -100,7 +106,13 @@ void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, u
100 register_mods(MOD_BIT(tapMod)); 106 register_mods(MOD_BIT(tapMod));
101 } 107 }
102 } 108 }
109#ifdef SPACE_CADET_MODIFIER_CARRYOVER
110 set_weak_mods(sc_mods);
111#endif
103 tap_code(keycode); 112 tap_code(keycode);
113#ifdef SPACE_CADET_MODIFIER_CARRYOVER
114 clear_weak_mods();
115#endif
104 if (IS_MOD(tapMod)) { 116 if (IS_MOD(tapMod)) {
105 unregister_mods(MOD_BIT(tapMod)); 117 unregister_mods(MOD_BIT(tapMod));
106 } 118 }