- CMD_GET_SCREENSHOT on colour screens: display type 2 (RGB565 LE), 32-bit payload size; ui-lvgl captureFrame() shared with the SD BMP - ENABLE_SCREENSHOT in the L2 build; tools/screenshot.py decodes type 2 - docs and READMEs point to solo.marekzegarek.com/#pc-tools - USB popup: "Keep card" instead of "Charge only" (only the card is lent; charging and USB serial work either way) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.1 KiB
Hardware
External keyboard and joystick
Two optional add-ons, detected at boot; a build with them enabled works the same with nothing plugged in.
| Device | CardKB | Wired joystick |
|---|---|---|
| Wio Tracker L1 (OLED / e-ink) | Grove connector | built in |
| GAT562 30S Mesh Kit | — | built in |
| Heltec V3 / V4 | soldered (below) | soldered (below) |
| ProMicro | on the main I2C bus (required: it has no buttons) | — |
| Cardputer ADV, T-Echo Lite + KeyShield | built-in keyboard instead | — |
CardKB
An M5Stack CardKB types straight into any text field. It sends plain characters, so the keyboard alphabet settings don't apply to it.
| Key | Does |
|---|---|
| Arrows, Enter, Esc | Same as the joystick, Enter and Back |
| Backspace | Deletes before the cursor |
| Fn+Enter | Submits the field |
| Fn+letter | Accents for that letter (Fn+A → á à ä…) |
| Tab | Hold Enter (options menus) |
| Fn+Esc | Locks / unlocks the screen |
Settings › Keyboard › Ext. KB: Full keeps the on-screen grid, so the CardKB and the joystick can be mixed; Compact hides it, the arrows move the text cursor and Enter submits. Compact needs no joystick at all.
Wired joystick
Four direction contacts and a press contact (Enter), each shorted to ground when pressed; the firmware enables the pull-ups, so no resistors are needed. The board's own button becomes Back. Settings › Display › Joystick rotation turns the directions for a stick mounted sideways.
Wiring on the Heltec V3 / V4
Neither board has a joystick or a keyboard connector, so both are soldered to free pins. V3 and V4 use the same pins (confirmed on a V4).
| Function | GPIO |
|---|---|
| CardKB SDA / SCL | 3 / 4 (second I2C bus, not the display's) |
| Joystick up / down / left / right | 23 / 6 / 47 / 48 |
| Joystick press (Enter) | 33 |
| Back | 0 (the PRG button, nothing to wire) |
The pins are set in solo/heltec_v3/platformio.ini
and solo/heltec_v4/platformio.ini.
For a CardKB-only build, comment out the joystick block there and use
Ext. KB = Compact.
Built-in keyboards
The Cardputer ADV has a QWERTY keyboard, the T-Echo Lite a T9 keypad on its
KeyShield add-on (without it the board has no usable input). Their keymaps
are in each board's driver under variants/; they don't follow the CardKB's
Fn shortcuts.
E-ink
The e-ink Wio Tracker L1 (250 × 122) has a few settings of its own in Settings › Display:
- Rotation: landscape or portrait, applied at once; every screen reflows.
- Joystick rotation, independent of the display's.
- Full refresh: how many partial updates between full ones, against ghosting.
Clock seconds are hidden by default, and live timers refresh coarsely, to spare the panel.
Wio Tracker L2
- Buttons: the top one turns the screen off and on; the side one goes home, and held and let go mutes the sound. Side + top takes a screenshot. Holding the side button in the first seconds after power-on starts the CLI rescue on USB serial.
- SD card: holds the message history, maps, GPX trails and live map tiles. Settings › Storage shows what takes the space, how many messages each conversation keeps, and deletes the history.
- USB drive: plugged into a computer, the device asks whether to keep the SD card or lend it to the computer. Charging and the USB connection (the site's USB tools, the app) work either way. While lent, the device can't use the card; eject it on the computer and the device restarts. With a screen PIN set, it doesn't ask until the screen is unlocked.
- WiFi: used only for map downloads, live tiles and updates, and off the rest of the time. Settings › WiFi saves several networks and joins the strongest; the WiFi switch in Settings forbids it entirely.
Build flags
Extra hardware (a buzzer, a vibration motor, a Hall sensor for a magnetic
cover, GPIO, an external PA) is enabled with build flags in your own
solo/<board>/platformio.ini; see Build flags.