按下组合键时执行功能

时间:2017-05-27 19:57:25

标签: swift xcode macos

我正在为菜单栏应用添加一些功能。我想执行几行代码,当按下一组键时(例如cmd + alt + L),将一些文本复制到剪贴板。这应该是全局的,即任何时候按下这些键。

不确定如何执行此操作,我尝试重写keyDown方法,但它在AppDelegate.swift中发出错误,说没有方法可以覆盖。

1 个答案:

答案 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

希望你解决问题所需的一切,祝你好运。