我正在尝试以编程方式生成键盘 keydown 和 keyup 事件。我目前正在使用 CGPostKeyboardEvent 来执行此操作,但我正在寻找一种在较低级别执行此操作的方法。我查看了 DDHidLib,但无法找到创建假事件的方法。任何人都可以帮忙吗?
更新:感谢weichsel的建议,我现在正在使用以下内容创建一个按键事件:
CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
CGEventPost(kCGSessionEventTap, e);
CFRelease(e);
我在这里找到的。
但是,我的问题仍然存在,所以我会详细说明一下。我想发送按键以实现DDHidLib 的键捕获功能的应用程序(第 3 方):
- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
keyDown: (unsigned) usageId;
并且永远不会使用当前方法调用它。我的猜测是,使用 CGEventCreateKeyboardEvent 模拟的按键级别太高,无法被 ddhidKeyboard:keyDown 捕获。所以我要做的是在足够低的级别创建keydown事件,以便ddhidKeyboard:keyDown可以识别它。