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

更新: :感谢 weichsel 的建议,我现在正在创建一个按键事件,内容如下:

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

我发现了 这里.

然而, ,我的问题仍然存在,所以我会详细说明一下。我想要发送按键来实现的应用程序(第 3 方) DDHidLib 的 按键捕捉功能:

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

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

有帮助吗?

解决方案

这有什么错Quartz事件服务?点击 我认为你是在正确的轨道上,但你应该使用的 CGEventCreateKeyboardEvent 代替CGPostKeyboardEvent因为,由于Mac OS X的10.6。

,后者已被弃用
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top