【发布时间】:2011-04-24 09:18:06
【问题描述】:
我目前正在编写一个应用程序来模拟 Mac OSX 中的按键事件来控制 ioquake3。我目前的方法是使用 Quartz Event Services 创建按键事件。这适用于例如TextEdit 但不使用 ioquake3。
CGKeyCode keyCode = 126; // 126 is the "up" key
CGEventRef event1 = CGEventCreateKeyboardEvent (NULL, keyCode, true);
CGEventPost(kCGSessionEventTap, event1);
// CGEventPost(kCGHIDEventTap, event1);
// CGEventPost(kCGAnnotatedSessionEventTap, event1);
CFRelease(event1);
CGEventRef event2 = CGEventCreateKeyboardEvent (NULL, keyCode, false);
CGEventPost(kCGSessionEventTap, event2);
// CGEventPost(kCGHIDEventTap, event2);
// CGEventPost(kCGAnnotatedSessionEventTap, event2);
CFRelease(event2);
我还尝试使用以下代码来模拟此post 中提到的按键:
CGKeyCode keyCode = 126; // 126 is the "up" key
AXUIElementRef axSystemWideElement = AXUIElementCreateSystemWide();
AXUIElementPostKeyboardEvent(axSystemWideElement, 0, keyCode, true);
AXUIElementPostKeyboardEvent(axSystemWideElement, 0, keyCode, false);
还有其他方法可以在 Mac OSX 中创建 ioquake3 识别的按键事件吗?
【问题讨论】:
标签: c++ objective-c cocoa macos