swift - 捕获 Mac OS X 上的功能键

标签 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 实例,但我不知道如何捕获该事件。我是否以某种方式委托(delegate)他人?此外,F 键常量是 int,该方法表示它只想接收 Uint16。我可以输入它,但我想我用错了。

最佳答案

使用 CocoaPods 修复了该问题 pod我后来发现的。工作完美。

关于swift - 捕获 Mac OS X 上的功能键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675134/

相关文章:

javascript - 在 JavaScript 中连续按下回车键时编辑器没有显示正确的行号?

swift - 使用 NSRegularExpression 结果对字符串进行子字符串化的正确方法是什么?

swift - 上传到Amazon S3时如何设置权限?

ios - UIView Animate 只有在 IBAction 中时才会动画。我如何让它在我的情况下动画?

java - 如何从 Java 读取 OSX .plist 文件?

java - javaFX中copyFor()有什么用

ios - 如何找到手机屏幕距离眼睛直线的距离

python - 使用 wxPython 显示 Mac OS X 滑动对话框

xcode - 如何在后台在xcode中运行系统命令

java - Swing - 使用 TextComponents 的 GUI 中的关键问题(箭头键、Tab 等)