swift - 在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修复了它。完美运作。

本文翻译自 https://stackoverflow.com/questions/36675134/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 swift macos keyevent


相关文章:

ios - iOS Autolayout自适应UI问题

ios - 具有相同背景的多个ViewController

xcode - 在OSX Xcode Project for Mac上使用ffmpeg

android - 显示菜单时如何拦截按键事件

javascript - CKEditor键事件无法正确更新文本

swift - Xcode11中Kingfisher的问题-无法为目标“ armv7-apple-ios”找到模块“ Kingfisher”;找到:arm64,arm64-apple-ios

swift - 取消URLSessionStreamTask永远不会调用带有NSURLErrorCancelled的完成处理程序(在macOS上)

objective-c - 像野生动物园地址栏的NSTextField

java - JTextArea上的KeyEvent问题

ios - 从UIImageView生成图像时的分辨率损失