在objective-c中使用CGEvent的组合键
我试图通过软件按Ctrl+向右箭头键(这会将我的窗口切换到右窗口)组合键。我正在使用CGEvents按Ctrl键,然后按向右箭头键(同时按住Ctrl键),但我的窗口没有更改在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
//
// 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)