微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 macOS Swift 中检测命令按键

如何解决在 macOS Swift 中检测命令按键

我正在使用事件监视器来快速检测按键事件。但是,事件监视器似乎没有检测到命令键或任何其他修饰键(shift、tab、opt ...)按下。是否有不同的方法来检测修饰键按下?。请注意,我不是在寻找一种可以通过使用 event.modifierFlags 来检测组合键(例如:cmd+r)的方法,而是一种知道何时单独按下命令键的方法

override func viewDidLoad() {
        super.viewDidLoad()
        NSEvent.addLocalMonitorForEvents(matching: .keyDown,handler: commandKey(evt:))
}

    func commandKey(evt: NSEvent) -> NSEvent{
        if evt.keyCode == 55 { //key code for command is 55
          print("commanded")
        }
        return evt
    }

解决方法

找到了解决办法。似乎 .flagsChanged 事件用于检测修饰键按下。

override func viewDidLoad() {
        super.viewDidLoad()
        NSEvent.addLocalMonitorForEvents(matching: .flagsChanged,handler: commandKey(evt:))
}

func commandKey(evt: NSEvent) -> NSEvent{
        if evt.modifierFlags.contains(.command){
            print("commanded")
        }
        return evt
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。