Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在Mac OS X上捕获功能键_Swift_Macos_Keyevent - Fatal编程技术网

Swift 在Mac OS X上捕获功能键

Swift 在Mac OS X上捕获功能键,swift,macos,keyevent,Swift,Macos,Keyevent,我是一个长期使用Objective-C的用户,随着新项目的出现,我慢慢地向Swift迁移。我用椰子荚来做更大的事情,但找不到一个好的图书馆来覆盖这个 因此,我在NSViewControllerviewDidLoad中包含以下代码: _ = NSEvent.addGlobalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask) { (event) -> Void in print("Event is \(event)")

我是一个长期使用Objective-C的用户,随着新项目的出现,我慢慢地向Swift迁移。我用椰子荚来做更大的事情,但找不到一个好的图书馆来覆盖这个

因此,我在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!)
因此,在系统首选项的可访问性列表中选中我的应用程序后,第一次事件捕获工作就完美了。在OSX的任何地方,它都会捕捉按键。现在在文档中,它说对于功能键,我应该使用
keyEventWithType


我发现了这个,并注意到它处理了相同的
sharedApplication
实例,但我不知道如何捕获事件。我是否以某种方式授权?此外,F-key常量是
int
,该方法表示它只希望接收
Uint16
。我可以打字,但我猜我用错了。

用我后来找到的CocoaPods修复了它。工作完美