swift - 按下组合键时执行功能

标签 swift xcode macos

我正在向菜单栏应用程序添加一些功能。我想执行几行代码,当按下组合键(例如 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/

相关文章:

macos - CIDisplacementDistortion 到底有什么作用?

mysql - 为什么 MySQL 守护进程在启动时没有启动?

ios - 如何以最少的重新压缩将新创建的 AVMutableComposition 写入磁盘?

ios - HTTP POST 请求后 UIView 更改延迟

swift - 在 Linux 上迁移到 Swift 5 后包管理器出现奇怪问题

ios - iCloud 文档不可见

ios - UIPageViewController 委托(delegate)不触发横向

iphone 开发 : how to auto facebook login if the facebook app already logged in

php - 如何在 Swift 中处理 PHP 错误

css - 防止在 WebKit/Blink 中为 MacOS 触控板用户隐藏滚动条