diff options
author | Drashna Jaelre <drashna@live.com> | 2019-04-08 04:19:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-08 04:19:00 +0200 |
commit | 908966bdf36605301d27cdcae82c3201c156a43f (patch) | |
tree | 5749c833ad1b79de8958bdcfe2ddf2e1f06012a2 /quantum/dynamic_keymap.c | |
parent | 6a4c54870cff157f1056ca65363c9e862920cbc9 (diff) | |
parent | d15bb05c935e378f2e1e912a46c3114697dd00e4 (diff) | |
download | qmk_firmware-908966bdf36605301d27cdcae82c3201c156a43f.tar.gz qmk_firmware-908966bdf36605301d27cdcae82c3201c156a43f.tar.xz |
Fixed tap/down/up handling in dynamic keymap macros (#5363)
* Fixed tap/down/up handling in dynamic keymap macros
* Added SS_TAP_CODE, SS_DOWN_CODE, SS_UP_CODE
Diffstat (limited to 'quantum/dynamic_keymap.c')
-rw-r--r-- | quantum/dynamic_keymap.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c index 14627a93d..38400e36f 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] == SS_TAP_CODE || data[0] == SS_DOWN_CODE || data[0] == SS_UP_CODE ) { + data[1] = eeprom_read_byte(p++); + if ( data[1] == 0 ) { + break; + } + } send_string(data); - ++p; } } |