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
Why Keystroke Sender isn't on the Google Play Store
Google currently enforces highly demanding and complex requirements to publish new apps (such as mandatory closed testing phases with at least 20 people for 14 days, rigorous identity verification, and heavy administrative overhead). Because we build apps purely for our own enjoyment and want to keep it simple, we prefer to share the app with you directly.
How to Install the App
- Directly on your phone: Open the downloaded file. If prompted, allow your browser or file manager to "Install unknown apps" from outside the Google Play Store. Google started blocking this way of installing APK files.
- Via your computer: Connect your phone to your computer with a USB cable and install the app using Android Debug Bridge (ADB).
By downloading you agree to the Privacy Statement & Disclaimer. Use is entirely at your own risk.
How to install an APK directly on your phone
- 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.
How to install an APK via your computer
The cleanest, safest, and most secure way to install an APK file—without modifying your phone's mobile security settings or enabling "Unknown Sources"—is via ADB (Android Debug Bridge) from your computer. This is an official command-line utility supplied by Google for Android developers.
Step 1: Download ADB on your computer (The fastest way)
You do not need to install the massive Android Studio suite. Google provides a lightweight, standalone package called Platform-Tools.
- Windows: Download the official Android SDK Platform-Tools for Windows.
- Mac / Linux: Download the zip package above or install it instantly via your terminal line:
- Mac (via Homebrew): Run
brew install android-platform-tools - Linux (Ubuntu/Debian): Run
sudo apt install adb
- Mac (via Homebrew): Run
Note: If you downloaded the ZIP file (Windows/Mac), extract it into an easy-to-reach directory, such as C:\platform-tools or your Desktop.
Step 2: Prepare your Android phone
- Open the Settings app on your phone.
- Go to About phone (or System > About).
- Tap Build number 7 times rapidly until a notification pop-up says: "You are now a developer!".
- Return to the main Settings menu, open the new Developer options panel, and turn on USB debugging.
Step 3: Install the APK file
- Connect your phone to your computer using a USB cable.
- Look at your phone's screen: a prompt will ask "Allow USB debugging?". Check the option for “Always allow from this computer” and tap Allow.
- Move your downloaded APK file directly into the folder where you extracted the platform-tools files.
- Open Command Prompt (CMD) on Windows or Terminal on Mac/Linux, and change directories to that folder (e.g., on Windows, type:
cd C:\platform-tools). - Run this command to verify your computer properly detects your device:
(If you see a serial number followed by the word 'device', you are connected successfully!)adb devices - Run the installation script command:
adb install keystrokesender.apk
When the terminal returns a Success message, the app is fully installed on your device and ready to launch!
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
{WIN+R}
{DELAY:300}
notepad{ENTER}
{DELAY:500}
Hello world!{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.