macos – 辅助键盘的OSX HID过滤器?

我想在第二个键盘上过滤键盘输入,并防止第二个键盘的键事件到达操作系统(自己处理).如何才能做到这一点?

解决方法

可以使用IOKit和HIDManager类来完成.

如果需要对键盘进行独占访问,则可以使用kIOHIDOptionsTypeSeizeDevice选项,但必须以root权限运行程序.

获取此结果所需的代码存根如下所示:

// Create a manager instance
IOHIDManagerRef manager = IOHIDManagerCreate(kcfAllocatorDefault,kIOHIDManagerOptionNone);

if (CfgetTypeID(manager) != IOHIDManagerGetTypeID()) {
    exit(1);
}

// Setup device filtering using IOHIDManagerSetDeviceMatching
//matchingdict = ...
IOHIDManagerSetDeviceMatching(manager,matchingdict);

// Setup callbacks
IOHIDManagerRegisterDeviceMatchingCallback(manager,Handle_DeviceMatchingCallback,null);
IOHIDManagerRegisterDeviceRemovalCallback(manager,Handle_RemovalCallback,null);
IOHIDManagerRegisterInputValueCallback(manager,Handle_InputCallback,null);

// Open the manager and schedule it with the run loop
IOHIDManagerOpen(manager,kIOHIDOptionsTypeSeizeDevice);
IOHIDManagerScheduleWithRunLoop(manager,CFRunLoopGetCurrent(),kcfRunLoopDefaultMode);

// Start the run loop
//...

更详细的信息可以在Apple文档中找到:http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html

我在申请中使用的完整代码可以在这里找到:
https://gist.github.com/3783042

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...