From 6e11c0b8afc87102685852c5cc66e78db34ce830 Mon Sep 17 00:00:00 2001 From: Eric Tang Date: Sun, 24 Jun 2018 13:56:58 -0700 Subject: [PATCH] Handle macro actions and make the macro engine preempt normal behavior --- right/src/usb_report_updater.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index 6a9e9f0..108f9a5 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -278,6 +278,9 @@ static void applyKeyAction(key_state_t *keyState, key_action_t *action) SwitchKeymapById(action->switchKeymap.keymapId); } break; + case KeyActionType_PlayMacro: + Macros_StartMacro(action->playMacro.macroId); + break; } } @@ -288,10 +291,19 @@ static secondary_role_t secondaryRole; static void updateActiveUsbReports(void) { - memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT); - static uint8_t previousModifiers = 0; + if (MacroPlaying) { + Macros_ContinueMacro(); + memcpy(&ActiveUsbMouseReport, &MacroMouseReport, sizeof MacroMouseReport); + memcpy(&ActiveUsbBasicKeyboardReport, &MacroBasicKeyboardReport, sizeof MacroBasicKeyboardReport); + memcpy(&ActiveUsbMediaKeyboardReport, &MacroMediaKeyboardReport, sizeof MacroMediaKeyboardReport); + memcpy(&ActiveUsbSystemKeyboardReport, &MacroSystemKeyboardReport, sizeof MacroSystemKeyboardReport); + return; + } + + memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT); + basicScancodeIndex = 0; mediaScancodeIndex = 0; systemScancodeIndex = 0; @@ -310,15 +322,6 @@ static void updateActiveUsbReports(void) bool layerGotReleased = previousLayer != LayerId_Base && activeLayer == LayerId_Base; LedDisplay_SetLayer(activeLayer); - if (MacroPlaying) { - Macros_ContinueMacro(); - memcpy(&ActiveUsbMouseReport, &MacroMouseReport, sizeof MacroMouseReport); - memcpy(&ActiveUsbBasicKeyboardReport, &MacroBasicKeyboardReport, sizeof MacroBasicKeyboardReport); - memcpy(&ActiveUsbMediaKeyboardReport, &MacroMediaKeyboardReport, sizeof MacroMediaKeyboardReport); - memcpy(&ActiveUsbSystemKeyboardReport, &MacroSystemKeyboardReport, sizeof MacroSystemKeyboardReport); - return; - } - for (uint8_t slotId=0; slotId