From 14b6e496920bd4377b3d28707ba9e9998e052833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Wed, 2 May 2018 14:49:56 +0200 Subject: [PATCH] Don't suppress modifiers upon releasing a layer. Fixes #82. --- right/src/usb_report_updater.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index 6921963..22576ae 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -288,7 +288,7 @@ static void updateActiveUsbReports(void) if (activeLayer == LayerId_Base) { activeLayer = GetActiveLayer(); } - bool suppressKeys = previousLayer != LayerId_Base && activeLayer == LayerId_Base; + bool layerGotReleased = previousLayer != LayerId_Base && activeLayer == LayerId_Base; LedDisplay_SetLayer(activeLayer); if (MacroPlaying) { @@ -305,7 +305,6 @@ static void updateActiveUsbReports(void) key_state_t *keyState = &KeyStates[slotId][keyId]; key_action_t *action = &CurrentKeymap[activeLayer][slotId][keyId]; - if (keyState->debounceCounter < KEY_DEBOUNCER_TIMEOUT_MSEC) { keyState->current = keyState->previous; } else if (!keyState->previous && keyState->current) { @@ -313,7 +312,8 @@ static void updateActiveUsbReports(void) } if (keyState->current) { - if (suppressKeys) { + key_action_t *baseAction = &CurrentKeymap[LayerId_Base][slotId][keyId]; + if (layerGotReleased && !(baseAction->type == KeyActionType_Keystroke && baseAction->keystroke.scancode == 0 && baseAction->keystroke.modifiers)) { keyState->suppressed = true; }