ViewControllerでキーイベントを捕捉するのはよくあると思う。以前はSwift2の時に書いたが、
Swift3ではkeyDownをoverrideするだけではダメなようだ。
参考: osx - Swift - Capture keydown from NSViewController - Stack Overflow
viewDidLoad()でイベントを監視するように設定する必要がある。
こんな感じで:
class ViewController: NSViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // keyDownイベントを捕捉する
        NSEvent.addLocalMonitorForEvents(matching: .keyDown) { (event) -> NSEvent? in
            self.keyDown(with: event)
            return event
        }
    }
    override func keyDown(with event: NSEvent) {
        print("key press: \(event)")
    }
}
Swift2の時の記事: Swift キーボード入力のイベントをハンドルする - ikap
勉強用図書:

 
  
  
  
  

コメント