Fixed tap/down/up handling in dynamic keymap macros
parent
ad12acd3c0
commit
92c19dae8c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue