X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=quantum%2Fdynamic_keymap.c;h=53c18a7510beb181ecc1a75b01a342537ec1531c;hb=92c19dae8cfa1bbeeaa447353ac4d7a96e42b330;hp=14627a93d6de80f83bdca802cea1bf03d0d90331;hpb=ad12acd3c049e1eef02ac21bb749eda375e09cec;p=qmk_firmware.git diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c index 14627a93d..53c18a751 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; } }