Public Access
Help: Fn+h lists the keys of the screen you're on, and no screen names its keys any more (#69)
Fn+h on any screen, text fields included, and ? outside Text Entry, open a panel over the content area: the screen's own keys, then the ones that work everywhere. Every App declares its keys for the state it is in (pages, viewers, dialogs and text fields answer for themselves); the App manager opens the panel and takes every key while it is open. About 30 hint lines are gone, from every App. What stays on a screen is state. The first-start Setup keeps its hints and teaches the key; a device set up before gets one Toast, once. The guide and the FAQ open with it. `key help` over the consoles. 476 host tests (8 new). Checked on the device with key help and screenshots: the Launcher, all nine Apps and several of their states. 8.5 KB of flash and 40 bytes of static RAM. Decisions Q196 to Q203 in docs/milestones/U1.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
@@ -52,6 +52,21 @@ void AppManager::endModal() {
|
||||
}
|
||||
|
||||
void AppManager::handleKey(const KeyEvent& event) {
|
||||
if (help_.isOpen()) { // scrolls or closes; nothing reaches the App, Home included
|
||||
help_.onKey(event);
|
||||
redraw_ = true;
|
||||
return;
|
||||
}
|
||||
if (event.key == Key::Help) {
|
||||
std::vector<KeyHelp> rows;
|
||||
foreground_->help(rows);
|
||||
help::everywhere(rows);
|
||||
const char* scope = foreground_->helpTitle();
|
||||
const char* app = foregroundTitle();
|
||||
help_.open(scope ? scope : app ? app : "Launcher", std::move(rows));
|
||||
redraw_ = true;
|
||||
return;
|
||||
}
|
||||
if (modal_) {
|
||||
foreground_->onKey(event);
|
||||
return;
|
||||
@@ -77,6 +92,7 @@ bool AppManager::takeRedraw() {
|
||||
}
|
||||
|
||||
void AppManager::switchTo(App& app) {
|
||||
help_.close(); // an App opened from elsewhere (a Notification, a command): its keys, not the last one's
|
||||
if (&app == foreground_) return;
|
||||
foreground_->onExit();
|
||||
foreground_ = &app;
|
||||
|
||||
Reference in New Issue
Block a user