dorkhub

Bluke

Bluke turns your phone into a Bluetooth mechanical keyboard, a Gamepad and a Trackpad

arnav-kr
Kotlin545 forksAGPL-3.0updated 1 month ago
git clone https://github.com/arnav-kr/Bluke.gitarnav-kr/Bluke
Bluke Logo

Bluke

Bluke turns your Android device into a driverless, wireless Bluetooth HID mechanical keyboard simulator.

Android Kotlin License: AGPL v3 Latest Release


Features

  • No host software required: Uses Android's native Bluetooth HID profile to connect directly with Windows, macOS, Linux, ChromeOS, Android TV, and game consoles.
  • Switch sound synthesis: Generates mechanical switch acoustics (Cherry MX Brown, Holy Panda, Alpaca, Kailh Box Navy, Buckling Spring, and Topre) in real-time.
  • Themes and case colors: Includes built-in presets (Olivia, Dracula, Oblivion, Retro, Cafe, and Mizu) and selectable case colors.
  • System integration: Supports system haptics, OLED black mode, and Material You dynamic color schemes.

Requirement

  • Android 9 (API level 28) or higher (where the BluetoothHidDevice API was introduced).
  • A device with hardware support for the Bluetooth HID Device (HID-over-GATT) profile. Note that profile availability may vary based on device chipset and manufacturer ROM.

Build and Installation

Prerequisites

  • Android Studio Koala or higher.
  • Android SDK 36.
  • Global Gradle or Gradle Wrapper installed.

Setup and Compilation

  1. Clone the repository:

    git clone https://github.com/arnav-kr/Bluke.git
    cd Bluke
  2. Build with Gradle:

    gradle assembleDebug
  3. Install on device: Enable USB Debugging on your Android phone and install the app via Android Studio or run:

     gradle installDebug

License

This project is licensed under the AGPL-3.0

Credits

  • kbsim: The user interface design is inspired by their web keyboard simulator (kbs.im), and the mechanical switch audio assets are sourced from their project.

Author

more like this

anne-key

Firmware for Anne Pro Keyboard written in Rust

Rust572

kurinji

Kurinji Input Map aims to decouple game play code from device specific input api. This is achieved by providing apis th…

Rust51

uchroma

An advanced driver for Razer Chroma hardware in Linux with multi-layer animation support

Python52

search

search projects, people, and tags