Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在objective-c中使用CGEvent的组合键_Objective C_Macos - Fatal编程技术网

在objective-c中使用CGEvent的组合键

在objective-c中使用CGEvent的组合键,objective-c,macos,Objective C,Macos,我试图通过软件按Ctrl+向右箭头键(这会将我的窗口切换到右窗口)组合键。我正在使用CGEvents按Ctrl键,然后按向右箭头键(同时按住Ctrl键),但我的窗口没有更改 // // main.m // #import <Cocoa/Cocoa.h> // CGEvent functions #import <ApplicationServices/ApplicationServices.h> // kVK_* values #import <Carbon/C

我试图通过软件按Ctrl+向右箭头键(这会将我的窗口切换到右窗口)组合键。我正在使用CGEvents按Ctrl键,然后按向右箭头键(同时按住Ctrl键),但我的窗口没有更改

//
//  main.m
//
#import <Cocoa/Cocoa.h>
// CGEvent functions
#import <ApplicationServices/ApplicationServices.h>

// kVK_* values
#import <Carbon/Carbon.h>

int main(int argc, const char * argv[]) {
    int virtualKeys[] = {kVK_Control, kVK_RightArrow };
    CGEventSourceRef sourceRef = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);

    // press the Ctrl key
    CGEventRef event = CGEventCreateKeyboardEvent(sourceRef, virtualKeys[0], true);
    CGEventPost(kCGHIDEventTap, event);

    // press the right arrow key
    CGEventRef event2 = CGEventCreateKeyboardEvent(sourceRef, virtualKeys[1], true);
    CGEventPost(kCGHIDEventTap, event2);

    // wait .1 seconds
    usleep(100000);

    // release the right arrow key
    event2 = CGEventCreateKeyboardEvent(NULL, virtualKeys[1], NO);
    CGEventPost(kCGHIDEventTap, event2);
    CFRelease(event2);

    // release the ctrl key
    event = CGEventCreateKeyboardEvent(NULL, virtualKeys[0], NO);
    CGEventPost(kCGHIDEventTap, event);
    CFRelease(event);
}
//
//main.m
//
#进口
//CGEvent函数
#进口
//kVK_*值
#进口
int main(int argc,const char*argv[]{
int virtualKeys[]={kVK_控件,kVK_RightArrow};
CGEventSourceRef sourceRef=CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
//按Ctrl键
CGEventRef event=CGEventCreateKeyboardEvent(sourceRef,virtualKeys[0],真);
CGEventPost(kCGHIDEventTap,事件);
//按向右箭头键
CGEventRef event2=CGEventCreateKeyboardEvent(sourceRef,virtualKeys[1],true);
CGEventPost(kCGHIDEventTap,事件2);
//等等,1秒钟
美国LEEP(100000);
//松开右箭头键
event2=CGEventCreateKeyboardEvent(空,virtualKeys[1],否);
CGEventPost(kCGHIDEventTap,事件2);
CFRelease(event2);
//释放ctrl键
event=CGEventCreateKeyboardEvent(空,virtualKeys[0],否);
CGEventPost(kCGHIDEventTap,事件);
发布(事件);
}

此代码通过xcode运行。

我不确定文档是否在告诉您需要发送单独事件以向下和向上推控制键的真实性。尝试:
CGEventSetFlags(事件2,kCGEventFlagMaskControl)