鼠标点击和击键计数点击任何位置

时间:2013-06-10 19:08:31

标签: objective-c macos cocoa

我想在我的mac应用程序中实现一个功能,它将返回鼠标点击和按键计数点击任何位置(在我的应用程序或外部)。请指导我。

谢谢

1 个答案:

答案 0 :(得分: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:方法中。

上面的 NOT 在您的应用程序中注册事件,仅在其他应用程序中注册。如果您还需要应用程序中的事件,则可以添加本地监视器(在返回事件时略有不同):

    [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)。