Transform your Android device into a wireless trackpad and mouse for your Mac
Features • Installation • Usage • Building • Contributing
| Android App | macOS Pairing |
|---|---|
![]() |
![]() |
| Main screen with device registration | macOS Bluetooth settings |
| Full-Screen Trackpad | Settings |
|---|---|
![]() |
![]() |
| Full-screen trackpad mode | Customizable settings |
DroidPad is an Android application that enables your Android phone or tablet to function as a Bluetooth HID (Human Interface Device) trackpad and mouse for macOS. It provides a seamless, wireless control experience with support for multi-touch gestures, air mouse mode, and macOS-specific shortcuts.
DroidPad uses the standard Bluetooth HID protocol to register your Android device as a pointing device with macOS. Once paired, your Mac recognizes it as a standard trackpad, requiring no additional software installation on your Mac. The connection is direct and works immediately after the initial pairing process.
- 🎯 Zero Configuration: Works out of the box with standard Bluetooth HID protocol
- 🖱️ Full Trackpad Experience: Multi-touch gestures, scrolling, clicking, and more
✈️ Air Mouse Mode: Use your device's gyroscope for cursor control- ⌨️ macOS Shortcuts: Built-in support for Mission Control, App Switcher, and Show Desktop
- 🔄 Auto-Reconnect: Automatically reconnects to previously paired devices
- 🎨 Modern UI: Beautiful, intuitive interface built with Jetpack Compose
-
Bluetooth HID Device: Implements standard Bluetooth HID protocol for maximum compatibility
-
Touchpad Controls:
- Single finger drag for cursor movement
- Single tap for left click
- Two-finger tap for right click
- Two-finger scroll (vertical)
- Pinch-to-zoom gestures
- Three-finger gestures for Mission Control and Show Desktop
- Four-finger swipe for desktop switching
-
Air Mouse Mode:
- Gyroscope-based cursor control
- Tilt your device to move the cursor
- Perfect for presentations or when you need hands-free control
-
macOS Integration:
- Mission Control (3-finger swipe up or button)
- Show Desktop (3-finger swipe down or button)
- App Switcher (Cmd+Tab via button)
- Native macOS gesture support
-
Device Management:
- Recent devices list with quick reconnect
- Auto-reconnect on app launch
- Connection history tracking
- Reset functionality for troubleshooting
-
User Experience:
- Full-screen trackpad mode
- Visual touch feedback
- Connection status indicators
- Gesture hints and guides
- Smooth animations and transitions
- Minimum SDK: Android 10 (API 29)
- Target SDK: Android 14 (API 36)
- Bluetooth: Bluetooth 4.0+ with HID support
- Hardware:
- Touchscreen (required)
- Gyroscope (optional, for Air Mouse mode)
- macOS 10.12 (Sierra) or later
- Bluetooth 4.0+ support
- No additional software required
- Download the latest APK from the Releases page
- Enable "Install from Unknown Sources" on your Android device
- Install the APK file
- Grant Bluetooth permissions when prompted
See the Building section below.
- Open DroidPad on your Android device
- Grant Bluetooth permissions if prompted
- Complete the onboarding process (battery optimization settings)
Onboarding screen - First launch setup. Make sure to enable battery optimization exception for reliable background operation.
- Tap the "Register" button on the main screen
- Accept the Bluetooth discoverability request (typically 5 minutes)
- Wait for "Device Registered" status confirmation
- Your device will now appear as "DroidPad Trackpad" in Bluetooth searches
Main screen - Tap "Register" to make your device discoverable as a trackpad. The status card shows registration state.
- On your Mac, open System Settings (or System Preferences on older macOS)
- Navigate to Bluetooth settings
- Look for "DroidPad Trackpad" in the list of available devices
⚠️ Important: Look for "DroidPad Trackpad", NOT your phone's actual name
- Click "Connect" next to "DroidPad Trackpad"
- Wait for connection confirmation - you should see it change to "Connected"
macOS Bluetooth Settings - Look for "DroidPad Trackpad" in the list of devices. Make sure Bluetooth is enabled on your Mac.
macOS Bluetooth Pairing - Click "Connect" to pair with DroidPad Trackpad. The connection should complete within a few seconds.
- Once connected, the app automatically enters full-screen trackpad mode
- You can now use your Android device to control your Mac's cursor
- Touch and drag on the screen to move the cursor
- Tap to click, use multi-finger gestures for scrolling and macOS shortcuts
- If previously paired: If your device was previously paired with your Mac (as a regular Bluetooth device), you must forget/unpair it first in Mac Bluetooth settings before pairing as "DroidPad Trackpad"
- One device at a time: Only one device can be connected as "DroidPad Trackpad" at a time
- Auto-reconnect: Once paired, the app will automatically attempt to reconnect on future launches
- Trackpad Surface: Touch and drag to move cursor
- Status Card: Shows current connection state
- Register/Unregister: Control HID device registration
- Recent Devices: Quick access to previously connected devices
Main screen showing connection status and device registration
Automatically launches when connected. Features:
- Back Button (✕): Return to main screen
- Connection Indicator: Shows connection status
- Air Mouse Toggle: Enable/disable gyroscope control
- Quick Actions:
- Mission Control button
- App Switcher button
- Show Desktop button
Full-screen trackpad mode - Active trackpad with quick action buttons
Full-screen trackpad mode - Connected and ready to use
| Gesture | Action |
|---|---|
| 1 Finger Drag | Move cursor |
| 1 Finger Tap | Left click |
| 2 Finger Tap | Right click |
| 2 Finger Scroll | Vertical scroll |
| 2 Finger Pinch | Zoom in/out |
| 3 Finger Swipe Up | Mission Control |
| 3 Finger Swipe Down | Show Desktop |
| 4 Finger Swipe Left/Right | Switch desktops |
- Connect to your Mac
- Enter full-screen trackpad mode
- Tap the Air Mouse button (📱) to enable
- Tilt your device to move the cursor
- Tap again to disable
Access settings from the main screen or full-screen mode to customize:
- Pointer speed and sensitivity
- Scroll speed and direction
- Tap-to-click behavior
- Gesture guides
- Connection preferences
Settings screen - Customize trackpad behavior and preferences
-
Device Not Appearing
- Ensure Bluetooth is enabled on both devices
- Make sure the Android device is discoverable
- Check that "DroidPad Trackpad" appears (not your phone name)
-
Connection Fails
- Unpair the device from Mac Bluetooth settings
- Use "Reset All Connections" in the app
- Re-register and pair again
-
Lag or Delayed Response
- Ensure devices are within Bluetooth range
- Close other Bluetooth-intensive apps
- Restart Bluetooth on both devices
-
Gestures Not Working
- Verify connection status shows "Connected"
- Try disconnecting and reconnecting
- Check that full-screen mode is active
- Android Studio: Hedgehog (2023.1.1) or later
- JDK: 11 or later
- Gradle: 8.0+ (included via wrapper)
- Android SDK: API 29+ (Android 10)
-
Clone the Repository
git clone https://github.com/Tolstoyj/MacTrack.git cd MacTrack -
Open in Android Studio
- Open Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned directory
-
Sync Gradle
- Android Studio will automatically sync Gradle dependencies
- Wait for sync to complete
-
Build the APK
./gradlew assembleDebug
The APK will be generated at:
app/build/outputs/apk/debug/app-debug.apk -
Install on Device
./gradlew installDebug
Or use Android Studio's Run button
DroidPadMacOS/
├── app/
│ ├── src/
│ │ └── main/
│ │ ├── java/com/dps/droidpadmacos/
│ │ │ ├── MainActivity.kt # Main UI and setup
│ │ │ ├── FullScreenTrackpadActivity.kt # Full-screen trackpad
│ │ │ ├── bluetooth/
│ │ │ │ ├── BluetoothHidService.kt # HID device management
│ │ │ │ └── HidConstants.kt # HID descriptors
│ │ │ ├── touchpad/
│ │ │ │ ├── EnhancedGestureDetector.kt # Multi-touch gestures
│ │ │ │ └── TouchpadGestureDetector.kt # Basic gestures
│ │ │ ├── sensor/
│ │ │ │ └── AirMouseSensor.kt # Gyroscope control
│ │ │ ├── viewmodel/
│ │ │ │ └── TrackpadViewModel.kt # Business logic
│ │ │ ├── data/
│ │ │ │ └── DeviceHistoryManager.kt # Device persistence
│ │ │ └── ui/
│ │ │ ├── TrackpadSurface.kt # Trackpad UI component
│ │ │ └── RecentDevicesList.kt # Device list UI
│ │ └── res/ # Resources
│ └── build.gradle.kts # App dependencies
├── build.gradle.kts # Project config
├── gradle/
│ └── libs.versions.toml # Version catalog
└── settings.gradle.kts # Project settings
- Jetpack Compose: Modern declarative UI framework
- Material 3: Latest Material Design components
- Kotlin Coroutines: Asynchronous programming
- AndroidX Lifecycle: Lifecycle-aware components
DroidPad follows a clean architecture pattern:
- UI Layer: Jetpack Compose screens and components
- ViewModel Layer: Business logic and state management
- Service Layer: Bluetooth HID service (singleton)
- Data Layer: SharedPreferences for device history
- BluetoothHidService: Manages HID device registration and communication
- TrackpadViewModel: Coordinates between UI and services
- EnhancedGestureDetector: Processes multi-touch gestures
- AirMouseSensor: Handles gyroscope-based cursor control
DroidPad implements the Bluetooth HID specification to register as a standard input device:
- SDP Record: Defines device as combo keyboard+pointing device
- HID Descriptors: Standard mouse and keyboard descriptors
- Report Protocol: Uses report IDs for mouse and keyboard events
- QoS Settings: Optimized for low latency input
Mouse Report (Report ID 1):
[Buttons: 1 byte] [X: 1 byte] [Y: 1 byte] [Wheel: 1 byte]
Keyboard Report (Report ID 2):
[Modifiers: 1 byte] [Reserved: 1 byte] [Keys: 6 bytes]
- Uses Android's
MotionEventAPI for touch tracking - Supports up to 4 simultaneous touch points
- Implements velocity and distance thresholds for gesture recognition
- Configurable sensitivity settings
Contributions are welcome! Please follow these guidelines:
-
Fork the Repository
git clone https://github.com/YOUR_USERNAME/MacTrack.git
-
Create a Feature Branch
git checkout -b feature/amazing-feature
-
Make Your Changes
- Follow Kotlin coding conventions
- Add comments for complex logic
- Update documentation as needed
-
Test Your Changes
- Test on multiple Android versions if possible
- Verify Bluetooth connectivity
- Test gesture recognition
-
Commit Your Changes
git commit -m "Add amazing feature" -
Push and Create Pull Request
git push origin feature/amazing-feature
- Follow Kotlin Coding Conventions
- Use meaningful variable and function names
- Add KDoc comments for public functions
- Keep functions focused and single-purpose
When reporting issues, please include:
- Android version and device model
- macOS version
- Steps to reproduce
- Expected vs actual behavior
- Logs (if applicable)
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Jetpack Compose
- Uses Android's Bluetooth HID API
- Inspired by the need for a wireless trackpad solution
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Customizable gesture sensitivity
- Additional macOS shortcuts
- Windows/Linux support
- Battery optimization improvements
- Dark mode theme
- Multi-device support
- Keyboard input support
Made with ❤️ for the open-source community
⭐ Star this repo if you find it useful!