How compensis/webtypinginterface works
This firmware turns an ESP32-S3 into a browser-driven USB keyboard. A browser loads the embedded page over HTTP, connects over WebSocket, and sends physical-key HID codes plus modifier bits; the firmware converts each packet into a keyboard report for the USB host. A separate status path reports USB mount state to the browser. The README documents key coverage, layout-independent input, Wi-Fi, mDNS, and serial diagnostics. The HTML and firmware entry point are present in the tree; the page source was not sampled, so browser behavior is based on README documentation.
Main entry points: main.cpp Firmware loop · USBHID.cpp HID transport · USBHIDKeyboard.cpp Keyboard reports · index.html Typing page
Components 12
Browser interface
- Typing page
src/index.html - Browser keyboard
ESP32 firmware
- Firmware loop
src/main.cpp - HTTP server
src/main.cpp - WebSocket server
src/main.cpp - mDNS advertiser
src/main.cpp
USB HID stack
- Keyboard reports
lib/USBBootKeyboard/src/USBHIDKeyboard.cpp - HID transport
lib/USBBootKeyboard/src/USBHID.cpp
Network services
- Wi-Fi network
Other components
- Browser user
- USB host
- Serial monitor
Connections 14
- Browser user → Browser keyboard: opens page
- Browser keyboard → HTTP server: requests page
- HTTP server → Typing page: serves HTML
- Browser keyboard → WebSocket server: sends HID packet
- WebSocket server → Keyboard reports: submits report
- Keyboard reports → HID transport: sends report
- HID transport → USB host: USB HID reports
- Firmware loop → HID transport: checks mount state
- Firmware loop → WebSocket server: broadcasts status
- USB host → Firmware loop: mount state
- Firmware loop → Wi-Fi network: connects
- Firmware loop → mDNS advertiser: starts advertisement
- Browser keyboard → mDNS advertiser: resolves hostname
- Firmware loop → Serial monitor: prints diagnostics