有没有一种方法可以独立于我的应用程序在macOS上跟踪鼠标移动



在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
}

相关内容

最新更新