我正在寻找OS X中原始键盘事件的应用程序范围访问,使用Cocoa或Carbon框架(或任何底层API)。我知道我可以覆盖NSApplication的sendEvent:来获取原始键盘信息,但是对于元键(命令,控制,交替,移位等)不会显示为击键事件。我正在寻找类似于微软DirectInput框架的东西。
谢谢!
答案 0 :(得分:10)
我认为DirectInput的等价物是HID Manager。 HID代表“人机接口设备”,HID管理器(有时称为HIDLib)是HID的低级API:键盘,鼠标和操纵杆。 p>
Leopard有一个新的HID Manager API,记录在Technical Note TN2187中。 HID Class Device Interface Guide中记录了Leopard之前的API。我在旧的API DDHidLib周围编写了一个Objecive-C包装器,您可能会发现它很有用。 Leopard API 很多更好。如果可以,我会直接使用它。
答案 1 :(得分:5)
Core Graphics框架还有一些有用的功能,作为远程操作系统的一部分。查找CGRemoteOperation.h,查看Quartz Events reference。
您可以使用Quartz Events系统安装特定于应用程序或系统范围的“事件点击”,它可以让您以非常低的级别监视和注入键盘和鼠标事件。几年前,有一些特定应用程序事件的漏洞,但他们希望现在已经解决了。
我认为HID主要用于驱动程序开发,所以如果您只是为您的应用程序寻找工具,那么HID可能有点过分。
答案 2 :(得分:3)
NSResponder
派生类有一个方法-(void)flagsChanged
:当按下元键时会调用它。
答案 3 :(得分:1)
您可以使用RegisterHotKeyEvent Carbon函数,但我不确定您是否可以明确注册任何元键。
博文Program Global Hotkeys in Cocoa Easily解释了如何执行此操作。