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