Chapter 18 Sheets

18.6 Standard Device Events

An event is a CLIM object that represents some sort of user gesture (such as moving the pointer or pressing a key on the keyboard) or that corresponds to some sort of notification from the display server. Event objects store such things as the sheet associated with the event, the x and y position of the pointer within that sheet, the key name or character corresponding to a key on the keyboard, and so forth.

Figure 35 shows all the event classes. All classes are indented to the right of their superclasses.

Figure 35. CLIM Event Classes

event [Protocol Class]

Summary:
The protocol class that corresponds to any sort of event. If you want to create a new class that behaves like an event, it should be a subclass of event. Subclasses of event must obey the event protocol.

All of the event classes are immutable.

eventp [Function]
Arguments:
object
Summary:
Returns t if object is an event; otherwise, it returns nil.

:timestamp [Initarg]
Summary:
All subclasses of event must take a :timestamp initarg, which is used to specify the timestamp for the event.

event-timestamp [Generic Function]
Arguments:
event
Summary:
Returns an integer that is a monotonically increasing timestamp for the event event. The timestamp must have at least as many bits of precision as a fixnum.

event-type [Generic Function]
Arguments:
event
Summary:
For the event event, returns a keyword with the same name as the class name, except stripped of the "-event" ending. For example, the keyword :key-press is returned by event-type for an event whose class is key-press-event.

All event classes must implement methods for event-type and event-timestamp.

device-event [Class]
:sheet [Initarg]
:modifier-state [Initarg]
Summary:
The class that corresponds to any sort of device event. This is a subclass of event.

All subclasses of device-event must take the :sheet and :modifier-state initargs, which are used to specify the sheet and modifier state components for the event.

event-sheet [Generic Function]
Arguments:
device-event
Summary:
Returns the sheet associated with the event device-event.

event-window [Generic Function]
Arguments:
event
Summary:
Returns the window on which the device event event occurred.

event-modifier-state [Generic Function]
Arguments:
device-event
Summary:
Returns a value that encodes the state of all the modifier keys on the keyboard. This will be a mask consisting of the logical-or of +shift-key+, +control-key+, +meta-key+, +super-key+, and +hyper-key+.

All device event classes must implement methods for event-sheet and event-modifier-state.

keyboard-event [Class]
:key-name [Initarg]
Summary:
The class corresponding to any keyboard event; a subclass of device-event.

All subclasses of keyboard-event must take the :key-name initarg, which is used to specify the key name component for the event.

keyboard-event-key-name [Generic Function]
Arguments:
keyboard-event
Summary:
Returns the name of the key pressed or released in a keyboard event. This will be a symbol whose value is port-specific. Key names corresponding to standard characters such as the alphanumerics will be symbols in the keyword package.

keyboard-event-character [Generic Function]
Arguments:
keyboard-event
Summary:
Returns the character associated with the event keyboard-event, if there is any.

All keyboard event classes must implement methods for keyboard-event-key-name and keyboard-event-character.

key-press-event [Class]
key-release-event [Class]
Summary:
The classes corresponding to key press or release events. They are subclasses of keyboard-event.

pointer-event [Class]
:pointer [Initarg]
:button [Initarg]
:x [Initarg]
:y [Initarg]
Summary:
The class corresponding to any pointer event. This is a subclass of device-event.

All subclasses of pointer-event must take the :pointer, :button, :x, and :y initargs, which are used to specify the pointer object, pointer button, and native x and y position of the pointer at the time of the event. The sheet's x and y positions are derived from the supplied native x and y positions and the sheet itself.

pointer-event-x [Generic Function]
Arguments:
pointer-event
pointer-event-y [Generic Function]
Arguments:
pointer-event
Summary:
Returns the x and y position of the pointer at the time the event occurred, in the coordinate system of the sheet that received the event. All pointer events must implement a method for these generic functions.

pointer-event-native-x [Generic Function]
Arguments:
pointer-event
pointer-event-native-y [Generic Function]
Arguments:
pointer-event
Summary:
Returns the x and y position of the pointer at the time the event occurred, in the pointer's native coordinate system. All pointer events must implement a method for these generic functions.

