diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index e9a2818e..ecc003a5 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -248,6 +248,10 @@ void EpubReaderActivity::loop() { } } + bool delayedPrevTurn = false; + bool delayedNextTurn = false; + using BA = CrossPointSettings::BUTTON_ACTION; + ButtonEventManager::ButtonEvent ev; while (buttonEvents.consumeEvent(ev)) { if (ev.button == MappedInputManager::Button::Confirm) { @@ -306,9 +310,33 @@ void EpubReaderActivity::loop() { return; } } + + if (ev.type == ButtonEventManager::PressType::Short) { + if ((ev.button == MappedInputManager::Button::PageBack && SETTINGS.btnShortPageBack == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::PageBack)) || + (ev.button == MappedInputManager::Button::Left && SETTINGS.btnShortLeft == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::Left))) { + delayedPrevTurn = true; + continue; + } + if ((ev.button == MappedInputManager::Button::PageForward && SETTINGS.btnShortPageForward == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::PageForward)) || + (ev.button == MappedInputManager::Button::Right && SETTINGS.btnShortRight == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::Right))) { + delayedNextTurn = true; + continue; + } + } } auto [prevTriggered, nextTriggered] = ReaderUtils::detectPageTurn(mappedInput); + if (!prevTriggered && !nextTriggered) { + if (!delayedPrevTurn && !delayedNextTurn) { + return; + } + prevTriggered = delayedPrevTurn; + nextTriggered = delayedNextTurn; + } if (!prevTriggered && !nextTriggered) { return; } diff --git a/src/activities/reader/XtcReaderActivity.cpp b/src/activities/reader/XtcReaderActivity.cpp index 992788fd..fe14339e 100644 --- a/src/activities/reader/XtcReaderActivity.cpp +++ b/src/activities/reader/XtcReaderActivity.cpp @@ -64,6 +64,10 @@ void XtcReaderActivity::loop() { return; } + bool delayedPrevTurn = false; + bool delayedNextTurn = false; + using BA = CrossPointSettings::BUTTON_ACTION; + ButtonEventManager::ButtonEvent ev; while (buttonEvents.consumeEvent(ev)) { if (ev.button == MappedInputManager::Button::Confirm && ev.type == ButtonEventManager::PressType::Short) { @@ -92,9 +96,33 @@ void XtcReaderActivity::loop() { return; } } + + if (ev.type == ButtonEventManager::PressType::Short) { + if ((ev.button == MappedInputManager::Button::PageBack && SETTINGS.btnShortPageBack == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::PageBack)) || + (ev.button == MappedInputManager::Button::Left && SETTINGS.btnShortLeft == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::Left))) { + delayedPrevTurn = true; + continue; + } + if ((ev.button == MappedInputManager::Button::PageForward && SETTINGS.btnShortPageForward == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::PageForward)) || + (ev.button == MappedInputManager::Button::Right && SETTINGS.btnShortRight == BA::BTN_DEFAULT && + ButtonEventManager::hasDoubleAction(MappedInputManager::Button::Right))) { + delayedNextTurn = true; + continue; + } + } } auto [prevTriggered, nextTriggered] = ReaderUtils::detectPageTurn(mappedInput); + if (!prevTriggered && !nextTriggered) { + if (!delayedPrevTurn && !delayedNextTurn) { + return; + } + prevTriggered = delayedPrevTurn; + nextTriggered = delayedNextTurn; + } if (!prevTriggered && !nextTriggered) { return;