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