Transform your smartphone into a gyroscopic air-mouse and trackpad for external displays.
PhonePointer enables seamless cursor control on external displays connected to your Android device. Using your phone's touchscreen as a trackpad and gyroscope for air-mouse functionality, you can navigate and interact with content on a secondary display as naturally as using a laptop touchpad.
- 🖱️ Touchpad Mode — Use your phone screen as a multi-touch trackpad
- 🎯 Gyroscope Control — Move the cursor by tilting your phone (air-mouse style)
- 📱 External Display Support — Full cursor and input support for connected displays
- ⌨️ Virtual Keyboard — On-screen keyboard overlay for text input on external display
- 📲 App Launcher — Launch and manage apps directly on your external display
- 🔙 Navigation Controls — Quick access to Back, Home, and Recents buttons
- ⚙️ Customizable Sensitivity — Adjust swipe and gyro sensitivity per-axis
- 🔅 Screen Dimming — Dim phone screen while using touchpad to save battery
- 📊 Running Apps View — See and switch between apps running on external display
- Android 10+ (Pixel 10 Pro XL on Android 16 tested currently)
- Shizuku — Required for input injection on external displays
- System Alert Window Permission — For cursor overlay
- USB-C to HDMI/DisplayPort or Wireless Display connection
Download and set up Shizuku on your device. You can start Shizuku via:
- Wireless ADB (no PC required after initial setup)
- USB Debugging (requires PC connection)
Build from source or install the APK.
- Launch PhonePointer and grant Shizuku permission when prompted
- Grant Display over other apps permission for cursor overlay
Connect your phone to an external display via USB-C adapter or wireless casting.
The app will automatically detect the external display and attach the cursor. Use your phone screen as a trackpad!
| Action | Gesture |
|---|---|
| Move cursor | Swipe on touchpad (or tilt phone if gyro enabled) |
| Left click | Single tap |
| Long press / Right click | Long press |
| Scroll | Two-finger swipe |
| Back | Tap "Back" button |
| Home | Tap "Home" button |
| Recent Apps | Tap "Recents" button |
| Open App Launcher | Tap "Apps" button |
| Show Keyboard | Tap "Keyboard" button |
# Clone the repository
git clone https://github.com/YOUR_USERNAME/PhonePointer.git
cd PhonePointer
# Build with Gradle
./gradlew assembleDebug
# Install on device
./gradlew installDebug- Shizuku API — Input injection on external displays
- LSPosed HiddenApiBypass — Access hidden Android APIs
- AndroidX AppCompat & Material Components
This project builds upon the work of several amazing open-source projects:
Taskbar switching logic adapted from DroidOS by Katsuyamaki.
Licensed under GNU General Public License v3.0 (GPLv3).
Framework code and desktop mode input controller architecture inspired by Taskbar by farmerbb.
Licensed under Apache License 2.0.
Thank you to these projects for making this possible!
This project is licensed under the GNU General Public License v3.0 (GPLv3).
This means you are free to:
- ✅ Use this software for any purpose
- ✅ Study and modify the source code
- ✅ Distribute copies of the original software
- ✅ Distribute your modified versions
Under the following conditions:
- 📋 Source code must be made available when distributing
- 📋 Modifications must be released under GPLv3
- 📋 Changes must be documented
- 📋 Original license and copyright notices must be preserved
See the LICENSE file for the full license text, or visit GNU GPLv3.
Note: This project incorporates code from DroidOS, which is licensed under GPLv3, making this a derivative work under the same license.
Contributions are welcome! Please feel free to submit issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
