捕获全局Keydown事件(不是简单地观察)

时间:2016-03-08 15:46:04

标签: swift cocoa swift2

我创建了一些全球热键。但是使用addGlobalMonitorForEventsMatchingMask我只能观察keydown事件。如果我想捕获事件并阻止其他应用程序接收它,该怎么办?

以下是观察 keydown事件的内容:

    class AppDelegate: NSObject, NSApplicationDelegate {
        func applicationDidFinishLaunching(aNotification: NSNotification) {
            NSEvent.addGlobalMonitorForEventsMatchingMask(.KeyDownMask, handler: keyDown)
            NSEvent.addLocalMonitorForEventsMatchingMask(.KeyDownMask) { (event) -> NSEvent! in
                self.keyDown(event)
                return event
            }
        }
        func keyDown(event : NSEvent) {
            if event.modifierFlags.contains(.ControlKeyMask) && event.modifierFlags.contains(.AlternateKeyMask) && event.modifierFlags.contains(.CommandKeyMask) && event.keyCode == 126 {
                print("⌃⌥⌘↑ pressed")
            }
        }
    }

我不知道从哪里开始捕获 keydown事件。任何帮助都会很棒。感谢。

1 个答案:

答案 0 :(得分:0)

DDHotKey允许您捕获keydown事件并使用它们来触发您应用中的功能。我最近在this post发现了它。如果您还不知道如何将Objective-C代码集成到Swift项目中,可以找到Apple文档here