|
|
|
@ -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));
|
|
|
|
|
}
|
|
|
|
|