在Mac OS X上捕获功能键

时间:2016-04-17 10:04:06

标签: swift macos keyevent

我是一名长期的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。我可以对它进行类型转换,但我猜我错了。

1 个答案:

答案 0 :(得分:0)

使用我后来发现的CocoaPods pod修复了它。效果很好。