Keystroke Sender
Turn your Android phone or tablet into a virtual keyboard and mouse that can "type" directly into a connected computer — no software required on the PC.
What the app does
Keystroke Sender lets your Android device act as a Human Interface Device (HID) — the same class of device as a regular USB keyboard or mouse. You write a short script on your phone, connect it to a computer, and the app sends those keystrokes and mouse actions to the computer as if they were typed on a physical keyboard.
Because the computer simply sees a standard keyboard, nothing needs to be installed on the PC, and it works with virtually any operating system that accepts a USB or Bluetooth keyboard.
Two ways to connect
🔌 Cable mode (CH9329)
Connect a CH9329 USB-to-serial adapter to your Android device (USB Host / OTG). The app talks to the adapter, which presents itself to the PC as a real USB keyboard and mouse.
📶 Dongle mode (InputStick)
Use an InputStick Bluetooth dongle plugged into the PC. Your Android device pairs with it over Bluetooth and sends keystrokes wirelessly.
Highlights
- Flexible scripting syntax with keys, modifiers, mouse actions, timing and repetition
- Full US-QWERTY character set, modifier combinations (Ctrl, Alt, Shift, Win) and special keys (F1–F24, arrows, etc.)
- Unicode fallback for special symbols via the Windows Alt-Numpad method
- Windows compatibility mode (CR+LF) to avoid the "staircase" effect in terminals
- Save and load your scripts as reusable macros
- Runs as a foreground service, so long scripts keep going in the background
- Debug logging of HID keycodes and raw packets for troubleshooting
Download
Keystroke Sender is not available in the Google Play Store. You can download the APK directly below and install it manually.
By downloading you agree to the Privacy Statement & Disclaimer. Use is entirely at your own risk.
How to install an APK from outside the Play Store
- Tap the download button above and wait for KeystrokeSender.apk to finish downloading.
- Open the file (via your notification shade or the Files app).
- Android will ask permission to install unknown apps. Tap Settings and enable "Allow from this source" for your browser or file manager.
- Go back and tap Install.
- Open Keystroke Sender when installation completes.
Installing apps from outside the Play Store is a normal Android feature. You can turn the "unknown sources" permission back off afterwards if you prefer.
User manual
1. Choose your connection type
Open Settings (gear icon) and select Cable (CH9329) or Dongle (InputStick), depending on your hardware.
2. Connect
- Cable: Plug the CH9329 adapter into your Android device and into the target PC. Tap Refresh in the toolbar to detect it, grant USB permission when prompted, then tap Connect.
- Dongle: Make sure Bluetooth is on and the InputStick is plugged into the PC. Enter the dongle's Bluetooth name in Settings, then tap Connect.
The status dot turns green when connected.
3. Write your script
Type your text in the script editor. Plain text is sent character by character. Anything inside { } braces is treated as a command (a "tag") — for example a special key, a delay, or a mouse action. As you type {, the app suggests available tags.
4. Save & load (macros)
Use the toolbar and the Save button to store scripts as macros so you can reuse them later. Tap Macros to browse saved scripts, or generate a few sample macros to see how they work. The first line of a Macro needs to be {MACRO:description}
5. Send
Tap Send to start typing on the PC. A notification shows progress and lets the transmission continue if you switch apps. Tap Stop at any time to cancel.
- Windows Mode (CR+LF): sends both carriage return and line feed at the end of each line — useful in Windows terminals.
- Ignore CR: ignores line endings instead of turning them into Enter.
- HEX Mode: types the raw UTF-8 HEX of your text.
- Debug Mode: logs HID keycodes and raw packets for troubleshooting.
Scripting syntax
Commands are written inside braces: {TAG}. To type a literal brace, use {{ or }}.
| Category | Examples | Meaning |
|---|---|---|
| Special keys | {ENTER} {TAB} {ESC} {UP} {DEL} {HOME} {F1}…{F24} | Sends a single non-character key. |
| Modifiers | {CTRL+C} {CTRL+ALT+DELETE} {ALTGR+E} {WIN+R} | Presses keys together as a combination. |
| Repetition | {UP:5} | Repeats the key (here: Up arrow 5 times). |
| Mouse move | {MOUSE:MOVE,dx,dy} {MOUSE:MOVETO,x,y} | Relative or absolute mouse movement. |
| Mouse click | {MOUSE:LCLICK} {MOUSE:RCLICK} {MOUSE:MCLICK} {MOUSE:DBLCLICK} | Left / right / middle / double click. |
| Mouse other | {MOUSE:SCROLL,n} {MOUSE:DOWN} {MOUSE:UP} | Scroll, or hold/release the button. |
| Timing | {DELAY:500} {DELAY:10s} {DEFAULTDELAY:50} {RANDOMDELAY:5,500} | Pause, set default gap between keys, or randomise the typing rhythm. |
| Unicode | {U+00E9} | Sends a character by its hex code point (é). |
| Flow & input | {LABEL:start} {GOTO:start} {WAIT} {INPUT:prompt} {STOP} | Jump to a label, pause for confirmation, ask for input, or stop. |
| Feedback | {VIBRATE} {BEEP} {LOG:text} | Give feedback on the phone or write to the log. |
| Literal braces | {{ }} | Types a literal { or }. |
Example
Hello world!{ENTER}
{DELAY:500}
{WIN+R}
{DELAY:300}
notepad{ENTER}
Opens the Run dialog, waits, then launches Notepad — a simple demonstration of scripted keystrokes.
Permissions this app requests
We believe in being transparent about every permission. Here is exactly what the app asks for and why:
| Permission | Why it is needed |
|---|---|
| USB Host | To communicate with the CH9329 cable adapter in Cable mode. |
| Bluetooth (connect / scan) | Only for Dongle mode, to reach the InputStick. Bluetooth scanning is flagged "never for location". |
| Foreground service & notifications | To keep sending keystrokes when the app is in the background, with a visible progress notification (required by Android). |
| Vibrate | For the optional {VIBRATE} feedback tag. |
Privacy & cost — in plain terms
- No usage data collected. The app gathers no analytics or telemetry of any kind.
- No personal data requested. There are no accounts, no sign-up, no login.
- No cookies. The app is not a web app and stores no cookies; this website sets none either.
- No internet connection. Your scripts stay on your device.
- No payment, ever. The app is completely free, with no ads and no in-app purchases.
Your scripts and macros are stored only in the app's own private folder on your device, and are never uploaded anywhere. For the full statement, see Privacy & Disclaimer.
Responsible use & your responsibility
Keystroke Sender is a general-purpose automation and educational tool. Only use it on computers and systems that you own or are explicitly authorised to operate. You are solely responsible for how you use the app and for complying with all applicable laws, workplace policies and third-party terms.
The app is provided "as is", for learning and experimentation, without any warranty. Please read the full Privacy Statement & Disclaimer before use — by installing or using the app you accept those terms.