]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Fixed tap/down/up handling in dynamic keymap macros
authorWilba6582 <Jason.S.Williams@gmail.com>
Mon, 11 Mar 2019 01:41:50 +0000 (12:41 +1100)
committerWilba6582 <Jason.S.Williams@gmail.com>
Mon, 11 Mar 2019 01:41:50 +0000 (12:41 +1100)
quantum/dynamic_keymap.c

index 14627a93d6de80f83bdca802cea1bf03d0d90331..53c18a7510beb181ecc1a75b01a342537ec1531c 100644 (file)
@@ -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;
        }
 }