diff --git a/src/IcedViewportView.swift b/src/IcedViewportView.swift index 45d1862..007dda9 100644 --- a/src/IcedViewportView.swift +++ b/src/IcedViewportView.swift @@ -150,6 +150,33 @@ class IcedViewportView: NSView { // MARK: - Key Events + override func performKeyEquivalent(with event: NSEvent) -> Bool { + guard viewportHandle != nil else { return super.performKeyEquivalent(with: event) } + let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) + let cmd = flags.contains(.command) + let shift = flags.contains(.shift) + let chars = event.charactersIgnoringModifiers ?? "" + + if cmd && !shift { + switch chars { + case "a", "c", "v", "x", "z", "p", + "=", "+", "-", "0": + keyDown(with: event) + return true + default: break + } + } + if cmd && shift { + switch chars { + case "z": + keyDown(with: event) + return true + default: break + } + } + return super.performKeyEquivalent(with: event) + } + override func keyDown(with event: NSEvent) { guard let h = viewportHandle else { return } let text = event.characters ?? ""