#pragma once #include #include #include "key_help.h" // Every key of every screen, as data (issues #69 and #72). The help panel (Fn+h) shows the table of // the state an App is in; site/tools/gen_dev_docs.py reads this file to write the website's key // tables, so the two can't drift. // // The format is read by that script, so keep it: a comment `// id: Title`, then one table, // inline constexpr KeyHelp kName[] = { // {"keys", "what they do"}, // }; // with one row a line and plain string literals. `id` is what a guide page asks for. namespace roro::keys { template inline void add(std::vector& out, const KeyHelp (&rows)[N]) { out.insert(out.end(), rows, rows + N); } // everywhere: Everywhere inline constexpr KeyHelp kEverywhere[] = { {"`", "back"}, {"Fn `", "home, the Launcher"}, {"; . , /", "arrows (Fn+ while typing)"}, {"Fn h ?", "these keys (? not typing)"}, }; // dialog: A question inline constexpr KeyHelp kDialog[] = { {", /", "the other answer"}, {"Enter", "choose it"}, {"`", "cancel"}, }; // text: A text field inline constexpr KeyHelp kText[] = { {"Enter", "save"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, {"opt ' e", "an accent: \xC3\xA9"}, }; // launcher: The Launcher inline constexpr KeyHelp kLauncher[] = { {"; .", "up, down"}, {"Enter", "open the App"}, }; // setup: Setup, a step inline constexpr KeyHelp kSetup[] = { {"Enter", "continue"}, {"`", "the step before"}, }; // setup-choice: Setup, a choice inline constexpr KeyHelp kSetupChoice[] = { {"; .", "up, down"}, {"Enter", "choose it, next step"}, {"`", "the step before"}, }; // setup-text: Setup, a name inline constexpr KeyHelp kSetupText[] = { {"Enter", "next step"}, {"`", "the step before"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, {"opt ' e", "an accent: \xC3\xA9"}, }; // irc: IRC inline constexpr KeyHelp kIrc[] = { {"Enter", "send the line"}, {"Tab", "the next buffer"}, {"Alt ; .", "scroll back, forward"}, {"Fn ; .", "lines you sent before"}, {"Fn , /", "move the cursor"}, {"Del", "delete backwards"}, {"/settings", "server, nick, passwords"}, {"/join #x", "join a channel"}, {"/part", "leave it"}, {"/msg nick", "a private chat"}, {"/me", "an action"}, {"/nick", "change your nick"}, {"/topic", "see or set the topic"}, {"/names", "who is there"}, {"/quit", "disconnect, and stay so"}, {"/raw", "a line as it is"}, {"`", "leave: IRC stays connected"}, }; // irc-settings: IRC settings inline constexpr KeyHelp kIrcSettings[] = { {"; .", "up, down"}, {"Enter", "edit, switch, or save"}, {"`", "leave without saving"}, }; // irc-field: IRC, a setting inline constexpr KeyHelp kIrcField[] = { {"Enter", "keep it"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, }; // wifi-tools: Wi-Fi Tools inline constexpr KeyHelp kWifiTools[] = { {"; .", "up, down"}, {"Enter", "open"}, }; // wifi-networks: Networks nearby inline constexpr KeyHelp kWifiNetworks[] = { {"; .", "up, down"}, {"Enter", "track its signal"}, {"s", "sort: signal, channel, name"}, {"o", "open networks only"}, {"h", "hide the hidden ones"}, {"w", "strong ones only"}, {"l", "log the scans to the card"}, }; // wifi-tracker: Signal tracker inline constexpr KeyHelp kWifiTracker[] = { {"m", "clicks on or off"}, }; // gnss: GNSS inline constexpr KeyHelp kGnss[] = { {"Tab", "the position, or the sky"}, {"r", "record a Track, or stop it"}, }; // gemini: Gemini, a page inline constexpr KeyHelp kGemini[] = { {"Tab", "the next link"}, {"Aa Tab", "the link before"}, {"Enter", "follow the link"}, {"` Del", "the page before"}, {"; .", "scroll"}, {"Space", "a page down"}, {", /", "sideways, in wide blocks"}, {"g", "type an address"}, {"b", "bookmark this page"}, {"s", "save the page to the card"}, {"S", "...with the pages it links to"}, }; // gemini-saved: Gemini, a Saved Page inline constexpr KeyHelp kGeminiSaved[] = { {"Tab", "the next link"}, {"Aa Tab", "the link before"}, {"Enter", "follow the link"}, {"` Del", "the page before"}, {"; .", "scroll"}, {"Space", "a page down"}, {", /", "sideways, in wide blocks"}, {"g", "type an address"}, {"b", "bookmark this page"}, {"r", "refresh this Saved Page"}, {"d", "delete this Saved Page"}, }; // gemini-address: Gemini, an address inline constexpr KeyHelp kGeminiAddress[] = { {"Enter", "go there"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, }; // gemini-answer: Gemini, an answer to a page inline constexpr KeyHelp kGeminiAnswer[] = { {"Enter", "send it"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, }; // lora: LoRa Scanner, the packets inline constexpr KeyHelp kLora[] = { {"; .", "up, down"}, {"Enter", "the packet's details"}, {"p", "pick a Meshtastic preset"}, {"c", "start a Capture, or stop it"}, {"Tab", "the Sweep"}, }; // lora-packet: LoRa Scanner, a packet inline constexpr KeyHelp kLoraPacket[] = { {"; .", "scroll"}, {"Enter", "back to the list"}, }; // lora-presets: LoRa Scanner, the presets inline constexpr KeyHelp kLoraPresets[] = { {"; .", "up, down"}, {"Enter", "listen with this preset"}, }; // lora-sweep: LoRa Scanner, the Sweep inline constexpr KeyHelp kLoraSweep[] = { {"Tab", "the Sniffer"}, }; // storage: Storage, a folder inline constexpr KeyHelp kStorage[] = { {"; .", "up, down"}, {"Enter", "open the folder or the file"}, {", /", "a page up, down"}, {"c x", "copy, cut"}, {"v", "paste here"}, {"r", "rename"}, {"d Del", "delete, after asking"}, {"n", "a new folder"}, {"i", "details: size, date, type"}, {"s", "sort: name, date, size"}, {"m", "Maintenance: clean-up, erase"}, {"`", "the folder above"}, }; // storage-details: Storage, an item's details inline constexpr KeyHelp kStorageDetails[] = { {"; .", "scroll"}, {"Enter", "back to the folder"}, }; // storage-name: Storage, a name inline constexpr KeyHelp kStorageName[] = { {"Enter", "rename it, or make the folder"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, }; // storage-busy: Storage, while it copies or deletes inline constexpr KeyHelp kStorageBusy[] = { {"`", "stop the copy or the delete"}, }; // maintenance: Storage, Maintenance inline constexpr KeyHelp kMaintenance[] = { {"; .", "up, down"}, {"Enter", "open, or choose"}, }; // viewer-text: A file, as text inline constexpr KeyHelp kViewerText[] = { {"; .", "a line up, down"}, {", /", "a page up, down"}, {"t b", "the top, the end"}, {"e", "edit it (up to 16 KB)"}, {"Tab", "the file as hex, or back"}, }; // viewer-hex: A file, as hex inline constexpr KeyHelp kViewerHex[] = { {"; .", "a line up, down"}, {", /", "a page up, down"}, {"t b", "the top, the end"}, {"Tab", "the file as text, or back"}, }; // viewer-pcap: A Capture inline constexpr KeyHelp kViewerPcap[] = { {"; .", "up, down"}, {"Enter", "the packet"}, {", /", "a page up, down"}, {"Tab", "the file as hex"}, }; // viewer-packet: A Capture's packet inline constexpr KeyHelp kViewerPacket[] = { {"; .", "scroll"}, {"Enter", "back to the packets"}, }; // viewer-gpx: A Track inline constexpr KeyHelp kViewerGpx[] = { {"Tab", "the file as text"}, }; // viewer-ota: An Update File inline constexpr KeyHelp kViewerOta[] = { {"Enter", "install it, if it's genuine"}, {"Tab", "the file as hex"}, }; // notes: Notes, the list inline constexpr KeyHelp kNotes[] = { {"; .", "up, down"}, {"Enter", "open the note"}, {", /", "a page up, down"}, {"n", "a new note"}, {"r", "rename its file"}, {"d Del", "delete it"}, {"s", "sort: newest, or by name"}, }; // notes-editor: Notes, the editor inline constexpr KeyHelp kNotesEditor[] = { {"Enter", "a new line"}, {"Del", "delete backwards"}, {"Tab", "two spaces"}, {"Fn ; . , /", "move the cursor"}, {"Alt Fn ; .", "a page up, down"}, {"Ctrl a e", "start, end of the line"}, {"opt ' e", "an accent: \xC3\xA9"}, {"`", "done: it saves by itself"}, }; // notes-name: Notes, a file name inline constexpr KeyHelp kNotesName[] = { {"Enter", "rename the file"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, }; // system: System, any view inline constexpr KeyHelp kSystem[] = { {"Tab", "the next view"}, {"Aa Tab", "the view before"}, }; // system-tasks: System, the tasks inline constexpr KeyHelp kSystemTasks[] = { {"Tab", "the next view"}, {"Aa Tab", "the view before"}, {"; .", "scroll"}, {"s", "sort: cpu, stack, name"}, }; // system-system: System, the system view inline constexpr KeyHelp kSystemSystem[] = { {"Tab", "the next view"}, {"Aa Tab", "the view before"}, {"; .", "scroll"}, }; // settings: Settings inline constexpr KeyHelp kSettings[] = { {"; .", "up, down"}, {"Enter", "edit, or open the page"}, {", /", "change a switch or a slider"}, }; // settings-choice: Settings, a choice inline constexpr KeyHelp kSettingsChoice[] = { {"; .", "up, down"}, {"Enter", "choose it"}, }; // wifi: Settings, Wi-Fi inline constexpr KeyHelp kWifi[] = { {"; .", "up, down"}, {"Enter", "open, or change"}, {", /", "switch Wi-Fi on or off"}, }; // wifi-servers: Settings, DNS and NTP inline constexpr KeyHelp kWifiServers[] = { {"; .", "up, down"}, {"Enter", "edit"}, {", /", "Always use my DNS: on, off"}, }; // wifi-network: Settings, a saved network inline constexpr KeyHelp kWifiNetwork[] = { {"; .", "up, down"}, {"Enter", "edit, or forget"}, {", /", "Automatic or Fixed"}, }; // wifi-status: Settings, the Wi-Fi status inline constexpr KeyHelp kWifiStatus[] = { {"Enter", "back"}, }; // wifi-scan: Settings, adding a network inline constexpr KeyHelp kWifiScan[] = { {"; .", "up, down"}, {"Enter", "choose this network"}, }; // wifi-name: Settings, a hidden network's name inline constexpr KeyHelp kWifiName[] = { {"Enter", "next: the password"}, {"`", "cancel"}, {"Del", "delete backwards"}, {"Fn , /", "move the cursor"}, }; // firmware: Settings, Firmware inline constexpr KeyHelp kFirmware[] = { {"; .", "up, down"}, {"Enter", "check, open, or install"}, {"c", "look for a newer release"}, }; // firmware-release: Settings, a release inline constexpr KeyHelp kFirmwareRelease[] = { {"; .", "scroll"}, {"Enter", "install it"}, {"c", "check again"}, }; // firmware-older: Settings, older releases inline constexpr KeyHelp kFirmwareOlder[] = { {"; .", "up, down"}, {"Enter", "its details"}, {"c", "read the list again"}, }; // debug-console: Settings, Debug Console inline constexpr KeyHelp kDebugConsole[] = { {"; .", "up, down"}, {"Enter", "switch, or open"}, {", /", "switch the console on or off"}, }; // demo: The widget demo inline constexpr KeyHelp kDemo[] = { {"; .", "up, down"}, {"Enter", "try the widget"}, }; } // namespace roro::keys