1
我在OSX上的C++中使用ApplicationServices和CGEventPost,并试图查看是否可以按住某个键但它不工作。如何在OSX上使用C++在C++中使用CGEventPost?
这里是我使用的方法:
void postKeyboardEvent(int keyCode, bool keyUp = false)
{
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef keyEvent = CGEventCreateKeyboardEvent(source, (CGKeyCode) keyCode, !keyUp);
CGEventPost(kCGAnnotatedSessionEventTap, keyEvent);
CFRelease(keyEvent);
CFRelease(source);
}
这是我正在测试它:
postKeyboardEvent(kVK_Command);
postKeyboardEvent(kVK_Tab);
postKeyboardEvent(kVK_Tab, true);
postKeyboardEvent(kVK_Command, true);
按照我的理解这应该切换我到另一个窗口,而是它只是“放开“Command键并键入Tab字符。
重要:我不想使用类似以下内容:
CGEventSetFlags(keyEvent, kCGEventFlagMaskCommand);
我有一个需要发送键下和键起的命令“串行链” 而无需知道哪些键码是修饰键或多少标记事件。
有没有办法做到这一点?
你有没有试过你的代码。它不起作用 – user2159978
这是旧的,苹果公司可能已经改变了一些事情,我在一段时间内没有用过它,所以我不知道它是否可以在最新的OSX上运行。 –