Turn keyboard and mouse shortcuts on your computer into Bluetooth commands to control another device.
This is a personal project, so device compatibility is at the works on my machine stage.
- Windows x64 (macOS support is not implemented yet, as I haven't bought the Mac needed for it.)
- A Bluetooth adapter and driver that support Bluetooth Low Energy (BLE) peripheral mode.
- A receiver that accepts media controls over BLE HID.
Only a portable version is currently available.
- Download
TapRelay_<version>_Windows_x64.zipfrom Releases and extract it to a writable folder. - Run
TapRelay.exe. TapRelay requests administrator access by default. If you cancel the request, it continues without elevation, but shortcuts may not work in applications running as administrator. - In the setup wizard, enable the functions you need and assign shortcuts.
- Pair and connect the receiver to the PC in system Bluetooth settings, then select it in TapRelay.
- Start playback on the receiver and use Test Play/Pause.
- TapRelay stores
config.jsonand thelogs/folder beside the executable. - Create foreground app allowlists on App Groups. Each function can select All apps or multiple groups on the Bindings page.
- Use
TapRelay.exe --log-level debugto choose the startup log level:off,error,warn,info(default),debug, ortrace. - When passthrough is off, Shift, Ctrl, Alt and Win go directly to this computer. Matching shortcuts consume only their primary key or mouse button; modifier keys retain their normal behavior, including Alt/Win system actions.
- A Bluetooth connection and a usable HID session are separate states. If the receiver is paired but the session is not ready, check its connection to the PC and the status shown in TapRelay.
- Input hooks and Bluetooth behavior need testing on real hardware. Automated tests do not establish compatibility with a particular receiver, driver or game.
- Native Bluetooth and input support is currently implemented only for Windows.
Build on Windows with Rust, the MSVC C++ build tools and a Windows SDK. The build script requires the SDK resource compiler (rc.exe).
Local builds and releases use the Rust nightly channel, configured in rust-toolchain.toml and the release workflow.
cargo run --locked -p taprelay-appDevelopment builds retain source locations for project backtraces and omit dependency debug information. For breakpoints and variable inspection, use cargo run --locked -p taprelay-app --profile debugging.
To build the release executable locally:
cargo rustc --release --locked -p taprelay-app -- -C target-feature=+crt-staticThe output is target/release/taprelay.exe.
Submit bugs and feature requests to Issues.
Read the Contributing guide before submitting changes.
Follow the Code of conduct when participating in discussions.
- The Genshin Impact team and guide video creators: thank you for the work that inspired TapRelay.
- My computer: thank you for providing a reliable Windows test environment.
- Tibo: thank you to the Chief Reset Officer for supporting my Codex usage quota.
- @DearVa
TapRelay is licensed under GPL-3.0-only.
See THIRD_PARTY_NOTICES for copied source code, embedded icons and special attribution requirements.

