Mouse, Keyboard, and Trackpad

Handle events related to mouse, keyboard, and trackpad input.


The NSResponder class defines the responder chain, an ordered list of objects that respond to user events. When the user clicks the mouse button, taps on the trackpad, or presses a key, an event is generated and passed up the responder chain in search of an object that can respond to it. Any object that handles events must inherit from the NSResponder class. The core AppKit classes, NSApplication, NSWindow, and NSView, inherit from NSResponder.

An NSApplication object maintains a list of NSWindow objects—one for each window belonging to the app—and each NSWindow object maintains a hierarchy of NSView objects. This view hierarchy is used for both drawing the user interface and for handling events.

An NSWindow object handles window-level events and distributes other events to its views. An NSWindow object also has a delegate allowing you to customize its behavior.


First Steps

class NSResponder

An abstract class that forms the basis of event and command processing in AppKit.

Mouse, Keyboard, and Touch Events

class NSEvent

An object that contains information about an input action such as a mouse click or a key press.

class NSTouch

A snapshot of a particular touch at an instant in time.


class NSPressureConfiguration

An encapsulation of the behavior and progression of a Force Touch trackpad as it responds to specific events.

class NSHapticFeedbackManager

An object that provides access to the haptic feedback management attributes on a system with a Force Touch trackpad.


struct NSEvent.EventTypeMask

Constants that are masks for the events defined in NSEvent.EventType.

struct NSEvent.ModifierFlags

Flags that represent key states in an event object.

struct NSEvent.Phase

Constants that represent the possible phases during an event phase.

struct NSEvent.SwipeTrackingOptions

Constants that specify swipe-tracking options.

See Also

User Interactions


Encapsulate your app's event-handling logic in gesture recognizers so that you can reuse that code throughout your app.

Drag and Drop

Support the direct manipulation of your app's content using drag and drop.


Make your app more accessible to users with disabilities.