gii_event, gii_event_type, gii_event_mask - LibGII event structures
#include <ggi/events.h>
Events are of type gii_event. It is a union of all of the structures for each specific type of event.
typedef union gii_event { uint8 size; /* size of this event */ gii_any_event any; /* access COMMON_DATA */ gii_cmd_event cmd; /* command/information */ gii_expose_event expose; /* exposure event */ gii_val_event val; /* valuator change */ gii_key_event key; /* key press/release */ gii_pmove_event pmove; /* pointer move */ gii_pbutton_event pbutton; /* pointer buttons */ } gii_event;
All of the event structures contains housekeeping information at the beginning, as defined by COMMON_DATA.
#define COMMON_DATA \ uint8 size; /* size of event in bytes */\ uint8 type; /* type of this event */\ sint16 error; /* error (for replies) */\ uint32 origin; /* origin device (etc) */\ uint32 target; /* target device (etc) */\ struct timeval time /* timestamp */
typedef struct { COMMON_DATA; } gii_any_event;
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 data.
The different types of events are defined as an enumeration.
typedef enum gii_event_type { evNothing = 0, /* event is not valid. (must be zero) */ evCommand, /* report command/do action */ evInformation, /* notification of new information */ evExpose, /* exposure event */ /* empty slot */ evKeyPress=5, /* key has been pressed */ evKeyRelease, /* key has been released */ evKeyRepeat, /* automatically repeated keypress */ evPtrRelative, /* pointer movements reported relative */ evPtrAbsolute, /* pointer movements reported absolute */ evPtrButtonPress, /* pointer button pressed */ evPtrButtonRelease, /* pointer button released */ evValRelative, /* valuator change (reported relative) */ evValAbsolute, /* valuator change (reported absolute) */ evLast /* must be less than 33 */ } gii_event_type;
gii_event_mask is passed to various event handling functions to indicate which types of events the program is interested in. The chart below sums the available event masks: Event maskEvent typeemCommandevCommandemInformationevInformationemExposeevExposeemKeyPressevKeyPressemKeyReleaseevKeyReleaseemKeyRepeatevKeyRepeatemKeyAny of evKeyPress, evKeyRelease, evKeyRepeatemPtrRelativeevPtrRelativeemPtrAbsoluteevPtrAbsoluteemPtrButtonPressevPtrButtomPressemPtrButtonReleaseevPtrButtomReleaseemPtrMoveAny of evPtrRelative, evPtrAbsoluteemPtrButtonAny of evPtrButtonPress, evPtrButtonReleaseemPointerAll pointer eventsemValRelativeevValRelativeemValAbsoluteevValAbsoluteemValuatorAny of evValRelative or evValAbsoluteemAllAny event typeemNothingMatches no event type
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |