如何模拟os x上的低级按键?

时间:2009-12-21 06:23:35

标签: c objective-c cocoa macos hid

我正在尝试以编程方式生成键盘keydown和keyup事件。我目前正在使用CGPostKeyboardEvent来执行此操作,但我正在寻找一种在较低级别执行此操作的方法。我看过DDHidLib,但无法找到创建假事件的方法。有人可以帮忙吗?

更新: 感谢weichsel的建议,我现在正在创建一个关键事件,其中包含以下内容:

  CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
  CGEventPost(kCGSessionEventTap, e);
  CFRelease(e);

我找到了here

然而,我的问题仍然存在,所以我会详细说明一下。我希望将按键发送到实现DDHidLib's密钥捕获功能的应用程序(第三方):

- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
             keyDown: (unsigned) usageId;

使用当前方法永远不会调用它。我的猜测是,使用CGEventCreateKeyboardEvent模拟的键值太高,无法通过ddhidKeyboard捕获:keyDown。所以我要做的是在足够低的级别创建keydown事件,以便ddhidKeyboard:keyDown识别它。

2 个答案:

答案 0 :(得分:6)

Quartz Event Services出了什么问题?
我认为你走在正确的轨道上,但你应该使用CGEventCreateKeyboardEvent而不是CGPostKeyboardEvent,因为自Mac OS X 10.6以来不推荐使用后者。

答案 1 :(得分:3)