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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |