yskszk63 / btknmle

Turn your keyboard and mouse connected to your computer into a bluetooth hid device.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BTKNMLE (BlueTooth Keyboard aNd Mouse Low Energy)

build codecov dependency status

Turn your keyboard and mouse connected to your computer into a bluetooth hid device.

WIP

logo

DEMO (Linux PC vs Pixel3)

demo

Runtime Requirements

  • Linux 5.8+
  • libinput

(Sorry. Only linux is supported.)

Build Requirements

Rust 1.51+

Prerequisite

Stop bluez if running.

sudo systemctl stop bluetooth.service

Run

via Docker

docker run --rm \
  --mount type=volume,source=btknmle,target=/var/lib/btknmle \
  --device /dev/input --mount type=bind,source=/run/udev,target=/run/udev,readonly \
  --mount type=bind,source=/sys/class/bluetooth,target=/sys/class/bluetooth,readonly \
  --net host --cap-add net_admin \
  ghcr.io/yskszk63/btknmle:latest

With key grab.

docker run --rm \
  --mount type=volume,source=btknmle,target=/var/lib/btknmle \
  --device /dev/input --mount type=bind,source=/run/udev,target=/run/udev,readonly \
  --mount type=bind,source=/sys/class/bluetooth,target=/sys/class/bluetooth,readonly \
  --net host --cap-add net_admin \
  -eBTKNMLE_GRAB=yes \
  ghcr.io/yskszk63/btknmle:latest

or

Download form Nightly Release Page

  • pre build binary
  • deb package

arch: amd64 / arm / armv7 / arm64

usage

btknmle

USAGE:
    btknmle [FLAGS] [OPTIONS]

FLAGS:
    -h, --help         Prints help information
    -v, --verbosity
    -V, --version      Prints version information

OPTIONS:
    -D, --debug <debug>            [env: BTKNMLE_DEBUG=]
    -d, --device-id <device-id>    [env: BTKNMLE_DEVID=] [default: 0]
        --grab <grab>              [env: BTKNMLE_GRAB=]
    -T, --trace <trace>            [env: BTKNMLE_TRACE=]
    -f, --var-file <var-file>      [env: BTKNMLE_VAR_FILE=] [default: /var/lib/btknmle/db.toml]

Using

  1. Start btknmle [Device]
  2. Press any key to start Advertise [Device]
  3. Scan bluetooth devices [Host]
  4. Connect to btknmle named btknmle [Host]
  5. Passkey input if required [Device]
  6. Connected

Build

ArchLinux

sudo pacman -S libinput
git clone https://github.com/yskszk63/btknmle
cd btknmle
cargo build --release

Tested device

Currently ThinkPad A285 (ArchLinux) as device and Pixel3 as host only.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Turn your keyboard and mouse connected to your computer into a bluetooth hid device.

License:MIT License


Languages

Language:Rust 99.8%Language:Dockerfile 0.2%Language:C 0.1%