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 に答える