Native Bluetooth HID Keyboard & Multi-Touch Trackpad Peripheral for Android
Transform your Android device into a zero-latency, hardware-emulated Bluetooth Keyboard and Multi-Touch Trackpad β with zero host software or background drivers required on your computer.
Keywe is a high-performance Android utility that emulates a physical Bluetooth Human Interface Device (HID) over standard Bluetooth L2CAP channels. Built on Android's native BluetoothHidDevice subsystem, Keywe operates directly at the hardware protocol layer.
Unlike traditional VNC, Wi-Fi, or proprietary remote desktop solutions, Keywe requires ZERO host-side software, background agents, drivers, or companion server applications. Connecting devices (Windows, macOS, Linux, ChromeOS, Smart TVs, and gaming consoles) recognize your phone out of the box as a standard physical Bluetooth keyboard and mouse.
- Zero Host Installation: Direct Bluetooth HID pairing. Zero companion apps, server daemons, or open local network ports required.
- Background Multitasking Service (
KeyweHidService): Powered by an Android Foreground Service (connectedDevicetype). Maintains a 100% active Bluetooth HID link while you switch apps or multitask. - Smart Recents Teardown: Hooks into
onTaskRemoved()β when you swipe away Keywe from the Recent Apps screen, the service automatically disconnects the PC, stops the service, and dismisses the status notification. - Cross-Platform Compatibility: Out-of-the-box support for Windows 10/11, macOS, Linux, ChromeOS, Android TV, Apple TV, and Consoles.
- Privacy-Centric: Communication stays strictly local over encrypted Bluetooth links; zero data leaves your local environment.
- High-Precision Cursor Engine: Delta-based pointer tracking with customizable sensitivity scaling (
0.5xβ3.5x). - Live Touch Aura Feedback: Real-time canvas-rendered glowing indicator tracking multi-touch coordinates on the active surface.
- Dual-Axis 2-Finger Gestures:
- Vertical 2-Finger Drag: Smooth vertical wheel scrolling.
- Horizontal 2-Finger Drag: Native horizontal axis panning.
- Dominant-axis analysis cleanly disambiguates diagonal strokes.
- Tap Gesture Detection:
- 1-Finger Tap: Left Click.
- 2-Finger Tap: Right Click.
- 8px Euclidean displacement jitter filter ensures micro-movements do not cancel taps.
- Physical Click Bar: Dedicated
[ L-CLICK ]and[ R-CLICK ]buttons with tactile haptic vibration pulses.
- Android 10+ (API 29+) Hardware Waveforms: Utilizes
VibrationEffect.EFFECT_CLICKto trigger native hardware tactile click motors directly. - Explicit Amplitude Fallback (
180/255): Designed to overcome OEM vibration motor suppression (Samsung OneUI, Xiaomi MIUI, Motorola, Realme/Oppo) on Android 8/9 devices.
- Authentic Physical Layout: Complete 75% deck including Function keys (
F1βF12),Esc(Accent Color),PrtSc(Print Screen),Delete,Enter, and a dedicated directional arrow cluster (β²,β,βΌ,βΊ). - Dynamic Keycap Shortcut Hints:
- Toggling
Ctrldynamically renders sub-labels on keycaps (CβCOPY,VβPASTE,ZβUNDO,AβALL,SβSAVE,WβCLOSE,FβFIND, etc.). - Toggling
Winexposes operating system shortcuts (EβFILES,RβRUN,DβDESK,LβLOCK,VβCLIP).
- Toggling
- One-Shot Shift: Shift acts as a natural one-shot modifier, automatically resetting after character entry to prevent unintentional caps lock states.
- Simultaneous Release Protocol: HID release reports clear keycodes and modifier masks simultaneously
(0, 0)for clean keystroke termination.
- Tactile Deck Engine: Low-latency monochrome mechanical keyboard with localized haptics.
- System Soft Keyboard (Phone IME): Seamlessly switch to your phone's native keyboard (Gboard, SwiftKey, Voice Typing, Glide Input) by holding the mode selector.
- Paced Async Clipboard Streaming:
PASTE TO PCtransmits clipboard strings with live progress tracking (SENDING 42/150) and paced 8ms inter-key dispatching to prevent HID buffer overruns. - Host-Synced Remote Clear: Tapping
CLEARsynchronizes the focused host input field (Ctrl + A+Delete) while clearing the local text buffer.
- Compact Landscape Toolbar: High-density horizontal layout designed for landscape trackpad and typing usage.
- Header Bluetooth Control: Direct access to the Bluetooth Device Manager from both portrait status indicators and the landscape
BTbutton. - Scroll-Safe Modal Architecture: Dialogs (
DeviceManagerDialog,SettingsDialog,UserGuideDialog) dynamically adapt with vertical scroll boundaries across small screens.
- Curated Theme Presets:
MONOCHROME DARK(Deep Charcoal & Signal Red Accent)MATRIX GREEN(Terminal Phosphor Green Accent)CYBER AMBER(Industrial Amber Accent)TACTILE WHITE(High-Contrast Minimal Accent)
- Persistent Preferences: Saves theme choice, keyboard engine preference, touchpad sensitivity, and haptics to
SharedPreferences.
+-------------------------------------------------------------------+
| Keywe Application |
| (Jetpack Compose UI β’ Dot-Matrix Monospace Design System) |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| KeyweHidService (Foreground Service) |
| - Foreground Type: "connectedDevice" β’ Live Status Notification |
| - Manages Persistent Connection Across Multitasking/App Switch |
| - Automatic Teardown on Task Removed (Swiped from Recents) |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| BluetoothHidManager Engine |
| - Dual Executors: Thread-Priority Scheduled & High-Priority HID |
| - Idempotent Lifecycle & ACL Link Disconnect State Machine |
| - Real-Time Bluetooth Profile Verification |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| USB HID Combo Report Descriptor |
| Report ID 1: 4-Byte Mouse (Buttons, dX, dY, Wheel) |
| Report ID 2: 8-Byte Keyboard (Modifiers, Reserved, Keys[6]) |
+-------------------------------------------------------------------+
|
Bluetooth L2CAP Connection
|
v
+-------------------------------------------------------------------+
| Host PC / Mac / Linux / Smart TV |
| (Standard Native OS USB HID Peripheral Driver) |
+-------------------------------------------------------------------+
| Specification | Details |
|---|---|
| App Name | Keywe |
| Package Name | com.shejan.keywe |
| Version | 1.3.0-beta (Version Code 4) |
| Language | Kotlin 2.0.0 |
| UI Toolkit | Jetpack Compose (Material 3) |
| Bluetooth Architecture | Android BluetoothHidDevice API, L2CAP Sockets, SDP Records |
| Service Architecture | Foreground Service (connectedDevice), Notification Channel |
| Minimum SDK | API Level 24 (Android 7.0 "Nougat") ~99.2% Device Compatibility |
| Target SDK | API Level 36 (Android 15 / Minor API Level 1) |
| Build Configuration | Kotlin DSL (build.gradle.kts) |
- An Android device running Android 9.0 (API Level 28) or newer with hardware HID profile support.
- A target computer or device with Bluetooth enabled.
- Open Keywe on your phone.
- Tap the LED status indicator in the header to open the Bluetooth Device Manager.
- Under the NEARBY tab, scan and select your computer, or make your phone discoverable and pair directly from your computer's Bluetooth settings.
- Once paired, the header status turns
CONNECTEDβ start typing and controlling your cursor instantly!
- Android Studio Ladybug (or newer)
- JDK 17 / 21
- Android SDK Platform 36
# Clone the repository
git clone https://github.com/shejanahmmed/Keywe.git
cd Keywe
# Assemble debug build
.\gradlew.bat assembleDebug
# Install to connected device
.\gradlew.bat installDebugKeywe does not collect, store, or transmit any user input, keystrokes, or personal data. All HID transmissions are strictly local to the established Bluetooth connection.
Read our live privacy policy:
π https://www.farjan.me/KeywePrivacyPolicy/
Farjan Ahmmed (Shejan)
Software Engineer
This project is licensed under the GNU General Public License v3.0 β see the LICENSE file for details.