diff options
| author | Wilba6582 <Jason.S.Williams@gmail.com> | 2019-03-11 12:41:50 +1100 |
|---|---|---|
| committer | Wilba6582 <Jason.S.Williams@gmail.com> | 2019-03-11 12:41:50 +1100 |
| commit | 92c19dae8cfa1bbeeaa447353ac4d7a96e42b330 (patch) | |
| tree | 76b67c4260ec5f389a8b2bf58fc4334a93556c0a /quantum/dynamic_keymap.c | |
| parent | ad12acd3c049e1eef02ac21bb749eda375e09cec (diff) | |
| download | qmk_firmware-92c19dae8cfa1bbeeaa447353ac4d7a96e42b330.tar.gz qmk_firmware-92c19dae8cfa1bbeeaa447353ac4d7a96e42b330.zip | |
Fixed tap/down/up handling in dynamic keymap macros
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..53c18a751 100644 --- a/quantum/dynamic_keymap.c +++ b/quantum/dynamic_keymap.c | |||
| @@ -210,19 +210,27 @@ void dynamic_keymap_macro_send( uint8_t id ) | |||
| 210 | ++p; | 210 | ++p; |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | // Send the macro string one char at a time | 213 | // Send the macro string one or two chars at a time |
| 214 | // by making temporary 1 char strings | 214 | // by making temporary 1 or 2 char strings |
| 215 | char data[2] = { 0, 0 }; | 215 | char data[3] = { 0, 0, 0 }; |
| 216 | // We already checked there was a null at the end of | 216 | // We already checked there was a null at the end of |
| 217 | // the buffer, so this cannot go past the end | 217 | // the buffer, so this cannot go past the end |
| 218 | while ( 1 ) { | 218 | while ( 1 ) { |
| 219 | data[0] = eeprom_read_byte(p); | 219 | data[0] = eeprom_read_byte(p++); |
| 220 | data[1] = 0; | ||
| 220 | // Stop at the null terminator of this macro string | 221 | // Stop at the null terminator of this macro string |
| 221 | if ( data[0] == 0 ) { | 222 | if ( data[0] == 0 ) { |
| 222 | break; | 223 | break; |
| 223 | } | 224 | } |
| 225 | // If the char is magic (tap, down, up), | ||
| 226 | // add the next char (key to use) and send a 2 char string. | ||
| 227 | if ( data[0] == 1 || data[0] == 2 || data[0] == 3 ) { | ||
| 228 | data[1] = eeprom_read_byte(p++); | ||
| 229 | if ( data[1] == 0 ) { | ||
| 230 | break; | ||
| 231 | } | ||
| 232 | } | ||
| 224 | send_string(data); | 233 | send_string(data); |
| 225 | ++p; | ||
| 226 | } | 234 | } |
| 227 | } | 235 | } |
| 228 | 236 | ||
