diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index 8098055e9..4020d5922 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -1320,6 +1320,12 @@ int Screen::handleInputEvent(const InputEvent *event) if (!screenOn) return 0; +#ifdef USE_EINK // the screen is the last input handler, so if an event makes it here, we can assume it will prompt a screen draw. + EINK_ADD_FRAMEFLAG(dispdev, DEMAND_FAST); // Use fast-refresh for next frame, no skip please + EINK_ADD_FRAMEFLAG(dispdev, BLOCKING); // Edge case: if this frame is promoted to COSMETIC, wait for update + handleSetOn(true); // Ensure power-on to receive deep-sleep screensaver (PowerFSM should handle?) + setFastFramerate(); // Draw ASAP +#endif if (NotificationRenderer::isOverlayBannerShowing()) { NotificationRenderer::inEvent = event->inputEvent; static OverlayCallback overlays[] = {graphics::UIRenderer::drawNavigationBar, diff --git a/src/input/ButtonThread.cpp b/src/input/ButtonThread.cpp index 79c6fa3e3..063203f86 100644 --- a/src/input/ButtonThread.cpp +++ b/src/input/ButtonThread.cpp @@ -200,7 +200,8 @@ int32_t ButtonThread::runOnce() LOG_WARN("Long press!"); // Check if this is part of a short-press + long-press combination - if (waitingForLongPress && (millis() - shortPressTime) <= BUTTON_COMBO_TIMEOUT_MS) { + if (_shortLong != INPUT_BROKER_NONE && waitingForLongPress && + (millis() - shortPressTime) <= BUTTON_COMBO_TIMEOUT_MS) { LOG_WARN("Short-press + Long-press combination detected!"); evt.inputEvent = _shortLong; // evt.kbchar = _shortLong;