diff --git a/USER_GUIDE.md b/USER_GUIDE.md index e4d72b0c..21c92abc 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -133,6 +133,7 @@ The Settings screen allows you to configure the device's behavior. There are a f - Left, Right, Back, Confirm - Left, Back, Confirm, Right - Back, Confirm, Right, Left + - Back, Left, Right, Confirm - **Side Button Layout (reader)**: Swap the order of the up and down volume buttons from Previous/Next to Next/Previous. This change is only in effect when reading. - **Long-press Chapter Skip**: Set whether long-pressing page turn buttons skip to the next/previous chapter. - "Chapter Skip" (default) - Long-pressing skips to next/previous chapter diff --git a/src/CrossPointSettings.h b/src/CrossPointSettings.h index c450d348..ab5b2177 100644 --- a/src/CrossPointSettings.h +++ b/src/CrossPointSettings.h @@ -43,13 +43,12 @@ class CrossPointSettings { }; // Front button layout options - // Default: Back, Confirm, Left, Right - // Swapped: Left, Right, Back, Confirm enum FRONT_BUTTON_LAYOUT { BACK_CONFIRM_LEFT_RIGHT = 0, LEFT_RIGHT_BACK_CONFIRM = 1, LEFT_BACK_CONFIRM_RIGHT = 2, BACK_CONFIRM_RIGHT_LEFT = 3, + BACK_LEFT_RIGHT_CONFIRM = 4, FRONT_BUTTON_LAYOUT_COUNT }; diff --git a/src/MappedInputManager.cpp b/src/MappedInputManager.cpp index e5423724..7d6751de 100644 --- a/src/MappedInputManager.cpp +++ b/src/MappedInputManager.cpp @@ -18,11 +18,13 @@ struct SideLayoutMap { }; // Order matches CrossPointSettings::FRONT_BUTTON_LAYOUT. +// [back, confirm, left, right] are actioned by these physical buttons: constexpr FrontLayoutMap kFrontLayouts[] = { {HalGPIO::BTN_BACK, HalGPIO::BTN_CONFIRM, HalGPIO::BTN_LEFT, HalGPIO::BTN_RIGHT}, {HalGPIO::BTN_LEFT, HalGPIO::BTN_RIGHT, HalGPIO::BTN_BACK, HalGPIO::BTN_CONFIRM}, {HalGPIO::BTN_CONFIRM, HalGPIO::BTN_LEFT, HalGPIO::BTN_BACK, HalGPIO::BTN_RIGHT}, {HalGPIO::BTN_BACK, HalGPIO::BTN_CONFIRM, HalGPIO::BTN_RIGHT, HalGPIO::BTN_LEFT}, + {HalGPIO::BTN_BACK, HalGPIO::BTN_RIGHT, HalGPIO::BTN_CONFIRM, HalGPIO::BTN_LEFT}, }; // Order matches CrossPointSettings::SIDE_BUTTON_LAYOUT. @@ -85,6 +87,8 @@ MappedInputManager::Labels MappedInputManager::mapLabels(const char* back, const return {previous, back, confirm, next}; case CrossPointSettings::BACK_CONFIRM_RIGHT_LEFT: return {back, confirm, next, previous}; + case CrossPointSettings::BACK_LEFT_RIGHT_CONFIRM: + return {back, previous, next, confirm}; case CrossPointSettings::BACK_CONFIRM_LEFT_RIGHT: default: return {back, confirm, previous, next}; diff --git a/src/activities/settings/SettingsActivity.cpp b/src/activities/settings/SettingsActivity.cpp index 7316db05..d21b1efe 100644 --- a/src/activities/settings/SettingsActivity.cpp +++ b/src/activities/settings/SettingsActivity.cpp @@ -40,9 +40,9 @@ const SettingInfo readerSettings[readerSettingsCount] = { constexpr int controlsSettingsCount = 4; const SettingInfo controlsSettings[controlsSettingsCount] = { - SettingInfo::Enum( - "Front Button Layout", &CrossPointSettings::frontButtonLayout, - {"Bck, Cnfrm, Lft, Rght", "Lft, Rght, Bck, Cnfrm", "Lft, Bck, Cnfrm, Rght", "Bck, Cnfrm, Rght, Lft"}), + SettingInfo::Enum("Front Button Layout", &CrossPointSettings::frontButtonLayout, + {"Bck, Cnfrm, Lft, Rght", "Lft, Rght, Bck, Cnfrm", "Lft, Bck, Cnfrm, Rght", + "Bck, Cnfrm, Rght, Lft", "Bck, Lft, Rght, Cnfrm"}), SettingInfo::Enum("Side Button Layout (reader)", &CrossPointSettings::sideButtonLayout, {"Prev, Next", "Next, Prev"}), SettingInfo::Toggle("Long-press Chapter Skip", &CrossPointSettings::longPressChapterSkip),