Question: In my Mac app, I override and accept certain keystrokes via the `keyUp` function in an NSView, which isn't meant to accept keystrokes.

When a key is pressed, the `keyUp` function *is* called, and I do process the keystroke, without even calling `super keyUp:`, and everything works, except that it also makes that default 'doonk' sound that happens when you press a key somewhere you shouldn't.

Is there any way to indicate that the keystroke *was* handled and accepted, and that I don't need a beep to tell the user it wasn't?

Answer: 
The accepted answer might do the trick but I would like to suggest a more correct way to solve the problem :)

Using `keyUp:` and `keyDown:` is totally fine, but most importantly, your view must also follow the AppKit responder pattern (You can learn more about `NSResponder` on the [official documentation](https://developer.apple.com/documentation/appkit/nsresponder?language=objc)).

In your case, the view would need to signal itself as a valid first responder in the event chain. Assuming you have an `NSView` subclass, you will need to implement the following method:

```
@implementation MyNSView

//...

- (BOOL)acceptsFirstResponder {
    return YES;
}

@end

```
Every answer on this page is not quite right. The following is best practice, in my experience. If the key press is not valid the alert will sound; but if it is valid, it will not…

```
class YourNSViewSubclass: NSView {
  // Make sure your view will accept responder chain events
  override var acceptsFirstResponder: Bool { true }

  override func becomeFirstResponder() -> Bool {
    true
  }

  override func resignFirstResponder() -> Bool {
    true
  }

  override func keyDown(with event: NSEvent) {
    if !validateKeyPress(event: event) {
      // If we get here, we need to send the key press up the responder chain
      // So other views can have an opportunity to deal with the event
      super.keyDown(with: event)
    }
  }

  override func keyUp(with event: NSEvent) {
    guard validateKeyPress(event: event) else {
      super.keyUp(with: event)
      return
    }

    // Do something as a result of the key press
  }

  // Check key press is valid. This example checks for the Delete key
  private func validateKeyPress(event: NSEvent) -> Bool {
    event.charactersIgnoringModifiers == String(UnicodeScalar(NSEvent.SpecialKey.delete.rawValue)!)
  }
}

```