Profile Builder · The OLED screen
Using OLED actions to draw text, images and animated frames on the Z3's little display and switch its mode dynamically.
The Z3's status OLED is a small 64×32 monochrome panel. The Builder gives you three kinds of actions to drive it, plus a persistent display mode in the device settings so the profile's screen carries your info right after profile activation.
1. The three OLED actions
OLED display (persistent, oledSet)
Sets what the screen shows and keeps showing. Fields: Mode (+ extra fields depending on mode). Mode dropdown values are the raw names the underlying format uses — here's what each means:
| Mode (shown) | What it displays |
|---|---|
profile |
The active profile name. |
customMessage |
Your own Message (max 32 chars) — the classic "binds screen". |
dpiLevels |
The current DPI level / value. |
deepClickForces |
A live graph of the 5 force axes — an excellent self‑test screen. |
cube |
A rotating 3D cube animation. |
batteryLevel |
The battery meter. |
tiltAngles |
Live roll/pitch values — great when tuning tilt bindings. |
image |
A static 64×32 bitmap you draw or paste (e.g. a logo). Select mode image and the Paste image / Clear buttons appear. |
off |
Turns the display off. |
The same mode list powers the OLED Display section in Settings — that one is the profile's initial screen; a map can override it at any moment.
OLED frame (one–shot, oledFlash)
Flashes a single 64×32 image for a moment. Fields: Image, Duration
(ms) (10–2000, shown as e.g. 0.5s in the list), Block (wait =
screen waits/blocks until the flash finishes, continue = it runs alongside).
Perfect for a "!" ping, a status icon, or a kill‑streak flash.
OLED animation (oledAnimation)
Plays a full paste‑in animation. Fields: Animation (paste field), Frame duration (ms) — speed, note 1000 ms = 1 FPS, 100 ms = 10 FPS, defaults to the pasted animation's own FPS — and Loop while held (loop it as long as the trigger is held).
2. The 64×32 image & animation clipboard
The Builder's own format for OLED art is plain text:
SWIFTPOINT-OLED-ANIM;v1;{ ...json... }
- Paste — copy an animation from the OLED Editor (or a status image in
the same format) and paste it straight into the Animation / Image
field.
Ctrl+Von the canvas also works. - Copy —
Ctrl+Con an image canvas copies the current frame as the same text blob, so you can round‑trip art between tools. - Images are 64×32 monochrome; the Builder's canvas preview scales them up (384×192) for editing and draws them 1:1 on the device.
Common workflow: draw/frame an animation in the OLED Editor, copy it,
open the Builder, add an OLED animation action, Paste — set
Loop while held, done.
3. Practical recipes
Personal binds screen — group mapped so profileChanged sets
OLED display → customMessage = your mini‑manual:
Message: "T: ping | FT press: ADS | Hold Thumb: scroll"
Kill‑streak flash — deep zone → OLED frame, image = 🔥 skull drawn in
the OLED Editor, Duration 300ms, Block wait.
Status while a nested binding runs — a binding nested under a held button
starts with OLED display → cube and ends with OLED display → customMessage ("done!").
Loading your profile on the hub should show your art — set the persistent
image mode with your logo in Settings → OLED Display so it's visible the
moment the profile activates.
4. Rules & limits
- Screen is 64×32 monochrome — draw on a 64×32 grid.
- Message length is capped at 32 characters; longer text gets cut off at the driver level.
- Frame duration: 10–2000 ms (frame), animation frame step 10–60000 ms.
- Paste format must be exactly
SWIFTPOINT-OLED-ANIM;v1;…— a malformed paste is rejected with a toast and the field stays editable. - OLED actions are per action, so a single trigger can carry several frames/animations in sequence (flash → back to message).
5. Troubleshooting
| Symptom | Likely cause |
|---|---|
| Screen is black | Mode off, or customMessage with an empty message. Set a mode/message or remove the action. |
| Animation plays once, ignores loop | Loop while held unchecked, or you trigger it with a tap. Use a hold mapping (or a mapping nested under a button you hold — see nesting.md). |
| Pasting image does nothing | Clipboard isn't in the SWIFTPOINT-OLED-ANIM;v1;… format — copy from the OLED Editor, then paste. |
| Text looks cut | Over 32 chars, or you set a message for a mode that ignores messages (e.g. dpiLevels). |
| Flash is invisible / too fast | Raise Duration (ms); on very fast gameplay frames flash by — use wait block to pause the screen. |