pointer-event-pointer [Generic Function]
Arguments:
pointer-event
Summary:
Returns the pointer object to which this event refers.

pointer-event-button [Generic Function]
Arguments:
pointer-event
Summary:
Returns an integer, the number of the pointer button that was pressed. Programs should compare this against the constants +pointer-left-button+, +pointer-middle-button+, and +pointer-right-button+ to see what value was returned.

All pointer event classes must implement methods for pointer-event-x, pointer-event-y, pointer-event-native-x, pointer-event-native-y, pointer-event-pointer, and pointer-event-button.

pointer-event-shift-mask [Generic Function]
Arguments:
pointer-button-event
Summary:
Returns the state of the keyboard's shift keys when pointer-button-event occurred.

pointer-button-event [Class]
Summary:
The class corresponding to any sort of pointer button event. It is a subclass of pointer-event.

pointer-button-press-event [Class]
pointer-button-release-event [Class]
pointer-button-hold-event [Class]
Summary:
The classes that correspond to a pointer button press, button release, and click-and-hold events. These are subclasses of pointer-button-event.

pointer-button-click-event [Class]
pointer-button-double-click-event [Class]
pointer-button-click-and-hold-event [Class]
Summary:
The classes that correspond to a pointer button press followed by (respectively) a button release, another button press, or pointer motion. These are subclasses of pointer-button-event. Ports are not required to generate these events.

pointer-motion-event [Class]
Summary:
The class that corresponds to any sort of pointer motion event. This is a subclass of pointer-event.

pointer-enter-event [Class]
pointer-exit-event [Class]
Summary:
The classes that correspond to a pointer enter or exit event. This is a subclass of pointer-motion-event.

window-event [Class]
:region [Initarg]
Summary:
The class that corresponds to any sort of windowing event. This is a subclass of device-event.

All subclasses of window-event must take a :region initarg, which is used to specify the damage region associated with the event.

window-event-region [Generic Function]
Arguments:
window-event
Summary:
Returns the region of the sheet that is affected by a window event.

window-event-native-region [Generic Function]
Arguments:
window-event
Summary:
Returns the region of the sheet in native coordinates.

window-event-mirrored-sheet [Generic Function]
Arguments:
window-event
Summary:
Returns the mirrored sheet that is attached to the mirror on which the event occurred.

All window event classes must implement methods for window-event-region, window-event-native-region, and window-event-mirrored-sheet.

window-configuration-event [Class]
Summary:
The class that corresponds to a window changing its size or position. This is a subclass of window-event.

window-repaint-event [Class]
Summary:
The class that corresponds to a request to repaint the window. This is a subclass of window-event.

timer-event [Class]
Summary:
The class that corresponds to a timeout event. This is a subclass of event.

+pointer-left-button+ [Constant]
+pointer-middle-button+ [Constant]
+pointer-right-button+ [Constant]
Summary:
Constants that correspond to the left, middle, and right button on a pointing device. pointer-event-button will returns one of these three values.

+shift-key+ [Constant]
+control-key+ [Constant]
+meta-key+ [Constant]
+super-key+ [Constant]
+hyper-key+ [Constant]
Summary:
Constants that correspond to theSHIFT,CONTROL,META,SUPER, andHYPER modifier keys being held down on the keyboard. These constants must be powers of 2 so that they can be combined with logical-or and tested with logtest. event-modifier-state will return some combination of these values.

CLIM does not provide default key mappings forMETA,HYPER, orSUPER modifier keys, as they are keyboard/X-server specific.

key-modifier-state-match-p [Macro]
Arguments:
button modifier-state&body clauses
Summary:
This macro generates code that will check whether the modifier state modifier-state and the pointer button button match all of the clauses. clauses are implicitly grouped by and. Matching a button or a modifier means that the modifier state indicates that the button or modifier is pressed.

A clause may be one of:


CLIM 2.0 User's Guide - OCT 1998

Generated with Harlequin WebMaker