From b90edc5995b5ab3eec080b90f14191f9c5ff5fb6 Mon Sep 17 00:00:00 2001 From: pelgraine <140762863+pelgraine@users.noreply.github.com> Date: Sat, 18 Jul 2026 18:16:27 +1000 Subject: [PATCH] T-Decks Pro & Max: reverted back to Q to exit in most instances (not involving text entry, where it remains sh+del to exit) --- examples/companion_radio/main.cpp | 17 +++--- examples/companion_radio/ui-new/AlarmScreen.h | 12 ++-- .../ui-new/AudiobookPlayerScreen.h | 4 +- .../ui-new/ChannelPickerScreen.h | 6 +- .../companion_radio/ui-new/ChannelScreen.h | 14 ++--- .../companion_radio/ui-new/DiscoveryScreen.h | 4 +- .../ui-new/Fontpreviewscreen.h | 4 +- .../companion_radio/ui-new/GamesMenuScreen.h | 2 +- .../companion_radio/ui-new/LastHeardScreen.h | 2 +- .../ui-new/MinesweeperScreen.h | 4 +- .../companion_radio/ui-new/PathEditorScreen.h | 4 +- .../ui-new/RepeaterAdminScreen.h | 16 +++--- examples/companion_radio/ui-new/RxLogScreen.h | 2 +- examples/companion_radio/ui-new/SMSScreen.h | 11 ++-- .../companion_radio/ui-new/SettingsScreen.h | 56 +++++++++---------- examples/companion_radio/ui-new/SnakeScreen.h | 6 +- .../companion_radio/ui-new/TextReaderScreen.h | 4 +- examples/companion_radio/ui-new/Tracescreen.h | 10 ++-- .../ui-new/VoiceMessageScreen.h | 12 ++-- .../companion_radio/ui-new/WebReaderScreen.h | 26 ++++----- variants/lilygo_tdeck_max/TDeckProMaxBoard.h | 2 +- variants/lilygo_tdeck_max/variant.h | 4 +- 22 files changed, 114 insertions(+), 108 deletions(-) diff --git a/examples/companion_radio/main.cpp b/examples/companion_radio/main.cpp index 216adb95..8c9a1a58 100644 --- a/examples/companion_radio/main.cpp +++ b/examples/companion_radio/main.cpp @@ -4953,7 +4953,7 @@ void handleKeyboardInput() { // - Playing: navigate home, audio continues in background // - Paused/stopped: close book, return to file list // - File list: exit player entirely - if (key == KEY_CANCEL) { + if (key == KEY_CANCEL || key == 'q') { if (abPlayer->isBookOpen()) { if (abPlayer->isAudioActive()) { // Audio is playing -- leave screen, audio continues via audioTick() @@ -4997,6 +4997,8 @@ void handleKeyboardInput() { ui_task.forceRefresh(); return; } + // 'q' = back/cancel in every voice mode (no text entry here); treat as Shift+Del. + if (key == 'q') key = KEY_CANCEL; // Shift+Del from message list exits voice screen if (key == KEY_CANCEL && voiceScr->getMode() == VoiceMessageScreen::MESSAGE_LIST) { Serial.println("Exiting voice message screen"); @@ -5017,7 +5019,7 @@ void handleKeyboardInput() { // Shift+Del: if reading, reader handles it (close book -> file list) // if on file list, exit reader entirely - if (key == KEY_CANCEL) { + if (key == KEY_CANCEL || key == 'q') { if (reader->isReading()) { // Let the reader handle Shift+Del (close book, go to file list) ui_task.injectKey(KEY_CANCEL); @@ -5167,7 +5169,7 @@ void handleKeyboardInput() { SettingsScreen* settings = (SettingsScreen*)ui_task.getSettingsScreen(); // Shift+Del: exit settings (when not editing) - if (!settings->isEditing() && (key == KEY_CANCEL)) { + if (!settings->isEditing() && (key == KEY_CANCEL || key == 'q')) { if (settings->hasRadioChanges()) { // Let settings show "apply changes?" confirm dialog ui_task.injectKey(key); @@ -5308,7 +5310,7 @@ void handleKeyboardInput() { // In category menu (top level): Shift+Del exits, C opens compose if (astate == RepeaterAdminScreen::STATE_CATEGORY_MENU) { - if (shiftDel) { + if (shiftDel || key == 'q') { exitAdmin(); return; } @@ -5331,7 +5333,7 @@ void handleKeyboardInput() { // All other states (command menu, param entry, confirm, waiting, // response, error): convert Shift+Del to exit signal and let the // screen handle back-navigation internally - if (shiftDel) { + if (shiftDel || (key == 'q' && astate != RepeaterAdminScreen::STATE_PARAM_ENTRY)) { ui_task.injectKey(KEY_ADMIN_EXIT); } else { ui_task.injectKey(key); @@ -5360,7 +5362,7 @@ void handleKeyboardInput() { } // Shift+Del from app menu -> go home; Shift+Del from inner views is handled by SMSScreen - if ((key == KEY_CANCEL) && smsScr->getSubView() == SMSScreen::APP_MENU) { + if ((key == KEY_CANCEL || key == 'q') && smsScr->getSubView() == SMSScreen::APP_MENU) { Serial.println("Nav: SMS -> Home"); ui_task.gotoHomeScreen(); return; @@ -5439,7 +5441,7 @@ void handleKeyboardInput() { webReaderTextEntry = false; // Shift+Del from HOME mode exits the web reader entirely (like text reader) - if ((key == KEY_CANCEL) && wr && wr->isHome() && !wr->isUrlEditing() && !wr->isSearchEditing()) { + if ((key == KEY_CANCEL || key == 'q') && wr && wr->isHome() && !wr->isUrlEditing() && !wr->isSearchEditing()) { Serial.println("Exiting web reader"); ui_task.gotoHomeScreen(); return; @@ -6146,6 +6148,7 @@ void handleKeyboardInput() { } break; + case 'q': case KEY_CANCEL: // If channel screen reply select or path overlay is showing, dismiss it if (ui_task.isOnChannelScreen()) { diff --git a/examples/companion_radio/ui-new/AlarmScreen.h b/examples/companion_radio/ui-new/AlarmScreen.h index afc1dcd9..72c90fa1 100644 --- a/examples/companion_radio/ui-new/AlarmScreen.h +++ b/examples/companion_radio/ui-new/AlarmScreen.h @@ -520,7 +520,7 @@ private: display.print(line2); } - drawFooter(display, "O:On/Off Enter:Edit", "Sh+Del:X"); + drawFooter(display, "O:On/Off Enter:Edit", "Q:X"); } // ---- Render: Edit alarm ---- @@ -649,7 +649,7 @@ private: drawFooter(display, "Type digits", "Enter:OK Sh+Del:Cancel"); } else { - drawFooter(display, "A/D:Adjust Enter:Type", "Sh+Del:Save"); + drawFooter(display, "A/D:Adjust Enter:Type", "Q:Save"); } } @@ -671,7 +671,7 @@ private: display.print("Place 44kHz .mp3 in"); display.setCursor(0, 38); display.print("/alarms/ on SD card"); - drawFooter(display, "0 files", "Sh+Del:Back"); + drawFooter(display, "0 files", "Q:Back"); return; } @@ -715,7 +715,7 @@ private: char countBuf[12]; snprintf(countBuf, sizeof(countBuf), "%d files", (int)_soundFiles.size()); - drawFooter(display, countBuf, "Enter:Pick Sh+Del:X"); + drawFooter(display, countBuf, "Enter:Pick Q:X"); } // ---- Render: Ringing ---- @@ -945,7 +945,7 @@ private: } // Shift+Del - save and exit edit - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { memcpy(&_config.slots[_editSlot], &_editCopy, sizeof(AlarmSlot)); saveConfig(); _mode = ALARM_LIST; @@ -988,7 +988,7 @@ private: } // Shift+Del - cancel - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _mode = EDIT_ALARM; return true; } diff --git a/examples/companion_radio/ui-new/AudiobookPlayerScreen.h b/examples/companion_radio/ui-new/AudiobookPlayerScreen.h index a07ea0e2..ef196ae3 100644 --- a/examples/companion_radio/ui-new/AudiobookPlayerScreen.h +++ b/examples/companion_radio/ui-new/AudiobookPlayerScreen.h @@ -1279,7 +1279,7 @@ private: display.setCursor(0, 38); display.print("/audiobooks/ on SD"); - drawFooter(display, "0 files", "Sh+Del:Back"); + drawFooter(display, "0 files", "Q:Back"); return; } @@ -1505,7 +1505,7 @@ private: // ---- Footer Nav Bar ---- { - const char* rightText = (_isPlaying && !_isPaused) ? "Sh+Del:Leave" : "Sh+Del:Close"; + const char* rightText = (_isPlaying && !_isPaused) ? "Q:Leave" : "Q:Close"; if (_playlist.size() > 1) { drawFooter(display, "A/D:Seek N:Next", rightText); } else { diff --git a/examples/companion_radio/ui-new/ChannelPickerScreen.h b/examples/companion_radio/ui-new/ChannelPickerScreen.h index d615e9bf..564d4790 100644 --- a/examples/companion_radio/ui-new/ChannelPickerScreen.h +++ b/examples/companion_radio/ui-new/ChannelPickerScreen.h @@ -379,7 +379,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) const char* hints = "Tap:Yes Boot:Cancel"; #else - const char* hints = "Enter:Yes Sh+Del:Cancel"; + const char* hints = "Enter:Yes Q:Cancel"; #endif display.setCursor(boxX + 4, boxY + 29); display.print(hints); @@ -411,9 +411,9 @@ public: display.print(rt); #else if (_confirmDelete) { - display.print("Enter:Yes Sh+Del:Cancel"); + display.print("Enter:Yes Q:Cancel"); } else { - display.print("W/S:Nav Sh+Del:X"); + display.print("W/S:Nav Q:X"); const char* rt = "Ent:Open"; display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY); display.print(rt); diff --git a/examples/companion_radio/ui-new/ChannelScreen.h b/examples/companion_radio/ui-new/ChannelScreen.h index 53da4523..a9823f0f 100644 --- a/examples/companion_radio/ui-new/ChannelScreen.h +++ b/examples/companion_radio/ui-new/ChannelScreen.h @@ -1005,7 +1005,7 @@ public: display.print(rtInbox); #else display.setCursor(0, footerY); - display.print("Sh+Del:Bck"); + display.print("Q:Bck"); const char* rtInbox = "Ent:Open"; display.setCursor(display.width() - display.getTextWidth(rtInbox) - 2, footerY); display.print(rtInbox); @@ -1206,7 +1206,7 @@ public: display.print("Back"); const char* copyHint = "Tap:Dismiss"; #else - display.print("Sh+Del:Back"); + display.print("Q:Back"); // Show scroll hint if path is scrollable if (msg && (msg->path_len & 63) > _pathHopsVisible && msg->path_len != 0xFF) { const char* scrollHint = "W/S:Scrl"; @@ -1238,7 +1238,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Hold: Compose reply"); #else - display.print("Sh+Del: Back to inbox"); + display.print("Q: Back to inbox"); display.setCursor(0, 40); display.print("Ent: Compose reply"); #endif @@ -1758,21 +1758,21 @@ public: #else // Left side: abbreviated controls if (_replySelectMode) { - display.print("W/S:Sel V:Pth Sh+Del:X"); + display.print("W/S:Sel V:Pth Q:X"); const char* rightText = "Ent:Reply"; display.setCursor(display.width() - display.getTextWidth(rightText) - 2, footerY); display.print(rightText); } else if (_viewChannelIdx == 0xFF) { if (_dmContactPerms > 0) { - display.print("Sh+Del:Exit L:Admin"); + display.print("Q:Exit L:Admin"); } else { - display.print("Sh+Del:Exit"); + display.print("Q:Exit"); } const char* rightText = "Ent:Reply"; display.setCursor(display.width() - display.getTextWidth(rightText) - 2, footerY); display.print(rightText); } else { - display.print("Sh+Del:Bck R:Rply"); + display.print("Q:Bck R:Rply"); const char* rightText = "Ent:New"; display.setCursor(display.width() - display.getTextWidth(rightText) - 2, footerY); display.print(rightText); diff --git a/examples/companion_radio/ui-new/DiscoveryScreen.h b/examples/companion_radio/ui-new/DiscoveryScreen.h index 6b0f7f48..cd725e77 100644 --- a/examples/companion_radio/ui-new/DiscoveryScreen.h +++ b/examples/companion_radio/ui-new/DiscoveryScreen.h @@ -116,7 +116,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Long press: Rescan"); #else - display.print("F: Scan again Sh+Del: Back"); + display.print("F: Scan again Q: Back"); #endif } #endif @@ -218,7 +218,7 @@ public: display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); #else - display.print("Sh+Del:X F:Scan"); + display.print("Q:X F:Scan"); const char* right = "Tap/Ent:Add"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); diff --git a/examples/companion_radio/ui-new/Fontpreviewscreen.h b/examples/companion_radio/ui-new/Fontpreviewscreen.h index 9cbfe02f..db3edb92 100644 --- a/examples/companion_radio/ui-new/Fontpreviewscreen.h +++ b/examples/companion_radio/ui-new/Fontpreviewscreen.h @@ -136,7 +136,7 @@ public: display.print("Swipe:Pick"); const char* rt = "Boot:Back Tap:Apply"; #else - display.print("W/S:Pick Sh+Del:Back"); + display.print("W/S:Pick Q:Back"); const char* rt = "Enter:Apply"; #endif display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY); @@ -183,7 +183,7 @@ public: } // Shift+Del - cancel, restore original style - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _prefs->ui_font_style = _originalStyle; _wantExit = true; return true; diff --git a/examples/companion_radio/ui-new/GamesMenuScreen.h b/examples/companion_radio/ui-new/GamesMenuScreen.h index c1094a69..3973865a 100644 --- a/examples/companion_radio/ui-new/GamesMenuScreen.h +++ b/examples/companion_radio/ui-new/GamesMenuScreen.h @@ -145,7 +145,7 @@ public: int fy = display.height() - 12; display.drawRect(0, fy - 2, display.width(), 1); display.setCursor(2, fy); - display.print("Enter:Play Sh+Del:Back"); + display.print("Enter:Play Q:Back"); #endif return 5000; // Static menu -- slow refresh diff --git a/examples/companion_radio/ui-new/LastHeardScreen.h b/examples/companion_radio/ui-new/LastHeardScreen.h index f676308a..3c2f27e7 100644 --- a/examples/companion_radio/ui-new/LastHeardScreen.h +++ b/examples/companion_radio/ui-new/LastHeardScreen.h @@ -213,7 +213,7 @@ public: display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); #else - display.print("Sh+Del:Bk"); + display.print("Q:Bk"); const char* right = "Tap/Ent:Add/Del"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); diff --git a/examples/companion_radio/ui-new/MinesweeperScreen.h b/examples/companion_radio/ui-new/MinesweeperScreen.h index d80e3b86..23b0912b 100644 --- a/examples/companion_radio/ui-new/MinesweeperScreen.h +++ b/examples/companion_radio/ui-new/MinesweeperScreen.h @@ -431,7 +431,7 @@ public: int fy = display.height() - 12; display.drawRect(0, fy - 2, display.width(), 1); display.setCursor(2, fy); - display.print("Enter:Start Sh+Del:Back"); + display.print("Enter:Start Q:Back"); #endif return 5000; @@ -487,7 +487,7 @@ public: } ty += 16; display.setColor(DisplayDriver::GREEN); - display.drawTextCentered(cx, ty, "Enter:Retry Sh+Del:Back"); + display.drawTextCentered(cx, ty, "Enter:Retry Q:Back"); return 5000; } diff --git a/examples/companion_radio/ui-new/PathEditorScreen.h b/examples/companion_radio/ui-new/PathEditorScreen.h index 23e13f24..3385b63a 100644 --- a/examples/companion_radio/ui-new/PathEditorScreen.h +++ b/examples/companion_radio/ui-new/PathEditorScreen.h @@ -397,7 +397,7 @@ public: display.print(right); #else display.setCursor(0, footerY); - display.print("Sh+Del:Bk W/S:Nav"); + display.print("Q:Bk W/S:Nav"); const char* right = "Enter:Sel"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); @@ -486,7 +486,7 @@ public: display.print(right); #else display.setCursor(0, footerY); - display.print("Sh+Del:Cancel W/S:Scroll"); + display.print("Q:Cancel W/S:Scroll"); const char* right = "Enter:Add"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); diff --git a/examples/companion_radio/ui-new/RepeaterAdminScreen.h b/examples/companion_radio/ui-new/RepeaterAdminScreen.h index a5409546..f034f59b 100644 --- a/examples/companion_radio/ui-new/RepeaterAdminScreen.h +++ b/examples/companion_radio/ui-new/RepeaterAdminScreen.h @@ -657,7 +657,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Boot:Cancel"); #else - display.print("Sh+Del:Cancel"); + display.print("Q:Cancel"); #endif break; @@ -668,8 +668,8 @@ public: #elif defined(MECK_TWATCH) display.print("Long Press: Select"); #else - display.print("Sh+Del:Exit"); - renderFooterMidRight(display, footerY, "Sh+Del:Exit", "Ent:Open", "W/S:Sel"); + display.print("Q:Exit"); + renderFooterMidRight(display, footerY, "Q:Exit", "Ent:Open", "W/S:Sel"); #endif break; @@ -680,8 +680,8 @@ public: #elif defined(MECK_TWATCH) display.print("Long Press: Run"); #else - display.print("Sh+Del:Back"); - renderFooterMidRight(display, footerY, "Sh+Del:Back", "Ent:Run", "W/S:Sel"); + display.print("Q:Back"); + renderFooterMidRight(display, footerY, "Q:Back", "Ent:Run", "W/S:Sel"); #endif break; @@ -702,7 +702,7 @@ public: display.print("Boot:No"); renderFooterRight(display, footerY, "Tap:Yes"); #else - display.print("Sh+Del:No"); + display.print("Q:No"); renderFooterRight(display, footerY, "Ent:Yes"); #endif break; @@ -715,7 +715,7 @@ public: renderFooterRight(display, footerY, "Swipe:Scroll"); } #else - display.print("Sh+Del:Back"); + display.print("Q:Back"); if (_responseTotalLines > bodyHeight / 9) { renderFooterRight(display, footerY, "W/S:Scrll"); } @@ -1095,7 +1095,7 @@ private: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Tap=Yes Back=No"); #else - display.print("Enter=Yes Sh+Del=No"); + display.print("Enter=Yes Q=No"); #endif } diff --git a/examples/companion_radio/ui-new/RxLogScreen.h b/examples/companion_radio/ui-new/RxLogScreen.h index c581f40f..6d4f87e9 100644 --- a/examples/companion_radio/ui-new/RxLogScreen.h +++ b/examples/companion_radio/ui-new/RxLogScreen.h @@ -196,7 +196,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Swipe:Scroll"); #else - display.print("Sh+Del:Bk W/S:Scroll"); + display.print("Q:Bk W/S:Scroll"); #endif #endif diff --git a/examples/companion_radio/ui-new/SMSScreen.h b/examples/companion_radio/ui-new/SMSScreen.h index 2963652b..b770a6e3 100644 --- a/examples/companion_radio/ui-new/SMSScreen.h +++ b/examples/companion_radio/ui-new/SMSScreen.h @@ -385,7 +385,7 @@ public: display.drawRect(0, footerY - 2, display.width(), 1); display.setColor(DisplayDriver::YELLOW); display.setCursor(0, footerY); - display.print("Sh+Del:Back"); + display.print("Q:Back"); const char* rt = "Ent:Open"; display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY); display.print(rt); @@ -620,7 +620,7 @@ public: display.drawRect(0, footerY - 2, display.width(), 1); display.setColor(DisplayDriver::YELLOW); display.setCursor(0, footerY); - display.print("Sh+Del:Back"); + display.print("Q:Back"); const char* mid = "D:Contacts"; display.setCursor((display.width() - display.getTextWidth(mid)) / 2, footerY); display.print(mid); @@ -734,7 +734,7 @@ public: display.drawRect(0, footerY - 2, display.width(), 1); display.setColor(DisplayDriver::YELLOW); display.setCursor(0, footerY); - display.print("Sh+Del:Bk A:Add Contact"); + display.print("Q:Bk A:Add Contact"); const char* rt = "C:Reply"; display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY); display.print(rt); @@ -887,7 +887,7 @@ public: display.drawRect(0, footerY - 2, display.width(), 1); display.setColor(DisplayDriver::YELLOW); display.setCursor(0, footerY); - display.print("Sh+Del:Back"); + display.print("Q:Back"); const char* rt = "Ent:SMS F:Call"; display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY); display.print(rt); @@ -1343,6 +1343,7 @@ public: _view = CONTACTS; return true; + case 'q': case KEY_CANCEL: // Back to app menu _view = APP_MENU; _menuCursor = 0; @@ -1399,6 +1400,7 @@ public: return true; } + case 'q': case KEY_CANCEL: // Back to inbox refreshInbox(); _view = INBOX; @@ -1527,6 +1529,7 @@ public: } return true; + case 'q': case KEY_CANCEL: // Back to inbox refreshInbox(); _view = INBOX; diff --git a/examples/companion_radio/ui-new/SettingsScreen.h b/examples/companion_radio/ui-new/SettingsScreen.h index 50a92891..33bfeb94 100644 --- a/examples/companion_radio/ui-new/SettingsScreen.h +++ b/examples/companion_radio/ui-new/SettingsScreen.h @@ -2427,7 +2427,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) display.drawTextCentered(display.width() / 2, by + bh - 14, "Tap:Yes Boot:No"); #else - display.drawTextCentered(display.width() / 2, by + bh - 14, "Enter:Yes Sh+Del:No"); + display.drawTextCentered(display.width() / 2, by + bh - 14, "Enter:Yes Q:No"); #endif display.setTextSize(1); } @@ -2509,7 +2509,7 @@ public: display.print("Tap:Pick Boot:Back"); #else display.setCursor(bx + 4, fy); - display.print("Enter:Pick Sh+Del:Back"); + display.print("Enter:Pick Q:Back"); #endif // Scroll indicator @@ -2848,7 +2848,7 @@ public: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Tap:Send Boot:Cancel"); #else - display.print("Enter:Send Sh+Del:Cancel"); + display.print("Enter:Send Q:Cancel"); #endif display.setTextSize(1); } @@ -2949,7 +2949,7 @@ public: } else if (_editMode == EDIT_CONFIRM) { // overlay handles it } else { - display.print("Sh+Del:Bk"); + display.print("Q:Bk"); const char* r = "Ent:Edit"; display.setCursor(display.width() - display.getTextWidth(r) - 2, footerY); display.print(r); @@ -2961,7 +2961,7 @@ public: } else if (_editMode == EDIT_WIFI) { if (_wifiPhase == WIFI_PHASE_SELECT) { if (_wifiSSIDCount == 0) { - display.print("R/Enter:Rescan Sh+Del:Back"); + display.print("R/Enter:Rescan Q:Back"); } else { display.print("W/S:Pick Enter:Sel R:Rescan"); } @@ -2974,21 +2974,21 @@ public: #ifdef MECK_OTA_UPDATE } else if (_editMode == EDIT_OTA) { if (_otaPhase == OTA_PHASE_CONFIRM) { - display.print("Enter:Start Sh+Del:Cancel"); + display.print("Enter:Start Q:Cancel"); } else if (_otaPhase == OTA_PHASE_WAITING) { - display.print("Sh+Del:Cancel"); + display.print("Q:Cancel"); } else if (_otaPhase == OTA_PHASE_ERROR) { - display.print("Sh+Del:Back"); + display.print("Q:Back"); } else { display.print("Please wait..."); } } else if (_editMode == EDIT_FILEMGR) { if (_fmPhase == FM_PHASE_CONFIRM) { - display.print("Enter:Start Sh+Del:Cancel"); + display.print("Enter:Start Q:Cancel"); } else if (_fmPhase == FM_PHASE_WAITING) { - display.print("Sh+Del:Stop"); + display.print("Q:Stop"); } else if (_fmPhase == FM_PHASE_ERROR) { - display.print("Sh+Del:Back"); + display.print("Q:Back"); } else { display.print("Please wait..."); } @@ -2996,19 +2996,19 @@ public: } else if (_editMode == EDIT_PICKER) { display.print("A/D:Choose Enter:Ok"); } else if (_editMode == EDIT_NUMBER) { - display.print("W/S:Adj Enter:Ok Sh+Del:Cancel"); + display.print("W/S:Adj Enter:Ok Q:Cancel"); } else if (_editMode == EDIT_CONFIRM) { // Footer already covered by overlay } else { if (_subScreen == SUB_CHANNELS) { - display.print("Sh+Del:Bk C:Share"); + display.print("Q:Bk C:Share"); } else if (_subScreen != SUB_NONE) { - display.print("Sh+Del:Back"); + display.print("Q:Back"); } else { #if defined(MECK_TWATCH) display.print("Hold:Edit"); #else - display.print("Sh+Del:Bk"); + display.print("Q:Bk"); #endif } #if defined(MECK_TWATCH) @@ -3066,7 +3066,7 @@ public: _confirmAction = 0; return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { if (_confirmAction == 3) { // Region nudge cancelled — scroll to Default Region row _editMode = EDIT_NONE; @@ -3120,7 +3120,7 @@ public: _editMode = EDIT_NONE; return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _editMode = EDIT_NONE; return true; } @@ -3148,7 +3148,7 @@ public: _editMode = EDIT_NONE; return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _editMode = EDIT_NONE; return true; } @@ -3164,7 +3164,7 @@ public: startOTAServer(); return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _editMode = EDIT_NONE; return true; } @@ -3173,12 +3173,12 @@ public: if (_otaUploadOk) { return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { stopOTA(); return true; } } else if (_otaPhase == OTA_PHASE_ERROR) { - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { stopOTA(); return true; } @@ -3194,17 +3194,17 @@ public: startFileMgrServer(); return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _editMode = EDIT_NONE; return true; } } else if (_fmPhase == FM_PHASE_WAITING) { - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { stopFileMgr(); return true; } } else if (_fmPhase == FM_PHASE_ERROR) { - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { stopFileMgr(); return true; } @@ -3247,7 +3247,7 @@ public: #endif return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _editMode = EDIT_NONE; _wifiPhase = WIFI_PHASE_IDLE; if (_onboarding) _onboarding = false; // Skip WiFi, finish onboarding @@ -3524,7 +3524,7 @@ public: } return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { // Revert live preview if font style picker was active if (type == ROW_FONT_STYLE) { _prefs->ui_font_style = _fontPickerOriginal; @@ -3619,7 +3619,7 @@ public: _editMode = EDIT_NONE; return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _editMode = EDIT_NONE; return true; } @@ -4091,7 +4091,7 @@ public: #endif // Shift+Del: back -- if in sub-screen, return to top level; else exit settings - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { #ifdef HAS_SDCARD if (_subScreen == SUB_EXPORT_FLAGS) { // Return to Export/Import sub-screen diff --git a/examples/companion_radio/ui-new/SnakeScreen.h b/examples/companion_radio/ui-new/SnakeScreen.h index 854d7dbf..41556aea 100644 --- a/examples/companion_radio/ui-new/SnakeScreen.h +++ b/examples/companion_radio/ui-new/SnakeScreen.h @@ -459,7 +459,7 @@ public: ty += 12; } display.setColor(DisplayDriver::GREEN); - display.drawTextCentered(cx, ty, "Enter:Retry Sh+Del:Back"); + display.drawTextCentered(cx, ty, "Enter:Retry Q:Back"); } } @@ -476,10 +476,10 @@ public: display.drawRect(0, fy - 2, display.width(), 1); if (_state == PLAYING) { display.setCursor(2, fy); - display.print("Sh+Del:Back"); + display.print("Q:Back"); } else if (_state == READY) { display.setCursor(2, fy); - display.print("Enter:Start Sh+Del:Back"); + display.print("Enter:Start Q:Back"); } #endif diff --git a/examples/companion_radio/ui-new/TextReaderScreen.h b/examples/companion_radio/ui-new/TextReaderScreen.h index 07c8d7e2..8b93b269 100644 --- a/examples/companion_radio/ui-new/TextReaderScreen.h +++ b/examples/companion_radio/ui-new/TextReaderScreen.h @@ -1175,7 +1175,7 @@ private: display.drawTextCentered(display.width() / 2, footerY, "Swipe: Scroll Tap: Open Boot: home"); #else display.setCursor(0, footerY); - display.print("Sh+Del:Bk"); + display.print("Q:Bk"); const char* right = "Tap/Ent:Open"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); @@ -1299,7 +1299,7 @@ private: display.setCursor(0, footerY); display.print(status); - const char* right = _gotoMode ? "Ent:Go Sh+Del:Cancel" : "Entr:Pg# Sh+Del:Bk"; + const char* right = _gotoMode ? "Ent:Go Sh+Del:Cancel" : "Entr:Pg# Q:Bk"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); #endif diff --git a/examples/companion_radio/ui-new/Tracescreen.h b/examples/companion_radio/ui-new/Tracescreen.h index 498a9f08..d83860ed 100644 --- a/examples/companion_radio/ui-new/Tracescreen.h +++ b/examples/companion_radio/ui-new/Tracescreen.h @@ -586,7 +586,7 @@ private: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Boot:Cancel Tap:Apply"); #else - display.print("Sh+Del:Cancel Enter:Apply"); + display.print("Q:Cancel Enter:Apply"); #endif } else { #if defined(LilyGo_T5S3_EPaper_Pro) @@ -594,7 +594,7 @@ private: #elif defined(MECK_TWATCH) display.print("Tap:Sel Hold:Go"); #else - display.print("Sh+Del:Exit W/S:Nav Ent:Sel"); + display.print("Q:Exit W/S:Nav Ent:Sel"); #endif } @@ -659,7 +659,7 @@ private: #elif defined(MECK_TWATCH) display.print("Tap:Sel Hold:Add"); #else - display.print("Sh+Del:Back W/S:Scroll Ent:Add"); + display.print("Q:Back W/S:Scroll Ent:Add"); #endif return 5000; @@ -715,7 +715,7 @@ private: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Boot:Cancel"); #else - display.print("Sh+Del:Cancel"); + display.print("Q:Cancel"); #endif return 500; // Fast refresh for elapsed timer @@ -813,7 +813,7 @@ private: #elif defined(MECK_TWATCH) display.print("Hold: New Trace"); #else - display.print("Sh+Del:Back Ent:New Trace"); + display.print("Q:Back Ent:New Trace"); #endif return 5000; diff --git a/examples/companion_radio/ui-new/VoiceMessageScreen.h b/examples/companion_radio/ui-new/VoiceMessageScreen.h index 7649f0f4..a69d611e 100644 --- a/examples/companion_radio/ui-new/VoiceMessageScreen.h +++ b/examples/companion_radio/ui-new/VoiceMessageScreen.h @@ -1043,7 +1043,7 @@ private: int footerY = display.height() - 12; display.setTextSize(1); display.setCursor(0, footerY); - display.print("Ent:Send Sh+Del:Cancel"); + display.print("Ent:Send Q:Cancel"); // No-direct-path popup. RAW_CUSTOM voice packets are direct-route only, // so a contact with no path set cannot receive one. Drawn last so it @@ -1172,11 +1172,11 @@ private: display.setTextSize(1); display.setCursor(0, footerY); if (_listPlaying) { - display.print("Playing... Sh+Del:Stop"); + display.print("Playing... Q:Stop"); } else if (!_fileList.empty()) { display.print("Mic:Rec Ent:Ply F:Snd D:Del"); } else { - display.print("Mic:Record Sh+Del:Exit"); + display.print("Mic:Record Q:Exit"); } // "Loading" popup while a forward-send file is read off SD and encoded. @@ -1321,11 +1321,11 @@ private: display.setTextSize(1); display.setCursor(0, footerY); if (_reviewPlaying) { - display.print("Sh+Del:Stop"); + display.print("Q:Stop"); } else if (_c2Valid) { - display.print("S:Send Ent:Play Mic:Redo Sh+Del:List"); + display.print("S:Send Ent:Play Mic:Redo Q:List"); } else { - display.print("Ent:Play Mic:Redo D:Del Sh+Del:List"); + display.print("Ent:Play Mic:Redo D:Del Q:List"); } } diff --git a/examples/companion_radio/ui-new/WebReaderScreen.h b/examples/companion_radio/ui-new/WebReaderScreen.h index 62448043..fc80b54f 100644 --- a/examples/companion_radio/ui-new/WebReaderScreen.h +++ b/examples/companion_radio/ui-new/WebReaderScreen.h @@ -3164,11 +3164,11 @@ private: if (onBookmark && hasData) snprintf(footerBuf, sizeof(footerBuf), "Ent:Go Del:Del Bkmk X:Clr Ckies"); else if (onBookmark) - snprintf(footerBuf, sizeof(footerBuf), "Sh+Del:Bk Ent:Go Del:Del Bkmk"); + snprintf(footerBuf, sizeof(footerBuf), "Q:Bk Ent:Go Del:Del Bkmk"); else if (hasData) - snprintf(footerBuf, sizeof(footerBuf), "Sh+Del:Bk W/S Ent:Go X:Clr Ckies"); + snprintf(footerBuf, sizeof(footerBuf), "Q:Bk W/S Ent:Go X:Clr Ckies"); else - snprintf(footerBuf, sizeof(footerBuf), "Sh+Del:Bk W/S:Nav Ent:Go"); + snprintf(footerBuf, sizeof(footerBuf), "Q:Bk W/S:Nav Ent:Go"); #endif display.print(footerBuf); } @@ -3273,7 +3273,7 @@ private: #else display.print("Ent: Open in Reader"); display.setCursor(0, y + 16); - display.print("Sh+Del: Back to browser"); + display.print("Q: Back to browser"); #endif } else { display.setColor(DisplayDriver::YELLOW); @@ -3292,7 +3292,7 @@ private: #if defined(LilyGo_T5S3_EPaper_Pro) display.print("Tap: Back to browser"); #else - display.print("Sh+Del: Back to browser"); + display.print("Q: Back to browser"); #endif } @@ -3305,7 +3305,7 @@ private: #if defined(LilyGo_T5S3_EPaper_Pro) display.print(_downloadOk ? "Tap: Open in Reader" : "Tap: Back"); #else - display.print(_downloadOk ? "Ent:Read Sh+Del:Back" : "Sh+Del:Back"); + display.print(_downloadOk ? "Ent:Read Q:Back" : "Q:Back"); #endif } @@ -3442,13 +3442,13 @@ private: } #else } else if (_formCount > 0 && _linkCount > 0) { - hint = "L:Lnk F:Frm B:Bk Sh+Del:X"; + hint = "L:Lnk F:Frm B:Bk Q:X"; } else if (_formCount > 0) { - hint = "F:Frm B:Bk Sh+Del:X"; + hint = "F:Frm B:Bk Q:X"; } else if (_linkCount > 0) { - hint = "L:Lnk B:Bk Sh+Del:X"; + hint = "L:Lnk B:Bk Q:X"; } else { - hint = "B:Bk Sh+Del:X"; + hint = "B:Bk Q:X"; } #endif display.setCursor(display.width() - display.getTextWidth(hint) - 2, footerY); @@ -3892,7 +3892,7 @@ private: } // Shift+Del - exit to home - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _mode = HOME; _homeSelected = 0; return true; @@ -5412,7 +5412,7 @@ public: case FETCHING: // Shift+Del to cancel fetch (can't actually cancel HTTP mid-stream, but // go back to home) - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _mode = HOME; return true; } @@ -5424,7 +5424,7 @@ public: _requestTextReader = true; return true; } - if (c == KEY_CANCEL) { + if (c == KEY_CANCEL || c == 'q') { _mode = HOME; _homeSelected = 0; return true; diff --git a/variants/lilygo_tdeck_max/TDeckProMaxBoard.h b/variants/lilygo_tdeck_max/TDeckProMaxBoard.h index 9660aac7..02f71386 100644 --- a/variants/lilygo_tdeck_max/TDeckProMaxBoard.h +++ b/variants/lilygo_tdeck_max/TDeckProMaxBoard.h @@ -39,7 +39,7 @@ #define BQ27220_I2C_ADDR 0x55 #ifndef BQ27220_DESIGN_CAPACITY_MAH -#define BQ27220_DESIGN_CAPACITY_MAH 1400 +#define BQ27220_DESIGN_CAPACITY_MAH 2500 #endif class TDeckProMaxBoard : public ESP32Board { diff --git a/variants/lilygo_tdeck_max/variant.h b/variants/lilygo_tdeck_max/variant.h index 07149c09..20522716 100644 --- a/variants/lilygo_tdeck_max/variant.h +++ b/variants/lilygo_tdeck_max/variant.h @@ -239,8 +239,8 @@ #define BQ27220_I2C_ADDR 0x55 #define BQ27220_I2C_SDA I2C_SDA #define BQ27220_I2C_SCL I2C_SCL -#define BQ27220_DESIGN_CAPACITY 1400 // -#define BQ27220_DESIGN_CAPACITY_MAH 1400 // Alias used by TDeckBoard.h +#define BQ27220_DESIGN_CAPACITY 2500 // +#define BQ27220_DESIGN_CAPACITY_MAH 2500 // Alias used by TDeckBoard.h #define HAS_PPM 1 // This board uses the SY6970 charger @ 0x6A (newer revision -- confirmed by I2C