Mac托盘应用的全局键盘快捷键

时间:2017-12-11 19:36:48

标签: swift macos

我正在使用Swift 4开发一个Mac应用程序,它只作为代理程序运行(它只在托盘中有一个菜单)。我对Swift来说是全新的。

我希望它能够响应键盘快捷键,但基本快捷键(见图片)仅在应用具有焦点时才会起作用(在我的情况下,单击菜单时)。

screenshot

所以我需要的是我的应用程序响应系统范围的键盘快捷键。

我试过了:

  • HotKey但它似乎与Swift 4兼容,或者我可能无法使用Swift Package Manager
  • this answer但是Swift 4再次引发了一些我无法解决的错误

有人做过吗?

2 个答案:

答案 0 :(得分:5)

所以我最终得到它与HotKey一起工作:

  • 使用Carthage作为包管理器而不是SPM
  • 并且不使用自己的自述文件中的HotKey示例代码,由于某种原因这些代码对我不起作用,但是example app中的代码。

效果很好!

答案 1 :(得分:2)

我制作了一个 Swift package,让这一切变得非常简单:

import KeyboardShortcuts

extension KeyboardShortcuts.Name {
    static let startFiveRounds = Self("startFiveRounds", default: .init(.t, modifiers: [.command, .option]))
}

@main
final class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ notification: Notification) {
        KeyboardShortcuts.onKeyUp(for: .startFiveRounds) {
            // …
        }
    }
}

即使你已经解决了你的问题,我认为这对其他有同样问题的人来说可能会有用。

我还建议让用户选择自己的键盘快捷键,而不是对其进行硬编码。我的包带有一个控件,用户可以在其中设置他们喜欢的快捷方式。