有没有办法在Mac OS X上触发手势事件?

Rok*_*Rok 7 macos events multi-touch gesture

我想在Mac OS X上触发多点触控手势事件.有没有办法做到这一点?可以使用CGEventCreateMouseEvent和CGEventCreateKeyboardEvent触发鼠标或键盘事件.多点触控事件是否有类似的低级功能?

韩国


你的建议没有用.我试过这段代码:

- (void)rotateWithEvent:(NSEvent *)event {
    NSLog(@"ROTATE");
}
-(IBAction)button:(id)sender {
    CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
    CGEventRef event = CGEventCreate(eventSource);
    CGEventSetType(event, NSEventTypeRotate);
    CGEventPost(kCGHIDEventTap, event);
    NSLog(@"POST EVENT");
}

但函数rotateWithEvent永远不会被调用.难道我做错了什么?

Rob*_*ger 3

您可能可以用来CGEventCreate创建手势事件。“官方”定义的事件类型不CGEventCreate包括手势事件类型,但您可以传入以下中定义的值NSEvent.h

NSEventTypeGesture
NSEventTypeMagnify
NSEventTypeSwipe
NSEventTypeRotate
NSEventTypeBeginGesture
NSEventTypeEndGesture
Run Code Online (Sandbox Code Playgroud)

非手势类型的值似乎直接映射到kCGEvent<TYPE>中的值CGEventTypes.h,因此可以合理地预期手势事件类型将起作用:

CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef event = CGEventCreate(eventSource);
CGEventSetType(event, NSEventTypeMagnify);
//continue to set up the event
Run Code Online (Sandbox Code Playgroud)