我正在为菜单栏应用添加一些功能。我想执行几行代码,当按下一组键时(例如cmd + alt + L),将一些文本复制到剪贴板。这应该是全局的,即任何时候按下这些键。
不确定如何执行此操作,我尝试重写keyDown方法,但它在AppDelegate.swift中发出错误,说没有方法可以覆盖。
答案 0 :(得分:2)
第一步您需要添加全局监视器。
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
。
以后的keyCode" L"你可以阅读kVK_ANSI_L
希望你解决问题所需的一切,祝你好运。