我想在我的mac应用程序中实现一个功能,它将返回鼠标点击和按键计数点击任何位置(在我的应用程序或外部)。请指导我。
谢谢
答案 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)。