{"id":19118984,"url":"https://github.com/yskszk63/btknmle","last_synced_at":"2025-06-11T21:37:07.004Z","repository":{"id":38330616,"uuid":"219513809","full_name":"yskszk63/btknmle","owner":"yskszk63","description":"Turn your keyboard and mouse connected to your computer into a bluetooth hid device.","archived":false,"fork":false,"pushed_at":"2024-01-22T21:37:25.000Z","size":2712,"stargazers_count":16,"open_issues_count":5,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-05T04:18:00.578Z","etag":null,"topics":["async-await","ble","hid","hogp","linux","rust","tokio"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yskszk63.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-04T13:56:59.000Z","updated_at":"2025-03-03T02:21:02.000Z","dependencies_parsed_at":"2022-08-24T05:10:10.690Z","dependency_job_id":null,"html_url":"https://github.com/yskszk63/btknmle","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yskszk63%2Fbtknmle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yskszk63%2Fbtknmle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yskszk63%2Fbtknmle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yskszk63%2Fbtknmle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yskszk63","download_url":"https://codeload.github.com/yskszk63/btknmle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252436591,"owners_count":21747473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async-await","ble","hid","hogp","linux","rust","tokio"],"created_at":"2024-11-09T05:08:14.774Z","updated_at":"2025-05-05T04:18:06.633Z","avatar_url":"https://github.com/yskszk63.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"BTKNMLE (BlueTooth Keyboard aNd Mouse Low Energy)\n=================================================\n\n[![build](https://github.com/yskszk63/btknmle/workflows/build/badge.svg)](https://github.com/yskszk63/btknmle/actions)\n[![codecov](https://codecov.io/gh/yskszk63/btknmle/branch/master/graph/badge.svg)](https://codecov.io/gh/yskszk63/btknmle)\n[![dependency status](https://deps.rs/repo/github/yskszk63/btknmle/status.svg)](https://deps.rs/repo/github/yskszk63/btknmle)\n\nTurn your keyboard and mouse connected to your computer into a bluetooth hid device.\n\nWIP\n\n![logo](assets/logo.png)\n\nDEMO (Linux PC vs Pixel3)\n-------------------------\n\n![demo](assets/demo.png)\n\nRuntime Requirements\n--------------------\n\n- Linux 5.8+\n- libinput\n\n(Sorry. Only linux is supported.)\n\nBuild Requirements\n------------------\n\nRust 1.51+\n\nPrerequisite\n------------\n\nStop bluez if running.\n\n```\nsudo systemctl stop bluetooth.service\n```\n\nRun\n---\n\nvia [Docker](https://github.com/yskszk63/btknmle/pkgs/container/btknmle)\n\n```bash\ndocker run --rm \\\n  --mount type=volume,source=btknmle,target=/var/lib/btknmle \\\n  --device /dev/input --mount type=bind,source=/run/udev,target=/run/udev,readonly \\\n  --mount type=bind,source=/sys/class/bluetooth,target=/sys/class/bluetooth,readonly \\\n  --net host --cap-add net_admin \\\n  ghcr.io/yskszk63/btknmle:latest\n```\n\nWith key grab.\n\n```bash\ndocker run --rm \\\n  --mount type=volume,source=btknmle,target=/var/lib/btknmle \\\n  --device /dev/input --mount type=bind,source=/run/udev,target=/run/udev,readonly \\\n  --mount type=bind,source=/sys/class/bluetooth,target=/sys/class/bluetooth,readonly \\\n  --net host --cap-add net_admin \\\n  -eBTKNMLE_GRAB=yes \\\n  ghcr.io/yskszk63/btknmle:latest\n```\n\nor\n\n[Download form Nightly Release Page](https://github.com/yskszk63/btknmle/releases/tag/nightly)\n\n- pre build binary\n- deb package\n\narch: amd64 / arm / armv7 / arm64\n\nusage\n\n```\nbtknmle\n\nUSAGE:\n    btknmle [FLAGS] [OPTIONS]\n\nFLAGS:\n    -h, --help         Prints help information\n    -v, --verbosity\n    -V, --version      Prints version information\n\nOPTIONS:\n    -D, --debug \u003cdebug\u003e            [env: BTKNMLE_DEBUG=]\n    -d, --device-id \u003cdevice-id\u003e    [env: BTKNMLE_DEVID=] [default: 0]\n        --grab \u003cgrab\u003e              [env: BTKNMLE_GRAB=]\n    -T, --trace \u003ctrace\u003e            [env: BTKNMLE_TRACE=]\n    -f, --var-file \u003cvar-file\u003e      [env: BTKNMLE_VAR_FILE=] [default: /var/lib/btknmle/db.toml]\n```\n\nUsing\n-----\n\n1. Start btknmle [Device]\n2. Press any key to start Advertise [Device]\n3. Scan bluetooth devices [Host]\n4. Connect to btknmle named `btknmle` [Host]\n5. Passkey input if required [Device]\n6. Connected\n\nBuild\n-----\n\nArchLinux\n\n```bash\nsudo pacman -S libinput\ngit clone https://github.com/yskszk63/btknmle\ncd btknmle\ncargo build --release\n```\n\nTested device\n-------------\n\nCurrently ThinkPad A285 (ArchLinux) as device and Pixel3 as host only.\n\n## License\n\nLicensed under either of\n\n * Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyskszk63%2Fbtknmle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyskszk63%2Fbtknmle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyskszk63%2Fbtknmle/lists"}