如果不是系统键盘,如何连接蓝牙键盘?
Posted
技术标签:
【中文标题】如果不是系统键盘,如何连接蓝牙键盘?【英文标题】:How can I connect a bluetooth keyboard without it being a system keyboard? 【发布时间】:2021-09-27 06:03:16 【问题描述】:我想将蓝牙键盘连接到我的计算机,但我不想将它用作普通的 HID 设备(因此,如果我按下键,则不会输入字符)。是否可以在 Python 中查看准确按下了哪些键? (我想为每个键分配功能)
我在 Ubuntu 上使用 Python 3。 编辑: 转到设备 -> 信息 -> UUID 显示:
00001000-0000-1000-8000-00805f9b34fb ServiceDiscoveryServerServiceClassID 00001124-0000-1000-8000-00805f9b34fb 人机接口设备服务 (HID) 00001200-0000-1000-8000-00805f9b34fb 即插即用信息
所以我认为它是一个 HID 键盘。
【问题讨论】:
这有帮助吗:***.com/questions/14494101/… ? 【参考方案1】:默认情况下,bluetoothd
会将蓝牙 HID 设备移交给内核。
您可以通过
禁用此行为-
在禁用
hid
和/或 hog
配置文件的情况下重建 BlueZ
在没有input
插件的情况下启动蓝牙
在https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/README#n198 中有更多关于使用--disable-hid
和--disable-hog
进行重建的详细信息
要删除输入插件,然后修改/lib/systemd/system/bluetooth.service
,使ExecStart
行添加--noplugin=input
。例如:
ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=input
需要明确的是,以上将禁用系统正在使用的所有蓝牙 HID 设备。
如果您保留它以便 BlueZ 将 HID 设备移交给系统,那么它将在 /dev/input/
中创建一个条目。您可以使用python-evdev
库访问有关按下了哪些键的信息。更多信息请访问:https://python-evdev.readthedocs.io/
【讨论】:
禁用输入插件有效,谢谢。但是我现在如何在 Python 中访问键盘? 这将取决于它是 HID 还是 HoG 键盘。 BlueZ 源代码树中有一些示例。不是直接 HID 或 HoG,而是您访问事物的基本结构。 git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/… 和 git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/…。 API 文档位于:git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc 我不明白这个文件https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/test-profile 做了什么。它是干什么用的?另外,当我现在尝试将键盘与 blueman 连接时,它会一直连接然后断开连接。我该如何防止呢? 键盘断开连接的原因是因为您删除了插件/客户端来处理键盘提供的服务,因此 BlueZ 断开连接。如果您使用 HID 或 HID over GATT 键盘更新您的问题,那么我们可能会给您一些更具体的说明。您是否调查过让input
运行并使用evdev
来捕获按键?那将是更容易的路线
现在它起作用了,我发现了另一种禁用输入的可能性:在 python 中,我可以这样做:device = evdev.InputDevice("Your Device")
,然后使用device.grab()
禁用所有其他应用程序的输入。非常感谢!以上是关于如果不是系统键盘,如何连接蓝牙键盘?的主要内容,如果未能解决你的问题,请参考以下文章
开机时是不是有可靠的方法重新连接配对的 ZAGG - Logitech 蓝牙键盘?
罗技k380蓝牙键盘无法连接我的电脑是怎么回事,搜索不到蓝牙