XGrabDeviceButton(3X11) X FUNCTIONS XGrabDeviceButton(3X11)NAME
XGrabDeviceButton, XUngrabDeviceButton - grab/ungrab
extension input device buttons
SYNTAX
XGrabDeviceButton(display, device, button, modifiers, modifier_device, grab_window,
owner_events, event_count, event_list, this_device_mode, other_devices_mode)
Display *display;
XDevice *device;
unsigned int button;
unsigned int modifiers;
XDevice *modifier_device;
Window grab_window;
Bool owner_events;
unsigned int event_count;
XEventClass *event_list;
int this_device_mode, other_devices_mode;
XUngrabDeviceButton(display, device, button, modifiers, modifier_device, grab_window)
Display *display;
XDevice *device;
unsigned int button;
unsigned int modifiers;
XDevice *modifier_device;
Window grab_window;
ARGUMENTS
display Specifies the connection to the X server.
device Specifies the device that is to be grabbed or
released
button Specifies the device button that is to be
grabbed or released or AnyButton.
modifiers Specifies the set of keymasks or AnyModifier.
The mask is the bitwise inclusive OR of the
valid keymask bits. Valid bits are: Shift-
mask, LockMask, ControlMask, Mod1Mask,
Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask.
modifier_device
specifies the device whose modifiers are to be
used. If the modifier_device specified is
NULL, the X keyboard will be used as the modi-
fier_device.
grab_window Specifies the grab window.
owner_events
Specifies a Boolean value that indicates
whether the device events are to be reported
as usual or reported with respect to the grab
X Version 11 Release 6.4 1
XGrabDeviceButton(3X11) X FUNCTIONS XGrabDeviceButton(3X11)
window if selected by the event list.
event_count Specifies the number of event classes in the
event list.
event_list Specifies which events are reported to the
client.
this_device_mode
Specifies further processing of events from
this device. You can pass GrabModeSync or
GrabModeAsync.
other_devices_mode
Specifies further processing of events from
all other devices. You can pass GrabModeSync
or GrabModeAsync.
DESCRIPTION
The XGrabDeviceButton request establishes a passive grab.
In the future, the device is actively grabbed (as for
XGrabDevice, the last-grab time is set to the time at
which the button was pressed (as transmitted in the
DeviceButtonPress event), and the DeviceButtonPress event
is reported if all of the following conditions are true:
o The device is not grabbed, and the specified button
is logically pressed when the specified modifier keys
are logically down on the specified modifier device
and no other buttons or modifier keys are logically
down.
o Either the grab window is an ancestor of (or is) the
focus window, OR the grab window is a descendent of
the focus window and contains the device.
o A passive grab on the same button/modifier combina-
tion does not exist on any ancestor of grab_window.
The interpretation of the remaining arguments is as for
XGrabDevice. The active grab is terminated automatically
when the logical state of the device has all buttons
released (independent of the logical state of the modifier
keys).
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen.
This request overrides all previous grabs by the same
client on the same button/modifier combinations on the
same window. A modifiers of AnyModifier is equivalent to
issuing the grab request for all possible modifier combi-
nations (including the combination of no modifiers). It
X Version 11 Release 6.4 2
XGrabDeviceButton(3X11) X FUNCTIONS XGrabDeviceButton(3X11)
is not required that all modifiers specified have cur-
rently assigned KeyCodes. A button of AnyButton is equiv-
alent to issuing the request for all possible buttons.
Otherwise, it is not required that the specified button
currently be assigned to a physical button.
A modifier_device of NULL indicates that the X keyboard is
to be used as the modifier_device.
If some other client has already issued a XGrabDeviceBut-
ton with the same button/modifier combination on the same
window, a BadAccess error results. When using AnyModifier
or AnyButton , the request fails completely, and a BadAc-
cess error results (no grabs are established) if there is
a conflicting grab for any combination. XGrabDeviceButton
has no effect on an active grab.
XGrabDeviceButton can generate BadClass, BadDevice, Bad-
Match, BadValue, and BadWindow errors.
The XUngrabDeviceButton request releases the passive grab
for a button/modifier combination on the specified window
if it was grabbed by this client. A modifier of AnyModi-
fier is equivalent to issuing the ungrab request for all
possible modifier combinations, including the combination
of no modifiers. A button of AnyButton is equivalent to
issuing the request for all possible buttons. XUngrabDe-
viceButton has no effect on an active grab.
A modifier_device of NULL indicates that the X keyboard
should be used as the modifier_device.
XUngrabDeviceButton can generate BadDevice, BadMatch, Bad-
Value and BadWindow errors.
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.
BadMatch This error may occur if an XGrabDeviceButton
request was made specifying a device that has
no buttons, or specifying a modifier device
that has no keys.
BadValue Some numeric value falls outside the range of
values accepted by the request. Unless a spe-
cific 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.
X Version 11 Release 6.4 3
XGrabDeviceButton(3X11) X FUNCTIONS XGrabDeviceButton(3X11)
BadWindow A value for a Window argument does not name a
defined Window.
SEE ALSOXAllowDeviceEvents(3X),
XGrabDevice(3X),
XGrabDeviceKey(3X),
Programming With Xlib
X Version 11 Release 6.4 4