我的应用程序使用事件点击来捕获键盘事件,我想知道每个事件来自哪个设备(即哪个键盘)。是否有一种设备识别信息以及水龙头获得的CGEvent?我查看了NSEvent的方法和各种CGEventField键,但它们似乎都不是设备唯一的。有什么帮助吗?
答案 0 :(得分:6)
您可能想看看DDHidLib,Dave Dribin独立使用USB HID设备的优秀框架。
http://www.dribin.org/dave/blog/archives/2007/03/19/ddhidlib_10
(不只是关于操纵杆,所以阅读超过该博客文章的第一段)
由于Apple在捕获HID设备方面存在一些安全问题,DDHidLib的某些功能在Leopard下不再有效,但如果您很幸运,它可能会为您提供所需的功能。
答案 1 :(得分:3)
DDHidLib很简洁,事实上我为Leopard的新HID API重写了Delicious Library 2的部分内容,并将更改提交给了原作者 - 如果你写了他就可以获得仅限Leopard的示例代码。
不幸的是,新的Leopard HID API能够在键盘事件经过时达到峰值,但不能拦截它们,因此您无法构建自己的应用程序级设备处理程序,除非关键事件是正常的也去了AppKit。 (这就是为什么当您在Delicious Library 2中使用USB条形码扫描仪时会出现BONKING噪音 - 我在扫描仪处达到峰值并读取条形码,但是输入仍然发送到最顶层的窗口,这不需要它,并且发出嘟嘟声。叹气。)
-Wil