gpt4 book ai didi

c++ - 在 Mac OSX 中模拟 ioquake3 的按键事件

转载 作者:行者123 更新时间:2023-11-28 03:55:05 25 4
gpt4 key购买 nike

我目前正在编写一个应用程序,它模拟 Mac OSX 中的按键事件来控制 ioquake3。我目前的方法是使用 Quartz 事件服务创建按键事件。这适用于例如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 识别的按键事件?

最佳答案

我解决了我的问题,所有感兴趣的人,这里是解决方案:

我将描述一个简单的示例,使事情变得清晰。如前所述,我使用 Quartz 事件服务来生成按键事件。如果你想在 ioquake3 中不断地向前移动角色,你必须不断地产生按键“向下”事件,就像这样。

CGKeyCode keyCode = 126;
CGEventRef eventRef = CGEventCreateKeyboardEvent (NULL, keyCode, true);
CGEventPost(kCGSessionEventTap, eventRef);
CFRelease(eventRef);

如果你想停止你必须生成一键“向上”事件的角色:

CGKeyCode keyCode = 126;
CGEventRef eventRef = CGEventCreateKeyboardEvent (NULL, keyCode, false);
CGEventPost(kCGSessionEventTap, eventRef);
CFRelease(eventRef);

显然我不明白如何以正确的方式使用按键事件。

关于c++ - 在 Mac OSX 中模拟 ioquake3 的按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com