diff options
author | XScorpion2 <rcalt2vt@gmail.com> | 2019-07-06 23:00:05 -0500 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2019-07-27 11:24:42 +0900 |
commit | aa482e2e4ffbb9747a18b0d5e6e6b2e610619484 (patch) | |
tree | 4312c59ed68c39e7eb911533c6fc168ade39cf8b | |
parent | f5980a247824dca05a8d7e3d33c0ffb470473c65 (diff) |
Added mod carry over from press to release. (#5866)
Co-Authored-By: fauxpark <fauxpark@gmail.com>
-rw-r--r-- | quantum/process_keycode/process_space_cadet.c | 12 |
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 089199eee2..c8721d446c 100644 --- a/quantum/process_keycode/process_space_cadet.c +++ b/quantum/process_keycode/process_space_cadet.c @@ -81,11 +81,17 @@ static uint8_t sc_last = 0; static uint16_t sc_timer = 0; +#ifdef SPACE_CADET_MODIFIER_CARRYOVER +static uint8_t sc_mods = 0; +#endif void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) { if (record->event.pressed) { sc_last = holdMod; sc_timer = timer_read (); +#ifdef SPACE_CADET_MODIFIER_CARRYOVER + sc_mods = get_mods(); +#endif if (IS_MOD(holdMod)) { register_mods(MOD_BIT(holdMod)); } @@ -100,7 +106,13 @@ void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, u register_mods(MOD_BIT(tapMod)); } } +#ifdef SPACE_CADET_MODIFIER_CARRYOVER + set_weak_mods(sc_mods); +#endif tap_code(keycode); +#ifdef SPACE_CADET_MODIFIER_CARRYOVER + clear_weak_mods(); +#endif if (IS_MOD(tapMod)) { unregister_mods(MOD_BIT(tapMod)); } |