~ruther/qmk_firmware

92c19dae8cfa1bbeeaa447353ac4d7a96e42b330 — Wilba6582 6 years ago ad12acd
Fixed tap/down/up handling in dynamic keymap macros
1 files changed, 13 insertions(+), 5 deletions(-)

M quantum/dynamic_keymap.c
M quantum/dynamic_keymap.c => quantum/dynamic_keymap.c +13 -5
@@ 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;
	}
}