X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=tmk_core%2Fcommon%2Faction_macro.c;h=b2891bf4bc9cc34a72dc42f5cf6b2bcd5699e0d4;hb=fb1fb122a5971723f374cd737b7cc0aefd470af3;hp=ba93fc8b2324b7cb96e9a5744a21eee89c3f588d;hpb=f1f2066657f4a0998adc016c95d7e541b436e09f;p=max%2Ftmk_keyboard.git diff --git a/tmk_core/common/action_macro.c b/tmk_core/common/action_macro.c index ba93fc8b..b2891bf4 100644 --- a/tmk_core/common/action_macro.c +++ b/tmk_core/common/action_macro.c @@ -34,6 +34,8 @@ void action_macro_play(const macro_t *macro_p) macro_t macro = END; uint8_t interval = 0; + uint8_t mod_storage = 0; + if (!macro_p) return; while (true) { switch (MACRO_READ()) { @@ -42,6 +44,7 @@ void action_macro_play(const macro_t *macro_p) dprintf("KEY_DOWN(%02X)\n", macro); if (IS_MOD(macro)) { add_weak_mods(MOD_BIT(macro)); + send_keyboard_report(); } else { register_code(macro); } @@ -51,6 +54,7 @@ void action_macro_play(const macro_t *macro_p) dprintf("KEY_UP(%02X)\n", macro); if (IS_MOD(macro)) { del_weak_mods(MOD_BIT(macro)); + send_keyboard_report(); } else { unregister_code(macro); } @@ -64,6 +68,17 @@ void action_macro_play(const macro_t *macro_p) interval = MACRO_READ(); dprintf("INTERVAL(%u)\n", interval); break; + case MOD_STORE: + mod_storage = get_mods(); + break; + case MOD_RESTORE: + set_mods(mod_storage); + send_keyboard_report(); + break; + case MOD_CLEAR: + clear_mods(); + send_keyboard_report(); + break; case 0x04 ... 0x73: dprintf("DOWN(%02X)\n", macro); register_code(macro);