XAllowDeviceEvents(3X11)

XAllowDeviceEvents(3X11)

XAllocWMHints Home Page Subroutines Index XAllowEvents


NAME
       XAllowDeviceEvents - release queued events

SYNTAX
       XAllowDeviceEvents(display, device, event_mode, time)
             Display *display;
             XDevice *device;
             int event_mode;
             Time time;

ARGUMENTS
       display     Specifies the connection to the X server.

       device      Specifies  the device from which events are to
                   be allowed.

       event_mode  Specifies the event mode.  You can pass Async-
                   ThisDevice,  SyncThisDevice, ReplayThisDevice,
                   AsyncOtherDevices, SyncAll, or AsyncAll.

       time        Specifies the time.  You  can  pass  either  a
                   timestamp or CurrentTime.

DESCRIPTION
       The   XAllowDeviceEvents  function  releases  some  queued
       events if the client has caused a device  to  freeze.   It
       has  no  effect  if the specified time is earlier than the
       last-grab time of the most  recent  active  grab  for  the
       client  and device, or if the specified time is later than
       the current X server time.

       The following describes the processing that occurs depend-
       ing  on what constant you pass to the event_mode argument.

       AsyncThisDevice
                   If the  specified  device  is  frozen  by  the
                   client,  event processing for that device con-
                   tinues as usual.  If the device is frozen mul-
                   tiple  times by the client on behalf of multi-
                   ple separate grabs, AsyncThisDevice thaws  for
                   all.   AsyncThisDevice  has  no  effect if the
                   specified device is not frozen by the  client,
                   but  the  device  need  not  be grabbed by the
                   client.

       SyncThisDevice
                   If the specified device is frozen and actively
                   grabbed  by  the  client, event processing for
                   that device continues normally until the  next
                   key or button event is reported to the client.
                   At  this  time,  the  specified  device  again
                   appears  to  freeze.  However, if the reported
                   event causes the  grab  to  be  released,  the
                   specified     device    does    not    freeze.
                   SyncThisDevice has no effect if the  specified
                   device  is  not frozen by the client or is not
                   grabbed by the client.

       ReplayThisDevice
                   If the specified device is actively grabbed by
                   the  client  and is frozen as the result of an
                   event having been sent to the  client  (either
                   from  the  activation of a GrabDeviceButton or
                   from a previous  AllowDeviceEvents  with  mode
                   SyncThisDevice,  but  not  from a GrabDevice),
                   the grab is released and that  event  is  com-
                   pletely  reprocessed.  This time, however, the
                   request ignores any passive grabs at or  above
                   (toward  the root) that the grab-window of the
                   grab just released.  The request has no effect
                   if  the specified device is not grabbed by the
                   client or if it is not frozen as the result of
                   an event.

       AsyncOtherDevices
                   If  the  remaining  devices  are frozen by the
                   client, event processing for them continues as
                   usual.  If the other devices are frozen multi-
                   ple times by the client on behalf of  multiple
                   grabs,   AsyncOtherDevices  "thaws"  for  all.
                   AsyncOtherDevices has no effect if the devices
                   are not frozen by the client.

       SyncAll     If all devices are frozen by the client, event
                   processing (for all  devices)  continues  nor-
                   mally  until  the  next button or key event is
                   reported to the client for a  grabbed  device,
                   at  which  time  all  devices  again appear to
                   freeze.  However, if the reported event causes
                   the  grab  to be released, then the devices do
                   not freeze.  If any device is  still  grabbed,
                   then  a  subsequent  event  for  it will still
                   cause all devices to freeze.  SyncAll  has  no
                   effect  unless  all  devices are frozen by the
                   client.  If any device is frozen twice by  the
                   client  on  behalf of two separate grabs, Syn-
                   cAll thaws for both.  A subsequent freeze  for
                   SyncAll will only freeze each device once.

       AsyncAll    If all devices are frozen by the client, event
                   processing for all devices continues normally.
                   If  any device is frozen multiple times by the
                   client on behalf of multiple  separate  grabs,
                   AsyncAll  thaws  for  all.   AsyncAll  has  no
                   effect unless all devices are  frozen  by  the
                   client.

       AsyncThisDevice, SyncThisDevice, and ReplayThisDevice have

       no effect on the processing of events from  the  remaining
       devices.   AsyncOtherDevices has no effect on the process-
       ing  of  events  from  the  specified  device.   When  the
       event_mode is SyncAll or AsyncAll, the device parameter is
       ignored.

       It is possible for several grabs of different  devices  by
       the same or different clients to be active simultaneously.
       If a device is frozen on behalf of any grab, no event pro-
       cessing is performed for the device.  It is possible for a
       single device to be frozen because of several  grabs.   In
       this  case,  the freeze must be released on behalf of each
       grab before events can again be processed.

       XAllowDeviceEvents can generate a  BadDevice  or  BadValue
       error.

DIAGNOSTICS
       BadDevice   An  invalid  device was specified.  The speci-
                   fied device does not exist  or  has  not  been
                   opened  by  this  client via XOpenInputDevice.
                   This error may also  occur  if  the  specified
                   device  is the X keyboard or X pointer device.

       BadValue    An invalid mode was specified on the  request.

SEE ALSO
       XGrabDevice(3X11) 
       Programming With Xlib

XAllocWMHints Home Page Subroutines Index XAllowEvents