<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<PRE>



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.1				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:

	   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.

	   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.

	   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.1				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.1				3





XGrabDeviceButton(3X11)	   X FUNCTIONS	  XGrabDeviceButton(3X11)


       BadWindow   A  value for a Window argument does not name a
		   defined Window.

SEE ALSO
       XAllowDeviceEvents(3X),
       XGrabDevice(3X),
       XGrabDeviceKey(3X),
       Programming With Xlib

















































X Version 11		   Release 6.1				4


</PRE>
</BODY>
</HTML>
