Local Android typing automation with phone and ESP32-CAM Bluetooth HID execution.
Latest Release · Android APK · ESP32-CAM Firmware · Setup Guide
Overview · Modes · Compatibility · How it works · Quick start · Downloads · Documentation · Security
Typx turns prepared C++, Java, or Python source into Bluetooth keyboard input for a focused Windows editor. It supports direct Phone Bluetooth typing and a dedicated ESP32-CAM mode with local Wi-Fi job transfer and offline BLE HID execution.
The current firmware is v1.0.0-rc3. The dedicated target is the original ESP32-based ESP32-CAM with 4 MB flash.
Typx accepts selected or entered source, validates it against the supported US-English HID mapping, plans editor-safe key actions, and types the result into VS Code, LeetCode, or HackerRank. Source is sent as keyboard reports, not through the laptop clipboard.
- Phone Bluetooth HID and dedicated ESP32-CAM execution modes.
- Standard and Personal cadence modes.
- C++, Java, and Python source profiles.
- Tested editor profiles for VS Code, LeetCode, and HackerRank.
- Visible eight-second countdown before typing begins.
- Stop, Cancel, progress reporting, and modifier-release safety.
- Local operation without a cloud account or typing service.
| Phone Bluetooth | Dedicated ESP32-CAM | |
|---|---|---|
| HID sender | Android phone | ESP32-CAM |
| Job transfer | Not required | Local Wi-Fi upload |
| Execution link | Phone to laptop over Bluetooth | Board to laptop over Bluetooth |
| Cadence | Standard or Personal | Standard or Personal |
| Controls | Pause, Resume, Stop | Prepare, Start, Stop, Cancel |
| Best suited for | Direct phone-based use | Dedicated offline board execution |
The Android phone registers as a Bluetooth HID keyboard and pairs directly with Windows. Typx plans the source on the phone, displays the countdown, and types into the focused editor. Pause, Resume, and Stop are available during a phone typing session.
Phone mode requires Android 9 or newer and a Bluetooth stack that supports HID Device mode.
The Android app prepares a Protocol V1 schedule and transfers it to the board over the phone's local Wi-Fi hotspot. The board validates the transfer and payload digest before it can start.
Prepare -> READY -> 8-second countdown -> Execute
Execution then runs locally from the ESP32-CAM over Bluetooth HID. Stop remains
available during countdown and execution. Cancel safely removes a prepared
READY job without sending keyboard input.
| Category | Tested support |
|---|---|
| Languages | C++, Java, Python |
| Editors | VS Code, LeetCode, HackerRank |
| Cadence | Standard, Personal |
| Computer layout | Windows English (United States) |
Typx assumes source is complete and syntactically correct. It does not compile or syntax-check code.
The current dedicated target is the original ESP32-based ESP32-CAM with 4 MB flash, typically programmed through an ESP32-CAM-MB and a USB data cable.
XIAO ESP32-S3, other ESP32-S3 boards, ESP32-WROOM boards, and other ESP32-CAM variants are future work and are not supported by the RC3 image. See Hardware compatibility.
flowchart LR
A[Android phone] -->|Wi-Fi job upload| B[Original ESP32-CAM]
B -->|Bluetooth HID| C[Windows laptop]
In dedicated mode, Android remains responsible for source preparation, editor planning, cadence resolution, and schedule creation. The ESP32-CAM receives only finalized HID records, verifies them, and executes them after the authoritative countdown.
- Download the APK and checksum file from the v1.0.0-rc3 release.
- Verify the downloaded SHA-256 value.
- Install Typx on Android and activate its device-bound offline licence.
- Pair the phone directly with Windows, or flash and pair the supported ESP32-CAM for dedicated mode.
- Use Windows English (United States), turn Caps Lock off, and focus an empty supported editor before the countdown finishes.
Download
Typx-Offline-License-Polished.apk,
verify its checksum, and allow installation from the Android browser or file
manager used to open it. Android 9 or newer is required. Follow the
Android installation guide for the complete steps.
Download the
v1.0.0-rc3 merged firmware
and place it in dist/. On Windows with Python 3.11 or newer:
py -3 -m pip install -r tools\windows-board-setup\requirements.txt
tools\windows-board-setup\Verify-TypxFirmware.cmd
tools\windows-board-setup\Setup-TypxBoard.cmdThe setup tool discovers available serial ports, verifies an original ESP32,
asks before flashing, and writes the merged image at address 0x0. See
Firmware flashing and
Device setup.
All public downloads are attached to the v1.0.0-rc3 GitHub Release.
| Asset | SHA-256 |
|---|---|
Typx-Offline-License-Polished.apk |
2dd5a0f842a19c5ecc0f1dcb3688ebf1d65915cad52728c8104e3aa9b0d38ac9 |
typxen-esp32cam-v1.0.0-rc3-merged.bin |
98176a6006435f9de9f35c52a7a39e58c63d194c690173fc6d8540d60bcbde93 |
The same values are available in
SHA256SUMS-v1.0.0-rc3.txt.
Get-FileHash -Algorithm SHA256 .\Typx-Offline-License-Polished.apk
Get-FileHash -Algorithm SHA256 .\typxen-esp32cam-v1.0.0-rc3-merged.binThe Android app requires a valid, device-bound offline licence before starting new protected work. The private License Maker and signing authority are not included in this repository or its public release. Offline licences cannot be remotely revoked.
- Dedicated Start remains blocked until the job, BLE authentication, and reconnect modifier-release checks are ready.
- Stop is supported during countdown and execution.
- Cancel removes a prepared
READYjob without typing. - RC3 does not resume an interrupted job after reset.
- Recovery sends only all-zero keyboard and consumer reports before another run can start.
If keyboard state appears stuck after power loss, stop the session and follow the Recovery guide before starting another job.
- Android installation
- Device setup
- Firmware flashing
- Hardware compatibility
- Daily use
- Protocol overview
- Local HTTP API
- Recovery
- Troubleshooting
- RC3 hardware validation
- Complete documentation index
- Changelog
- Contributing
- RC3 core typing and safety were manually validated on one original ESP32-CAM; this is not broad hardware certification.
- Windows English (United States), Caps Lock off, spaces for indentation, and an empty focused editor are required.
- Unsupported characters, Tab indentation, custom keymaps, extensions, and editor auto-completion can affect or block execution.
- The simulated ESP32-CAM battery value is not a physical charge measurement; automatic activity-based decrease remains experimental.
- Offline licences cannot be remotely revoked.
For board discovery, Bluetooth re-pairing, upload, Start, Stop, or stuck-key
issues, use the Troubleshooting guide. Do not assume
a Stop request succeeded until the board reports STOPPED.
Verify release hashes before installing or flashing. Do not publish device codes, licence tokens, credentials, captured source, network identifiers, or private logs in an issue. Follow the repository's Security Policy for responsible reporting.
No open-source or other reuse licence has been selected. No permission to copy, modify, redistribute, or reuse the source is currently granted beyond rights provided by applicable law. Public availability of this repository does not by itself grant a reuse licence.
