2

我有一个问题:如何通过代码创建手势事件(旋转、放大或滑动...),我不想用它来缩放或旋转特定图像或类似的东西,我想创建手势像滚动事件这样的事件创建者CGEventRef cgEvent = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, wheelCount, yScroll, xScroll);

CGEventPost(kCGHIDEventTap, cgEvent);

谢谢

4

1 回答 1

2

并非所有事件都有“快捷方式”创建函数(如 CGEventCreateScrollWheelEvent、CGEventCreateMouseEvent 和 CGEventCreateKeyboardEvent),因此您必须创建一个空事件,然后使用 CGEventSet* 函数手动设置字段。

与手势相关的事件只有 Cocoa API 级别的公共常量。例如,当 NSLeftMouseDragged == kCGEventLeftMouseDragged == NX_LMOUSEDRAGGED == 6 时,NSEventTypeMagnify == 30 没有任何等效的 kCGEventMagnify 或 NX_MAGNIFY。

此外,手势事件的工作方式有点棘手。如果您没有发送正确的鼠标/触控板事件、手势、手势开始/结束和特定手势事件序列,它将无法正常工作。

关于每种事件类型需要哪些字段的文档并不多。最简单的找出方法是首先创建一个记录所有内容的事件点击,然后生成您想要的事件并查看记录的内容。事实上,您可能还想记录一个 NSEvent 全局监视器(记录 NSEvent 本身及其底层 cgEvent)。

于 2012-06-14T18:10:19.837 回答