Turn your retro handheld into the ultimate Bluetooth peripheral.
BlueMoon is a Kotlin Multiplatform (KMP) application that transforms your Android-based retro handheld into a fully functional Bluetooth HID peripheral.
Unlike other solutions, BlueMoon requires zero server-side software.
Your device will be recognized as a native hardware controller, keyboard, or mouse by the host system. Whether you're playing games on your PC, navigating a media center, or controlling a tablet, BlueMoon bridges the gap between your handheld's physical buttons and your other devices.
- Game Controller: Full gamepad mapping for retro titles or modern gaming.
- Touchpad Mode: Use your handheld's screen as touchpad for your PC/Mac.
- Remote Keyboard: Type long URLs or searches on your host device using your handheld.
- Media Control: Dedicated volume and playback controls for a seamless "couch-to-TV" experience.
- Bluetooth Classic: High compatibility with low latency (250Hz).
| Home Disconnected | Home Connected | Blackout Mode |
|---|---|---|
![]() |
![]() |
![]() |
| Touchpad | Keyboard |
|---|---|
![]() |
![]() |
| Host Platform | Compatibility | Note |
|---|---|---|
| Windows | ✅ | Native HID Support |
| macOS | ✅ | Native HID Support |
| Linux | ✅ | Works via BlueZ |
| Android | ✅ | Works as generic input |
| Apple TV | Limited due to Apple's because I can't spoof Official controllers and it's not MFi |
- Download: Grab the latest
.apkfrom the Releases section.
- Pro-tip: You can use Obtainium to track and install updates directly from this repository.
- Sideload: Install the APK on your Android-powered handheld (Retroid, Anbernic, AYN, etc.).
- Pair: * Open BlueMoon.
- Go: Once paired, swipe one of your paired hosts and your handheld will immediately act as the selected input type.
- Kotlin Multiplatform: Shared logic across platforms.
- Jetpack Compose: For a modern, responsive UI.
- Bluetooth Classic HID: Native driver-less communication.
I am actively looking for contributors to help expand BlueMoon’s capabilities! Whether it's adding new HID profiles, optimizing latency, or improving the UI, your help is welcome.
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your Changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.





