---
name: "gii_event"
section: "3"
platform: "linux"
package: "libgii1"
version: "1:1.0.2-4.1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/gii_event"
---

# gii\_event(3)

LibGII event structures

## NAME

**gii\_event**, **gii\_any\_event**, **gii\_event\_type**, **gii\_event\_mask** - LibGII event structures

## SYNOPSIS

```
#include <ggi/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_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)          */\
struct  timeval time     /* 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)`.

- time

  Indicates when the event in question has been generated. See `gettimeofday(2)` for more info on the **timeval** structure.

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

## 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

## SEE ALSO

`gii_key_event(3)`, `gii_pmove_event(3)`, `gii_pbutton_event(3)`, `gii_cmd_event(3)`, `gii_val_event(3)`, `gii_expose_event(3)`
