summary refs log tree commit diff
path: root/quantum
diff options
context:
space:
mode:
authorWilba6582 <Jason.S.Williams@gmail.com>2019-03-11 12:41:50 +1100
committerWilba6582 <Jason.S.Williams@gmail.com>2019-03-11 12:41:50 +1100
commit92c19dae8cfa1bbeeaa447353ac4d7a96e42b330 (patch)
tree76b67c4260ec5f389a8b2bf58fc4334a93556c0a /quantum
parentad12acd3c049e1eef02ac21bb749eda375e09cec (diff)
Fixed tap/down/up handling in dynamic keymap macros
Diffstat (limited to 'quantum')
-rw-r--r--quantum/dynamic_keymap.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c
index 14627a93d6..53c18a7510 100644
--- a/quantum/dynamic_keymap.c
+++ b/quantum/dynamic_keymap.c
@@ -210,19 +210,27 @@ void dynamic_keymap_macro_send( uint8_t id )
 		++p;
 	}
 
-	// Send the macro string one char at a time
-	// by making temporary 1 char strings
-	char data[2] = { 0, 0 };
+	// 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 };
 	// We already checked there was a null at the end of
 	// the buffer, so this cannot go past the end
 	while ( 1 ) {
-		data[0] = eeprom_read_byte(p);
+		data[0] = eeprom_read_byte(p++);
+		data[1] = 0;
 		// Stop at the null terminator of this macro string
 		if ( data[0] == 0 ) {
 			break;
 		}
+		// If the char is magic (tap, down, up),
+		// add the next char (key to use) and send a 2 char string.
+		if ( data[0] == 1 || data[0] == 2 || data[0] == 3 ) {
+			data[1] = eeprom_read_byte(p++);
+			if ( data[1] == 0 ) {
+				break;
+			}
+		}
 		send_string(data);
-		++p;
 	}
 }