#include <ggi/ggi.h>
gii_input_t ggiJoinInputs
(ggi_visual_t vis, gii_input_t inp);
gii_event_mask ggiEventPoll
(ggi_visual_t vis, gii_event_mask mask, struct timeval *t);
int ggiEventsQueued
(ggi_visual_t vis, gii_event_mask mask);
int ggiEventRead
(ggi_visual_t vis, gii_event *ev, gii_event_mask mask);
int ggiEventSend
(ggi_visual_t vis, gii_event *ev);
int ggiSetEventMask
(ggi_visual_t vis, gii_event_mask evm);
gii_event_mask ggiGetEventMask
(ggi_visual_t vis);
int giiAddEventMask
(ggi_visual_t vis, gii_event_mask mask);
int giiRemoveEventMask
(ggi_visual_t vis, gii_event_mask mask);
LibGGI provides input facilities through an auxiliary library, LibGII. Each LibGGI visual internally contains a gii_input_t input, and all LibGII functions are available to manipulate and process inputs. The LibGGI version of LibGII functions simply take a ggi_visual_t rather than gii_input_t. Events are LibGII types. All other semantics are the same; see the LibGII API Manual for details.
LibGGI visuals open the appropriate inputs already, including mouse and keyboard, or the inputs are 'intrinsic' to the visual, e.g. X mouse and keyboard events. Thus in the usual cases there is no need to open a LibGII gii_input_t directly (and that may in fact fail because an input device is already open). The LibGGI ggiEvent* functions should be used to do event handling in LibGGI.