GII_EVENT(9gii)

NAME
gii_event, gii_event_type, gii_event_mask - LibGII event structures

SYNOPSIS

#include <ggi/events.h>

DESCRIPTION

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;

STRUCTURE MEMBERS

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.

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 ggiEventSend.

time
    Indicates when the event in question has been generated.

EVENT TYPES

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;

EVENT MASKS

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

SEE ALSO
[XRef to GII_KEY_EVENT], [XRef to GII_PMOVE_EVENT], [XRef to GII_PBUTTON_EVENT], [XRef to GII_CMD_EVENT], [XRef to GII_VALUATOR_EVENT], [XRef to GII_EXPOSE_EVENT]