From 7dd8527aabdf3afeeb258e566e8cde999c94ee07 Mon Sep 17 00:00:00 2001 From: Michael Richters Date: Sun, 22 May 2022 23:49:50 -0500 Subject: [PATCH] Fix Macros tap sequence parsing Both Macros and DynamicMacros were only reading one byte for each `Key` object in a tap sequence, so it would first read the flags byte of each key in the sequence and treat it as a keycode byte, using a flags byte of `0`. As soon as an unmodified keyboard key was encountered, this would be recognized as the end of the sequence. This change fixes the bug by reading and using the flags byte of each key in the sequence as intended. Signed-off-by: Michael Richters --- .../src/kaleidoscope/plugin/DynamicMacros.cpp | 2 +- plugins/Kaleidoscope-Macros/src/kaleidoscope/plugin/Macros.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp b/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp index 39fa0977..c79d25c9 100644 --- a/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp +++ b/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp @@ -188,7 +188,7 @@ void DynamicMacros::play(uint8_t macro_id) { case MACRO_ACTION_STEP_TAP_SEQUENCE: { while (true) { - key.setFlags(0); + key.setFlags(Runtime.storage().read(pos++)); key.setKeyCode(Runtime.storage().read(pos++)); if (key == Key_NoKey) break; diff --git a/plugins/Kaleidoscope-Macros/src/kaleidoscope/plugin/Macros.cpp b/plugins/Kaleidoscope-Macros/src/kaleidoscope/plugin/Macros.cpp index c1c655c8..9b33c370 100644 --- a/plugins/Kaleidoscope-Macros/src/kaleidoscope/plugin/Macros.cpp +++ b/plugins/Kaleidoscope-Macros/src/kaleidoscope/plugin/Macros.cpp @@ -154,7 +154,7 @@ void Macros::play(const macro_t *macro_p) { case MACRO_ACTION_STEP_TAP_SEQUENCE: { while (true) { - key.setFlags(0); + key.setFlags(pgm_read_byte(macro_p++)); key.setKeyCode(pgm_read_byte(macro_p++)); if (key == Key_NoKey) break;