cocoa - 如何在 Mac OSX 中模拟 ctrl+up?

标签 cocoa core-graphics keypress mission-control

我正在尝试模拟键盘输入Ctrl + Up来打开任务控制,并引用了这里的代码:

https://stackoverflow.com/a/10745616/8556692

#import <Cocoa/Cocoa.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Open Mission Control");
        CGEventSourceRef src =
          CGEventSourceCreate(kCGEventSourceStateHIDSystemState);

        CGEventRef ctrld = CGEventCreateKeyboardEvent(src, 0x3B, true);
        CGEventRef ctrlu = CGEventCreateKeyboardEvent(src, 0x3B, false);
        CGEventRef upd = CGEventCreateKeyboardEvent(src, 0x7E, true);
        CGEventRef upu = CGEventCreateKeyboardEvent(src, 0x7E, false);

        CGEventSetFlags(upd, kCGEventFlagMaskControl);
        CGEventSetFlags(upu, kCGEventFlagMaskControl);

        CGEventTapLocation loc = kCGHIDEventTap; // kCGSessionEventTap also works
        CGEventPost(loc, ctrld);
        CGEventPost(loc, upd);
        usleep(20000);
        CGEventPost(loc, upu);
        CGEventPost(loc, ctrlu);

        CFRelease(ctrld);
        CFRelease(ctrlu);
        CFRelease(upd);
        CFRelease(upu);
        CFRelease(src);
    }
    NSLog(@"Done");
    return 0;//NSApplicationMain(argc, argv);
}

但是失败了。

我尝试用这段代码来模拟Cmd+Space(0x38 + 0x31 + Command Mask),成功了一次,我想我的代码一定有问题......

最佳答案

我也遇到了这个问题。除 kCGEventFlagMaskControl 之外的所有标志(kCGEventFlagMaskCommand、kCGEventFlagMaskShift)均有效。我添加了 kCGEventFlagMaskSecondaryFn ,如下所示 Simulated key command not working since OS upgrade现在可以了。

CGEventSetFlags(upd, kCGEventFlagMaskControl | kCGEventFlagMaskSecondaryFn);
CGEventSetFlags(upu, kCGEventFlagMaskControl | kCGEventFlagMaskSecondaryFn);

关于cocoa - 如何在 Mac OSX 中模拟 ctrl+up?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61872579/

相关文章:

iphone - 核心动画从屏幕外到屏幕上的动画

iphone - 量化图像,保存剩余颜色列表

jquery - 在 setInterval 期间使用键更改变量

objective-c - Apple 的服务实现指南 - 示例代码不起作用

macos - 有没有办法确定 Mac 是否连接了多个鼠标?

xcode - 如何将 FreeTDS 与 Xcode 结合使用?

ios - 这个声明是什么意思?

iphone - 在 monotuch 中通过 CGBitmapContext 组合两个图像时如何避免质量损失

java - 在 Java 中移动对象(KeyPressed)

excel - 编辑单元格时按下按键时是否会触发任何事件?