在macOS/Swift上是否有一些系统级或可访问性API,无论我的应用程序是否处于焦点,只要用户与鼠标交互,都会触发回调?
比如托盘应用程序或后台服务应用程序,可以收集鼠标事件。
您要查找的是NSEvent类方法class func addGlobalMonitorForEvents(matching mask: NSEvent.EventTypeMask, handler block: @escaping (NSEvent) -> Void) -> Any?
。请注意,只有当您的应用程序未激活时才会调用它:
NSEvent.addGlobalMonitorForEvents(matching: [.mouseMoved]) { event in
print("event:", event)
}
如果您需要在应用程序处于活动状态时监视鼠标事件,则需要使用class func addLocalMonitorForEvents(matching mask: NSEvent.EventTypeMask, handler block: @escaping (NSEvent) -> NSEvent?) -> Any?
:进行本地监视
NSEvent.addLocalMonitorForEvents(matching: [.mouseMoved, .leftMouseDown, .mouseExited]) { event in
switch event.type {
case .mouseMoved: print("mouseMoved")
case .leftMouseDown: print("leftMouseDown")
default: print("other event")
}
return event
}