Files
roro9stack/site/content/guide/keys.md
T
twislaandClaude Opus 5.5 34e6714785
CI / build (pull_request) Successful in 7m14s
Site / build (pull_request) Successful in 8s
Keys: one table file for the device's help panel and the website's key tables (#72)
Every screen's keys are constant tables in lib/core/src/app_keys.h (52 of
them, each under an `// id: Title` comment). An App's help() picks the table
of the state it is in. site/tools/gen_dev_docs.py reads the same file and
writes site/data/keys.toml; the `keys` shortcode shows a screen's tables on
its guide page, and /guide/keys/ shows all of them.

The Site job fails when the data file is out of date or a page asks for a
table that doesn't exist, and now also runs when app_keys.h changes. A key
added to an App shows up on the website without anyone editing a page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
2026-10-07 01:42:48 +02:00

724 B

+++ title = "Every key" description = "The keys of every screen of the firmware, as the help panel lists them on the device: one table for each screen and state." weight = 12 [extra] tag = "Reference" +++

On the device, Fn + h lists the keys of the screen you are on (and ? does, when you are not typing). This page is all of those lists at once, generated from the same source the firmware reads: lib/core/src/app_keys.h.

In the tables, ; . , / are the arrow keys (up, down, left, right): alone when you are not typing, with Fn when you are. ` is Back, Aa is Shift, and two keys separated by spaces are two keys that do the two things listed.

{{ keys(all=true) }}