summaryrefslogtreecommitdiff
path: root/quantum/dynamic_keymap.c
diff options
context:
space:
mode:
authorWilba6582 <Jason.S.Williams@gmail.com>2019-03-11 12:41:50 +1100
committerDrashna Jaelre <drashna@live.com>2019-04-09 09:49:25 -0700
commit7661468719be1013c40beaf27e6f6876b5c5d8cb (patch)
tree9557ca0f1770f5aafe0eaacfa2dde9da0c0abee6 /quantum/dynamic_keymap.c
parent45207b079be14365cebb7d2f236a14eae5a4bd9b (diff)
Fixed tap/down/up handling in dynamic keymap macros
Diffstat (limited to 'quantum/dynamic_keymap.c')
-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;
}
}