Hotkeys
The desktop sign registers five global keyboard shortcuts via Electron's globalShortcut API. They work even when the kiosk is in lock-down mode — that's the point. These are the manual-control surfaces: when remote control fails, when you need to debug onsite, when the operator-facing UI doesn't expose the action you need.
All five are registered in desktop-sign/src/main/index.js at sign-app startup and unregistered at shutdown so a crashed sign doesn't leave dangling shortcuts.
All hotkeys
| Hotkey | Effect | When to reach for | Min version | Notes |
|---|---|---|---|---|
| Ctrl+Shift+S | Status overlay toggle | Quick onsite health glance | v1.0+ | Read-only — no input required |
| Ctrl+Shift+Q | Quit (kiosk-mode bypass) | Tech needs to exit the sign app | v1.0+ | Triggers .maintenance sentinel; watchdog stops relaunching |
| Ctrl+Shift+C | Config overlay (URL editor + kiosk-mode toggle + Exit for Maintenance) | Backend-URL override; emergency exit | v1.0+ | PIN-prompts if hasConfigPin() returns true |
| Ctrl+Shift+N | Network diagnostics overlay (NIC, IP, internet, backend reachability) | Live latency check; venue smoke test | v1.0+ | Same NetworkChecklist widget as the QR setup screen |
| Ctrl+Shift+M | Monitoring mode toggle | Hide display, keep telemetry | v1.3.0+ | Persists across reboot — see Remote control → Monitoring mode |
Available in v1.3.0+
Monitoring mode (Ctrl+Shift+M) requires DisplaySync Sign v1.3.0 or later.
Older signs do not respond to the hotkey or to the dashboard
Enter/Exit Monitoring button.
Ctrl+Shift+C — Config overlay
A 540×700 frameless transparent always-on-top window. Three controls:
- Display URL — editable text field. Whatever you type becomes the kiosk's
currentUrland is loaded immediately. Useful when the dashboard isn't reachable but you need to point a kiosk at a known-good URL. - Kiosk-mode toggle — flips the Electron kiosk-mode flag without quitting. Off means the user can alt-tab and see the desktop; on means full lock-down resumes.
- Exit for Maintenance — closes the sign app cleanly and writes the
.maintenancesentinel so the watchdog stops relaunching. Equivalent to Ctrl+Shift+Q.
If a 4-digit PIN has been set (ConfigService.hasConfigPin() returns true), a PIN-entry window precedes the overlay. The PIN is stored salted-SHA-256 in sign-config.json.
PIN recovery: there's no in-app reset. If the PIN is lost, recovery is via:
- USB recovery with
freshConfig: true— wipes the config (including identity). See USB recovery → Setup script. - Direct file edit if you have RDP/VNC access — see File locations for the path.
Ctrl+Shift+N — Network diagnostics
A 500×250 bottom-right overlay. Calls signService.startNetworkDiagnostics(), which runs the same NetworkChecklist widget that drives the QR setup screen's connection check. Live results for:
- NIC name + IP address (the interface the kiosk picked)
- Internet reachability (HTTP HEAD to a captive-portal detection endpoint,
connectivitycheck.gstatic.com) - Backend reachability (HTTP HEAD against the configured backend URL)
- Round-trip latency to backend
Use during venue install to verify Tailscale + backend reachable before claim. Use during onsite triage when the dashboard reports a sign as offline — pulling this overlay shows whether the kiosk is actually online.
If a venue firewall blocks connectivitycheck.gstatic.com, the internet check shows red even when the backend is reachable. The kiosk uses HTTP (not HTTPS) for this probe deliberately so captive portals can redirect it for portal detection.
Ctrl+Shift+M — Monitoring mode
Toggles monitoring mode on/off. Behavior in full at Remote control → Monitoring mode. Brief summary:
- On: kiosk window hidden, audio muted, frame rate throttled, watchdogs paused, telemetry continues
- Off: all of the above reversed; the assigned URL is reloaded
- Persists across reboot —
monitoringMode: trueis written tosign-config.json. A sign that boots with this flag set comes up silently with no splash window
Related
- Remote control — full monitoring-mode narrative + remote toggle from the dashboard
- File locations — where
sign-config.json, the PIN salt, and overlay-relevant files live - USB recovery → Setup script — PIN-recovery path via
freshConfig: true