'\" t
.\" Title: xgrabdevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.75.2
.\" Date: 08/04/2010
.\" Manual: [FIXME: manual]
.\" Source: [FIXME: source]
.\" Language: English
.\"
.TH "XGRABDEVICE" "libmansuffix" "08/04/2010" "[FIXME: source]" "[FIXME: manual]"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGrabDevice, XUngrabDevice \- grab/release the specified extension device
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XGrabDevice( Display *display,
XDevice* device,
Window grab_window,
Bool owner_events,
int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode,
Time time);
.fi
.sp
.nf
int XUngrabDevice( Display *display,
XDevice *device,
Time time);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device to be grabbed or released\&.
.fi
.sp
.nf
grab_window
Specifies the id of a window to be associated with the
device\&.
.fi
.sp
.nf
owner_events
Specifies a Boolean value that indicates whether
theevents from the deviceare to be reported as usual or
reported with respect to the grab windowif selected by
the event list\&.
.fi
.sp
.nf
event_count
Specifies the number of elements in the event_list
array\&.
.fi
.sp
.nf
event_list
Specifies a pointer to a list of event classes that
indicates which eventsthe client wishes to receive\&.
These event classes must have beenobtained specifying
the device being grabbed\&.
.fi
.sp
.nf
this_device_mode
Specifies further processing of events from this
device\&.You can pass GrabModeSyncor GrabModeAsync\&.
.fi
.sp
.nf
other_devices_mode
Specifies further processing of events from other
devices\&.You can pass GrabModeSyncor GrabModeAsync\&.
.fi
.sp
.nf
time
Specifies the time\&.You can pass either a timestamp or
CurrentTime\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XGrabDevice request actively grabs control of the device
and generates DeviceFocusIn and DeviceFocusOut events\&. Further
device events are reported only to the grabbing
client\&.XGrabDevice overrides any active device grab by this
client\&. event_list is a pointer to a list of event classes\&.
This list indicates which events the client wishes to receive
while the grab is active\&. If owner_events is False, all
generated device events are reported with respect to
grab_window if selected\&. If owner_events is True and if a
generated device event would normally be reported to this
client, it is reported normally; otherwise, the event is
reported with respect to the grab_window, and is only reported
if specified in the event_list\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the this_device_mode argument is GrabModeAsync, device event
processing continues as usual\&. If the device is currently
frozen by this client, then processing of device events is
resumed\&. If the this_device_mode argument is GrabModeSync, the
state of the device (as seen by client applications) appears to
freeze, and the X server generates no further device events
until the grabbing client issues a releasing XAllowDeviceEvents
call or until the device grab is released\&. Actual device
changes are not lost while the device is frozen; they are
simply queued in the server for later processing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If other_devices_mode is GrabModeAsync, processing of events
from other devices is unaffected by activation of the grab\&. If
other_devices_mode is GrabModeSync, the state of all devices
except the grabbed device (as seen by client applications)
appears to freeze, and the X server generates no further events
from those devices until the grabbing client issues a releasing
XAllowDeviceEvents call or until the device grab is released\&.
Actual events are not lost while the devices are frozen; they
are simply queued in the server for later processing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is actively grabbed by some other client,
XGrabDevice fails and returns AlreadyGrabbed\&. If grab_window is
not viewable, it fails and returns GrabNotViewable\&. If the
device is frozen by an active grab of another client, it fails
and returns GrabFrozen\&. If the specified time is earlier than
the last\-device\-grab time or later than the current X server
time, it fails and returns GrabInvalidTime\&. Otherwise, the
last\-device\-grab time is set to the specified time (
CurrentTime is replaced by the current X server time)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If a grabbed device is closed by a client while an active grab
by that client is in effect, the active grab is released\&. If
the device is frozen only by an active grab of the requesting
client, it is thawed\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGrabDevice can generate BadClass, BadDevice, BadValue, and
BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XUngrabDevice request releases the device and any queued
events if this client has it actively grabbed from either
XGrabDevice or XGrabDeviceKey\&. If other devices are frozen by
the grab, XUngrabDevice thaws them\&.XUngrabDevice does not
release the device and any queued events if the specified time
is earlier than the last\-device\-grab time or is later than the
current X server time\&. It also generates DeviceFocusIn and
DeviceFocusOut events\&. The X server automatically performs an
UngrabDevice request if the event window for an active device
grab becomes not viewable\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XUngrabDevice can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified 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\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\'s type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XAllowDeviceEvents(libmansuffix), XGrabDeviceButton(libmansuffix), XGrabDeviceKey(libmansuffix)
.fi
.if n \{\
.RE
.\}