Fel*_*ond 7 macos cocoa nsevent swift
我是OS X编程的新手,我正在尝试编写一个能够在系统范围内捕获Force Click事件的应用程序.
基于各种来源,我写下了下面列出的代码:
var lastClickStage = -1
func checkAssistanceSettings () -> Bool {
let checkOptPrompt = kAXTrustedCheckOptionPrompt.takeUnretainedValue() as NSString
let options = [checkOptPrompt: true]
let accessEnabled = AXIsProcessTrustedWithOptions(options)
return accessEnabled == 1
}
func processForceClick(incomingEvent: NSEvent!) -> Void {
let clickStage = incomingEvent.stage
if clickStage == lastClickStage {
return
}
if (lastClickStage == 2 && clickStage != 2) {
lastClickStage = clickStage
return
}
if (clickStage == 2 && lastClickStage != 2) {
let applicationClicked = NSWorkspace.sharedWorkspace().frontmostApplication?.bundleIdentifier
if (applicationClicked != nil) {
NSLog("ForceClicked in \(applicationClicked!)!")
}
lastClickStage = clickStage
}
}
func processForceClickLocally(incomingEvent: NSEvent!) -> NSEvent {
processForceClick(incomingEvent)
return incomingEvent
}
func applicationDidFinishLaunching(aNotification: NSNotification) {
NSLog("\(checkAssistanceSettings())")
NSEvent.addLocalMonitorForEventsMatchingMask(NSEventMaskFromType(NSEventType.EventTypePressure), handler: processForceClickLocally)
NSEvent.addGlobalMonitorForEventsMatchingMask(NSEventMaskFromType(NSEventType.EventTypePressure), handler: processForceClick)
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,本地事件监听器看起来像魅力,但全局事件监听器从不调用他的处理程序,即使XCode或特定构建的应用程序在系统设置中获得可访问性(AXIsProcessTrustedWithOptions(options)评估为"true") .
任何人都可以指出它有什么问题吗?
编辑:我发现的奇怪的东西:似乎全局监听器没有使用这个NSEventMask.例如,NSEventMask.LeftMouseDownMask没有问题.所以现在似乎问题被转换为"全局侦听器中的NSEventMask.EventMaskPressure有什么问题?".
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |