问题描述
我有一个 RaspBerry Pi,我想通过 BT 将击键发送到连接的设备。
pi 附带了一些 BT 堆栈,但是当我尝试 connect
到设备时,它会作为音频设备出现。
- 我需要做什么才能让 Pi 显示为 HID?
- 假设我有从 Pi 上的进程发送的击键,我如何将它发送到远程设备?对我来说,概念上最简单的方法可能是将字节写出套接字连接,然后在远程结束。但我对 BT 堆栈还不够了解。
- 最好,此 HID 键盘仅在应用程序运行时工作,而不会限制 Pi 的其他 BT 功能。
在 Arduino 上(不是这个),这里有发送击键的函数,在 Linux 上有各种 USB 设备类的 API。不确定 linux 上有什么。我只玩过 cli 实用程序。
解决方法
对于蓝牙,HID 设备有多种实现方式。
- 经典蓝牙记录在 Human Interface Device (HID)Profile
- 低功耗蓝牙记录为 HID over GATT (HoG) Profile
Linux 蓝牙堆栈可以使用 D-Bus API 实现这一选择不同的配置文件:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/profile-api.txt
不久前我做了一个实验,在 RPi 上用 Python 创建一个 HID 键盘服务: https://gist.github.com/ukBaz/a47e71e7b87fbc851b27cde7d1c0fcf0