SkinSync Desktop Application

Flash, manage & monitor your ESP32 touchscreens

SkinSync Desktop Application – User Manual

1 · Introduction

SkinSync is a desktop utility that manages ESP32-based touchscreen devices. It lets you upload skins (background images) and hotspots (interactive regions) to one or many devices, organise them into loadouts, and forward touch events to scripts or AutoHotkey or acting as a virtual keyboard on your PC.

See Communication Modes & Menuing System for an overview of how devices interact with your computer and the differences between BLE Keyboard and App Monitoring modes.

2 · Communication Modes & Menuing System

Supported Communication Methods

Menuing System with Skins and Hotspots

Bluetooth Modes: BLE Keyboard vs. App Monitoring

BLE Keyboard Mode App Monitoring Mode (SkinSync Monitoring)

Summary Table

FeatureBLE Keyboard ModeApp Monitoring Mode (SkinSync)
Requires SkinSync AppNoYes
OS Pairing NeededYes (as keyboard)No (uses app connection)
Sends KeystrokesYesYes (via app forwarding)
Runs Scripts/CommandsNoYes
Connection TypesBLE onlyUSB, Wi-Fi, BLE
Use CaseSimple keyboard inputAdvanced automation/control

In summary: Use BLE Keyboard mode when you want your device to act as a wireless keyboard, sending keystrokes directly to your computer, independent of the SkinSync app. Use App Monitoring mode for maximum flexibility—forwarding touch events to scripts, launching programs, or integrating with automation tools, all managed through the SkinSync app.

2 · Installation & First-Run

  1. Download the packaged installer (SkinSync_setup.exe).
  2. Windows users: double-click SkinSync shortcut.
  3. On first launch, SkinSync creates a %LOCALAPPDATA%\SkinSync workspace containing:
    loadouts, skins, known_devices, etc.
  4. A tray icon () appears; double-click it any time to restore the window.

3 · Quick Start – Flashing Your First Device

  1. Connect the ESP32 touchscreen via USB.
  2. From the toolbar click Setup a new device”.
  3. Follow on-screen prompts; SkinSync flashes the firmware, reboots the device, and stores a .device profile.
  4. Important: After setting up your device, you must create a Loadout before you can assign and upload skins to it.
  5. From the main menu, click next to Loadout to create a new loadout. Enter a unique name.
  6. Open your new loadout, then add your device to it using .
  7. Now, you can assign a skin to your device within the loadout. You can create a new skin (which is a ZIP file containing an image and hotspots metadata) or import an existing one by placing its ZIP file in the skins/ subfolder. Shared skins will appear in the UI automatically.
  8. With a device selected in the loadout, you can edit the hotspots for the assigned skin (note: you cannot edit the original skin file, only the assignment and hotspot configuration for the device in the loadout).
  9. Press Sync Skin to upload the assigned skin and its hotspots to the device.
  10. From the loadout view, you can also reboot devices, upload configs, or click Monitor devices to start listening for touch events, which will be forwarded according to the hotspot settings.

Note: Skins are portable ZIP files. You can share them with others, who can add them to their skins/ folder to make them appear in the UI.

4 · User Interface

States

The app switches UI layouts automatically using a built-in state-machine:

Feedback Bar

A collapsible banner at the top shows hints, task progress and background logs. Toggle via View → Show/Hide feedback bar.

5 · Device Management

Adding a New Device

  1. Click Device → New device setup or toolbar .
  2. The wizard erases & flashes the correct binary from device_apps.
  3. After success a .device file lands in known_devices.

Labelling a Device

Select a device then choose Device → Label selected device. This stores a friendly label in device_to_label_map.json and updates all dropdowns.

Wi-Fi Credentials

  1. Select a device → Device → Send device Wi-Fi configs.
  2. Enter SSID & password; SkinSync encrypts them (AES-CTR) and sends over USB.

Reboot / Update

Use toolbar buttons to push new configs or reboot selected/all devices.

6 · Skins & Hotspots

Skin Files

Skins are ZIP bundles stored in skins/ containing at least:

Hotspot Editor

  1. Select a skin (or device+skin) → click Hotspots button.
  2. Draw/resize hotspots on the canvas, edit properties in the side panel.
  3. Double-click a target to browse for .exe or .ahk.
  4. Press Save to embed hotspots into the skin file.

Uploading

With a device chosen, press Sync Skin. SkinSync picks the primary connection (USB → Wi-Fi → BLE) and falls back as needed.

7 · Loadouts

A loadout is a JSON file listing several devices and the skin assigned to each. Typical uses: multi-screen cockpits, stream decks, or store kiosks.

Creating

  1. Click toolbar next to Loadout.
  2. Enter a unique name; an empty loadout file is created.
  3. Open the loadout, then use / to add or remove devices.

Scanning & Validation

When you select or rescan a loadout SkinSync:

Saving & Backup

Press or Loadout → Save loadout. Deleted loadouts are moved to loadouts_deleted/ for safety.

8 · Monitoring & Touch Events

  1. Open a loadout → click Monitor devices.
  2. SkinSync listens on each connection, shows a live log in the Feedback Bar and highlights hotspots.
  3. Touch events are forwarded to AutoHotkey scripts, executables, or other handlers you mapped in Hotspot Editor.
  4. Stop monitoring with .

9 · Menu & Toolbar Reference

Main Menus (Idle State)

MenuItemFunction
FileDevice Code FilesOpen firmware folder in Explorer/Finder.
Loadout FilesOpen loadouts directory.
Skin FilesOpen skins directory.
ExitPrompt to save loadout then quit.
DeviceNew device setupFlash firmware and create profile.
Label selected deviceAssign friendly name.
Restart selected deviceSoft-reboot via chosen connection.
Send device Wi-Fi configsEncrypt & send SSID/Password.
ViewHide feedback barCollapse top banner.
Show feedback barExpand top banner.

Loadout View Menus

When a loadout is open, the menu bar changes to provide loadout-specific options. These menus are distinct from the main (Idle) menus and are available only in the Loadout view:

Separators are used to visually group related menu items. The Loadout view menus are context-sensitive and provide quick access to all actions relevant to managing devices and skins within a loadout.

Key Toolbar Buttons (Idle)

Hotspot Editor Menus & Editing

The Hotspot Editor provides a dedicated interface for creating and editing interactive regions (hotspots) on a skin image. When you open the Hotspot Editor, the following menu options and editing features are available:

Interactive Hotspot Editing

This editor allows you to visually design interactive layouts, assign actions to each region, and ensure your device responds as intended when users touch different parts of the screen.

Shortcuts

Esc – closes modal dialogs
Ctrl + drag hotspot edges – fine resize
↑/↓/←/→ inside numeric fields – adjust by 1 pixel

10 · Troubleshooting

Device Not Detected

Wi-Fi Upload Fails

BLE Keyboard Pairing

11 · About & Credits

SkinSync is a desktop tool built with:

  • Python 3.10 • Tkinter UI
  • ReactiveX for event pipelines
  • Transitions state-machine
  • Pillow, PySerial, Bleak, Crypto-Py
  • Arduino IDE for ESP32 firmware

Firmware binaries for various screens are found under device_apps/.