我正在尝试以编程方式生成键盘按下和松开事件。我目前使用CGPostKeyboardEvent来实现,但我正在寻找一种更低级别的方法。我已经查看了DDHidLib,但无法找到创建虚拟事件的方法。有人能帮忙吗?
更新: 感谢weichsel的建议,我现在正在使用以下方法创建按键按下事件:
更新: 感谢weichsel的建议,我现在正在使用以下方法创建按键按下事件:
CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
CGEventPost(kCGSessionEventTap, e);
CFRelease(e);
我在这里找到了此内容。
然而,我的问题仍然存在,所以我会详细说明一下。我想发送按键到第三方应用程序中,该应用程序实现了DDHidLib的按键捕获功能:
- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
keyDown: (unsigned) usageId;
当前方法不会调用此函数。我的猜测是,使用CGEventCreateKeyboardEvent模拟的按键按下在太高的级别上,无法被ddhidKeyboard:keyDown捕获。因此,我正在尝试在足够低的级别上创建按键按下事件,以便它将被ddhidKeyboard:keyDown识别。