X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;ds=sidebyside;f=common%2Faction_macro.c;h=ba93fc8b2324b7cb96e9a5744a21eee89c3f588d;hb=d5e5dbd0aa28477884940ce045da09a9168859d8;hp=cc7ac18a099215defdf2772dfea49a37fef263c0;hpb=5b425731c5b662d107ba0f970a7ae7c7fe97d01b;p=max%2Ftmk_keyboard.git
diff --git a/common/action_macro.c b/common/action_macro.c
index cc7ac18a..ba93fc8b 100644
--- a/common/action_macro.c
+++ b/common/action_macro.c
@@ -14,9 +14,10 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#include
#include "action.h"
+#include "action_util.h"
#include "action_macro.h"
+#include "wait.h"
#ifdef DEBUG_ACTION
#include "debug.h"
@@ -27,7 +28,7 @@ along with this program. If not, see .
#ifndef NO_ACTION_MACRO
-#define MACRO_READ() (macro = pgm_read_byte(macro_p++))
+#define MACRO_READ() (macro = MACRO_GET(macro_p++))
void action_macro_play(const macro_t *macro_p)
{
macro_t macro = END;
@@ -39,17 +40,25 @@ void action_macro_play(const macro_t *macro_p)
case KEY_DOWN:
MACRO_READ();
dprintf("KEY_DOWN(%02X)\n", macro);
- register_code(macro);
+ if (IS_MOD(macro)) {
+ add_weak_mods(MOD_BIT(macro));
+ } else {
+ register_code(macro);
+ }
break;
case KEY_UP:
MACRO_READ();
dprintf("KEY_UP(%02X)\n", macro);
- unregister_code(macro);
+ if (IS_MOD(macro)) {
+ del_weak_mods(MOD_BIT(macro));
+ } else {
+ unregister_code(macro);
+ }
break;
case WAIT:
MACRO_READ();
dprintf("WAIT(%u)\n", macro);
- { uint8_t ms = macro; while (ms--) _delay_ms(1); }
+ { uint8_t ms = macro; while (ms--) wait_ms(1); }
break;
case INTERVAL:
interval = MACRO_READ();
@@ -68,7 +77,7 @@ void action_macro_play(const macro_t *macro_p)
return;
}
// interval
- { uint8_t ms = interval; while (ms--) _delay_ms(1); }
+ { uint8_t ms = interval; while (ms--) wait_ms(1); }
}
}
#endif