捕获 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 修复了它。完美运行。
我是 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 修复了它。完美运行。