GII_CMD_EVENT(9gii)

NAME
gii_cmd_event - LibGII commands and information events

SYNOPSIS

#include <ggi/events.h>

DESCRIPTION

These are used internally either to the application or the kernel. The same event is used for both Command and Information events. The recipient must not store references to the data. If the data information is needed afterwards, copy it!

GENERATED EVENTS

gii_cmd_event is the basic structure for evCommand and evInformation events. It may need to be casted to some other structure (depending on code) to access the data.

STRUCTURE MEMBERS

#define GII_CMD_DATA_MAX  (248-sizeof(gii_cmd_nodata_event))
typedef struct gii_cmd_event {
        COMMON_DATA;
        uint32  code;                   /* command/request code */
        uint8   data[GII_CMD_DATA_MAX]; /* command related data */
} gii_cmd_event;

DEVICE INFORMATION

One use of evCommand is to convey some capabilities of a GII device:

/* This event is sent/received to require/get the capabilities of a device
 * as specified in target/origin.
 * An event stating num_buttons=num_axes=0 says, that the device is inactive,
 * unplugged, whatever. Devices automatically report (detectable) state
 * changes via devinfo. But you need to re-query the valinfo records.
 */
#define GII_CMDCODE_GETDEVINFO  (0x01)
typedef struct gii_cmddata_getdevinfo {
        char            longname[75];
        char            shortname[5];
        gii_event_mask  can_generate;
        int             num_buttons;    /* Maximum number of buttons. */
        int             num_axes;       /* Maximum number of axes. */
} gii_cmddata_getdevinfo;

This event is guaranteed to be generated immediately after opening an input source.

can_generate is a mask of all events that the device can generate. num_buttons and num_axes are the number of buttons and axes that the device can report on.

SEE ALSO
gii_event(9)