ggiJoinInputs(3)                       GGI                      ggiJoinInputs(3)

       ggiJoinInputs, ggiEventPoll, ggiEventSelect, ggiEventsQueued,
       ggiEventRead, ggiSetEventMask, ggiGetEventMask, ggiAddEventMask,
       ggiRemoveEventMask - Event management for LibGGI visual

       #include <ggi/ggi.h>

       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 ggiSetEventMask(ggi_visual_t vis, gii_event_mask evm);

       gii_event_mask ggiGetEventMask(ggi_visual_t vis);

       gii_input_t ggiJoinInputs(ggi_visual_t vis, gii_input_t inp);

       #define ggiAddEventMask(vis,mask)  \
                     ggiSetEventMask((vis), ggiGetEventMask((vis)) | (mask))

       #define ggiRemoveEventMask(vis,mask)  \
                     ggiSetEventMask((vis), ggiGetEventMask((vis)) & ~(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 versions provided of most LibGII functions simply take a
       ggi_visual_t rather than gii_input_t for convenience during everyday
       usage.  Events are LibGII types.  All other semantics are the same; see
       libgii(7) for details.
              Important: By default LibGGI visuals autodetect and open the
              appropriate inputs, including mouse and keyboard and any other
              inputs that are intrinsic to the visual e.g. any registered X11
              input device under the X target.  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 must be used to do event handling with LibGGI
              visuals, and provide adequate support for most everyday, single-
              visual usage.

              Advanced management of input sources is accomplished by detaching
              the input from the visual and using LibGII functions on the
              separate visual handle (see ggiDetachInput(3)).  This is
              encouraged, for example, when joining inputs from multiple
              visuals, because when two visuals share the same joined input, you
              cannot ggiClose both of the visuals (a fatal error will result,
              because closing the first visual closes both of the joined inputs
              and leaves the second closed visual with a stale input handle.)

       See return values of giiJoinInputs(3), giiEventPoll(3),
       giiEventSelect(3), giiEventsQueued(3), giiEventRead(3),
       giiSetEventMask(3), giiGetEventMask(3), giiAddEventMask(3),

       ggiGetInput(3), giiEventPoll(3), giiSetEventMask(3)

libggi-2.2.x                       2006-12-30                   ggiJoinInputs(3)