How can I detect that the Shift key has been pressed?

前端 未结 7 1084
甜味超标
甜味超标 2020-12-10 00:37

I have a NSView subclass and I would like it to react when the user presses the ⇧ Shift key. However, -[NSView keyDown:] (which I curren

7条回答
  •  一向
    一向 (楼主)
    2020-12-10 01:40

    Here is the code deals with key event with swift 3.0.1 tested on Xcode 8.2.1 and macOS 10.12.2

    override func keyDown(with event: NSEvent) {
        var handled = false
        if event.keyCode == 53 { // ESC, same as `CMD + .`
            handled = true
            print("ESC")
        }
        if event.modifierFlags.contains(.command) { // .shift, .option, .control ...
            if let chars = event.charactersIgnoringModifiers {
                handled = true // likely we are interested with that key
                switch chars {
                case "r":
                    print("CMD + r")
                case ",":
                    print("CMD + ,")
                case "/":
                    print("CMD + /")
                default:
                    handled = false
                }
            }
        }
        if !handled {
            super.keyDown(with: event) // let system handle it(may contains sound)
        }
    }
    

提交回复
热议问题