c++ - 多个键盘 - 捕获每个流 - 在 Mac 上 - 如何?

标签 c++ macos keyboard

我的 Apple MacBook Pro 上有多个无线键盘。我正在用 C++ 开发跨平台应用程序,需要了解每个特定键盘的流。

目前我可以通过 Dbus 和 glib 在 Linux 上完成这个。在 Windows 上,我使用 rawInput API。在 Apple 上,我查看了文档,他们谈论使用 HID Manager,但它已被弃用(即 Carbon days),而且示例代码似乎不再有效。到目前为止,我还没有找到一种方法来连接到 Mac 上的原始键盘流,然后操作系统将其整合为一个整体。

有人有任何想法或代码示例来从 Mac 上的多个键盘获取流吗?

谢谢!

最佳答案

您可以使用 USB HID Manager 读取来自每个键盘的原始 HID 事件,但我不确定这是否可行(如果普通应用程序可以读取原始键盘事件、嗅探密码等,这似乎是一个很大的安全漏洞)。如果可能的话,您可能需要以 root 身份运行您的应用程序才能访问这些输入设备。 HID 管理器使用起来还不错,但没有很好地记录它,hidapi是一个非常好的跨平台 API,位于它之上。即使它可能不会公开您需要的所有功能,它仍然是一个很好的 HID 管理器编程示例。

可以捕获键盘事件的下一个级别是 Quartz Event Taps , 和一个 kCGHIDEventTap。不过,通过查看这些文档,我认为没有办法获取每个设备的事件。

关于c++ - 多个键盘 - 捕获每个流 - 在 Mac 上 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222092/

相关文章:

c++ - 纳秒到毫秒 - 快速除以 1000000

c++ - 为什么?从未初始化的父类成员隐式初始化

macos - 封装OS X的Electron

python - 如何在python中等待用户输入5秒

JavaFX 全局键盘监听器

c++ - 解释 static_cast "static_cast<void (Pet::*)(int)>"语法?

c++ - 在 C++ 中实现跨度的异构查找

objective-c - 向使用 BWToolkit 的 App Store 提交应用程序

python - Mac Lion Python 模块 - 没有安装在正确的位置

linux - 为什么/usr/share/X11/xkb/rules 中的文件evdev 与evdev.lst 不匹配?