How sstrobl/streamdeck4u works
StreamDeck4U is ESP32-S3 firmware for a configurable USB macro pad. Buttons are debounced and mapped to HID key combinations; a USB mass-storage interface exposes a FAT configuration file, which is reloaded when the host ejects the drive. The README documents the major runtime capabilities, while the sampled source is partial and places the application logic in one file, so nodes represent responsibilities within that file rather than separate modules.
Main entry points: main.c Config Loader
Components 13
Input and HID
- GPIO Buttons
- Scan and Debounce
vscode/main/main.c - GPIO Setup
vscode/main/main.c - HID Reports
vscode/main/main.c
Keymap Configuration
- Active Key Map
vscode/main/main.c - keymap.txt
vscode/main/main.c - Config Loader
vscode/main/main.c - Combo Parser
vscode/main/main.c - Keycode Lookup
vscode/main/main.c - Fallback Map
vscode/main/main.c
USB and Storage
- USB Composite Device
vscode/main/main.c - MSC FAT Storage
vscode/main/main.c
Other components
- USB Host
Connections 16
- GPIO Buttons → Scan and Debounce: provide levels
README.md - Scan and Debounce → Active Key Map: reads mapping
README.md - Scan and Debounce → HID Reports: sends reports
README.md - HID Reports → USB Host: delivers keys
README.md - Active Key Map → GPIO Setup: configures pins
README.md - Fallback Map → Active Key Map: provides defaults
README.md - USB Composite Device → HID Reports: exposes interface
README.md - USB Composite Device → MSC FAT Storage: exposes interface
README.md - USB Host → MSC FAT Storage: accesses drive
README.md - MSC FAT Storage → keymap.txt: stores config
README.md - Config Loader → keymap.txt: reads config
vscode/main/main.c - Config Loader → Combo Parser: parses bindings
README.md - Combo Parser → Keycode Lookup: resolves keys
README.md - Config Loader → Active Key Map: applies mapping
vscode/main/main.c - MSC FAT Storage → Config Loader: reloads on eject
vscode/main/main.c - Config Loader → MSC FAT Storage: returns drive
vscode/main/main.c