我正在向菜单栏应用程序添加一些功能。我想执行几行代码,当按下组合键(例如 cmd + alt + L)时,将一些文本复制到剪贴板。这应该在全局范围内起作用,即任何时候按下这些键。
不知道如何执行此操作,我尝试重写 keyDown 方法,但它在 AppDelegate.swift 中给出错误,指出没有可以重写的方法。
最佳答案
第一步您需要添加全局监视器。
NSEvent.addGlobalMonitorForEvents(matching: .keyDown, handler: {
self.keyDown(with: $0)
})
但它也可以是你的功能。
第二步是处理这三个键
从 NSApp.currentEvent?.modifierFlags
读取标志并检查它们是否包含 .option
和 .command
标志
示例
guard let flags = NSApp.currentEvent?.modifierFlags else {
return
}
let optionKeyIsPressed = flags.contains(.option)
最后一个键您可以从 NSEvent
属性 keyCode
读取。
后面的“L”的keyCode可以从kVK_ANSI_L
中读取
希望这就是解决您问题所需的一切,祝您好运。
关于swift - 按下组合键时执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44221076/