SWIFTPOINT//HUB
Support

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+V on the canvas also works.
  • Copy — Ctrl+C on 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.