Inherits from: NSObject
Conforms to: NSCoding
NSCopying
NSObject (NSObject)
Declared in: AppKit/NSEvent.h
An NSEvent object, or simply an event, contains information about an input action such as a mouse click or a key down. The Application Kit associates each such user action with a window, reporting the event to the application that created the window. The NSEvent object contains pertinent information about each event, such as where the mouse was located or which character was typed. As the application receives events, it temporarily places them in a buffer called the event queue. When the application is ready to process an event, it takes one from the queue.
NSEvents are typically passed up the application's responder chain, a series of objects that stand in line for event messages and untargeted action messages, as described in the NSResponder class specification. When the NSApplication object retrieves an event from the event queue, it dispatches the event to the appropriate NSWindow by invoking sendEvent:. The NSWindow then passes the event to its first responder in an event message such as mouseDown: or keyDown:, and the event gets passed on up the responder chain until some object handles it. In the case of a mouse-down event, a mouseDown: message is sent to the NSView where the user clicked the mouse; if it doesn't handle the event itself, the NSView relays the message to its next responder.
Most events follow this same path: from the windowing system to the application's event queue, and from there to the appropriate objects in the application. Though it rarely need do so, an application can also create an event from scratch and insert it into the event queue for distribution, or send it directly to its destination in an event message. The newly created events can be added to the event queue by invoking NSWindow's (or NSApplication's) postEvent:atStart: method.
While most events are distributed automatically through the responder chain, sometimes an object needs to retrieve events explicitly-for example, while handling mouse-dragged events. NSWindow and NSApplication define the method nextEventMatchingMask:untilDate:inMode:dequeue:, which allows an object to retrieve events of specific types. The nature of the retrieved event can then be ascertained by invoking NSEvent instance methods- type, window, and so on. All types of events are associated with an NSWindow; the window method returns this object. The location of a mouse event within the window's coordinate system is given by locationInWindow, and the time of the event by timestamp. The modifierFlags method returns an indication of which modifier keys (Command, Control, Shift, and so on) the user held down while the event occurred.
The type method returns an NSEventType value that identifies the sort of event. The different types of events fall into five groups:
Some of these groups comprise several NSEventType constants, others only one. The following sections discuss the groups, along with the corresponding NSEventType constants.
Among the most common events sent to an application are direct reports of the user's keyboard actions, identified by these NSEventType constants:
NSKeyDown
. The
user generated a character or characters by pressing a key.NSKeyUp
. The key was released.NSFlagsChanged
. The user pressed
or released a modifier key, or turned Alpha Lock on or off.Of these, key-down events are the most useful to an application.
When a type message returns NSKeyDown
,
the next step is typically to get the characters generated by the
key-down using the characters method.
Key-up events are used less frequently since they follow almost automatically when there's been a key-down event. And because NSEvent's modifierFlags method returns the state of the modifier keys regardless of the type of event, applications normally don't need to receive flags-changed events; they're useful only for applications that have to keep track of the state of these keys at all times.
For more information on keyboard events, see "Key Events" under the Class Description in the NSResponder class specification and "Input Management" in the NSTextView class specification.
Mouse events are generated by changes in the state of the mouse buttons and by changes in the position of the mouse cursor on the screen. This category consists of:
NSLeftMouseDown
, NSLeftMouseUp
, NSRightMouseDown
, NSRightMouseUp
. "Mouse-down"
means the user pressed the button; "mouse-up" means the user
released it. If the mouse has just one button, only left mouse events
are generated. By sending a clickCount message to the event,
you can determine whether the mouse event was a single click, double
click, and so on.NSLeftMouseDragged
, NSRightMouseDragged
.
The user moved the mouse with one or more buttons down. NSLeftMouseDragged
events
are generated when the mouse is moved with its left mouse button
down or with both buttons down, and NSRightMouseDragged
when
it's moved with just the right button down. A mouse with a single
button generates only left mouse-dragged events. A series of mouse-dragged
events is always preceded by a mouse-down event and followed by
a mouse-up event.NSMouseMoved
. The user moved
the mouse without holding down either mouse button. Mouse-moved
events are normally not tracked, as they quickly flood the event
queue; use NSWindow's setAcceptsMouseMovedEvents: to turn
on tracking of mouse movements.Mouse-dragged and mouse-moved events are generated repeatedly as long as the user keeps moving the mouse. If the mouse is stationary, neither type of event is generated until the mouse moves again.
See "Mouse Events" under "Event Handling" in the NSView class specification for more information on mouse events.
Because following the mouse's movements precisely is an
expensive operation, the Application Kit provides a less intensive
mechanism for tracking the location of the mouse. It does this by
allowing the application to define regions of the screen, called
tracking rectangles, that generate events when the cursor enters
or leaves them. The event types are NSMouseEntered
and NSMouseExited
,
and they're generated when the application has asked the Window
Server to set a tracking rectangle in a window, typically by using
NSView's addTrackingRect:owner:userData:assumeInside: method.
A window can have any number of tracking rectangles; NSEvent's trackingNumber method identifies
the rectangle that triggered the event.
A special kind of tracking event is the NSCursorUpdate
event.
This type is used to implement NSView's cursor-rectangle mechanism.
An NSCursorUpdate
event is generated
when the cursor has crossed the boundary of a predefined rectangular area.
Applications rarely use NSCursorUpdate
events
directly, instead using NSView's far more convenient methods.
See "Tracking Rectangles and Cursor Rectangles" under "Event Handling" in the NSView class specification for more information.
An event of type NSPeriodic
simply
notifies an application that a certain time interval has elapsed.
By using the NSEvent class method startPeriodicEventsAfterDelay:withPeriod:,
an application can register to receive periodic events and have
them placed in its event queue at a certain frequency. When the
application no longer needs them, the flow of periodic events can
be turned off by invoking stopPeriodicEvents.
An application can have only one stream of periodic events active
for each thread. Unlike keyboard and mouse events, periodic events
aren't dispatched to an NSWindow. The application must retrieve
them explicitly using nextEventMatchingMask:untilDate:inMode:dequeue:,
typically in a modal loop.
Periodic events are particularly useful in situations where input events aren't generated. For example, when the user holds the mouse down over a scroll button but doesn't move it, no events are generated after the mouse-down event. The scrolling mechanism then has to start and use a stream of periodic events to keep the document scrolling at a reasonable pace until the user releases the mouse. When a mouse-up event occurs, the scrolling mechanism terminates the periodic event stream.
The remaining event types-NSAppKitDefined
, NSSystemDefined
,
and NSApplicationDefined
-are less
structured, containing only generic subtype and data fields. These
three types are extensions to the OpenStep specification, so you
shouldn't use them in portable code (periodic events are also
implemented in this manner, but are in the specification). Of the
three miscellaneous event types, only NSApplicationDefined
is
of real use to application programs. It allows the application to
generate totally custom events and insert them into the event queue. Each
such event can have a subtype and two additional codes to differentiate
it from others. otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2: creates
one of these events, and the subtype, data1, and data2 methods return the information
specific to these events.
These constants represents various kinds of events. They are
returned by type , and
are used as the first argument to the methods enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:, keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifier:isARepeat:keyCode:, mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:,
and otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:.
.
Constant | Description |
NSLeftMouseDown |
See Mouse Events |
NSLeftMouseUp |
See Mouse Events |
NSRightMouseDown |
See Mouse Events |
NSRightMouseUp |
See Mouse Events |
NSMouseMoved |
See Mouse Events |
NSLeftMouseDragged |
See Mouse Events |
NSRightMouseDragged |
See Mouse Events |
NSMouseEntered |
See Tracking-Rectangle and Cursor-Update Events |
NSMouseExited |
See Tracking-Rectangle and Cursor-Update Events |
NSCursorUpdate |
See Tracking-Rectangle and Cursor-Update Events |
NSKeyDown |
See Keyboard Events |
NSKeyUp |
See Keyboard Events |
NSFlagsChanged |
See Keyboard Events |
NSAppKitDefined |
See Other Events |
NSSystemDefined |
See Other Events |
NSApplicationDefined |
See Other Events |
NSPeriodic |
See Periodic Events |
These constants are masks for different kinds of events. Pass
them to the NSCell method sendActionOn: to
specify when an NSCell should send its action message.
Constant | Description |
NSLeftMouseDownMask |
<<Documentation Forthcoming>> |
NSLeftMouseUpMask |
<<Documentation Forthcoming>> |
NSRightMouseDownMask |
<<Documentation Forthcoming>> |
NSRightMouseUpMask |
<<Documentation Forthcoming>> |
NSMouseMovedMask |
<<Documentation Forthcoming>> |
NSLeftMouseDraggedMask |
<<Documentation Forthcoming>> |
NSRightMouseDraggedMask |
<<Documentation Forthcoming>> |
NSMouseEnteredMask |
<<Documentation Forthcoming>> |
NSMouseExitedMask |
<<Documentation Forthcoming>> |
NSKeyDownMask |
<<Documentation Forthcoming>> |
NSKeyUpMask |
<<Documentation Forthcoming>> |
NSFlagsChangedMask |
<<Documentation Forthcoming>> |
NSAppKitDefinedMask |
<<Documentation Forthcoming>> |
NSSystemDefinedMask |
<<Documentation Forthcoming>> |
NSApplicationDefinedMask |
<<Documentation Forthcoming>> |
NSPeriodicMask |
<<Documentation Forthcoming>> |
NSCursorUpdateMask |
<<Documentation Forthcoming>> |
NSAnyEventMask |
<<Documentation Forthcoming>> |
These are device-independent bits found in event modifier
flags.
Constant | Description |
NSAlphaShiftKeyMask |
<<Documentation Forthcoming>> |
NSShiftKeyMask |
<<Documentation Forthcoming>> |
NSControlKeyMask |
<<Documentation Forthcoming>> |
NSAlternateKeyMask |
<<Documentation Forthcoming>> |
NSCommandKeyMask |
<<Documentation Forthcoming>> |
NSNumericPadKeyMask |
<<Documentation Forthcoming>> |
NSHelpKeyMask |
<<Documentation Forthcoming>> |
NSFunctionKeyMask |
<<Documentation Forthcoming>> |
These constants represent Unicode characters (0xF700-0xF8FF)
that are reserved for function keys on the keyboard. Combined in NSStrings,
they are the return values of the NSEvent methods characters and charactersIgnoringModifiers ,
and may be used in some parameters in the NSEvent method keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifier:isARepeat:keyCode:
Constant | Description |
NSUpArrowFunctionKey |
<<Documentation Forthcoming>> |
NSDownArrowFunctionKey |
<<Documentation Forthcoming>> |
NSLeftArrowFunctionKey |
<<Documentation Forthcoming>> |
NSRightArrowFunctionKey |
<<Documentation Forthcoming>> |
NSF1FunctionKey |
<<Documentation Forthcoming>> |
NSF2FunctionKey |
<<Documentation Forthcoming>> |
NSF3FunctionKey |
<<Documentation Forthcoming>> |
NSF4FunctionKey |
<<Documentation Forthcoming>> |
NSF5FunctionKey |
<<Documentation Forthcoming>> |
NSF6FunctionKey |
<<Documentation Forthcoming>> |
NSF7FunctionKey |
<<Documentation Forthcoming>> |
NSF8FunctionKey |
<<Documentation Forthcoming>> |
NSF9FunctionKey |
<<Documentation Forthcoming>> |
NSF10FunctionKey |
<<Documentation Forthcoming>> |
NSF11FunctionKey |
<<Documentation Forthcoming>> |
NSF12FunctionKey |
<<Documentation Forthcoming>> |
NSF13FunctionKey |
<<Documentation Forthcoming>> |
NSF14FunctionKey |
<<Documentation Forthcoming>> |
NSF15FunctionKey |
<<Documentation Forthcoming>> |
NSF16FunctionKey |
<<Documentation Forthcoming>> |
NSF17FunctionKey |
<<Documentation Forthcoming>> |
NSF18FunctionKey |
<<Documentation Forthcoming>> |
NSF19FunctionKey |
<<Documentation Forthcoming>> |
NSF20FunctionKey |
<<Documentation Forthcoming>> |
NSF21FunctionKey |
<<Documentation Forthcoming>> |
NSF22FunctionKey |
<<Documentation Forthcoming>> |
NSF23FunctionKey |
<<Documentation Forthcoming>> |
NSF24FunctionKey |
<<Documentation Forthcoming>> |
NSF25FunctionKey |
<<Documentation Forthcoming>> |
NSF26FunctionKey |
<<Documentation Forthcoming>> |
NSF27FunctionKey |
<<Documentation Forthcoming>> |
NSF28FunctionKey |
<<Documentation Forthcoming>> |
NSF29FunctionKey |
<<Documentation Forthcoming>> |
NSF30FunctionKey |
<<Documentation Forthcoming>> |
NSF31FunctionKey |
<<Documentation Forthcoming>> |
NSF32FunctionKey |
<<Documentation Forthcoming>> |
<<Documentation Forthcoming>> | |
NSF34FunctionKey |
<<Documentation Forthcoming>> |
NSF35FunctionKey |
<<Documentation Forthcoming>> |
NSInsertFunctionKey |
<<Documentation Forthcoming>> |
NSDeleteFunctionKey |
<<Documentation Forthcoming>> |
NSHomeFunctionKey |
<<Documentation Forthcoming>> |
NSBeginFunctionKey |
<<Documentation Forthcoming>> |
NSEndFunctionKey |
<<Documentation Forthcoming>> |
NSPageUpFunctionKey |
<<Documentation Forthcoming>> |
NSPageDownFunctionKey |
<<Documentation Forthcoming>> |
NSPrintScreenFunctionKey |
<<Documentation Forthcoming>> |
NSScrollLockFunctionKey |
<<Documentation Forthcoming>> |
NSPauseFunctionKey |
<<Documentation Forthcoming>> |
NSSysReqFunctionKey |
<<Documentation Forthcoming>> |
NSBreakFunctionKey |
<<Documentation Forthcoming>> |
NSResetFunctionKey |
<<Documentation Forthcoming>> |
NSStopFunctionKey |
<<Documentation Forthcoming>> |
NSMenuFunctionKey |
<<Documentation Forthcoming>> |
NSUserFunctionKey |
<<Documentation Forthcoming>> |
NSSystemFunctionKey |
<<Documentation Forthcoming>> |
NSPrintFunctionKey |
<<Documentation Forthcoming>> |
NSClearLineFunctionKey |
<<Documentation Forthcoming>> |
NSClearDisplayFunctionKey |
<<Documentation Forthcoming>> |
NSInsertLineFunctionKey |
<<Documentation Forthcoming>> |
NSDeleteLineFunctionKey |
<<Documentation Forthcoming>> |
NSInsertCharFunctionKey |
<<Documentation Forthcoming>> |
NSDeleteCharFunctionKey |
<<Documentation Forthcoming>> |
NSPrevFunctionKey |
<<Documentation Forthcoming>> |
NSNextFunctionKey |
<<Documentation Forthcoming>> |
NSSelectFunctionKey |
<<Documentation Forthcoming>> |
NSExecuteFunctionKey |
<<Documentation Forthcoming>> |
NSUndoFunctionKey |
<<Documentation Forthcoming>> |
NSRedoFunctionKey |
<<Documentation Forthcoming>> |
NSFindFunctionKey |
<<Documentation Forthcoming>> |
NSHelpFunctionKey |
<<Documentation Forthcoming>> |
NSModeSwitchFunctionKey |
<<Documentation Forthcoming>> |
- NSCoding
- - encodeWithCoder:
- - initWithCoder:
- NSCopying
- - copyWithZone:
- - copy
- Creating events
- + keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifier:isARepeat:keyCode:
- + mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:
- + enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:
- + otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:
- Requesting and stopping periodic events
- + startPeriodicEventsAfterDelay:withPeriod:
- + stopPeriodicEvents
- Getting general event information
- - context
- - locationInWindow
- - modifierFlags
- - timestamp
- - type
- - window
- - windowNumber
- Getting key event information
- - characters
- - charactersIgnoringModifiers
- - isARepeat
- - keyCode
- Getting mouse event information
- - clickCount
- - eventNumber
- - pressure
- Getting tracking-rectangle event information
- - eventNumber
- - trackingNumber
- - userData
- Getting custom event information
- - data1
- - data2
- - subtype
+ (NSEvent *)enterExitEventWithType:(NSEventType)type location:(NSPoint)location modifierFlags:(unsigned
int)flags timestamp:(NSTimeInterval)time windowNumber:(int)windowNumber context:(NSDPSContext
*)context eventNumber:(int)eventNumber trackingNumber:(int)trackingNumber userData:(void
*)userData
NSMouseEntered
NSMouseExited
NSCursorUpdate
location, flags, time, windowNumber, and context are as described under keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifier:isARepeat:keyCode: . Arguments specific to mouse tracking events are:
See Also: - eventNumber, - trackingNumber, - userData
+ (NSEvent *)keyEventWithType:(NSEventType)type location:(NSPoint)location modifierFlags:(unsigned
int)flags timestamp:(NSTimeInterval)time windowNumber:(int)windowNum context:(NSDPSContext
*)context characters:(NSString
*)characters charactersIgnoringModifiers:(NSString
*)unmodCharacters isARepeat:(BOOL)repeatKey keyCode:(unsigned
short int)code
NSKeyDown
NSKeyUp
NSFlagsChanged
location is the mouse location in the base coordinate system of the window specified by windowNumber.
flags is an integer bit field containing any of these modifier key masks, combined using the C bitwise OR operator:
NSAlphaShiftKeyMask
NSShiftKeyMask
NSControlKeyMask
NSAlternateKeyMask
NSCommandKeyMask
NSNumericPadKeyMask
NSHelpKeyMask
NSFunctionKeyMask
time is the time the event occurred in seconds since system startup. How to get this value varies with the platform.
windowNumber identifies the PostScript window device associated with the event, which is associated with the NSWindow that will receive the event.
context is the Display PostScript context of the event.
characters is a string of characters associated with the key event. Though most key events contain only one character, it is possible for a single keypress to generate a series of characters.
unmodCharacters is the string of characters generated by the key event as if no modifier key had been pressed (except for Shift). This is useful for getting the "basic" key value in a hardware-independent manner.
repeatKey is YES
if
the key event is a repeat caused by the user holding the key down, NO
if
the key event is new.
code identifies the keyboard key associated with the key event. Its value is hardware-dependent.
See Also: - characters, - charactersIgnoringModifiers, - isARepeat, - keyCode
+ (NSEvent *)mouseEventWithType:(NSEventType)type location:(NSPoint)location modifierFlags:(unsigned
int)flags timestamp:(NSTimeInterval)time windowNumber:(int)windowNum context:(NSDPSContext
*)context eventNumber:(int)eventNumber clickCount:(int)clickNumber pressure:(float)pressure
NSLeftMouseDown
NSLeftMouseUp
NSRightMouseDown
NSRightMouseUp
NSMouseMoved
NSLeftMouseDragged
NSRightMouseDragged
location, flags, time, windowNumber, and context are as described under keyEventWithType:....
eventNumber is an identifier for the new event. It's normally taken from a counter for mouse events, which continually increases as the application runs.
clickNumber is the number of mouse clicks associated with the mouse event.
pressure is a value from 0.0 to 1.0 indicating the pressure applied to the input device on a mouse event, used for an appropriate device such as a graphics tablet. For devices that aren't pressure-sensitive, the value should be either 0.0 or 1.0. How to determine whether the input device is pressure-sensitive depends on the platform.
See Also: - clickCount, - eventNumber, - pressure
+ (NSEvent *)otherEventWithType:(NSEventType)type location:(NSPoint)location modifierFlags:(unsigned
int)flags timestamp:(NSTimeInterval)time windowNumber:(int)windowNum context:(NSDPSContext
*)context subtype:(short
int)subtype data1:(int)data1 data2:(int)data2
NSApplicationDefined
.NSAppKitDefined
(Apple extension
to the OpenStep specification)NSSystemDefined
(Apple extension
to the OpenStep specification)NSApplicationDefined
(Apple
extension to the OpenStep specification)NSPeriodic
location, flags, time, windowNumber, and context are as described under keyEventWithType:.... Arguments specific to custom events are:
NSAppKitDefined
, NSSystemDefined
,
and NSApplicationDefined
. NSPeriodic
events
don't use this attribute.NSPeriodic
events
don't use these attributes.See Also: - subtype, - data1, - data2
See Also: + stopPeriodicEvents
+ (void)stopPeriodicEvents
See Also: + startPeriodicEventsAfterDelay:withPeriod:
- (NSString *)characters
See Also: - charactersIgnoringModifiers, + keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifier:isARepeat:keyCode:
- (NSString *)charactersIgnoringModifiers
NSFlagsChanged
event.This
method is useful for determining "basic" key values in a hardware-independent
manner, enabling such features as keyboard equivalents and mnemonics
defined in terms of modifier keys plus character keys. For example,
to determine if the user typed Alt-s, you don't have to know whether Alt-s
generates a German double ess, an integral sign, or a section symbol.
You simply examine the string returned by this method along with
the event's modifier flags, checking for "s" and NSAlternateKeyMask
.
See Also: - characters, - modifierFlags, + keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifier:isARepeat:keyCode:
- (int)clickCount
The return value of this method is meaningless for events other than mouse-down or -up events.
- (NSDPSContext *)context
- (int)data1
NSAppKitDefined
, NSSystemDefined
, NSApplicationDefined
,
or NSPeriodic
.NSPeriodic
events
don't use this attribute.
See Also: - data2, - subtype, + otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:
- (int)data2
NSAppKitDefined
, NSSystemDefined
, NSApplicationDefined
,
or NSPeriodic
.NSPeriodic
events
don't use this attribute.
See Also: - data1, - subtype, + otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:
- (int)eventNumber
See Also: + enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:, + mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:
- (BOOL)isARepeat
YES
if
the receiving key event is a repeat caused by the user holding the key
down, NO
if the key event is new. Raises
an NSInternalInconsistencyException if sent to a non-key event.The
return value of this method is meaningless for NSFlagsChanged
events.
- (unsigned short int)keyCode
- (NSPoint)locationInWindow
See Also: - window
- (unsigned int)modifierFlags
NSAlphaShiftKeyMask
NSSShiftKeyMask
NSControlKeyMask
NSAlternateKeyMask
NSCommandKeyMask
NSNumericPadKeyMask
NSHelpKeyMask
NSFunctionKeyMask
- (float)pressure
- (short int)subtype
NSAppKitDefined
, NSSystemDefined
, NSApplicationDefined
,
or NSPeriodic
.NSPeriodic
events
don't use this attribute.
See Also: - data1, - data2, + otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:
- (NSTimeInterval)timestamp
- (int)trackingNumber
- (NSEventType)type
NSLeftMouseDown
NSLeftMouseUp
NSRightMouseDown
NSRightMouseUp
NSMouseMoved
NSLeftMouseDragged
NSRightMouseDragged
NSMouseEntered
NSMouseExited
NSKeyDown
NSKeyUp
NSFlagsChanged
NSAppKitDefined
(Apple extension
to the OpenStep specification)NSSystemDefined
(Apple extension
to the OpenStep specification)NSApplicationDefined
(Apple
extension to the OpenStep specification)NSPeriodic
NSCursorUpdate
- (void *)userData
- (NSWindow *)window
See Also: - windowNumber
- (int)windowNumber
See Also: - window