捕获 Mac OS X 上的功能键

Capture Function keys on Mac OS X

我是 Objective-C 的长期用户,正在慢慢转向 Swift 新项目。我正在将 CocoaPods 用于更大的事情,但找不到一个好的库来解决这个问题。

所以我的 NSViewController 中有这段代码 viewDidLoad 开始于:

_ = NSEvent.addGlobalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask) {
    (event) -> Void in
    print("Event is \(event)")
}

let event = NSEvent.keyEventWithType(NSEventType.KeyDown,
                                     location: CGPoint(x:0,y:0),
                                     modifierFlags: NSEventModifierFlags(rawValue: 0),
                                     timestamp: 0.0,
                                     windowNumber: 0,
                                     context: nil,
                                     characters: "\n",
                                     charactersIgnoringModifiers: "",
                                     isARepeat: false,
                                     keyCode: 0) //NSF7FunctionKey
NSApplication.sharedApplication().sendEvent(event!)

因此,在“系统偏好设置”的“辅助功能”列表中检查了我的应用程序后,第一个事件捕获工作完美。 OS X 中的任何地方都会捕获按键。现在在 docs 中它说对于功能键我应该使用 keyEventWithType.

我找到了这个 gist 并注意到它指向同一个 sharedApplication 实例,但我不知道如何捕捉事件。我是否以某种方式授权?此外,F 键常量是 int,该方法表示它只想接收 Uint16。我可以打字,但我想我用错了。

使用我后来发现的 CocoaPods pod 修复了它。完美运行。