From 141535c9db200348396abe38f66e8679c010767b Mon Sep 17 00:00:00 2001
From: Wilba <Jason.S.Williams@gmail.com>
Date: Sun, 15 Mar 2020 00:35:12 +1100
Subject: [PATCH] Realign dynamic macros with recent SEND_STRING changes
 (#8407)

---
 quantum/dynamic_keymap.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c
index f4120b1184..3bb84cbdea 100644
--- a/quantum/dynamic_keymap.c
+++ b/quantum/dynamic_keymap.c
@@ -210,9 +210,9 @@ void dynamic_keymap_macro_send(uint8_t id) {
         ++p;
     }
 
-    // Send the macro string one or two chars at a time
-    // by making temporary 1 or 2 char strings
-    char data[3] = {0, 0, 0};
+    // Send the macro string one or three chars at a time
+    // by making temporary 1 or 3 char strings
+    char data[4] = {0, 0, 0, 0};
     // We already checked there was a null at the end of
     // the buffer, so this cannot go past the end
     while (1) {
@@ -223,10 +223,12 @@ void dynamic_keymap_macro_send(uint8_t id) {
             break;
         }
         // If the char is magic (tap, down, up),
-        // add the next char (key to use) and send a 2 char string.
+        // add the next char (key to use) and send a 3 char string.
         if (data[0] == SS_TAP_CODE || data[0] == SS_DOWN_CODE || data[0] == SS_UP_CODE) {
-            data[1] = eeprom_read_byte(p++);
-            if (data[1] == 0) {
+            data[1] = data[0];
+            data[0] = SS_QMK_PREFIX;
+            data[2] = eeprom_read_byte(p++);
+            if (data[2] == 0) {
                 break;
             }
         }