1

Mac アプリケーションに機能を実装して、マウス クリックとキーストロークのクリック数を任意の場所 (アプリケーション内または外部) で返したいと考えています。私を案内してください。

ありがとうございました

4

1 に答える 1

3

NSEvent+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))blockはこの機能を提供します。

簡単な例を次に示します。

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask|NSLeftMouseDownMask handler:^(NSEvent *anEvent){

    if(anEvent.type==NSKeyDown)
    {
        NSLog(@"Had key down event: %@",anEvent);
    }
    if(anEvent.type==NSLeftMouseDown)
    {
        NSLog(@"Had left mouse down event: %@",anEvent);
    }
}];

-applicationDidFinishLaunching:アプリケーションのデリゲートのメソッドなど、アプリの初期化中にこれをどこかに追加できます。

上記は、アプリケーションにイベントを登録するのではなく、他のアプリケーションにのみ登録します。アプリでイベントも必要な場合は、ローカル モニターを追加できます (イベントを返すため、少し異なります)。

    [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSLeftMouseDownMask handler:^NSEvent *(NSEvent *anEvent){

        if(anEvent.type==NSKeyDown)
        {
            NSLog(@"Had local key down event: %@",anEvent);
        }
        if(anEvent.type==NSLeftMouseDown)
        {
            NSLog(@"Had local left mouse down event: %@",anEvent);
        }

        return anEvent;
    }];

また、NSEvent のドキュメントによると、キー関連のイベントは、アクセシビリティが有効になっている場合、またはアプリケーションがアクセシビリティ アクセスに対して信頼されている場合にのみ監視できます (AXIsProcessTrusted を参照)。

于 2013-06-10T20:00:56.417 に答える