LibGII event structures
Name
gii_event, gii_any_event, gii_event_type, gii_event_mask : LibGII event structures
Synopsis
#include <ggi/gii-events.h> typedef union gii_event { uint8_t size; gii_any_event any; gii_cmd_event cmd; gii_expose_event expose; gii_val_event val; gii_key_event key; gii_pmove_event pmove; gii_pbutton_event pbutton; gii_fromapi_event fromapi; } gii_event; #define COMMON_DATA \ uint8_t size; /* size of event in bytes */\ uint8_t type; /* type of this event */\ int16_t error; /* error (for replies) */\ uint32_t origin; /* origin device (etc) */\ uint32_t target; /* target device (etc) */\ int32_t usec; /* usec part of timestamp */\ time_t sec /* sec part of timestamp */ typedef struct { COMMON_DATA; } gii_any_event;
Description
Events are of type gii_event. It is an union of all of the structures for each specific type of event.
Structure Members
All of the event structures contains housekeeping information at the beginning, as defined by COMMON_DATA.
Thus, by analyzing the contents of any.type, you can determine what the given event is, and select the appropriate member of the gii_event union to access to get at the event
The common fields found in any event structure are:
- size
Specifies the size of the given event (in bytes).
- type
An enumeration of the possible types of LibGII events (see next section).
- error
Mainly there to round things up to a 32-bit boundary, but could be used to signal an error in a send-reply sequence.
- origin
A device handle: it distinguishes one input device from another. Other than that there's no real meaning to the number.
- target
Also a device handle, but for distinguishes input devices when sending events to an input device via giiEventSend(3).
- sec, usec
Indicates when the event in question has been generated.
Event types
The different types of events are defined as an enumeration of type gii_event_type. The possible values are:
- evNothing : event is not valid.
- evCommand : report command or do action.
- evInformation : notification of new information.
- evExposure : exposure event.
- evKeyPress : a key has been pressed.
- evKeyRelease : a key has been released.
- evKeyRepeat : automatically repeated keypress.
- evPtrRelative : pointer movement reported in relative coordinates.
- evPtrAbsolute : pointer movement reported in absolute coordinates.
- evPtrButtonPress : a pointer button has been pressed.
- evPtrButtonRelease : a pointer button has been released.
- evValRelative : valuator change reported as a relative value.
- evValAbsolute : valuator change reported as an absolute value.
- evFromAPI : notification from a certain API
Event masks
gii_event_mask is passed to various event handling functions to indicate which types of events the program is interested in. The list below sums the available event masks:
- emCommand : evCommand
- emInformation : evInformation
- emExpose : evExpose
- emKeyPress : evKeyPress
- emKeyRelease : evKeyRelease
- emKeyRepeat : evKeyRepeat
- emKey : Any of evKeyPress, evKeyRelease or evKeyRepeat
- emPtrRelative : evPtrRelative
- emPtrAbsolute : evPtrAbsolute
- emPtrButtonPress : evPtrButtonPress
- emButtonRelease : evButtonRelease
- emPtrMove : Any of evPtrRelative or evPtrAbsolute
- emPtrButton : Any of evPtrButtonPress or evPtrButtonRelease
- emPointer : All pointer events
- emValRelative : evValRelative
- emValAbsolute : evValAbsolute
- emValuator : Any of evValRelative or evValAbsolute
- emAll : Any event type
- emNothing : Matches no event type
- emFromAPI : Notification from a certain API