ESP32-S3 Bluetooth macro keypad with a Windows companion app.
- C# 74%
- C++ 19.8%
- PowerShell 3.4%
- Shell 2.8%
This hardens Windows BLE reconnects by validating full GATT readiness before treating a device as connected, retrying discovery/open flows, and disposing stale sessions when writes, service changes, or characteristic lookups fail. It also persists runtime diagnostics to a rotating log file so intermittent connection issues can be investigated after the fact. |
||
|---|---|---|
| .dev | ||
| firmware | ||
| mechanical | ||
| pc | ||
| .gitignore | ||
| AGENTS.md | ||
| README.md | ||
| what.md | ||
remoteWispr
A small ESP32-S3 Bluetooth wireless keypad for a personal voice-transcription workflow.
Initial hardware target:
- NULA DeepSleep ESP32-S3 board
- 2100 mAh LiPo/Li-ion battery
- WS2812B Ring7 LED ring, 7 outer pixels + 1 center pixel
- 3 mechanical keyboard switches
Main behavior:
- Act as a six-layer, 3-main-key wireless keypad with local set buttons for layer/debug/manual-sleep controls.
- Send debounced main-key down/up, layer, and status events to the Windows app over a tiny binary BLE GATT protocol.
- Let the Windows app map those remote events to actual Windows key combos, especially
RightShift+F17for the Wispr use case. - Keep layers, button debounce, LEDs, status, and warning generation owned by the remote.
- Use low-brightness, lively LED feedback for layer, connection, and local status.
- Battery percent/charging status is not implemented with current hardware; NULA exposes battery power/charging, but no confirmed firmware-readable battery-sense or charger-status pin.
Project context and research live in .dev/; the protocol spec is .dev/keypad-protocol.md.