В настоящее время я пишу приложение, которое имитирует события нажатия клавиш в 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);
Я также пытался использовать следующий код для имитации нажатий клавиш, как упомянуто в этом посте :
CGKeyCode keyCode = 126; // 126 is the "up" key
AXUIElementRef axSystemWideElement = AXUIElementCreateSystemWide();
AXUIElementPostKeyboardEvent(axSystemWideElement, 0, keyCode, true);
AXUIElementPostKeyboardEvent(axSystemWideElement, 0, keyCode, false);
Есть ли другой способ создания событий нажатия клавиш в Mac OSX, которые распознаются ioquake3?