diff options
37 files changed, 4013 insertions, 6716 deletions
diff --git a/configure.ac b/configure.ac index f4d0f3b..38ddedc 100644 --- a/configure.ac +++ b/configure.ac @@ -24,13 +24,23 @@ XI_CFLAGS="$CWARNFLAGS $XI_CFLAGS" AC_SUBST(XI_CFLAGS) AC_SUBST(XI_LIBS) -# Check for xmlto for man page conversion +# Check for xmlto and asciidoc for man page conversion # (only needed by people building tarballs) AC_ARG_VAR([XMLTO], [Path to xmlto command]) AC_PATH_PROG([XMLTO], [xmlto]) -AM_CONDITIONAL([HAVE_XMLTO], [test "x$XMLTO" != "x"]) -if test "x$XMLTO" = "x"; then - AC_MSG_WARN([xmlto not found - cannot create man pages without it]) +AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) +AC_PATH_PROG([ASCIIDOC], [asciidoc]) +AM_CONDITIONAL([HAVE_DOCTOOLS], [test "x$XMLTO" != "x" && test "x$ASCIIDOC" != "x"]) +if test "x$XMLTO" = "x" || test "x$ASCIIDOC" = "x"; then + AC_MSG_WARN([xmlto or asciidoc not found - cannot create man pages without it]) +else + AC_MSG_WARN([ + ********************************************************* + xmlto and asciidoc found. I will be building man + pages. Your asciidoc may not support multiple docbook + targets and building the man pages may fail. See + http://hg.sharesource.org/asciidoc/raw-rev/fc5a653a30a3 + *********************************************************]) fi XORG_CHECK_MALLOC_ZERO diff --git a/man/Makefile.am b/man/Makefile.am index 8b40787..383c30f 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -1,15 +1,15 @@ # # Copyright 2005 Sun Microsystems, Inc. All rights reserved. -# +# # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation. -# +# # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -17,97 +17,120 @@ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. -# +# # Except as contained in this notice, the name of the copyright holders shall # not be used in advertising or otherwise to promote the sale, use or # other dealings in this Software without prior written authorization # from the copyright holders. -# +# libmandir = $(LIB_MAN_DIR) LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%) -libman_xml = XI.xml - -XI2_manpages= \ - XIQueryPointer.man \ - XIWarpPointer.man \ - XIDefineCursor.man \ - XIUndefineCursor.man \ - XIChangeHierarchy.man \ - XISelectEvents.man \ - XISetClientPointer.man \ - XIGetClientPointer.man \ - XIQueryVersion.man \ - XISetFocus.man \ - XIGetFocus.man \ - XIGrabDevice.man \ - XIGrabButton.man \ - XIGrabKeysym.man \ - XIUngrabDevice.man \ - XIUngrabButton.man \ - XIUngrabKeysym.man - - -libman_PRE = \ - XAllowDeviceEvents.man \ - XChangeKeyboardDevice.man \ - XChangePointerDevice.man \ - XDeviceBell.man \ - XQueryDeviceState.man \ - XSendExtensionEvent.man \ - XSetDeviceMode.man \ - XSetDeviceValuators.man \ - XChangeDeviceDontPropagateList.man \ - XGetDeviceDontPropagateList.man \ - XGetDeviceControl.man \ - XChangeDeviceControl.man \ - XGetDeviceKeyMapping.man \ - XChangeDeviceKeyMapping.man \ - XGetDeviceModifierMapping.man \ - XSetDeviceModifierMapping.man \ - XGetDeviceMotionEvents.man \ - XDeviceTimeCoord.man \ - XGetFeedbackControl.man \ - XChangeFeedbackControl.man \ - XGrabDeviceButton.man \ - XUngrabDeviceButton.man \ - XGrabDeviceKey.man \ - XUngrabDeviceKey.man \ - XGrabDevice.man \ - XUngrabDevice.man \ - XListInputDevices.man \ - XFreeDeviceList.man \ - XOpenDevice.man \ - XCloseDevice.man \ - XGetExtensionVersion.man \ - XSelectExtensionEvent.man \ - XGetSelectedExtensionEvents.man \ - XSetDeviceButtonMapping.man \ - XGetDeviceButtonMapping.man \ - XSetDeviceFocus.man \ - XGetDeviceFocus.man \ - XListDeviceProperties.man \ - XGetDeviceProperty.man \ - XChangeDeviceProperty.man \ - XDeleteDeviceProperty.man \ - $(XI2_manpages) - -EXTRA_DIST = $(libman_PRE) $(libman_xml) xi.stamp - -CLEANFILES = $(libman_DATA) $(BUILT_SOURCES) - -MAINTAINERCLEANFILES = $(libman_PRE) - -if HAVE_XMLTO -libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) -endif - -SED = sed +XI2_manpages = \ + XIChangeHierarchy.txt \ + XIDefineCursor.txt \ + XIGrabButton.txt \ + XIGrabDevice.txt \ + XIQueryPointer.txt \ + XIQueryVersion.txt \ + XISelectEvents.txt \ + XISetClientPointer.txt \ + XISetFocus.txt \ + XIWarpPointer.txt + +libman_txt = \ + XAllowDeviceEvents.txt \ + XChangeDeviceDontPropagateList.txt \ + XChangeKeyboardDevice.txt \ + XChangePointerDevice.txt \ + XDeviceBell.txt \ + XGetDeviceControl.txt \ + XGetDeviceKeyMapping.txt \ + XGetDeviceModifierMapping.txt \ + XGetDeviceMotionEvents.txt \ + XGetExtensionVersion.txt \ + XGetFeedbackControl.txt \ + XGrabDeviceButton.txt \ + XGrabDeviceKey.txt \ + XGrabDevice.txt \ + XListDeviceProperties.txt \ + XListInputDevices.txt \ + XOpenDevice.txt \ + XQueryDeviceState.txt \ + XSelectExtensionEvent.txt \ + XSendExtensionEvent.txt \ + XSetDeviceButtonMapping.txt \ + XSetDeviceFocus.txt \ + XSetDeviceMode.txt \ + XSetDeviceValuators.txt \ + $(XI2_manpages) + +libman_xml = $(libman_txt:.txt=.xml) +# manpages that are references to another page. These are produced as a +# side effect of the xmlto rule, so they need to be handled specially. + +XI2_refpages = \ + XIUndefineCursor.man \ + XIUngrabButton.man \ + XIGrabKeysym.man \ + XIUngrabKeysym.man \ + XIUngrabDevice.man \ + XIGetClientPointer.man \ + XIGetFocus.man + +libman_ref = \ + XGetDeviceDontPropagateList.man \ + XChangeDeviceControl.man \ + XChangeDeviceKeyMapping.man \ + XSetDeviceModifierMapping.man \ + XChangeFeedbackControl.man \ + XUngrabDeviceButton.man \ + XUngrabDeviceKey.man \ + XUngrabDevice.man \ + XDeviceTimeCoord.man \ + XFreeDeviceList.man \ + XCloseDevice.man \ + XGetSelectedExtensionEvents.man \ + XGetDeviceButtonMapping.man \ + XGetDeviceFocus.man \ + $(XI2_refpages) + + +libman_pre = $(libman_txt:.txt=.man) $(libman_ref) + +nodist_libman_DATA = $(libman_pre:.man=.$(LIB_MAN_DIR_SUFFIX)) + +EXTRA_DIST = $(libman_txt) $(libman_pre) +CLEANFILES = $(nodist_libman_DATA) *.libmansuffix +MAINTAINERCLEANFILES = $(libman_pre) *.xml + +# prerequisites for the side effect pages +XGetDeviceDontPropagateList.man: XChangeDeviceDontPropagateList.man +XChangeDeviceControl.man: XGetDeviceControl.man +XChangeDeviceKeyMapping.man: XGetDeviceKeyMapping.man +XSetDeviceModifierMapping.man: XGetDeviceModifierMapping.man +XDeviceTimeCoord: XGetDeviceMotionEvents.man +XChangeFeedbackControl.man: XGetFeedbackControl.man +XUngrabDeviceButton.man: XGrabDeviceButton.man +XUngrabDeviceKey.man: XGrabDeviceKey.man +XUngrabDevice.man: XGrabDevice.man +XFreeDeviceList.man: XListInputDevices.man +XCloseDevice.man: XOpenDevice.man +XGetSelectedExtensionEvents.man: XSelectExtensionEvent.man +XGetDeviceButtonMapping.man: XSetDeviceButtonMapping.man +XGetDeviceFocus.man: XSetDeviceFocus.man + +# XI2 prereqs +XIUndefineCursor: XIDefineCursor.man +XIUngrabButton.man XIGrabKeysym.man XIUngrabKeysym.man: XIGrabButton.man +XIGetClientPointer.man: XISetClientPointer.man +XIGetFocus.man: XISetFocus.man +XIUngrabDevice.man: XIGrabDevice.man # Strings to replace in man pages -XORGRELSTRING = @PACKAGE_STRING@ +XORGRELSTRING = $(PACKAGE_STRING) XORGMANNAME = X Version 11 MAN_SUBSTS = \ @@ -115,33 +138,26 @@ MAN_SUBSTS = \ -e 's/__xservername__/Xorg/g' \ -e 's/__xconfigfile__/xorg.conf/g' \ -e 's/__appmansuffix__/$(APP_MAN_SUFFIX)/g' \ - -e 's/__libmansuffix__/$(LIB_MAN_SUFFIX)/g' \ + -e 's/libmansuffix/$(LIB_MAN_SUFFIX)/g' \ -e 's/__filemansuffix__/$(FILE_MAN_SUFFIX)/g' -SUFFIXES = .$(LIB_MAN_SUFFIX) .man - +SUFFIXES = .man .$(LIB_MAN_SUFFIX) .man.$(LIB_MAN_SUFFIX): - sed $(MAN_SUBSTS) < $< > $@ - -# This is ugly, but handling of tools with multiple outputs in make is a -# huge PITA. The commands below are taken from the automake manual: -# http://www.gnu.org/software/automake/manual/automake.html#Multiple-Outputs -if HAVE_XMLTO -xi.stamp: $(libman_xml) - @rm -f xi.tmp - @touch xi.tmp - $(XMLTO) man $^ - @for man in $(libman_PRE); do \ - out=`echo $$man | sed 's/\.man/.__libmansuffix__/'`; \ - echo mv -f $$out $$man; \ - mv -f $$out $$man || exit 1; \ - done - @mv -f xi.tmp $@ -$(libman_PRE): xi.stamp - @if test -f $@; then :; else \ + $(SED) $(MAN_SUBSTS) < $< > $@ + +if HAVE_DOCTOOLS +SUFFIXES += .txt .xml +.txt.xml: + $(ASCIIDOC) -b docbook -d manpage -o $@ $< +.xml.man: + $(XMLTO) man $< + mv -f $(@:.man=.libmansuffix) $@ + +# need to force asciidoc/xmlto to run if necessary for side effect pages +$(libman_ref): + @if test ! -f $(@:.man=.libmansuffix); then \ rm -f $<; \ - $(MAKE) $(AM_MAKEFLAGS) $<; \ + $(MAKE) $(AM_MAKEFLAGS) $< || exit 1; \ fi -CLEANFILES += xi.tmp -MAINTAINERCLEANFILES += xi.stamp -endif # HAVE_XMLTO + mv -f $(@:.man=.libmansuffix) $@ +endif diff --git a/man/XAllowDeviceEvents.txt b/man/XAllowDeviceEvents.txt new file mode 100644 index 0000000..91d358c --- /dev/null +++ b/man/XAllowDeviceEvents.txt @@ -0,0 +1,133 @@ +XALLOWDEVICEEVENTS(libmansuffix) +================================ + +NAME +---- + + XAllowDeviceEvents - release queued events + +SYNOPSIS +------ + + #include <X11/extensions/XInput.h> + + int XAllowDeviceEvents( Display *display, + XDevice *device, + int event_mode, + Time time); + 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 AsyncThisDevice, + 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 depending 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 continues as usual. If + the device is frozen multiple times by the client on behalf of + multiple 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 completely 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 multiple 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 normally 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, SyncAll 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 processing 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 processing 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 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. + + BadValue + An invalid mode was specified on the request. + +SEE ALSO +-------- + + XGrabDevice(libmansuffix) + diff --git a/man/XChangeDeviceDontPropagateList.txt b/man/XChangeDeviceDontPropagateList.txt new file mode 100644 index 0000000..398ded2 --- /dev/null +++ b/man/XChangeDeviceDontPropagateList.txt @@ -0,0 +1,92 @@ +XCHANGEDEVICEDONTPROPAGATELIST(libmansuffix) +============================================ + +NAME +---- + + XChangeDeviceDontPropagateList, XGetDeviceDontPropagateList - + query or change the dont-propagate-list for extension devices + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XChangeDeviceDontPropagateList( Display *display, + Window window, + int count, + XEventClass *event_list, + int mode); + + XEventClass* XGetDeviceDontPropagateList( Display *display, + Window window, + int *count); + + display + Specifies the connection to the X server. + + window + Specifies the window whose dont-propagate-list is to be + queried or modified. + + event_list + Specifies a pointer to a list of event classes. + + mode + Specifies the mode.You can pass AddToList, or + DeleteFromList. + + count + Specifies the number of event classes in the list. + +DESCRIPTION +----------- + + The XChangeDeviceDontPropagateList request modifies the list of + events that should not be propagated to ancestors of the event + window. This request allows extension events to be added to or + deleted from that list. By default, all events are propagated + to ancestor windows. Once modified, the list remains modified + for the life of the window. Events are not removed from the + list because the client that added them has terminated. + + Suppression of event propagation is not allowed for all input + extension events. If a specified event class is one that cannot + be suppressed, a BadClass error will result. Events that can be + suppressed include DeviceKeyPress, DeviceKeyRelease, + DeviceButtonPress, DeviceButtonRelease, DeviceMotionNotify, + ProximityIn, and ProximityOut. + + XChangeDeviceDontPropagateList can generate a BadDevice, + BadClass, or BadValue error. + + The XGetDeviceDontPropagateList request queries the list of + events that should not be propagated to ancestors of the event + window. + + XGetDeviceDontPropagateList can generate a BadClass or + BadWindow error. + +DIAGNOSTICS +----------- + + 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 some + other client has caused the specified device to become + the X keyboard or X pointer device via the + XChangeKeyboardDevice or XChangePointerDevice requests. + + 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. + + BadWindow + An invalid window id was specified. + + BadClass + An invalid event class was specified. diff --git a/man/XChangeKeyboardDevice.txt b/man/XChangeKeyboardDevice.txt new file mode 100644 index 0000000..7ad1a23 --- /dev/null +++ b/man/XChangeKeyboardDevice.txt @@ -0,0 +1,68 @@ +XCHANGEKEYBOARDDEVICE(libmansuffix) +=================================== + +NAME +---- + + XChangeKeyboardDevice - change which device is used as the X + keyboard + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + Status XChangeKeyboardDevice( Display *display, + XDevice *device); + + display + Specifies the connection to the X server. + + device + Specifies the device to be used as the X keyboard. + +DESCRIPTION +----------- + + The XChangeKeyboardDevice request causes the server to use the + specified device as the X keyboard. The device must have been + previously opened by the requesting client via XOpenDevice or a + BadDevice error will result. The device must support input + class Keys, or a BadMatch error will result. If the server + implementation does not support using the requested device as + the X keyboard, a BadDevice error will result. + + If the specified device is grabbed by another client, + AlreadyGrabbed is returned. If the specified device is frozen + by a grab on another device, GrabFrozen is returned. If the + request is successful, Success is returned. + + If the request succeeds, a ChangeDeviceNotify event is sent to + all clients that have selected that event. A MappingNotify + event with request = MappingKeyboard is sent to all clients. + The specified device becomes the X keyboard and the old X + keyboard becomes accessible through the input extension + protocol requests. + + XChangeKeyboardDevice can generate a BadDevice or a BadMatch + error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The specified device + does not exist, has not been opened by this client via + XOpenInputDevice, or is already one of the core X device + (pointer or keyboard). This error may also occur if the + server implementation does not support using the + specified device as the X keyboard. + + BadMatch + This error may occur if an XChangeKeyboardDevice request + was made specifying a device that has no keys. + +SEE ALSO +-------- + + XChangePointerDevice(libmansuffix) diff --git a/man/XChangePointerDevice.txt b/man/XChangePointerDevice.txt new file mode 100644 index 0000000..606b65e --- /dev/null +++ b/man/XChangePointerDevice.txt @@ -0,0 +1,79 @@ +XCHANGEPOINTERDEVICE(libmansuffix) +================================== + +NAME +---- + + XChangePointerDevice - change which device is the X pointer + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + Status XChangePointerDevice( Display *display, + XDevice *device, + int xaxis, + int yaxis); + + display + Specifies the connection to the X server. + + device + Specifies the device to be used as the X pointer. + + xaxis + Specifies the axis of the device to be used as the X + pointer x-axis. + + yaxis + Specifies the axis of the device to be used as the X + pointer y-axis. + +DESCRIPTION +----------- + + The XChangePointerDevice request causes the server to use the + specified device as the X pointer. The device must have been + opened by the client via XOpenDevice or a BadDevice error will + result. The device must support input class Valuators or a + BadMatch error will result. If the implementation does not + support use of the specified device as the X pointer, a + BadDevice error will result. + + If the specified device is grabbed by another client, + AlreadyGrabbed is returned. If the specified device is frozen + by a grab on another device, GrabFrozen is returned. If the + request is successful, Success is returned. + + If the request succeeds, a ChangeDeviceNotify event is sent to + all clients that have selected that event. A MappingNotify + event with request = MappingPointer is sent to all clients. The + specified device becomes the X pointer, and the old X pointer + becomes accessible through the input extension protocol + requests. + + XChangePointerDevice can generate a BadDevice or a BadMatch + error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The specified device + does not exist, has not been opened by this client via + XOpenInputDevice, or is already one of the core X input + devices (pointer or keyboard). This error may also occur + if the server implementation does not support using the + specified device as the X pointer. + + BadMatch + This error may occur if an XChangePointerDevice request + was made specifying a device that has less than two + valuators, or specifying a valuator index beyond the + range supported by the device. + +SEE ALSO +-------- + + XChangeKeyboardDevice(libmansuffix) diff --git a/man/XDeviceBell.txt b/man/XDeviceBell.txt new file mode 100644 index 0000000..75bf652 --- /dev/null +++ b/man/XDeviceBell.txt @@ -0,0 +1,78 @@ +XDEVICEBELL(libmansuffix) +========================= + +NAME +---- + + XDeviceBell - ring a bell on a device supported through the + input extension + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + Status XDeviceBell( Display *display, + XDevice *device, + XID feedbackclass, + XID feedbackid, + int percent); + display + Specifies the connection to the X server. + + device + Specifies the device with which the bell is associated. + + feedbackclass + Specifies the class of the feedback with which the bell + is associated. + + feedbackid + Specifies the id of the feedback with which the bell is + associated. + + percent + Specifies the volume in the range -100 to 100 at which + the bell should be rung. + +DESCRIPTION +----------- + + The XDeviceBell request causes the server to ring a bell on the + specified feedback of the specified device, if possible. The + specified volume is relative to the base volume for the bell. + If an invalid device is specified, a BadDevice error will be + returned. The feedbackclass and feedbackid parameters contain + values returned by an XGetFeedbackControl request and uniquely + identify the bell to ring. If a feedbackclass is specified that + does not support a bell, or if a nonexistent feedbackid is + specified, or a percent value is specified that is not in the + range -100 to 100, a BadValue error will be returned. + + The volume at which the bell is rung when the percent argument + is nonnegative is: base - [(base * percent) / 100] + percent + + The volume at which the bell rings when the percent argument is + negative is: base + [(base * percent) / 100] + + To change the base volume of the bell, use + XChangeFeedbackControl. + + XDeviceBell can generate a BadDevice or a BadValue error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The specified device + does not exist, or has not been opened by this client + via XOpenInputDevice. + + BadValue + An invalid feedbackclass, feedbackid, or percent value + was specified. + +SEE ALSO +-------- + + XChangeFeedbackControl(libmansuffix), XBell(libmansuffix) diff --git a/man/XGetDeviceControl.txt b/man/XGetDeviceControl.txt new file mode 100644 index 0000000..09bf065 --- /dev/null +++ b/man/XGetDeviceControl.txt @@ -0,0 +1,126 @@ +XGETDEVICECONTROL(libmansuffix) +=============================== + +NAME +---- + + XGetDeviceControl, XChangeDeviceControl - query and change + input device controls + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XDeviceControl *XGetDeviceControl( Display *display, + XDevice *device, + int *controlType); + + int XChangeDeviceControl( Display *display, + XDevice *device, + int controlType, + XDeviceControl *control); + + display + Specifies the connection to the X server. + + device + Specifies the device whose control is to be interrogated + or modified. + + controlType + Specifies the type of control to be interrogated or + changed. + + control + Specifies the address of an XDeviceControl structure + that contains the new values for the Device. + +DESCRIPTION +----------- + + These requests are provided to manipulate those input devices + that support device control. A BadMatch error will be generated + if the requested device does not support any device controls. + + Valid device control types that can be used with these requests + include the following: + + DEVICE_RESOLUTION Queries or changes the resolution of + valuators on input devices. + + The XGetDeviceControl request returns a pointer to an + XDeviceControl structure. + + XGetDeviceControl can generate a BadDevice or BadMatch error. + + The XChangeDeviceControl request modifies the values of one + control on the specified device. The control is identified by + the id field of the XDeviceControl structure that is passed + with the request. + + XChangeDeviceControl can generate a BadDevice, BadMatch, or + BadValue error..SH STRUCTURES Each control is described by a + structure specific to that control. These structures are + defined in the file XInput.h. + + XDeviceControl is a generic structure that contains two fields + that are at the beginning of each class of control: + + typedef struct { + XID class; + int length; + } XDeviceControl; + + The XDeviceResolutionState structure defines the information + that is returned for device resolution for devices with + valuators. + + typedef struct { + XID control; + int length; + int num_valuators; + int* resolutions; + int* min_resolutions; + int* max_resolutions; + } XDeviceResolutionState; + + The XDeviceResolutionControl structure defines the attributes + that can be controlled for keyboard Devices. + + typedef struct { + XID control; + int length; + int first_valuator; + int num_valuators; + int* resolutions; + } XDeviceResolutionControl; + +DIAGNOSTICS +----------- + + 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 some + other client has caused the specified device to become + the X keyboard or X pointer device via the + XChangeKeyboardDevice or XChangePointerDevice requests. + + BadMatch + This error may occur if an XGetDeviceControl request was + made specifying a device that has no controls or an + XChangeDeviceControl request was made with an + XDeviceControl structure that contains an invalid Device + type. It may also occur if an invalid combination of + mask bits is specified ( DvKey but no DvAutoRepeatMode + for keyboard Devices), or if an invalid KeySym is + specified for a string Device. + + BadValue + Some numeric value falls outside the range of values + accepted by the XChangeDeviceControl 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. diff --git a/man/XGetDeviceKeyMapping.txt b/man/XGetDeviceKeyMapping.txt new file mode 100644 index 0000000..0c68412 --- /dev/null +++ b/man/XGetDeviceKeyMapping.txt @@ -0,0 +1,146 @@ +XGETDEVICEKEYMAPPING(libmansuffix) +================================== + +NAME +---- + + XGetDeviceKeyMapping, XChangeDeviceKeyMapping - query or change + device key mappings + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + KeySym *XGetDeviceKeyMapping( Display *display, + XDevice *device, + KeyCode first_keycode, + int keycode_count, + int *keysyms_per_keycode_return); + display + Specifies the connection to the X server. + + device + Specifies the device whose key mapping is to be queried + or modified. + + first_keycode + Specifies the first KeyCode to be returned. + + keycode_count + Specifies the number of KeyCodes to be returned or + modified. + + keysyms_per_keycode + Specifies the number of KeySyms per KeyCode. + + keysyms_per_keycode_return + Specifies the address of a variable into which the + number of KeySyms per KeyCodewill be returned. + + keysyms + Specifies the address of an array of KeySyms. + +DESCRIPTION +----------- + + For the specified device, the XGetDeviceKeyMapping request + returns the symbols for the specified number of KeyCodes + starting with first_keycode. The value specified in + first_keycode must be greater than or equal to min_keycode as + returned by XListInputDevices, or a BadValue error results. In + addition, the following expression must be less than or equal + to max_keycode as returned by XListInputDevices: + + first_keycode + keycode_count - 1 + + If this is not the case, a BadValue error results. The number + of elements in the KeySyms list is: + + keycode_count * keysyms_per_keycode_return + + KeySym number N, counting from zero, for KeyCode K has the + following index in the list, counting from zero: (K - + first_code) * keysyms_per_code_return + N + + The X server arbitrarily chooses the keysyms_per_keycode_return + value to be large enough to report all requested symbols. A + special KeySym value of NoSymbol is used to fill in unused + elements for individual KeyCodes. To free the storage returned + by XGetDeviceKeyMapping, use XFree. + + If the specified device does not support input class keys, a + BadMatch error will result. + + XGetDeviceKeyMapping can generate a BadDevice, BadMatch, or + BadValue error. + + For the specified device, the XChangeDeviceKeyMapping request + defines the symbols for the specified number of KeyCodes + starting with first_keycode. The symbols for KeyCodes outside + this range remain unchanged. The number of elements in keysyms + must be: + + num_codes * keysyms_per_keycode + + The specified first_keycode must be greater than or equal to + min_keycode returned by XListInputDevices, or a BadValue error + results. In addition, the following expression must be less + than or equal to max_keycode as returned by XListInputDevices, + or a BadValue error results: + + first_keycode + num_codes - 1 + + KeySym number N, counting from zero, for KeyCode K has the + following index in keysyms, counting from zero: + + (K - first_keycode) * keysyms_per_keycode + N + + The specified keysyms_per_keycode can be chosen arbitrarily by + the client to be large enough to hold all desired symbols. A + special KeySym value of NoSymbol should be used to fill in + unused elements for individual KeyCodes. It is legal for + NoSymbol to appear in nontrailing positions of the effective + list for a KeyCode.XChangeDeviceKeyMapping generates a + DeviceMappingNotify event that is sent to all clients that have + selected that type of event. + + There is no requirement that the X server interpret this + mapping. It is merely stored for reading and writing by + clients. + + If the specified device does not support input class keys, a + BadMatch error results. + + XChangeDeviceKeyMapping can generate a BadDevice, BadMatch, + BadAlloc, or BadValue error. + +DIAGNOSTICS +----------- + + 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. + + BadMatch + This error may occur if an XGetDeviceKeyMapping or + XChangeDeviceKeyMapping request was made specifying a + device that has no keys. + + 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. + + BadAlloc + The server failed to allocate the requested resource or + server memory. + +SEE ALSO +-------- + + XSetDeviceButtonMapping(libmansuffix), XSetDeviceModifierMapping(__libmansuffix_) diff --git a/man/XGetDeviceModifierMapping.txt b/man/XGetDeviceModifierMapping.txt new file mode 100644 index 0000000..240f93f --- /dev/null +++ b/man/XGetDeviceModifierMapping.txt @@ -0,0 +1,118 @@ +XGETDEVICEMODIFIERMAPPING(libmansuffix) +======================================= + +NAME +---- + + XGetDeviceModifierMapping, XSetDeviceModifierMapping - query or + change device modifier mappings + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XSetDeviceModifierMapping( Display *display, + XDevice *device, + XModifierKeymap *modmap); + + XModifierKeymap *XGetDeviceModifierMapping( Display *display, + XDevice *device); + + display + Specifies the connection to the X server. + + device + Specifies the device whose modifier mapping is to be + queried or modified. + + modmap + Specifies a pointer to the XModifierKeymap structure. + +DESCRIPTION +----------- + + The XSetDeviceModifierMapping request specifies the KeyCodes of + the keys (if any) that are to be used as modifiers for the + specified device. If it succeeds, the X server generates a + DeviceMappingNotify event, and XSetDeviceModifierMapping + returns MappingSuccess. X permits at most eight modifier keys. + If more than eight are specified in the XModifierKeymap + structure, a BadLength error results. + + The modifiermap member of the XModifierKeymap structure + contains eight sets of max_keypermod KeyCodes, one for each + modifier in the order Shift, Lock, Control, Mod1, Mod2, Mod3, + Mod4, and Mod5. Only nonzero KeyCodes have meaning in each set, + and zero KeyCodes are ignored. In addition, all of the nonzero + KeyCodes must be in the range specified by min_keycode and + max_keycode as returned by XListInputDevices, or a BadValue + error results. No KeyCode may appear twice in the entire map, + or a BadValue error results. + + An X server can impose restrictions on how modifiers can be + changed, for example, if certain keys do not generate up + transitions in hardware, if auto-repeat cannot be disabled on + certain keys, or if multiple modifier keys are not supported. + If some such restriction is violated, the status reply is + MappingFailed, and none of the modifiers are changed. If the + new KeyCodes specified for a modifier differ from those + currently defined and any (current or new) keys for that + modifier are in the logically down state, + XSetDeviceModifierMapping returns MappingBusy, and none of the + modifiers is changed. + + XSetDeviceModifierMapping can generate BadLength, BadDevice, + BadMatch, BadAlloc, and BadValue errors. + + The XGetDeviceModifierMapping request returns a pointer to a + newly created XModifierKeymap structure that contains the keys + being used as modifiers. The structure should be freed after + use by calling XFreeModifierMapping . If only zero values + appear in the set for any modifier, that modifier is disabled. + + XGetDeviceModifierMapping can generate BadDevice and BadMatch + errors. + +Structures + + The XModifierKeymap structure contains: + + typedef struct { + int max_keypermod; + KeyCode *modifiermap; + } XModifierKeymap; + +DIAGNOSTICS +----------- + + BadLength + More than eight keys were specified in the + XModifierKeymap structure. + + BadAlloc + The server failed to allocate the requested resource or + server memory. + + 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. + + BadMatch + This error may occur if an XGetDeviceModifierMapping or + XChangeDeviceModifierMapping request was made specifying + a device that has no keys. + + 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. + +SEE ALSO +-------- + + XSetDeviceKeyMapping(libmansuffix), XSetDeviceButtonMapping(libmansuffix) diff --git a/man/XGetDeviceMotionEvents.txt b/man/XGetDeviceMotionEvents.txt new file mode 100644 index 0000000..9dfcfed --- /dev/null +++ b/man/XGetDeviceMotionEvents.txt @@ -0,0 +1,109 @@ +XGETDEVICEMOTIONEVENTS(libmansuffix) +==================================== + +NAME +---- + + XGetDeviceMotionEvents, XDeviceTimeCoord - get device motion + history + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XDeviceTimeCoord *XGetDeviceMotionEvents( Display *display, + XDevice *device, + Time start, + Time stop, + int *nevents_return, + int *mode_return, + int *axis_count_return); + + display + Specifies the connection to the X server. + + device + Specifies the device whose motion history is to be + queried. + + start, stop + Specify the time interval in which the events are + returned from the motionhistory buffer.You can pass a + timestamp or CurrentTime. + + nevents_return + Returns the number of events from the motion history + buffer. + + mode_return + Returns the mode of the device (Absolute or Relative). + + axis_count_return + Returns the count of axes being reported. + +DESCRIPTION +----------- + + The server may retain the recent history of the device motion + and do so to a finer granularity than is reported by + DeviceMotionNotify events. The XGetDeviceMotionEvents request + makes this history available. + + The XGetDeviceMotionEvents request returns all events in the + motion history buffer that fall between the specified start and + stop times, inclusive. If the start time is later than the stop + time or if the start time is in the future, no events are + returned. If the stop time is in the future, it is equivalent + to specifying CurrentTime. + + The mode indicates whether the device is reporting absolute + positional data (mode = Absolute ) or relative motion data + (mode = Relative ). Some devices allow their mode to be changed + via the XSetDeviceMode request. These constants are defined in + the file XI.h. The axis_count returns the number of axes or + valuators being reported by the device. + + XGetDeviceMotionEvents can generate a BadDevice, or BadMatch + error. + +Structures + + The XDeviceTimeCoord structure contains: + + typedef struct { + Time time; + int *data; + } XDeviceTimeCoord; + + The time member is set to the time, in milliseconds. The data + member is a pointer to an array of integers. These integers are + set to the values of each valuator or axis reported by the + device. There is one element in the array per axis of motion + reported by the device. The value of the array elements depends + on the mode of the device. If the mode is Absolute, the values + are the raw values generated by the device. These may be scaled + by client programs using the maximum values that the device can + generate. The maximum value for each axis of the device is + reported in the max_val field of the XAxisInfo returned by the + XListInputDevices request. If the mode is Relative, the data + values are the relative values generated by the device. + + You should use XFreeDeviceMotionEvents to free the data + returned by this request. + + Errors returned by this request: BadDevice, BadMatch. + +DIAGNOSTICS +----------- + + 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. + + BadMatch + This error may occur if an XGetDeviceMotionEvents + request is made specifying a device that has no + valuators and reports no axes of motion. diff --git a/man/XGetExtensionVersion.txt b/man/XGetExtensionVersion.txt new file mode 100644 index 0000000..3e24fc7 --- /dev/null +++ b/man/XGetExtensionVersion.txt @@ -0,0 +1,50 @@ +XGETEXTENSIONVERSION(libmansuffix) +================================== + +NAME +---- + + XGetExtensionVersion - query the version of the input extension. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XExtensionVersion *XGetExtensionVersion( Display *display, + char *name); + + display + Specifies the connection to the X server. + + name + Specifies the extension to be queried. The input + extension name is definedin the header file XI.h. + +DESCRIPTION +----------- + + The XGetExtensionVersion request is deprecated and should not + be used. Clients issuing a XgetExtensionVersion request will + not be able to use MPX features. The XGetExtensionVersion + request queries the version of the input extension, and returns + an XExtensionVersion structure. This structure contains a + major_version and minor_version number which can be compared + with constants defined in XI.h. Support for additional protocol + requests added to the input extension after its initial release + is indicated by a version number corresponding to the added + requests. Each version contains all the protocol requests + contained by previous versions. + + You should use XFree to free the XExtensionVersion structure. + +STRUCTURES +---------- + + This request returns an XExtensionVersion structure. + + typedef struct { + int present; + short major_version; + short minor_version; + } XExtensionVersion; diff --git a/man/XGetFeedbackControl.txt b/man/XGetFeedbackControl.txt new file mode 100644 index 0000000..316f141 --- /dev/null +++ b/man/XGetFeedbackControl.txt @@ -0,0 +1,272 @@ +XGETFEEDBACKCONTROL(libmansuffix) +================================= + +NAME +---- + + XGetFeedbackControl, XChangeFeedbackControl - query and change + input device feedbacks + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XFeedbackState *XGetFeedbackControl( Display *display, + XDevice *device, + int *num_feedbacks); + + int XChangeFeedbackControl( Display *display, + XDevice *device, + Mask mask, + XFeedbackControl *control); + + display + Specifies the connection to the X server. + + device + Specifies the device whose feedbacks are to be queried + or modified. + + num_feedbacks + Specifies an address into which the number of feedbacks + supported by thedevice is to be returned. + + mask + Specifies a mask specific to each type of feedback that + describes howthe feedback is to be modified. + + control + Specifies the address of an XFeedbackControl structure + that containsthe new values for the feedback. + +DESCRIPTION +----------- + + These requests are provided to manipulate those input devices + that support feedbacks. A BadMatch error will be generated if + the requested device does not support feedbacks. Whether or not + a given device supports feedbacks can be determined by + examining the information returned by the XOpenDevice request. + For those devices that support feedbacks, XOpenDevice will + return an XInputClassInfo structure with the input_class field + equal to the constant FeedbackClass (defined in the file XI.h). + + The XGetFeedbackControl request returns a pointer to a list of + XFeedbackState structures. Each item in this list describes one + of the feedbacks supported by the device. The items are + variable length, so each contains its length to allow traversal + to the next item in the list. + + The feedback classes that are currently defined are: + KbdFeedbackClass, PtrFeedbackClass, StringFeedbackClass, + IntegerFeedbackClass, LedFeedbackClass, and BellFeedbackClass. + These constants are defined in the file XI.h. An input device + may support zero or more classes of feedback, and may support + multiple feedbacks of the same class. Each feedback contains a + class identifier and an id that is unique within that class for + that input device. The id is used to identify the feedback when + making an XChangeFeedbackControl request. + + XGetFeedbackControl can generate a BadDevice or BadMatch error. + + The XChangeFeedbackControl request modifies the values of one + feedback on the specified device. The feedback is identified by + the id field of the XFeedbackControl structure that is passed + with the request. The fields of the feedback that are to be + modified are identified by the bits of the mask that is passed + with the request. + + XChangeFeedbackControl can generate a BadDevice, BadMatch, or + BadValue error. + +Structures + + Each class of feedback is described by a structure specific to + that class. These structures are defined in the file XInput.h. + XFeedbackState and XFeedbackControl are generic structures that + contain three fields that are at the beginning of each class of + feedback: + + typedef struct { + XID class; + int length; + XID id; + } XFeedbackState, + XFeedbackControl; + + The XKbdFeedbackState structure defines the attributes that are + returned for feedbacks equivalent to those on the X keyboard. + + typedef struct { + XID class; + int length; + XID id; + int click; + int percent; + int pitch; + int duration; + int led_mask; + int global_auto_repeat; + char auto_repeats[32]; + } XKbdFeedbackState; + + The XPtrFeedbackState structure defines the attributes that are + returned for feedbacks equivalent to those on the the X + pointer. + + typedef struct { + XID class; + int length; + XID id; + int accelNum; + int accelDenom; + int threshold; + } XPtrFeedbackState; + + The XIntegerFeedbackState structure defines attributes that are + returned for integer feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int resolution; + int minVal; + int maxVal; + } XIntegerFeedbackState; + + The XStringFeedbackState structure defines the attributes that + are returned for string feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int max_symbols; + int num_syms_supported; + KeySym *syms_supported; + } XStringFeedbackState; + + The XBellFeedbackState structure defines the attributes that + are returned for bell feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int percent; + int pitch; + int duration; + } XBellFeedbackState; + + The XLedFeedbackState structure defines the attributes that are + returned for LED feedbacks. + + typedef struct { XID class; + int length; + XID id; + int led_values; + } XLedFeedbackState; + + The XPrtFeedbackControl structure defines the attributes that + can be controlled for pointer feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int accelNum; + int accelDenom; + int threshold; + } XPtrFeedbackControl; + + The XKbdFeedbackControl structure defines the attributes that + can be controlled for keyboard feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int click; + int percent; + int pitch; + int duration; + int led_mask; + int led_value; + int key; + int auto_repeat_mode; + } XKbdFeedbackControl; + + The XStringFeedbackControl structure defines the attributes + that can be controlled for string feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int num_keysyms; + KeySym *syms_to_display; + } XStringFeedbackControl; + + The XIntegerFeedbackControl structure defines the attributes + that can be controlled for integer feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int int_to_display; + } XIntegerFeedbackControl; + + The XBellFeedbackControl structure defines the attributes that + can be controlled for bell feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int percent; + int pitch; + int duration; + } XBellFeedbackControl; + + The XLedFeedbackControl structure defines the attributes that + can be controlled for LED feedbacks. + + typedef struct { + XID class; + int length; + XID id; + int led_mask; + int led_values; + } XLedFeedbackControl; + +DIAGNOSTICS +----------- + + 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 some + other client has caused the specified device to become + the X keyboard or X pointer device via the + XChangeKeyboardDevice or XChangePointerDevice requests. + + BadMatch + This error may occur if an XGetFeedbackControl request + was made specifying a device that has no feedbacks, or + an XChangeFeedbackControl request was made with an + XFeedbackControl structure that contains an invalid + feedback type. It may also occur if an invalid + combination of mask bits is specified ( DvKey but no + DvAutoRepeatMode for keyboard feedbacks), or if an + invalid KeySym is specified for a string feedback. + + BadValue + Some numeric value falls outside the range of values + accepted by the XChangeFeedbackControl 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. diff --git a/man/XGrabDevice.txt b/man/XGrabDevice.txt new file mode 100644 index 0000000..443e6ac --- /dev/null +++ b/man/XGrabDevice.txt @@ -0,0 +1,159 @@ +XGRABDEVICE(libmansuffix) +========================= + +NAME +---- + + XGrabDevice, XUngrabDevice - grab/release the specified + extension device + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + 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); + + int XUngrabDevice( Display *display, + XDevice *device, + Time time); + + display + Specifies the connection to the X server. + + device + Specifies the device to be grabbed or released. + + grab_window + Specifies the id of a window to be associated with the + device. + + 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. + + event_count + Specifies the number of elements in the event_list + array. + + 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. + + this_device_mode + Specifies further processing of events from this + device.You can pass GrabModeSyncor GrabModeAsync. + + other_devices_mode + Specifies further processing of events from other + devices.You can pass GrabModeSyncor GrabModeAsync. + + time + Specifies the time.You can pass either a timestamp or + CurrentTime. + +DESCRIPTION +----------- + + 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. + + 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. + + 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. + + 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). + + 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. + + XGrabDevice can generate BadClass, BadDevice, BadValue, and + BadWindow errors. + + 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. + + XUngrabDevice can generate a BadDevice error. + +DIAGNOSTICS +----------- + + 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. + + 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. + + BadWindow + A value for a Window argument does not name a defined + Window. + +SEE ALSO +-------- + + XAllowDeviceEvents(libmansuffix), XGrabDeviceButton(libmansuffix), XGrabDeviceKey(libmansuffix) diff --git a/man/XGrabDeviceButton.txt b/man/XGrabDeviceButton.txt new file mode 100644 index 0000000..aae0245 --- /dev/null +++ b/man/XGrabDeviceButton.txt @@ -0,0 +1,170 @@ +XGRABDEVICEBUTTON(libmansuffix) +=============================== + +NAME +---- + + XGrabDeviceButton, XUngrabDeviceButton - grab/ungrab extension + input device buttons + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XGrabDeviceButton( 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, + int other_devices_mode); + + int XUngrabDeviceButton( Display *display, + XDevice *device, + unsigned int button, + unsigned int modifiers, + XDevice* modifier_device, + Window grab_window); + + 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: Shiftmask, LockMask, ControlMask, + Mod1Mask, Mod2Mask,Mod3Mask, Mod4Mask, Mod5Mask. + + modifier_device + specifies the device whose modifiers are to be used. If + the modifier_devicespecified is NULL, the X keyboard + will be used as the modifier_device. + + grab_window + Specifies the grab window. + + owner_events + Specifies a Boolean value that indicates whether the + deviceevents are to be reported as usual or reported + with respect to the grab windowif 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 combination 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 combinations (including the + combination of no modifiers). It is not required that all + modifiers specified have currently assigned KeyCodes. A button + of AnyButton is equivalent 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 XGrabDeviceButton + 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 BadAccess 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, BadMatch, + BadValue, and BadWindow errors..P 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 AnyModifier 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. XUngrabDeviceButton 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, BadValue + and BadWindow errors. + +DIAGNOSTICS +----------- + + 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. + + 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 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. + + BadWindow + A value for a Window argument does not name a defined + Window. + +SEE ALSO +-------- + + XAllowDeviceEvents(libmansuffix), XGrabDevice(libmansuffix), XGrabDeviceKey(libmansuffix) diff --git a/man/XGrabDeviceKey.txt b/man/XGrabDeviceKey.txt new file mode 100644 index 0000000..bee4c47 --- /dev/null +++ b/man/XGrabDeviceKey.txt @@ -0,0 +1,177 @@ +XGRABDEVICEKEY(libmansuffix) +============================ + +NAME +---- + + XGrabDeviceKey, XUngrabDeviceKey - grab/ungrab extension input + device Keys + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XGrabDeviceKey( Display *display, + XDevice *device, + unsigned int key, + unsigned int modifiers, + XDevice *modifier_device, + Window grab_window, + Bool owner_events, + unsigned int event_count, + XEventClass *event_list, + int this_device_mode, + int other_devices_mode); + + int XUngrabDeviceKey( Display *display, + XDevice *device, + unsigned int key, + unsigned int modifiers, + XDevice *modifier_device, + Window grab_window); + + display + Specifies the connection to the X server. + + device + Specifies the device that is to be grabbed or released. + + Key + Specifies the device Key that is to be grabbed released + or AnyKey. + + modifiers + Specifies the set of keymasks or AnyModifier.The mask is + the bitwise inclusive OR of the valid keymask bits.Valid + bits are: ShiftMask, LockMask, ControlMask, Mod1Mask, + Mod2Mask,Mod3Mask, Mod4Mask, Mod5Mask. + + modifier_device + Specifies the device whose modifiers are to be used. If + a modifier_device ofNULL is specified, the X keyboard + will be used as the modifier_device. + + grab_window + Specifies the grab window. + + owner_events + Specifies a Boolean value that indicates whether the + deviceevents are to be reported as usual or reported + with respect to the grab windowif selected by the event + list. + + event_count + Specifies the number of event classes in the event list. + + event_list + Specifies which device 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 other + devices.You can pass GrabModeSyncor GrabModeAsync. + +DESCRIPTION +----------- + + The XGrabDeviceKey request establishes a passive grab. In the + future, the device is actively grabbed (as for XGrabDevice, the + last-device-grab time is set to the time at which the Key was + pressed (as transmitted in the DeviceKeyPress event), and the + DeviceKeyPress event is reported if all of the following + conditions are true: + * The device is not grabbed, and the specified key is + logically pressed when the specified modifier keys are + logically down, and no other keys or modifier keys are + logically down. + * The grab_window is an ancestor (or is) the focus window OR + the grab window is a descendant of the focus window and + contains the device. + * The confine_to window (if any) is viewable. + * A passive grab on the same key/modifier combination 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 the specified key released. + + Note that the logical state of a device (as seen by means of + the X protocol ) may lag the physical state if device event + processing is frozen. + + If the key is not AnyKey, it must be in the range specified by + min_keycode and max_keycode as returned by the + XListInputDevices request. Otherwise, a BadValue error results. + + This request overrides all previous grabs by the same client on + the same Key/modifier combinations on the same window. A + modifier of AnyModifier is equivalent to issuing the grab + request for all possible modifier combinations (including the + combination of no modifiers). It is not required that all + modifiers specified have currently assigned KeyCodes. A key of + AnyKey is equivalent to issuing the request for all possible + keys. Otherwise, it is not required that the specified key + currently be assigned to a physical Key. + + If a modifier_device of NULL is specified, the X keyboard will + be used as the modifier_device. + + If some other client has already issued a XGrabDeviceKey with + the same Key/modifier combination on the same window, a + BadAccess error results. When using AnyModifier or AnyKey, the + request fails completely, and a BadAccess error results (no + grabs are established) if there is a conflicting grab for any + combination.XGrabDeviceKey has no effect on an active grab. + + XGrabDeviceKey can generate BadAccess, BadClass, BadDevice, + BadMatch, BadValue, and BadWindow errors. It returns Success on + successful completion of the request. + + The XUngrabDeviceKey request releases the passive grab for a + key/modifier combination on the specified window if it was + grabbed by this client. A modifier of AnyModifier is equivalent + to issuing the ungrab request for all possible modifier + combinations, including the combination of no modifiers. A Key + of AnyKey is equivalent to issuing the request for all possible + Keys.XUngrabDeviceKey has no effect on an active grab. + + If a modifier_device of NULL is specified, the X keyboard will + be used as the modifier_device. + + XUngrabDeviceKey can generate BadDevice, BadMatch, BadValue and + BadWindow errors. + +DIAGNOSTICS +----------- + + 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. + + BadMatch + This error may occur if an XGrabDeviceKey request was + made specifying a device that has no keys, or a modifier + device that has no keys. + + 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. + + BadWindow + A value for a Window argument does not name a defined + Window. + +SEE ALSO +-------- + + XAllowDeviceEvents(libmansuffix), XGrabDevice(libmansuffix), XGrabDeviceButton(libmansuffix) diff --git a/man/XI.xml b/man/XI.xml deleted file mode 100644 index f93bb71..0000000 --- a/man/XI.xml +++ /dev/null @@ -1,6604 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE reference PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" - "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" > -<!-- - - Copyright ©right; by Hewlett-Packard Company, Ardent Computer, - - Permission to use, copy, modify, distribute, and sell this documentation - for any purpose and without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - Ardent, and Hewlett-Packard make no representations about the - suitability for any purpose of the information in this document. It is - provided "as is" without express or implied warranty. - - - Copyright © 2008 Peter Hutterer - Copyright © 2009 Red Hat, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice (including the next - paragraph) shall be included in all copies or substantial portions of the - Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Author: Peter Hutterer - --> -<reference> -<title>X Input Extension Library</title> - -<refentry id="XAllowDeviceEvents.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XAllowDeviceEvents</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XAllowDeviceEvents</refname> - <refpurpose>release queued events</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XAllowDeviceEvents</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>int <parameter>event_mode</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device from which events are - to be allowed. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_mode</parameter></term> - <listitem><para>Specifies the event mode.You can pass - <constant>AsyncThisDevice</constant>, - <constant>SyncThisDevice</constant>, - <constant>ReplayThisDevice</constant>, - <constant>AsyncOtherDevices</constant>, - <constant>SyncAll</constant>,or - <constant>AsyncAll</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>time</parameter></term> - <listitem><para>Specifies the time.You can pass either a - timestamp or <constant>CurrentTime</constant>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XAllowDeviceEvents</constant> 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. - </para> - <para> - The following describes the processing that occurs depending on what - constant you pass to the event_mode argument. - </para> - <para> - <constant>AsyncThisDevice</constant> If the specified device is - frozen by the client, event processing for that device continues - as usual. If the device is frozen multiple times by the client on - behalf of multiple separate grabs, - <constant>AsyncThisDevice</constant> thaws for - all.<constant>AsyncThisDevice</constant> has no effect if the - specified device is not frozen by the client, but the device need - not be grabbed by the client. - </para> - <para> - <constant>SyncThisDevice</constant> 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. - <constant>SyncThisDevice</constant> has no effect if the specified - device is not frozen by the client or is not grabbed by the - client. - </para> - <para> - <constant>ReplayThisDevice</constant> 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 completely 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. - </para> - <para> - <constant>AsyncOtherDevices</constant> If the remaining devices - are frozen by the client, event processing for them continues as - usual. If the other devices are frozen multiple times by the - client on behalf of multiple grabs, - <constant>AsyncOtherDevices</constant> "thaws" for all. - <constant>AsyncOtherDevices</constant> has no effect if the - devices are not frozen by the client. - </para> - <para> - <constant>SyncAll</constant> If all devices are frozen by the - client, event processing (for all devices) continues normally - 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. <constant>SyncAll</constant> 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, - <constant>SyncAll</constant> thaws for both. A subsequent freeze - for <constant>SyncAll</constant> will only freeze each device - once. - </para> - <para> - <constant>AsyncAll</constant> 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, <constant>AsyncAll</constant> thaws for - all. <constant>AsyncAll</constant> has no effect unless all - devices are frozen by the client. - </para> - <para> - <constant>AsyncThisDevice</constant>, - <constant>SyncThisDevice</constant>, and - <constant>ReplayThisDevice</constant> have no effect on the - processing of events from the remaining - devices.<constant>AsyncOtherDevices</constant> has no effect on - the processing of events from the specified device. When the - event_mode is <constant>SyncAll</constant> or - <constant>AsyncAll</constant>, the device parameter is ignored. - </para> - <para> - 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 processing 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. - </para> - <para> - <constant>XAllowDeviceEvents</constant> can generate a - <constant>BadDevice</constant> or <constant>BadValue</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem> - <para> - An invalid device was specified. The specified device does - not exist or has not been opened by this client - via <constant>XOpenInputDevice</constant>. This error may - also occur if the specified device is the X keyboard or X - pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem> - <para>An invalid mode was specified on the request.</para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XGrabDevice(3)</para> - </refsect1> -</refentry> - -<refentry id="XChangeDeviceDontPropagateList.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XChangeDeviceDontPropagateList</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XChangeDeviceDontPropagateList</refname> - <refname>XGetDeviceDontPropagateList</refname> - <refpurpose>query or change the dont-propagate-list for extension devices</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XChangeDeviceDontPropagateList</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window*<parameter>window</parameter></paramdef> - <paramdef>int *<parameter>count</parameter></paramdef> - <paramdef>XEventClass *<parameter>event_list</parameter></paramdef> - <paramdef>int<parameter>mode</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>XEventClass* <function>XGetDeviceDontPropagateList</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window *<parameter>window</parameter></paramdef> - <paramdef>int *<parameter>count</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>window</parameter></term> - <listitem><para>Specifies the window whose - dont-propagate-list is to be queried or modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_list</parameter></term> - <listitem><para>Specifies a pointer to a list of event - classes. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>mode</parameter></term> - <listitem><para>Specifies the mode.You can pass - <constant>AddToList</constant>, or - <constant>DeleteFromList</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>count</parameter></term> - <listitem><para>Specifies the number of event classes in - the list. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XChangeDeviceDontPropagateList</constant> request - modifies the list of events that should not be propagated to - ancestors of the event window. This request allows extension - events to be added to or deleted from that list. By default, all - events are propagated to ancestor windows. Once modified, the list - remains modified for the life of the window. Events are not - removed from the list because the client that added them has - terminated. - </para> - <para> - Suppression of event propagation is not allowed for all input - extension events. If a specified event class is one that cannot be - suppressed, a <constant>BadClass</constant> error will result. - Events that can be suppressed include - <constant>DeviceKeyPress</constant>, - <constant>DeviceKeyRelease</constant>, - <constant>DeviceButtonPress</constant>, - <constant>DeviceButtonRelease</constant>, - <constant>DeviceMotionNotify</constant>, - <constant>ProximityIn</constant>, and - <constant>ProximityOut</constant>. - </para> - <para> - <constant>XChangeDeviceDontPropagateList</constant> can generate a - <constant>BadDevice</constant>, <constant>BadClass</constant>, or - <constant>BadValue</constant> error. - </para> - <para> - The <constant>XGetDeviceDontPropagateList</constant> request - queries the list of events that should not be propagated to - ancestors of the event window. - </para> - <para> - <constant>XGetDeviceDontPropagateList</constant> can generate a - <constant>BadClass</constant> or <constant>BadWindow</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if some other client has caused the - specified device to become the X keyboard or X - pointer device via the - <constant>XChangeKeyboardDevice</constant> or - <constant>XChangePointerDevice</constant> - requests. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>An invalid window id was specified. - </para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadClass</errorname></term> - <listitem><para>An invalid event class was specified. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XChangeKeyboardDevice.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XChangeKeyboardDevice</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XChangeKeyboardDevice</refname> - <refpurpose>change which device is used as the X keyboard</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XChangeKeyboardDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice*<parameter>device</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device to be used as the X - keyboard. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XChangeKeyboardDevice</constant> request causes the - server to use the specified device as the X keyboard. The device - must have been previously opened by the requesting client via - <constant>XOpenDevice</constant> or a - <constant>BadDevice</constant> error will result. The device must - support input class <constant>Keys</constant>, or a - <constant>BadMatch</constant> error will result. If the server - implementation does not support using the requested device as the - X keyboard, a <constant>BadDevice</constant> error will result. - </para> - <para> - If the specified device is grabbed by another client, - <constant>AlreadyGrabbed</constant> is returned. If the specified - device is frozen by a grab on another device, - <constant>GrabFrozen</constant> is returned. If the request is - successful, <constant>Success</constant> is returned. - </para> - <para> - If the request succeeds, a <constant>ChangeDeviceNotify</constant> - event is sent to all clients that have selected that event. A - <constant>MappingNotify</constant> event with request = - <constant>MappingKeyboard</constant> is sent to all clients. The - specified device becomes the X keyboard and the old X keyboard - becomes accessible through the input extension protocol requests. - </para> - <para> - <constant>XChangeKeyboardDevice</constant> can generate a - <constant>BadDevice</constant> or a <constant>BadMatch</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist, has not been - opened by this client via - <constant>XOpenInputDevice</constant>, or is - already one of the core X device (pointer or - keyboard). This error may also occur if the server - implementation does not support using the - specified device as the X keyboard. </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XChangeKeyboardDevice</constant> request - was made specifying a device that has no keys. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - <refsect1><title>See also</title> - <para>XChangePointerDevice</para> - </refsect1> -</refentry> - -<refentry id="XChangePointerDevice.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XChangePointerDevice</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XChangePointerDevice</refname> - <refpurpose>change which device is the X pointer</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XChangePointerDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>int <parameter>xaxis</parameter></paramdef> - <paramdef>int <parameter>yaxis</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device to be used as the X - pointer. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>xaxis</parameter></term> - <listitem><para>Specifies the axis of the device to be - used as the X pointer x-axis. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>yaxis</parameter></term> - <listitem><para>Specifies the axis of the device to be - used as the X pointer y-axis. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XChangePointerDevice</constant> request causes the - server to use the specified device as the X pointer. The device - must have been opened by the client via - <constant>XOpenDevice</constant> or a - <constant>BadDevice</constant> error will result. The device must - support input class <constant>Valuators</constant> or a - <constant>BadMatch</constant> error will result. If the - implementation does not support use of the specified device as the - X pointer, a <constant>BadDevice</constant> error will result. - </para> - <para> - If the specified device is grabbed by another client, - <constant>AlreadyGrabbed</constant> is returned. If the specified - device is frozen by a grab on another device, - <constant>GrabFrozen</constant> is returned. If the request is - successful, <constant>Success</constant> is returned. - </para> - <para> - If the request succeeds, a <constant>ChangeDeviceNotify</constant> - event is sent to all clients that have selected that event. A - <constant>MappingNotify</constant> event with request = - <constant>MappingPointer</constant> is sent to all clients. The - specified device becomes the X pointer, and the old X pointer - becomes accessible through the input extension protocol requests. - </para> - <para> - <constant>XChangePointerDevice</constant> can generate a - <constant>BadDevice</constant> or a <constant>BadMatch</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist, has not been - opened by this client via - <constant>XOpenInputDevice</constant>, or is - already one of the core X input devices (pointer - or keyboard). This error may also occur if the - server implementation does not support using the - specified device as the X pointer. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XChangePointerDevice</constant> request - was made specifying a device that has less than - two valuators, or specifying a valuator index - beyond the range supported by the device. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XChangeKeyboardDevice</para> - </refsect1> -</refentry> - -<refentry id="XDeviceBell.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XDeviceBell</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XDeviceBell</refname> - <refpurpose>ring a bell on a device supported through the input extension</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XDeviceBell</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>XID *<parameter>feedbackclass</parameter></paramdef> - <paramdef>XID *<parameter>feedbackid</parameter></paramdef> - <paramdef>int *<parameter>percent</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device with which the bell - is associated. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>feedbackclass</parameter></term> - <listitem><para>Specifies the class of the feedback with - which the bell is associated. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>feedbackid</parameter></term> - <listitem><para>Specifies the id of the feedback with - which the bell is associated. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>percent</parameter></term> - <listitem><para>Specifies the volume in the range -100 to - 100 at which the bell should be rung. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XDeviceBell</constant> request causes the server to - ring a bell on the specified feedback of the specified device, if - possible. The specified volume is relative to the base volume for - the bell. If an invalid device is specified, a - <constant>BadDevice</constant> error will be returned. The - feedbackclass and feedbackid parameters contain values returned by - an <constant>XGetFeedbackControl</constant> request and uniquely - identify the bell to ring. If a feedbackclass is specified that - does not support a bell, or if a nonexistent feedbackid is - specified, or a percent value is specified that is not in the - range -100 to 100, a <constant>BadValue</constant> error will be - returned. - </para> - <para> - The volume at which the bell is rung when the percent argument is - nonnegative is: base - [(base * percent) / 100] + percent - </para> - <para> - The volume at which the bell rings when the percent argument is - negative is: base + [(base * percent) / 100] - </para> - <para> - To change the base volume of the bell, use - <constant>XChangeFeedbackControl</constant>. - </para> - <para> - <constant>XDeviceBell</constant> can generate a - <constant>BadDevice</constant> or a <constant>BadValue</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist, or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>An invalid feedbackclass, feedbackid, or - percent value was specified. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XChangeFeedbackControl(3), XBell(3)</para> - </refsect1> -</refentry> - -<refentry id="XGetDeviceControl.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetDeviceControl</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGetDeviceControl</refname> - <refname>XChangeDeviceControl</refname> - <refpurpose>query and change input device controls</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>XDeviceControl *<function>XGetDeviceControl</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice*<parameter>device</parameter></paramdef> - <paramdef>int *<parameter>controlType</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XChangeDeviceControl</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice*<parameter>device</parameter></paramdef> - <paramdef>int <parameter>controlType</parameter></paramdef> - <paramdef>XDeviceControl *<parameter>control</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose control is to - be interrogated or modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>controlType</parameter></term> - <listitem><para>Specifies the type of control to be - interrogated or changed. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>control</parameter></term> - <listitem><para>Specifies the address of an - <constant>XDeviceControl</constant> structure that - contains the new values for the Device. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - These requests are provided to manipulate those input devices that - support device control. A <constant>BadMatch</constant> error will - be generated if the requested device does not support any device - controls. - </para> - <para> - Valid device control types that can be used with these requests - include the following: - </para> - <para> - DEVICE_RESOLUTION Queries or changes the resolution of valuators - on input devices. - </para> - <para> - The <constant>XGetDeviceControl</constant> request returns a - pointer to an <constant>XDeviceControl</constant> structure. - </para> - <para> - <constant>XGetDeviceControl</constant> can generate a - <constant>BadDevice</constant> or <constant>BadMatch</constant> - error. - </para> - <para> - The <constant>XChangeDeviceControl</constant> request modifies the - values of one control on the specified device. The control is - identified by the id field of the - <constant>XDeviceControl</constant> structure that is passed with - the request. - </para> - <para> - <constant>XChangeDeviceControl</constant> can generate a - <constant>BadDevice</constant>, <constant>BadMatch</constant>, or - <constant>BadValue</constant> error..SH STRUCTURES Each control - is described by a structure specific to that control. These - structures are defined in the file <constant>XInput.h</constant>. - </para> - <para> - <constant>XDeviceControl</constant> is a generic structure that - contains two fields that are at the beginning of each class of - control: - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - } <structname>XDeviceControl</structname>; - </synopsis> - </para> - <para> - The <constant>XDeviceResolutionState</constant> structure defines - the information that is returned for device resolution for devices - with valuators. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>control</structfield>; - int <structfield>length</structfield>; - int <structfield>num_valuators</structfield>; - int* <structfield>resolutions</structfield>; - int* <structfield>min_resolutions</structfield>; - int* <structfield>max_resolutions</structfield>; - } <structname>XDeviceResolutionState</structname>; - </synopsis> - </para> - <para> - The <constant>XDeviceResolutionControl</constant> structure - defines the attributes that can be controlled for keyboard - Devices. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>control</structfield>; - int <structfield>length</structfield>; - int <structfield>first_valuator</structfield>; - int <structfield>num_valuators</structfield>; - int* <structfield>resolutions</structfield>; - } <structname>XDeviceResolutionControl</structname>; - </synopsis> - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if some other client has caused the - specified device to become the X keyboard or X - pointer device via the - <constant>XChangeKeyboardDevice</constant> or - <constant>XChangePointerDevice</constant> - requests. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetDeviceControl</constant> request was - made specifying a device that has no controls or - an <constant>XChangeDeviceControl</constant> - request was made with an - <constant>XDeviceControl</constant> structure that - contains an invalid Device type. It may also occur - if an invalid combination of mask bits is - specified ( <constant>DvKey</constant> but no - <constant>DvAutoRepeatMode</constant> for keyboard - Devices), or if an invalid KeySym is specified for - a string Device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>Some numeric value falls outside the range - of values accepted by the - <constant>XChangeDeviceControl</constant> 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. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para></para> - </refsect1> -</refentry> - -<refentry id="XGetDeviceKeyMapping.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetDeviceKeyMapping</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGetDeviceKeyMapping</refname> - <refname>XChangeDeviceKeyMapping</refname> - <refpurpose>query or change device key mappings</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>KeySym *<function>XGetDeviceKeyMapping</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>KeyCode <parameter>first_keycode</parameter></paramdef> - <paramdef>int <parameter>keycode_count</parameter></paramdef> - <paramdef>int *<parameter>keysyms_per_keycode_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose key mapping is - to be queried or modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>first_keycode</parameter></term> - <listitem><para>Specifies the first KeyCode to be - returned. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>keycode_count</parameter></term> - <listitem><para>Specifies the number of KeyCodes to be - returned or modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>keysyms_per_keycode</parameter></term> - <listitem><para>Specifies the number of KeySyms per - KeyCode. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>keysyms_per_keycode_return</parameter></term> - <listitem><para>Specifies the address of a variable into - which the number of KeySyms per KeyCodewill be - returned. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>keysyms</parameter></term> - <listitem><para>Specifies the address of an array of - KeySyms. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - For the specified device, the - <constant>XGetDeviceKeyMapping</constant> request returns the - symbols for the specified number of KeyCodes starting with - first_keycode. The value specified in first_keycode must be - greater than or equal to min_keycode as returned by - <constant>XListInputDevices</constant>, or a - <constant>BadValue</constant> error results. In addition, the - following expression must be less than or equal to max_keycode as - returned by <constant>XListInputDevices</constant>: - </para> - <para> - first_keycode + keycode_count - 1 - </para> - <para> - If this is not the case, a <constant>BadValue</constant> error - results. The number of elements in the KeySyms list is: </para> - <para> - keycode_count * keysyms_per_keycode_return - </para> - <para> - KeySym number N, counting from zero, for KeyCode K has the - following index in the list, counting from zero: - (K - first_code) * keysyms_per_code_return + N - </para> - <para> - The X server arbitrarily chooses the keysyms_per_keycode_return - value to be large enough to report all requested symbols. A - special KeySym value of <constant>NoSymbol</constant> is used to - fill in unused elements for individual KeyCodes. To free the - storage returned by <constant>XGetDeviceKeyMapping</constant>, use - <constant>XFree</constant>. - </para> - <para> - If the specified device does not support input class keys, a - <constant>BadMatch</constant> error will result. - </para> - <para> - <constant>XGetDeviceKeyMapping</constant> can generate a - <constant>BadDevice</constant>, <constant>BadMatch</constant>, or - <constant>BadValue</constant> error. - </para> - <para> - For the specified device, the - <constant>XChangeDeviceKeyMapping</constant> request defines the - symbols for the specified number of KeyCodes starting with - first_keycode. The symbols for KeyCodes outside this range remain - unchanged. The number of elements in keysyms must be: - </para> - <para> - num_codes * keysyms_per_keycode - </para> - <para> - The specified first_keycode must be greater than or equal to - min_keycode returned by <constant>XListInputDevices</constant>, or - a <constant>BadValue</constant> error results. In addition, the - following expression must be less than or equal to max_keycode as - returned by <constant>XListInputDevices</constant>, or a - <constant>BadValue</constant> error results: - </para> - <para> - first_keycode + num_codes - 1</para> - <para> - KeySym number N, counting from zero, for KeyCode K has the - following index in keysyms, counting from zero: - </para> - <para> - (K - first_keycode) * keysyms_per_keycode + N - </para> - <para> - The specified keysyms_per_keycode can be chosen arbitrarily by the - client to be large enough to hold all desired symbols. A special - KeySym value of <constant>NoSymbol</constant> should be used to - fill in unused elements for individual KeyCodes. It is legal for - <constant>NoSymbol</constant> to appear in nontrailing positions - of the effective list for a - KeyCode.<constant>XChangeDeviceKeyMapping</constant> generates a - <constant>DeviceMappingNotify</constant> event that is sent to all - clients that have selected that type of event. - </para> - <para> - There is no requirement that the X server interpret this mapping. - It is merely stored for reading and writing by clients. - </para> - <para> - If the specified device does not support input class keys, a - <constant>BadMatch</constant> error results. - </para> - <para> - <constant>XChangeDeviceKeyMapping</constant> can generate a - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadAlloc</constant>, or <constant>BadValue</constant> - error. - </para> - <para> - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetDeviceKeyMapping</constant> or - <constant>XChangeDeviceKeyMapping</constant> - request was made specifying a device that has no - keys. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadAlloc</errorname></term> - <listitem><para>The server failed to allocate the - requested resource or server memory. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XSetDeviceButtonMapping(3), XSetDeviceModifierMapping(3)</para> - </refsect1> -</refentry> - -<refentry id="XGetDeviceModifierMapping.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetDeviceModifierMapping</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGetDeviceModifierMapping</refname> - <refname>XSetDeviceModifierMapping</refname> - <refpurpose>query or change device modifier mappings</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XSetDeviceModifierMapping</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>XModifierKeymap *<parameter>modmap</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>XModifierKeymap *<function>XGetDeviceModifierMapping</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose modifier - mapping is to be queried or modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modmap</parameter></term> - <listitem><para>Specifies a pointer to the - <constant>XModifierKeymap</constant> structure. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XSetDeviceModifierMapping</constant> request - specifies the KeyCodes of the keys (if any) that are to be used as - modifiers for the specified device. If it succeeds, the X server - generates a <constant>DeviceMappingNotify</constant> event, and - <constant>XSetDeviceModifierMapping</constant> returns - <constant>MappingSuccess</constant>. X permits at most eight - modifier keys. If more than eight are specified in the - <constant>XModifierKeymap</constant> structure, a - <constant>BadLength</constant> error results. - </para> - <para> - The modifiermap member of the <constant>XModifierKeymap</constant> - structure contains eight sets of max_keypermod KeyCodes, one for - each modifier in the order <constant>Shift</constant>, - <constant>Lock</constant>, <constant>Control</constant>, - <constant>Mod1</constant>, <constant>Mod2</constant>, - <constant>Mod3</constant>, <constant>Mod4</constant>, and - <constant>Mod5</constant>. Only nonzero KeyCodes have meaning in - each set, and zero KeyCodes are ignored. In addition, all of the - nonzero KeyCodes must be in the range specified by min_keycode and - max_keycode as returned by <constant>XListInputDevices</constant>, - or a <constant>BadValue</constant> error results. No KeyCode may - appear twice in the entire map, or a <constant>BadValue</constant> - error results. - </para> - <para> - An X server can impose restrictions on how modifiers can be - changed, for example, if certain keys do not generate up - transitions in hardware, if auto-repeat cannot be disabled on - certain keys, or if multiple modifier keys are not supported. If - some such restriction is violated, the status reply is - <constant>MappingFailed</constant>, and none of the modifiers are - changed. If the new KeyCodes specified for a modifier differ from - those currently defined and any (current or new) keys for that - modifier are in the logically down state, - <constant>XSetDeviceModifierMapping</constant> returns - <constant>MappingBusy</constant>, and none of the modifiers is - changed. - </para> - <para> - <constant>XSetDeviceModifierMapping</constant> can generate - <constant>BadLength</constant>, <constant>BadDevice</constant>, - <constant>BadMatch</constant>, <constant>BadAlloc</constant>, and - <constant>BadValue</constant> errors. - </para> - <para> - The <constant>XGetDeviceModifierMapping</constant> request returns - a pointer to a newly created <constant>XModifierKeymap</constant> - structure that contains the keys being used as modifiers. The - structure should be freed after use by calling - <constant>XFreeModifierMapping </constant>. If only zero values - appear in the set for any modifier, that modifier is disabled. - </para> - <para> - <constant>XGetDeviceModifierMapping</constant> can generate - <constant>BadDevice</constant> and <constant>BadMatch</constant> - errors. - </para> - </refsect1> - <refsect1><title>Structures</title> - <para> - The <constant>XModifierKeymap</constant> structure contains: - </para> - <para> - <synopsis> - typedef struct { - int <structfield>max_keypermod</structfield>; - KeyCode *<structfield>modifiermap</structfield>; - } <structname>XModifierKeymap</structname>; - </synopsis> - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadLength</errorname></term> - <listitem><para>More than eight keys were specified in the - <constant>XModifierKeymap</constant> structure. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadAlloc</errorname></term> - <listitem><para>The server failed to allocate the - requested resource or server memory. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetDeviceModifierMapping</constant> or - <constant>XChangeDeviceModifierMapping</constant> - request was made specifying a device that has no - keys. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XSetDeviceKeyMapping(3), XSetDeviceButtonMapping(3)</para> - </refsect1> -</refentry> - -<refentry id="XGetDeviceMotionEvents.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetDeviceMotionEvents</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGetDeviceMotionEvents</refname> - <refname>XDeviceTimeCoord</refname> - <refpurpose>get device motion history</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>XDeviceTimeCoord *<function>XGetDeviceMotionEvents</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Time <parameter>start</parameter></paramdef> - <paramdef>Time <parameter>stop</parameter></paramdef> - <paramdef>int *<parameter>nevents_return</parameter></paramdef> - <paramdef>int *<parameter>mode_return</parameter></paramdef> - <paramdef>int *<parameter>axis_count_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose motion history is to - be queried. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>start</parameter></term> - <term><parameter>stop</parameter></term> - <listitem><para>Specify the time interval in which the events - are returned from the motionhistory buffer.You can - pass a timestamp or <constant>CurrentTime</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>nevents_return</parameter></term> - <listitem><para>Returns the number of events from the motion - history buffer. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>mode_return</parameter></term> - <listitem><para>Returns the mode of the device - (<constant>Absolute</constant> or - <constant>Relative</constant>). - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>axis_count_return</parameter></term> - <listitem><para>Returns the count of axes being reported. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The server may retain the recent history of the device motion - and do so to a finer granularity than is reported by - <constant>DeviceMotionNotify</constant> events. The - <constant>XGetDeviceMotionEvents</constant> request makes this - history available. - </para> - <para> - The <constant>XGetDeviceMotionEvents</constant> request returns - all events in the motion history buffer that fall between the - specified start and stop times, inclusive. If the start time is - later than the stop time or if the start time is in the future, no - events are returned. If the stop time is in the future, it is - equivalent to specifying <constant>CurrentTime</constant>. - </para> - <para> - The <constant>mode</constant> indicates whether the device is - reporting absolute positional data (mode = - <constant>Absolute</constant> ) or relative motion data (mode = - <constant>Relative</constant> ). Some devices allow their mode to - be changed via the <constant>XSetDeviceMode</constant> request. - These constants are defined in the file XI.h. The - <constant>axis_count</constant> returns the number of axes or - valuators being reported by the device. - </para> - <para> - <constant>XGetDeviceMotionEvents</constant> can generate a - <constant>BadDevice</constant>, or <constant>BadMatch</constant> - error. - </para> - </refsect1> - <refsect1><title>Structures</title> - <para> - The <constant>XDeviceTimeCoord</constant> structure contains: - </para> - <para> - <synopsis> - typedef struct { - Time <structfield>time</structfield>; - int *<structfield>data</structfield>; - } <structname>XDeviceTimeCoord</structname>; - </synopsis> - </para> - <para> - The time member is set to the time, in milliseconds. The data - member is a pointer to an array of integers. These integers are - set to the values of each valuator or axis reported by the device. - There is one element in the array per axis of motion reported by - the device. The value of the array elements depends on the mode of - the device. If the mode is <constant>Absolute</constant>, the - values are the raw values generated by the device. These may be - scaled by client programs using the maximum values that the device - can generate. The maximum value for each axis of the device is - reported in the max_val field of the - <constant>XAxisInfo</constant> returned by the - <constant>XListInputDevices</constant> request. If the mode is - <constant>Relative</constant>, the data values are the relative - values generated by the device. - </para> - <para> - You should use <constant>XFreeDeviceMotionEvents</constant> to - free the data returned by this request. - </para> - <para> - Errors returned by this request: <constant>BadDevice</constant>, - <constant>BadMatch</constant>. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetDeviceMotionEvents</constant> - request is made specifying a device that has no - valuators and reports no axes of motion. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XGetExtensionVersion.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetExtensionVersion</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XQueryInputVersion</refname> - <refname>XGetExtensionVersion</refname> - <refpurpose>query the version of the input extension.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>XExtensionVersion *<function>XQueryInputVersion</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>major</parameter></paramdef> - <paramdef>int <parameter>minor</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>XExtensionVersion *<function>XGetExtensionVersion</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>char *<parameter>name</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>name</parameter></term> - <listitem><para>Specifies the extension to be queried. - The input extension name is definedin the header - file <constant>XI.h</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>major</parameter></term> - <listitem><para>Specifies the major version as supported - by the client. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>minor</parameter></term> - <listitem><para>Specifies the minor version as supported - by the client. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XQueryInputVersion</constant> request queries the - version of the input extension and returns an - <constant>XExtensionVersion</constant> structure. This structure - contains a major_version and minor_version number which can be - compared with constants defined in <constant>XI.h</constant>. The - client must specify the highest version numbers it can supports. - </para> - <para> - The <constant>XGetExtensionVersion</constant> request is - deprecated and should not be used. Clients issuing a - <constant>XgetExtensionVersion</constant> request will not be - able to use MPX features. The - <constant>XGetExtensionVersion</constant> request queries the - version of the input extension, and returns an - <constant>XExtensionVersion</constant> structure. This structure - contains a major_version and minor_version number which can be - compared with constants defined in <constant>XI.h</constant>. - Support for additional protocol requests added to the input - extension after its initial release is indicated by a version - number corresponding to the added requests. Each version contains - all the protocol requests contained by previous versions. - </para> - <para> - You should use <constant>XFree</constant> to free the - <constant>XExtensionVersion</constant> structure. - </para> - </refsect1> - <refsect1><title>Structures</title> - <para> - This request returns an XExtensionVersion structure. - </para> - <para> - <synopsis> - typedef struct { - int <structfield>present</structfield>; - short <structfield>major_version</structfield>; - short <structfield>minor_version; </structfield> - } <structname>XExtensionVersion</structname>; - </synopsis> - </para> - - </refsect1> -</refentry> - -<refentry id="XGetFeedbackControl.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetFeedbackControl</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGetFeedbackControl</refname> - <refname>XChangeFeedbackControl</refname> - <refpurpose>query and change input device feedbacks</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>XFeedbackState *<function>XGetFeedbackControl</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>int *<parameter>num_feedbacks</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XChangeFeedbackControl</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice* <parameter>device</parameter></paramdef> - <paramdef>Mask <parameter>mask</parameter></paramdef> - <paramdef>XFeedbackControl *<parameter>control</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. -</para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose feedbacks are - to be queried or modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>num_feedbacks</parameter></term> - <listitem><para>Specifies an address into which the number - of feedbacks supported by thedevice is to be - returned. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>mask</parameter></term> - <listitem><para>Specifies a mask specific to each type of - feedback that describes howthe feedback is to be - modified. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>control</parameter></term> - <listitem><para>Specifies the address of an - <constant>XFeedbackControl</constant> structure - that containsthe new values for the feedback. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - These requests are provided to manipulate those input devices that - support feedbacks. A <constant>BadMatch</constant> error will - be generated if the requested device does not support feedbacks. - Whether or not a given device supports feedbacks can be determined - by examining the information returned by the - <constant>XOpenDevice</constant> request. For those devices that - support feedbacks, <constant>XOpenDevice</constant> will return - an <constant>XInputClassInfo</constant> structure with the - input_class field equal to the constant - <constant>FeedbackClass</constant> (defined in the file - <constant>XI.h</constant>). - </para> - <para> - The <constant>XGetFeedbackControl</constant> request returns a - pointer to a list of <constant>XFeedbackState</constant> - structures. Each item in this list describes one of the feedbacks - supported by the device. The items are variable length, so each - contains its length to allow traversal to the next item in the - list. - </para> - <para> - The feedback classes that are currently defined are: - <constant>KbdFeedbackClass</constant>, - <constant>PtrFeedbackClass</constant>, - <constant>StringFeedbackClass</constant>, - <constant>IntegerFeedbackClass</constant>, - <constant>LedFeedbackClass</constant>, and - <constant>BellFeedbackClass</constant>. These constants are - defined in the file <constant>XI.h</constant>. An input device - may support zero or more classes of feedback, and may support - multiple feedbacks of the same class. Each feedback contains a - class identifier and an id that is unique within that class for - that input device. The id is used to identify the feedback when - making an <constant>XChangeFeedbackControl</constant> request. - </para> - <para> - <constant>XGetFeedbackControl</constant> can generate a - <constant>BadDevice</constant> or <constant>BadMatch</constant> - error. - </para> - <para> - The <constant>XChangeFeedbackControl</constant> request modifies - the values of one feedback on the specified device. The feedback - is identified by the id field of the - <constant>XFeedbackControl</constant> structure that is passed - with the request. The fields of the feedback that are to be - modified are identified by the bits of the mask that is passed - with the request. - </para> - <para> - <constant>XChangeFeedbackControl</constant> can generate a - <constant>BadDevice</constant>, <constant>BadMatch</constant>, or - <constant>BadValue</constant> error. - </para> - </refsect1> - <refsect1><title>Structures</title> - <para> - Each class of feedback is described by a structure specific to - that class. These structures are defined in the file - <constant>XInput.h</constant>. - <constant>XFeedbackState</constant> and - <constant>XFeedbackControl</constant> are generic structures that - contain three fields that are at the beginning of each class of - feedback: </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - } <structname>XFeedbackState</structname>, - <structname>XFeedbackControl;</structname> - </synopsis> - </para> - <para> - The <constant>XKbdFeedbackState</constant> structure defines the - attributes that are returned for feedbacks equivalent to those on - the X keyboard. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>click</structfield>; - int <structfield>percent</structfield>; - int <structfield>pitch</structfield>; - int <structfield>duration</structfield>; - int <structfield>led_mask</structfield>; - int <structfield>global_auto_repeat</structfield>; - char <structfield>auto_repeats[32]</structfield>; - } <structname>XKbdFeedbackState</structname>; - </synopsis> - </para> - <para> - The <constant>XPtrFeedbackState</constant> structure defines the - attributes that are returned for feedbacks equivalent to those on - the the X pointer. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>accelNum</structfield>; - int <structfield>accelDenom</structfield>; - int <structfield>threshold</structfield>; - } <structname>XPtrFeedbackState</structname>; - </synopsis> - </para> - <para> - The <constant>XIntegerFeedbackState</constant> structure defines - attributes that are returned for integer feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>resolution</structfield>; - int <structfield>minVal</structfield>; - int <structfield>maxVal</structfield>; - } <structname>XIntegerFeedbackState</structname>; - </synopsis> - </para> - <para> - The <constant>XStringFeedbackState</constant> structure defines - the attributes that are returned for string feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>max_symbols</structfield>; - int <structfield>num_syms_supported</structfield>; - KeySym *<structfield>syms_supported</structfield>; - } <structname>XStringFeedbackState</structname>; - </synopsis> - </para> - <para> - The <constant>XBellFeedbackState</constant> structure defines - the attributes that are returned for bell feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>percent</structfield>; - int <structfield>pitch</structfield>; - int <structfield>duration</structfield>; - } <structname>XBellFeedbackState</structname>; - </synopsis> - </para> - <para> - The <constant>XLedFeedbackState</constant> structure defines the - attributes that are returned for LED feedbacks. - </para> - <para> - <synopsis> - typedef struct { XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>led_values</structfield>; - } <structname>XLedFeedbackState</structname>; - </synopsis> - </para> - <para> - The <constant>XPrtFeedbackControl</constant> structure defines - the attributes that can be controlled for pointer feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>accelNum</structfield>; - int <structfield>accelDenom</structfield>; - int <structfield>threshold</structfield>; - } <structname>XPtrFeedbackControl</structname>; - </synopsis> - </para> - <para> - The <constant>XKbdFeedbackControl</constant> structure defines - the attributes that can be controlled for keyboard feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>click</structfield>; - int <structfield>percent</structfield>; - int <structfield>pitch</structfield>; - int <structfield>duration</structfield>; - int <structfield>led_mask</structfield>; - int <structfield>led_value</structfield>; - int <structfield>key</structfield>; - int <structfield>auto_repeat_mode</structfield>; - } <structname>XKbdFeedbackControl</structname>; - </synopsis> - </para> - <para> - The <constant>XStringFeedbackControl</constant> structure - defines the attributes that can be controlled for string - feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>num_keysyms</structfield>; - KeySym *<structfield>syms_to_display</structfield>; - } <structname>XStringFeedbackControl</structname>; - </synopsis> - </para> - <para> - The <constant>XIntegerFeedbackControl</constant> structure - defines the attributes that can be controlled for integer - feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>int_to_display</structfield>; - } <structname>XIntegerFeedbackControl</structname>; - </synopsis> - </para> - <para> - The <constant>XBellFeedbackControl</constant> structure defines - the attributes that can be controlled for bell feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>percent</structfield>; - int <structfield>pitch</structfield>; - int <structfield>duration</structfield>; - } <structname>XBellFeedbackControl</structname>; - </synopsis> - </para> - <para> - The <constant>XLedFeedbackControl</constant> structure defines - the attributes that can be controlled for LED feedbacks. - </para> - <para> - <synopsis> - typedef struct { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - XID <structfield>id</structfield>; - int <structfield>led_mask</structfield>; - int <structfield>led_values</structfield>; - } <structname>XLedFeedbackControl</structname>; - </synopsis> - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if some other client has caused the - specified device to become the X keyboard or X - pointer device via the - <constant>XChangeKeyboardDevice</constant> or - <constant>XChangePointerDevice</constant> - requests. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetFeedbackControl</constant> request - was made specifying a device that has no - feedbacks, or an - <constant>XChangeFeedbackControl</constant> - request was made with an - <constant>XFeedbackControl</constant> structure - that contains an invalid feedback type. It may - also occur if an invalid combination of mask bits - is specified ( <constant>DvKey</constant> but no - <constant>DvAutoRepeatMode</constant> for - keyboard feedbacks), or if an invalid KeySym is - specified for a string feedback. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>Some numeric value falls outside the range - of values accepted by the - <constant>XChangeFeedbackControl</constant> - 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. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - - -<refentry id="XGrabDeviceButton.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGrabDeviceButton</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGrabDeviceButton</refname> - <refname>XUngrabDeviceButton</refname> - <refpurpose>grab/ungrab extension input device buttons</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XGrabDeviceButton</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>unsigned int <parameter>button</parameter></paramdef> - <paramdef>unsigned int <parameter>modifiers</parameter></paramdef> - <paramdef>XDevice*<parameter>modifier_device</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>Bool<parameter>owner_events</parameter></paramdef> - <paramdef>unsigned int <parameter>event_count</parameter></paramdef> - <paramdef>XEventClass*<parameter>event_list</parameter></paramdef> - <paramdef>int <parameter>this_device_mode</parameter></paramdef> - <paramdef>int<parameter>other_devices_mode</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XUngrabDeviceButton</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>unsigned int <parameter>button</parameter></paramdef> - <paramdef>unsigned int <parameter>modifiers</parameter></paramdef> - <paramdef>XDevice*<parameter>modifier_device</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. -</para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device that is to be - grabbed or released</para></listitem> - </varlistentry> - <varlistentry><term><parameter>button</parameter></term> - <listitem><para>Specifies the device button that is to - be grabbed or released or <constant>AnyButton</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modifiers</parameter></term> - <listitem><para>Specifies the set of keymasks or - <constant>AnyModifier</constant>.The mask is - the bitwise inclusive OR of the valid keymask - bits. Valid bits are: - <constant>Shiftmask</constant>, - <constant>LockMask</constant>, - <constant>ControlMask</constant>, - <constant>Mod1Mask</constant>, - <constant>Mod2Mask,Mod3Mask</constant>, - <constant>Mod4Mask</constant>, - <constant>Mod5Mask</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modifier_device</parameter></term> - <listitem><para>specifies the device whose modifiers are - to be used. If the modifier_devicespecified is - NULL, the X keyboard will be used as the - modifier_device. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>grab_window</parameter></term> - <listitem><para>Specifies the grab window. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>owner_events</parameter></term> - <listitem><para>Specifies a Boolean value that indicates - whether the deviceevents are to be reported as - usual or reported with respect to the grab - windowif selected by the event list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_count</parameter></term> - <listitem><para>Specifies the number of event classes in - the event list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_list</parameter></term> - <listitem><para>Specifies which events are reported to the - client. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>this_device_mode</parameter></term> - <listitem><para>Specifies further processing of events - from this device.You can pass - <constant>GrabModeSync</constant> or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>other_devices_mode</parameter></term> - <listitem><para>Specifies further processing of events - from all other devices.You can pass - <constant>GrabModeSync</constant> or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XGrabDeviceButton</constant> request establishes a - passive grab. In the future, the device is actively grabbed (as - for <constant>XGrabDevice</constant>, the last-grab time is set - to the time at which the button was pressed (as transmitted in the - <constant>DeviceButtonPress</constant> event), and the - <constant>DeviceButtonPress</constant> event is reported if all - of the following conditions are true: - - <itemizedlist> - <listitem> - <para> - 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. - </para> - </listitem> - <listitem> - <para>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. - </para> - </listitem> - <listitem> - <para> - A passive grab on the same button/modifier combination - does not exist on any ancestor of grab_window. - </para> - </listitem> - </itemizedlist> - </para> - <para> - The interpretation of the remaining arguments is as for - <constant>XGrabDevice</constant>. 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). - </para> - <para> - Note that the logical state of a device (as seen by client - applications) may lag the physical state if device event - processing is frozen. - </para> - <para> - This request overrides all previous grabs by the same client on - the same button/modifier combinations on the same window. A - modifiers of <constant>AnyModifier</constant> is equivalent to - issuing the grab request for all possible modifier combinations - (including the combination of no modifiers). It is not required - that all modifiers specified have currently assigned KeyCodes. A - button of <constant>AnyButton</constant> is equivalent to - issuing the request for all possible buttons. Otherwise, it is not - required that the specified button currently be assigned to a - physical button. - </para> - <para> - A modifier_device of NULL indicates that the X keyboard is to be - used as the modifier_device. - </para> - <para> - If some other client has already issued a - <constant>XGrabDeviceButton</constant> with the same - button/modifier combination on the same window, a - <constant>BadAccess</constant> error results. When using - <constant>AnyModifier</constant> or - <constant>AnyButton</constant> , the request fails completely, and - a <constant>BadAccess</constant> error results (no grabs are - established) if there is a conflicting grab for any combination. - <constant>XGrabDeviceButton</constant> has no effect on an active - grab. - </para> - <para> - <constant>XGrabDeviceButton</constant> can generate - <constant>BadClass</constant>, <constant>BadDevice</constant>, - <constant>BadMatch</constant>, <constant>BadValue</constant>, and - <constant>BadWindow</constant> errors..P The - <constant>XUngrabDeviceButton</constant> request releases the - passive grab for a button/modifier combination on the specified - window if it was grabbed by this client. A modifier of - <constant>AnyModifier</constant> is equivalent to issuing the - ungrab request for all possible modifier combinations, including - the combination of no modifiers. A button of - <constant>AnyButton</constant> is equivalent to issuing the - request for all possible buttons. - <constant>XUngrabDeviceButton</constant> has no effect on an - active grab. - </para> - <para> - A modifier_device of NULL indicates that the X keyboard should be - used as the modifier_device. - </para> - <para> - <constant>XUngrabDeviceButton</constant> can generate - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadValue</constant> and <constant>BadWindow</constant> - errors. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGrabDeviceButton</constant> request - was made specifying a device that has no buttons, - or specifying a modifier device that has no keys. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not name a defined Window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XAllowDeviceEvents(3), XGrabDevice(3), XGrabDeviceKey(3)</para> - </refsect1> -</refentry> - -<refentry id="XGrabDeviceKey.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGrabDeviceKey</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGrabDeviceKey</refname> - <refname>XUngrabDeviceKey</refname> - <refpurpose>grab/ungrab extension input device Keys</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XGrabDeviceKey</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>unsigned int <parameter>Key</parameter></paramdef> - <paramdef>unsigned int <parameter>modifiers</parameter></paramdef> - <paramdef>XDevice *<parameter>modifier_device</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>Bool <parameter>owner_events</parameter></paramdef> - <paramdef>unsigned int <parameter>event_count</parameter></paramdef> - <paramdef>XEventClass <parameter>event_list</parameter></paramdef> - <paramdef>int <parameter>this_device_mode</parameter></paramdef> - <paramdef>int <parameter>other_devices_mode</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XUngrabDeviceKey</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>unsigned int <parameter>Key</parameter></paramdef> - <paramdef>unsigned int <parameter>modifiers</parameter></paramdef> - <paramdef>XDevice *<parameter>modifier_device</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device that is to be - grabbed or released. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>Key</parameter></term> - <listitem><para>Specifies the device Key that is to be - grabbed released or <constant>AnyKey</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modifiers</parameter></term> - <listitem><para>Specifies the set of keymasks or - <constant>AnyModifier</constant>.The mask is the - bitwise inclusive OR of the valid keymask - bits.Valid bits are: ShiftMask, LockMask, - ControlMask, Mod1Mask, Mod2Mask,Mod3Mask, - Mod4Mask, Mod5Mask. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modifier_device</parameter></term> - <listitem><para>Specifies the device whose modifiers are - to be used. If a modifier_device ofNULL is - specified, the X keyboard will be used as the - modifier_device. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>grab_window</parameter></term> - <listitem><para>Specifies the grab window. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>owner_events</parameter></term> - <listitem><para>Specifies a Boolean value that indicates - whether the deviceevents are to be reported as - usual or reported with respect to the grab - windowif selected by the event list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_count</parameter></term> - <listitem><para>Specifies the number of event classes in - the event list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_list</parameter></term> - <listitem><para>Specifies which device events are reported - to the client. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>this_device_mode</parameter></term> - <listitem><para>Specifies further processing of events - from this device.You can pass - <constant>GrabModeSync</constant> or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>other_devices_mode</parameter></term> - <listitem><para>Specifies further processing of events - from other devices.You can pass - <constant>GrabModeSync</constant>or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <constant>XGrabDeviceKey</constant> request establishes a - passive grab. In the future, the device is actively grabbed (as - for <constant>XGrabDevice</constant>, the last-device-grab time is - set to the time at which the Key was pressed (as transmitted in - the <constant>DeviceKeyPress</constant> event), and the - <constant>DeviceKeyPress</constant> event is reported if all of - the following conditions are true: - - <itemizedlist> - <listitem> - <para>The device is not grabbed, and the specified key is - logically pressed when the specified modifier keys are - logically down, and no other keys or modifier keys are - logically down. - </para> - </listitem> - <listitem> - <para>The grab_window is an ancestor (or is) the focus - window OR the grab window is a descendant of the focus - window and contains the device. - </para> - </listitem> - <listitem> - <para>The confine_to window (if any) is - viewable. - </para> - </listitem> - <listitem> - <para>A passive grab on the same key/modifier combination - does not exist on any ancestor of grab_window. - </para> - </listitem> - </itemizedlist> - </para> - <para> - The interpretation of the remaining arguments is as for - <constant>XGrabDevice</constant>. The active grab is terminated - automatically when the logical state of the device has the - specified key released. - </para> - <para> - Note that the logical state of a device (as seen by means of the X - protocol ) may lag the physical state if device event processing - is frozen. - </para> - <para> - If the key is not <constant>AnyKey</constant>, it must be in the - range specified by min_keycode and max_keycode as returned by the - <constant>XListInputDevices</constant> request. Otherwise, a - <constant>BadValue</constant> error results. - </para> - <para> - This request overrides all previous grabs by the same client on - the same Key/modifier combinations on the same window. A modifier - of <constant>AnyModifier</constant> is equivalent to issuing the - grab request for all possible modifier combinations (including the - combination of no modifiers). It is not required that all - modifiers specified have currently assigned KeyCodes. A key of - <constant>AnyKey</constant> is equivalent to issuing the request - for all possible keys. Otherwise, it is not required that the - specified key currently be assigned to a physical Key. - </para> - <para> - If a modifier_device of NULL is specified, the X keyboard will be - used as the modifier_device. - </para> - <para> - If some other client has already issued a - <constant>XGrabDeviceKey</constant> with the same Key/modifier - combination on the same window, a <constant>BadAccess</constant> - error results. When using <constant>AnyModifier</constant> or - <constant>AnyKey</constant>, the request fails completely, and a - <constant>BadAccess</constant> error results (no grabs are - established) if there is a conflicting grab for any - combination.<constant>XGrabDeviceKey</constant> has no effect on - an active grab. - </para> - <para> - <constant>XGrabDeviceKey</constant> can generate - <constant>BadAccess</constant>, <constant>BadClass</constant>, - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadValue</constant>, and <constant>BadWindow</constant> - errors. It returns <constant>Success</constant> on successful - completion of the request. - </para> - <para> - The <constant>XUngrabDeviceKey</constant> request releases the - passive grab for a key/modifier combination on the specified - window if it was grabbed by this client. A modifier of - <constant>AnyModifier</constant> is equivalent to issuing the - ungrab request for all possible modifier combinations, including - the combination of no modifiers. A Key of - <constant>AnyKey</constant> is equivalent to issuing the request - for all possible Keys.<constant>XUngrabDeviceKey</constant> has no - effect on an active grab. - </para> - <para> - If a modifier_device of NULL is specified, the X keyboard will be - used as the modifier_device. - </para> - <para> - <constant>XUngrabDeviceKey</constant> can generate - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadValue</constant> and <constant>BadWindow</constant> - errors. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGrabDeviceKey</constant> request was - made specifying a device that has no keys, or a - modifier device that has no keys. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined Window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XAllowDeviceEvents(3), XGrabDevice(3), XGrabDeviceButton(3)</para> - </refsect1> -</refentry> - -<refentry id="XGrabDevice.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XGrabDevice</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XGrabDevice</refname> - <refname>XUngrabDevice</refname> - <refpurpose>grab/release the specified extension device</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef> int <function>XGrabDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>Bool <parameter>owner_events</parameter></paramdef> - <paramdef>int <parameter>event_count</parameter></paramdef> - <paramdef>XEventClass *<parameter>event_list</parameter></paramdef> - <paramdef>int <parameter>this_device_mode</parameter></paramdef> - <paramdef>int <parameter>other_devices_mode</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XUngrabDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device to be grabbed or - released. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>grab_window</parameter></term> - <listitem><para>Specifies the id of a window to be - associated with the device. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>owner_events</parameter></term> - <listitem><para>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. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_count</parameter></term> - <listitem><para>Specifies the number of elements in the - event_list array. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_list</parameter></term> - <listitem><para>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. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>this_device_mode</parameter></term> - <listitem><para>Specifies further processing of events - from this device.You can pass - <constant>GrabModeSync</constant>or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>other_devices_mode</parameter></term> - <listitem><para>Specifies further processing of events - from other devices.You can pass - <constant>GrabModeSync</constant>or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>time</parameter></term> - <listitem><para>Specifies the time.You can pass either a - timestamp or <constant>CurrentTime</constant>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XGrabDevice</constant> request actively grabs - control of the device and generates - <constant>DeviceFocusIn</constant> and - <constant>DeviceFocusOut</constant> events. Further device events - are reported only to the grabbing - client.<constant>XGrabDevice</constant> 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 - <constant>False</constant>, all generated device events are - reported with respect to grab_window if selected. If owner_events - is <constant>True</constant> 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. - </para> - <para> - If the this_device_mode argument is - <constant>GrabModeAsync</constant>, 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 <constant>GrabModeSync</constant>, - 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 - <constant>XAllowDeviceEvents</constant> 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. - </para> - <para> - If other_devices_mode is <constant>GrabModeAsync</constant>, - processing of events from other devices is unaffected by - activation of the grab. If other_devices_mode is - <constant>GrabModeSync</constant>, 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 - <constant>XAllowDeviceEvents</constant> 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. - </para> - <para> - If the device is actively grabbed by some other client, - <constant>XGrabDevice</constant> fails and returns - <constant>AlreadyGrabbed</constant>. If grab_window is not - viewable, it fails and returns - <constant>GrabNotViewable</constant>. If the device is frozen by - an active grab of another client, it fails and returns - <constant>GrabFrozen</constant>. If the specified time is earlier - than the last-device-grab time or later than the current X server - time, it fails and returns <constant>GrabInvalidTime</constant>. - Otherwise, the last-device-grab time is set to the specified time - <constant>( CurrentTime</constant> is replaced by the current X - server time). - </para> - <para> - 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. - </para> - <para> - <constant>XGrabDevice</constant> can generate - <constant>BadClass</constant>, <constant>BadDevice</constant>, - <constant>BadValue</constant>, and <constant>BadWindow</constant> - errors. - </para> - <para> - The <constant>XUngrabDevice</constant> request releases the device - and any queued events if this client has it actively grabbed from - either <constant>XGrabDevice</constant> or - <constant>XGrabDeviceKey</constant>. If other devices are frozen - by the grab, <constant>XUngrabDevice</constant> thaws - them.<constant>XUngrabDevice</constant> 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 <constant>DeviceFocusIn</constant> and - <constant>DeviceFocusOut</constant> events. The X server - automatically performs an <constant>UngrabDevice</constant> - request if the event window for an active device grab becomes not - viewable. - </para> - <para> - <constant>XUngrabDevice</constant> can generate a - <constant>BadDevice</constant> error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined Window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XAllowDeviceEvents(3),XGrabDeviceButton(3),XGrabDeviceKey(3)</para> - </refsect1> -</refentry> - -<refentry id="XListInputDevices.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XListInputDevices</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XListInputDevices</refname> - <refname>XFreeDeviceList</refname> - <refpurpose>list available input devices</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>XDeviceInfo *<function>XListInputDevices</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int *<parameter>ndevices_return</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XFreeDeviceList</function></funcdef> - <paramdef>XDeviceInfo *<parameter>list</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>ndevices_return</parameter></term> - <listitem><para>Specifies a pointer to a variable where - the number of available devices canbe returned. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>list</parameter></term> - <listitem><para>Specifies the list of devices to free. The - <constant>XFreeDeviceList</constant> functionfrees - the list of available extension input devices. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XListInputDevices</constant> request lists the - available input devices. This list includes the core keyboard - and any physical input device - currently accessible through the X server, and any input devices - that are not currently accessible through the X server but could - be accessed if requested. - </para> - <para> - A master pointer is a virtual pointer device that does not - represent a physical device. It is visually represented through a - cursor. A master keyboard is a virtual keyboard device that does - not represent a physical device. It is virtually representd - through a keyboard focus. A master pointer and a master keyboard - are always paired (i.e. if shift is pressed on the master - keyboard, a pointer click would be a shift-click). Multiple master - pointer/keyboard pairs can exist. - </para> - <para> - X servers supporting the X Input Extension version 2, - <constant>XListInputDevices</constant> only returns the first - master pointer, the first master keyboard and all slave - devices. Additional master devices are not listed. - </para> - <para> - Physical devices (so-called slave devices) are attached to either - a master pointer or a master keyboard, depending on their - capabilities. If a slave device generates an event, the event is - also generated by the respective master device. Multiple slave - devices can be attached to a single master device. - </para> - <para> - Some server implementations may make all physical input devices - available at the time the server is initialized. Others may wait - until requested by a client to access an input device. In the - latter case, it is possible that an input device will be listed as - available at one time but not at another. - </para> - <para> - For each input device available to the server, the - XListInputDevices request returns an XDeviceInfo structure. That - structure contains a pointer to a list of structures, each of - which contains information about one class of input supported by - the device. The XDeviceInfo structure is defined as follows: - - <synopsis> - typedef struct _XDeviceInfo { - XID <structfield>id</structfield>; - Atom <structfield>type</structfield>; - char *<structfield>name</structfield>; - int <structfield>num_classes</structfield>; - int <structfield>use</structfield>; - XAnyClassPtr <structfield>inputclassinfo</structfield>; - } <structname>XDeviceInfo</structname>; - </synopsis> - </para> - - <para> - The id is a number in the range 0-128 that uniquely identifies the - device. It is assigned to the device when it is initialized by the - server. - </para> - <para> - The type field is of type Atom and indicates the nature of the - device. - </para> - <para> - The name field contains a pointer to a null-terminated string that - corresponds to one of the defined device types. The name will - correspond to one of the following strings (defined in the header - file <constant>XI.h</constant>: - </para> - <para> - <constant>XI_MOUSE</constant> - <constant>XI_TABLET</constant> - <constant>XI_KEYBOARD</constant> - <constant>XI_TOUCHSCREEN</constant> - <constant>XI_TOUCHPAD</constant> - <constant>XI_BUTTONBOX</constant> - <constant>XI_BARCODE</constant> - <constant>XI_TRACKBALL</constant> - <constant>XI_QUADRATURE</constant> - <constant>XI_ID_MODULE</constant> - <constant>XI_ONE_KNOB</constant> - <constant>XI_NINE_KNOB</constant> - <constant>XI_KNOB_BOX</constant> - <constant>XI_SPACEBALL</constant> - <constant>XI_DATAGLOVE</constant> - <constant>XI_EYETRACKER</constant> - <constant>XI_CURSORKEYS</constant> - <constant>XI_FOOTMOUSE</constant> - <constant>XI_JOYSTICK</constant> - </para> - <para> - These names may be directly compared with the name field of the - XDeviceInfo structure, or used in an XInternAtom request to return - an atom that can be compared with the type field of the - XDeviceInfo structure. - </para> - <para> - The num_classes field is a number in the range 0-255 that - specifies the number of input classes supported by the device for - which information is returned by ListInputDevices. Some input - classes, such as class Focus and class Proximity do not have any - information to be returned by ListInputDevices. - </para> - <para> - All devices provide an AttachClass. This class specifies the - master device a given slave device is attached to. For master - devices, the class specifies the respective paired master device. - </para> - <para> - The use field specifies how the device is currently being used. If - the value is <constant>IsXKeyboard</constant>, the device is a - master keyboard. If the value is <constant>IsXPointer</constant>, - the device is a master pointer. If the value is - <constant>IsXExtensionPointer</constant>, the device is a slave - pointer. If the value is - <constant>IsXExtensionKeyboard</constant>, the device is a slave - keyboard. If the value is <constant>IsXExtensionDevice</constant>, - the device is available for use as an extension device. - </para> - <para> - The inputclassinfo field contains a pointer to the first - input-class specific data. The first two fields are common to all - classes. - </para> - <para> - The class field is a number in the range 0-255. It uniquely - identifies the class of input for which information is returned. - Currently defined classes are KeyClass, ButtonClass, and - ValuatorClass. - </para> - <para> - The length field is a number in the range 0- 255. It specifies the - number of bytes of data that are contained in this input class. - The length includes the class and length fields. - </para> - <para> - The XKeyInfo structure describes the characteristics of the keys - on the device. It is defined as follows: - </para> - <para> - <synopsis> - typedef struct _XKeyInfo { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - unsigned short <structfield>min_keycode</structfield>; - unsigned short <structfield>max_keycode</structfield>; - unsigned short <structfield>num_keys</structfield>; - } <structname>XKeyInfo</structname>; - - </synopsis> - </para> - <para> - min_keycode is of type KEYCODE. It specifies the minimum keycode - that the device will report. The minimum keycode will not be - smaller than 8. - </para> - <para> - max_keycode is of type KEYCODE. It specifies the maximum keycode - that the device will report. The maximum keycode will not be - larger than 255. - </para> - <para> - num_keys specifies the number of keys that the device has. - </para> - <para> - The XButtonInfo structure defines the characteristics of the - buttons on the device. It is defined as follows: - </para> - <para> - <synopsis> - typedef struct _XButtonInfo { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - short <structfield>num_buttons</structfield>; - } <structname>XButtonInfo</structname>; - </synopsis> - </para> - <para> - num_buttons specifies the number of buttons that the device has. - </para> - <para> - The XValuatorInfo structure defines the characteristics of the - valuators on the device. It is defined as follows: - </para> - <para> - <synopsis> - typedef struct _XValuatorInfo { - XID <structfield>class</structfield>; - int <structfield>length</structfield>; - unsigned char <structfield>num_axes</structfield>; - unsigned char <structfield>mode</structfield>; - unsigned long <structfield>motion_buffer</structfield>; - XAxisInfoPtr <structfield>axes</structfield>; - } <structname>XValuatorInfo</structname>; - </synopsis> - </para> - <para> - num_axes contains the number of axes the device supports. - </para> - <para> - mode is a constant that has one of the following values: Absolute - or Relative. Some devices allow the mode to be changed dynamically - via the SetDeviceMode request. - </para> - <para> - motion_buffer_size is a cardinal number that specifies the number - of elements that can be contained in the motion history buffer for - the device. - </para> - <para> - The axes field contains a pointer to an XAxisInfo structure. - </para> - <para> - The XAxisInfo structure is defined as follows: - </para> - <para> - <synopsis> - typedef struct _XAxisInfo { - int <structfield>resolution</structfield>; - int <structfield>min_value</structfield>; - int <structfield>max_value</structfield>; - } <structname>XAxisInfo</structname>; - </synopsis> - </para> - <para> - The resolution contains a number in counts/meter. - </para> - <para> - The min_val field contains a number that specifies the minimum - value the device reports for this axis. For devices whose mode is - Relative, the min_val field will contain 0. - </para> - <para> - The max_val field contains a number that specifies the maximum - value the device reports for this axis. For devices whose mode is - Relative, the max_val field will contain 0. - </para> - <para> - The XAttachInfo structure is defined as follows: - - <synopsis> - typedef struct _XAttachInfo { - int <structfield>attached</structfield>; - } <structname>XAttachInfo</structname>; - </synopsis> - </para> - <para> - If the device is a slave device, attached specifies the device ID - of the master device this device is attached to. If the device is - not attached to a master device, attached is - <constant>Floating</constant>. If the device is a master device, - attached specifies the device ID of the master device this device - is paired with. - </para> - <para> - To free the <constant>XDeviceInfo</constant> array created by - <constant>XListInputDevices</constant>, use - <constant>XFreeDeviceList</constant>. - </para> - </refsect1> -</refentry> - -<refentry id="XOpenDevice.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XOpenDevice</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XOpenDevice</refname> - <refname>XCloseDevice</refname> - <refpurpose>open or close an extension input device</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>XDevice *<function>XOpenDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XID <parameter>device_id</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef><function>XCloseDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device_id</parameter></term> - <listitem><para>Specifies the id of the device to be - opened</para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device to be - closed</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XOpenDevice</constant> request makes an input - device accessible to a client through input extension protocol - requests. If successful, it returns a pointer to an - <constant>XDevice</constant> structure. - </para> - <para> - The <constant>XCloseDevice</constant> request makes an input - device inaccessible to a client through input extension protocol - requests. Before terminating, and client that has opened input - devices through the input extension should close them via - <constant>CloseDevice</constant>. - </para> - <para> - When a client makes an <constant>XCloseDevice</constant> request, - any active grabs that the client has on the device are released. - Any event selections that the client has are deleted, as well as - any passive grabs. If the requesting client is the last client - accessing the device, the server may disable all access by X to - the device. - </para> - <para> - <constant>XOpenDevice</constant> and - <constant>XCloseDevice</constant> can generate a - <constant>BadDevice</constant> error. - </para> - </refsect1> - <refsect1><title>Structures</title> - <para> - The <constant>XDevice</constant> structure returned by - <constant>XOpenDevice</constant> contains: - - <synopsis> - typedef struct { - XID <structfield>device_id</structfield>; - int <structfield>num_classes</structfield>; - XInputClassInfo *<structfield>classes</structfield>; - } <structname>XDevice</structname>; - </synopsis> - </para> - <para> - The classes field is a pointer to an array of XInputClassInfo - structures. Each element of this array contains an event type base - for a class of input supported by the specified device. The - num_classes field indicates the number of elements in the classes - array. - </para> - <para> - The <constant>XInputClassInfo</constant> structure contains: - </para> - <para> - <synopsis> - typedef struct { - unsigned char <structfield>input_class</structfield>; - unsigned char <structfield>event_type_base</structfield>; - } <structname>XInputClassInfo</structname>; - </synopsis> - </para> - <para> - The input_class field identifies one class of input supported by - the device. Defined types include <constant>KeyClass</constant>, - <constant>ButtonClass</constant>, - <constant>ValuatorClass</constant>, - <constant>ProximityClass</constant>, - <constant>FeedbackClass</constant>, - <constant>FocusClass</constant>, and - <constant>OtherClass</constant>. The event_type_base identifies - the event type of the first event in that class. - </para> - <para> - The information contained in the - <constant>XInputClassInfo</constant> structure is used by macros - to obtain the event classes that clients use in making - <constant>XSelectExtensionEvent</constant> requests. Currently - defined macros include <constant>DeviceKeyPress</constant>, - <constant>DeviceKeyRelease</constant>, - <constant>DeviceButtonPress</constant>, - <constant>DeviceButtonRelese</constant>, - <constant>DeviceMotionNotify</constant>, - <constant>DeviceFocusIn</constant>, - <constant>DeviceFocusOut</constant>, - <constant>ProximityIn</constant>, - <constant>ProximityOut</constant>, - <constant>DeviceStateNotify</constant>, - <constant>DeviceMappingNotify</constant>, - <constant>ChangeDeviceNotify</constant>, - <constant>DevicePointerMotionHint</constant>, - <constant>DeviceButton1Motion</constant>, - <constant>DeviceButton2Motion</constant>, - <constant>DeviceButton3Motion</constant>, - <constant>DeviceButton4Motion</constant>, - <constant>DeviceButton5Motion</constant>, - <constant>DeviceButtonMotion</constant>, - <constant>DeviceOwnerGrabButton</constant>, - <constant>DeviceButtonPressGrab</constant>, and - <constant>NoExtensionEvent</constant>. - </para> - <para> - To obtain the proper event class for a particular device, one of - the above macros is invoked using the <constant>XDevice</constant> - structure for that device. For example, - <synopsis> - DeviceKeyPress (*device, type, eventclass); - </synopsis> - </para> - <para> - returns the <constant>DeviceKeyPress</constant> event type and the - eventclass for <constant>DeviceKeyPress</constant> events from the - specified device. - </para> - <para> - This <constant>eventclass</constant> can then be used in an - <constant>XSelectExtensionEvent</constant> request to ask the - server to send <constant>DeviceKeyPress</constant> events from - this device. When a selected event is received via - <constant>XNextEvent</constant>, the <constant>type</constant> can - be used for comparison with the type in the event. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist, or is the X - keyboard or X pointer. This error may also occur - if some other client has caused the specified - device to become the X keyboard or X pointer - device via the - <constant>XChangeKeyboardDevice</constant> or - <constant>XChangePointerDevice</constant> - requests. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XQueryDeviceState.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XQueryDeviceState</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XQueryDeviceState</refname> - <refpurpose>query the state of an extension input device.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XQueryDeviceState</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose state is to be - queried. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XQueryDeviceState</constant> request queries the - state of an input device. The current state of keys and buttons - (up or down), and valuators (current value) on the device is - reported by this request. Each key or button is represented by a - bit in the <constant>XDeviceState</constant> structure that is - returned. Valuators on the device report 0 if they are reporting - relative information, and the current value if they are reporting - absolute information. - </para> - <para> - <constant>XQueryDeviceState</constant> can generate a - <constant>BadDevice</constant> error. - </para> - </refsect1> - <refsect1><title>Structures</title> - <para> - The <constant>XDeviceState</constant> structure contains: </para> - <para> - <synopsis> - typedef struct { - XID <structfield>device_id</structfield>; - int <structfield>num_classes</structfield>; - XInputClass *<structfield>data</structfield>; - } <structname>XDeviceState</structname>; - </synopsis> - </para> - <para> - The <constant>XValuatorState</constant> structure contains: </para> - <para> - <synopsis> - typedef struct { - unsigned char <structfield>class</structfield>; - unsigned char <structfield>length</structfield>; - unsigned char <structfield>num_valuators</structfield>; - unsigned char <structfield>mode</structfield>; - int *<structfield>valuators</structfield>; - } <structname>XValuatorState</structname>; - </synopsis> - </para> - <para> - The <constant>XKeyState</constant> structure contains: </para> - <para> - <synopsis> - typedef struct { - unsigned char <structfield>class</structfield>; - unsigned char <structfield>length</structfield>; - short <structfield>num_keys</structfield>; - char <structfield>keys</structfield>[32]; - } <structname>XKeyState</structname>; - </synopsis> - </para> - <para> - The <constant>XButtonState</constant> structure contains: </para> - <para> - <synopsis> - typedef struct { - unsigned char <structfield>class</structfield>; - unsigned char <structfield>length</structfield>; - short <structfield>num_buttons</structfield>; - char <structfield>buttons</structfield>[32]; - } <structname>XButtonState</structname>; - </synopsis> - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if some other client has caused the - specified device to become the X keyboard or X - pointer device via the - <constant>XChangeKeyboardDevice</constant> or - <constant>XChangePointerDevice</constant> - requests. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - - -<refentry id="XSelectExtensionEvent.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XSelectExtensionEvent</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XSelectExtensionEvent</refname> - <refname>XGetSelectedExtensionEvents</refname> - <refpurpose>select extension events, get the list of currently - selected extension events</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef><function>XSelectExtensionEvent</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window <parameter>w</parameter></paramdef> - <paramdef>XEventClass *<parameter>event_list</parameter></paramdef> - <paramdef>int <parameter>event_count</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef><function>XGetSelectedExtensionEvents</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window <parameter>w</parameter></paramdef> - <paramdef>int <parameter>this_client_event_count_return</parameter></paramdef> - <paramdef>XEventClass *<parameter>this_client_event_list_return</parameter></paramdef> - <paramdef>int <parameter>all_clients_event_count_return</parameter></paramdef> - <paramdef>XEventClass *<parameter>all_clients_event_list_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>w</parameter></term> - <listitem><para>Specifies the window whose events you - are interested in. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_list</parameter></term> - <listitem><para>Specifies the list of event classes - that describe the events you are interested - in. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_count</parameter></term> - <listitem><para>Specifies the count of event classes - in the event list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>this_client_event_count_return</parameter></term> - <listitem><para>Returns the count of event classes - selected by this client. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>this_client_event_list_return</parameter></term> - <listitem><para>Returns a pointer to the list of event - classes - selected by this client. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>all_clients_event_count_return</parameter></term> - <listitem><para>Returns the count of event classes - selected by all clients. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>all_clients_event_list_return</parameter></term> - <listitem><para>Returns a pointer to the list of event - classes selected by all clients. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - <refsect1><title>Description</title> - <para> - The <constant>XSelectExtensionEvent</constant> request causes - the X server to report the events associated with the - specified list of event classes. Initially, X will not report - any of these events. Events are reported relative to a - window. If a window is not interested in a device event, it - usually propagates to the closest ancestor that is interested, - unless the do_not_propagate mask prohibits it. </para><para> - - Multiple clients can select for the same events on the same window - with the following restrictions: - <itemizedlist> - <listitem> - <para> - Multiple clients can select events on the same - window because their event masks are disjoint. - When the X server generates an event, it reports - it to all interested clients. - </para> - </listitem> - <listitem> - <para> - Only one client at a time can select a - <constant>DeviceButtonPress</constant> event with - automatic passive grabbing enabled, which is - associated with the event class - <constant>DeviceButtonPressGrab</constant>. To - receive <constant>DeviceButtonPress</constant> - events without automatic passive grabbing, use - event class <constant>DeviceButtonPress</constant> - but do not specify event class - <constant>DeviceButtonPressGrab</constant>. - </para> - </listitem> - </itemizedlist> - The server reports the event to all interested clients. - </para><para> - - Information contained in the <constant>XDevice</constant> - structure returned by <constant>XOpenDevice</constant> is used by - macros to obtain the event classes that clients use in making - <constant>XSelectExtensionEvent</constant> requests. Currently - defined macros include <constant>DeviceKeyPress</constant>, - <constant>DeviceKeyRelease</constant>, - <constant>DeviceButtonPress</constant>, - <constant>DeviceButtonRelese</constant>, - <constant>DeviceMotionNotify</constant>, - <constant>DeviceFocusIn</constant>, - <constant>DeviceFocusOut</constant>, - <constant>ProximityIn</constant>, - <constant>ProximityOut</constant>, - <constant>DeviceStateNotify</constant>, - <constant>DeviceMappiingNotify</constant>, - <constant>ChangeDeviceNotify</constant>, - <constant>DevicePointerMotionHint</constant>, - <constant>DeviceButton1Motion</constant>, - <constant>DeviceButton2Motion</constant>, - <constant>DeviceButton3Motion</constant>, - <constant>DeviceButton4Motion</constant>, - <constant>DeviceButton5Motion</constant>, - <constant>DeviceButtonMotion</constant>, - <constant>DeviceOwnerGrabButton</constant>, - <constant>DeviceButtonPressGrab</constant>, and - <constant>NoExtensionEvent</constant>. </para><para> - - To obtain the proper event class for a particular device, one of the above - macros is invoked using the <constant>XDevice</constant> structure - for that device. For example, - <synopsis> - DeviceKeyPress (*device, type, eventclass); - </synopsis> - returns the <constant>DeviceKeyPress</constant> event type and the - eventclass for selecting <constant>DeviceKeyPress</constant> - events from this device. - </para> - <para> - <constant>XSelectExtensionEvent</constant> can generate a - <constant>BadWindow</constant> or <constant>BadClass</constant> - error. The <constant>XGetSelectedExtensionEvents</constant> - request reports the extension events selected by this client and - all clients for the specified window. This request returns - pointers to two <constant>XEventClass</constant> arrays. One - lists the input extension events selected by this client from the - specified window. The other lists the event classes selected by - all clients from the specified window. You should use - <constant>XFree</constant> to free these - two arrays. - </para> - <para> - <constant>XGetSelectedExtensionEvents</constant> - can generate a <constant>BadWindow</constant> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. - </para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadClass</errorname></term><listitem> - <para> - A value for an <constant>XEventClass</constant> is - invalid. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - -</refentry> - - -<refentry id="XSendExtensionEvent.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XSendExtensionEvent</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XSendExtensionEvent</refname> - <refpurpose>send input extension events to a client</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XSendExtensionEvent</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Window <parameter>destination</parameter></paramdef> - <paramdef>Bool <parameter>propagate</parameter></paramdef> - <paramdef>int <parameter>event_count</parameter></paramdef> - <paramdef>XEventClass *<parameter>event_list</parameter></paramdef> - <paramdef>XEvent *<parameter>event_send</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X - server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device from which the - events are to be sent. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>destination</parameter></term> - <listitem><para>Specifies the window the event is to - be sent to. You can pass window id, - <constant>PointerWindow</constant>,or - <constant>InputFocus</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>propagate</parameter></term> - <listitem><para>Specifies a Boolean value that is - either True or False. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_count</parameter></term> - <listitem><para>Specifies the count of XEventClasses - in event_list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_list</parameter></term> - <listitem><para>Specifies the list of event selections - to be used. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>event_send</parameter></term> - <listitem><para>Specifies a pointer to the event that - is to be sent. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - <refsect1><title>Description</title> - <para> - The <constant>XSendExtensionEvent</constant> request - identifies the destination - window, determines which clients should receive the specified - events, and ignores any active grabs. This request requires you - to pass an event class list. For a discussion of the valid event - class names, see - <constant>XOpenDevice(__libmansuffix__)</constant> - This request uses the w argument to identify the destination - window as follows: - <itemizedlist> - <listitem> - <para> - If w is <constant>PointerWindow</constant>,the - destination window is the window that contains the - pointer. - </para> - </listitem> - <listitem> - <para>If w is <constant>InputFocus</constant>and if the - focus window contains the pointer,the destination - window is the window that contains the pointer; - otherwise, the destination window is the focus window. - </para> - </listitem> - </itemizedlist> - </para> - <para> - To determine which clients should receive the specified events, - <constant>XSendExtensionEvent</constant>uses the propagate - argument as follows: - <itemizedlist> - <listitem> - <para> If event_list is the empty set,the event is sent to - the client that created the destination window. If - that client no longer exists,no event is sent. - </para> - </listitem> - <listitem> - <para>If propagate is <constant>False</constant>,the event - is sent to every client selecting on destination any - of the eventtypes specified by the event_list array. - </para> - </listitem> - <listitem> - <para>If propagate is <constant>True</constant>and no - clients have selected on destination any ofthe events - specified by the event_list array,the destination is - replaced with theclosest ancestor of destination for - which some client has selected atype specified by the - event-list array and for which no interveningwindow - has that type in itsdo-not-propagate-mask. If no such - window exists or if the window isan ancestor of the - focus window and <constant>InputFocus</constant>was - originally specifiedas the destination, the event is - not sent to any clients. Otherwise, the event is - reported to every client selecting on the - finaldestination any of the events specified in the - event_list array. - </para> - </listitem> - </itemizedlist> - </para> - <para> - The event in the <constant>XEvent</constant>structure must be one - of the events defined by the input extension (or a - <constant>BadValue</constant>error results) so that the X server - can correctly byte-swapthe contents as necessary. The contents of - the event areotherwise unaltered and unchecked by the X server - except to force send_event to <constant>True</constant>in the - forwarded event and to set the serial number in the event - correctly. - </para> - <para> - <constant>XSendExtensionEvent</constant>returns zero if the - conversion to wire protocol format failedand returns nonzero - otherwise.<constant>XSendExtensionEvent</constant>can generate - <constant>BadClass</constant>, <constant>BadDevice</constant>, - <constant>BadValue</constant>, and <constant>BadWindow</constant> - errors. - </para> - </refsect1> - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem> - <para> - 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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. -</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XSetDeviceButtonMapping.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XSetDeviceButtonMapping</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XSetDeviceButtonMapping</refname> - <refname>XGetDeviceButtonMapping</refname> - <refpurpose>query or change device button mappings</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XSetDeviceButtonMapping</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>unsigned char <parameter>map</parameter>[]</paramdef> - <paramdef>int <parameter>nmap</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XGetDeviceButtonMapping</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>unsigned char <parameter>map_return</parameter>[]</paramdef> - <paramdef>int <parameter>nmap</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose button mapping - is to be queried or changed. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>map</parameter></term> - <listitem><para>Specifies the mapping list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>map_return</parameter></term> - <listitem><para>Returns the mapping list. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>nmap</parameter></term> - <listitem><para>Specifies the number of items in the - mapping list. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XSetDeviceButtonMapping</constant> request sets - the mapping of the specified device. If it succeeds, the X server - generates a <constant>DeviceMappingNotify</constant> event, and - <constant>XSetDeviceButtonMapping</constant> returns - <constant>MappingSuccess</constant>. Element map[i] defines the - logical button number for the physical button i+1. The length of - the list must be the same as - <constant>XGetDeviceButtonMapping</constant> would return, or a - <constant>BadValue</constant> error results. A zero element - disables a button, and elements are not restricted in value by the - number of physical buttons. However, no two elements can have the - same nonzero value, or a <constant>BadValue</constant> error - results. If any of the buttons to be altered are logically in the - down state, <constant>XSetDeviceButtonMapping</constant> returns - <constant>MappingBusy</constant>, and the mapping is not changed. - </para> - <para> - <constant>XSetDeviceButtonMapping</constant> can generate - <constant>BadDevice</constant>, <constant>BadMatch</constant>, and - <constant>BadValue</constant> errors. - </para> - <para> - The <constant>XGetDeviceButtonMapping</constant> request returns - the current mapping of the specified device. Buttons are numbered - starting from one.<constant>XGetDeviceButtonMapping</constant> - returns the number of physical buttons actually on the device. The - nominal mapping for a device is map[i]=i+1. The nmap argument - specifies the length of the array where the device mapping is - returned, and only the first nmap elements are returned in - map_return. - </para> - <para> - <constant>XGetDeviceButtonMapping</constant> can generate - <constant>BadDevice</constant> or <constant>BadMatch</constant> - errors. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetDeviceButtonMapping</constant> or - <constant>XSetDeviceButtonMapping</constant> - request was made specifying a device that has no - buttons. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XChangeDeviceKeyboardControl(3), XChangeDeviceKeyMapping(3), - XChangeDeviceModifierMapping(3)</para> - </refsect1> -</refentry> - - -<refentry id="XSetDeviceFocus.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XSetDeviceFocus</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XSetDeviceFocus</refname> - <refname>XGetDeviceFocus</refname> - <refpurpose>control extension input device focus</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef><function>XSetDeviceFocus</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Window <parameter>focus</parameter></paramdef> - <paramdef>int <parameter>revert_to</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef><function>XGetDeviceFocus</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Window *<parameter>focus_return</parameter></paramdef> - <paramdef>int *<parameter>revert_to_return</parameter></paramdef> - <paramdef>int * <parameter>time_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose focus is to be - queried or changed. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>focus</parameter></term> - <listitem><para>Specifies the window, - <constant>PointerRoot</constant>, - <constant>FollowKeyboard</constant>,or - <constant>None</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>focus_return</parameter></term> - <listitem><para>Returns the focus window, - <constant>PointerRoot</constant>, - <constant>FollowKeyboard</constant>,or - <constant>None</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>revert_to</parameter></term> - <listitem><para>Specifies where the input focus reverts to - if the window becomes notviewable.You can pass - <constant>RevertToParent</constant>, - <constant>RevertToPointerRoot</constant>, - <constant>RevertToFollowKeyboard</constant>,or - <constant>RevertToNone</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>revert_to_return</parameter></term> - <listitem><para>Returns the current focus state - <constant>RevertToParent</constant>, - <constant>RevertToPointerRoot</constant>, - <constant>RevertToFollowKeyboard</constant>,or - <constant>RevertToNone</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>time_return</parameter></term> - <listitem><para>Returns the last_focus_time for the - device. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>time</parameter></term> - <listitem><para>Specifies the time.You can pass either a - timestamp or <constant>CurrentTime</constant>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XSetDeviceFocus</constant> request changes the - focus of the specified device and its last-focus-change time. It - has no effect if the specified time is earlier than the current - last-focus-change time or is later than the current X server time. - Otherwise, the last-focus-change time is set to the specified time - <constant>CurrentTime</constant> is replaced by the current X - server time). <constant>XSetDeviceFocus</constant> causes the X - server to generate <constant>DeviceFocusIn</constant> and - <constant>DeviceFocusOut</constant> events. - </para> - <para> - Depending on the focus argument, the following occurs: - - <itemizedlist> - <listitem><para> If focus is <constant>None</constant> , all - device events are discarded until a new focus window - is set, and the revert_to argument is ignored. - </para></listitem> - <listitem><para>If focus is a window, it becomes the device's - focus window. If a generated device event would - normally be reported to this window or one of its - inferiors, the event is reported as usual. Otherwise, - the event is reported relative to the focus window. - </para></listitem> - <listitem><para> - If focus is <constant>PointerRoot</constant>, the - focus window is dynamically taken to be the root - window of whatever screen the pointer is on at each - event from the specified device. In this case, the - revert_to argument is ignored. - </para></listitem> - <listitem><para> - If focus is <constant>FollowKeyboard</constant>, the - focus window is dynamically taken to be the window to - which the X keyboard focus is set at each input event. - </para> - </listitem> - </itemizedlist> - </para> - <para> - The specified focus window must be viewable at the time - <constant>XSetDeviceFocus</constant> is called, or a - <constant>BadMatch</constant> error results. If the focus window - later becomes not viewable, the X server evaluates the revert_to - argument to determine the new focus window as follows: - - <itemizedlist> - <listitem><para>If revert_to is - <constant>RevertToParent</constant>, the focus reverts - to the parent (or the closest viewable ancestor), and - the new revert_to value is taken to be - <constant>RevertToNone</constant>. - </para></listitem> - <listitem><para> - If revert_to is - <constant>RevertToPointerRoot</constant>, - <constant>RevertToFollowKeyboard</constant>, or - <constant>RevertToNone</constant>, the focus reverts - to <constant>PointerRoot</constant>, - <constant>FollowKeyboard</constant>, or - <constant>None</constant>, respectively. - </para> - </listitem> - </itemizedlist> - </para> - <para> - When the focus reverts, the X server generates - <constant>DeviceFocusIn</constant> and - <constant>DeviceFocusOut</constant> events, but the - last-focus-change time is not affected. - </para> - <para> Input extension devices are not required to support the ability - to be focused. Attempting to set the focus of a device that does - not support this request will result in a - <constant>BadMatch</constant> error. Whether or not given device - can support this request can be determined by the - information returned by <constant>XOpenDevice</constant>. For - those devices that support focus, - <constant>XOpenDevice</constant> will return an - <constant>XInputClassInfo</constant> structure with the - input_class field equal to the constant - <constant>FocusClass</constant> (defined in the file - <constant>XI.h</constant>). - </para> - <para> - <constant>XSetDeviceFocus</constant> can generate - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadValue</constant>, and - <constant>BadWindow</constant> errors. - </para> - <para> - The <constant>XGetDeviceFocus</constant> request returns the - focus window and the current focus state. - </para> - <para> - Not all input extension devices can be focused. Attempting to - query the focus state of a device that can't be focused results in - a <constant>BadMatch</constant> error. A device that can be - focused returns information for input Class Focus when an - <constant>XOpenDevice</constant> request is made. - </para> - <para> - <constant>XGetDeviceFocus</constant> can generate - <constant>BadDevice</constant>, and <constant>BadMatch</constant> - errors. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if the specified device is the X - keyboard or X pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined Window. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XGetDeviceFocus</constant> or - <constant>XSetDeviceFocus</constant> request was - made specifying a device that the server - implementation does not allow to be focused. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - - -<refentry id="XSetDeviceMode.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XSetDeviceMode</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XSetDeviceMode</refname> - <refpurpose>change the mode of a device</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef><function>XSetDeviceMode</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>int <parameter>mode</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose mode is to be - changed. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>mode</parameter></term> - <listitem><para>Specifies the mode.You can pass - <constant>Absolute</constant>,or - <constant>Relative</constant>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XSetDeviceMode</constant> request changes the - mode of an input device that is capable of reporting either - absolute positional information or relative motion information. - Not all input devices are capable of reporting motion data, and - not all are capable of changing modes from - <constant>Absolute</constant> to <constant>Relative</constant>. - </para> - <para> - <constant>XSetDeviceMode</constant> can generate a - <constant>BadDevice</constant> or <constant>BadMode</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. This error - may also occur if some other client has caused the - specified device to become the X keyboard or X - pointer device via the - <constant>XChangeKeyboardDevice</constant> or - <constant>XChangePointerDevice</constant> - requests. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XSetDeviceMode</constant> request is - made specifying a device that has no valuators and - reports no axes of motion. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMode</errorname></term> - <listitem><para>An invalid mode was specified. This error - will also be returned if the specified device is - not capable of supporting the - <constant>XSetDeviceMode</constant> request. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - - -<refentry id="XSetDeviceValuators.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XSetDeviceValuators</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XSetDeviceValuators</refname> - <refpurpose>initialize the valuators on an extension input device</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef><function>XSetDeviceValuators</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>int *<parameter>valuators</parameter></paramdef> - <paramdef>int <parameter>first_valuator</parameter></paramdef> - <paramdef>int <parameter>num_valuators</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device whose valuators are - to be initialized. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>valuators</parameter></term> - <listitem><para>Specifies a pointer to an array of integer - values to be used to initialize thedevice - valuators. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>first_valuator</parameter></term> - <listitem><para>Specifies the first valuator to be set. - Valuators are numbered beginning withzero. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>num_valuators</parameter></term> - <listitem><para>Specifies the number of valuators to be - set. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para>The <constant>XSetDeviceValuators</constant> request sets the - current values of the valuators of an input device. The valuators - in the range first_valuator to (first_valuator + num_valuators) - are set to the specified values. Valuators are numbered beginning - with 0. Not all input devices support initialization of valuator - values. If this request is made to a device that does not support - valuators initialization, a <constant>BadMatch</constant> error - will occur. - </para> - <para> - If the request succeeds, a status of Success is returned. If - another client has the device grabbed, a status of AlreadyGrabbed - is returned. - </para> - <para> - <constant>XSetDeviceValuators</constant> can generate a - <constant>BadLength</constant>, <constant>BadDevice</constant> , - <constant>BadMatch</constant>, or <constant>BadValue</constant> - error. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - specified device does not exist or has not been - opened by this client via - <constant>XOpenInputDevice</constant>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if an - <constant>XSetDeviceValuators</constant> request - is made specifying a device that has no valuators - and reports no axes of motion, or if such a - request is made specifying a device that does not - support valuator initialization. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>An invalid first_valuator or num_valuators - values was specified. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - -</refentry> - -<!-- XI 1.5 --> -<refentry id="XListDeviceProperty.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>July 9, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XListDeviceProperties</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> - </refmeta> - <refnamediv> - <refname>XListDeviceProperties</refname> - <refpurpose>List a device's properties.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Atom* <function>XListDeviceProperties</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>int *<parameter>nprops_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>device</parameter></term> - <listitem><para>The device to grab.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>nprops_return</parameter></term> - <listitem><para>Specifies the number of Atoms returned.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>num_values</parameter></term> - <listitem><para>Specifies the number of elements in the - values list.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>property</parameter></term> - <listitem><para>Specifies the property to modify or query.</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <function>XListDeviceProperties</function> function returns a - list of the properties associated with the input device specified - in <parameter>device</parameter>. - Each device may have an arbitrary number of properties attached, - some of which were created by the driver and/or server, others - created by clients at runtime. - </para> - <para>The client is expected to free the list of properties using - <function>XFree</function>.</para> - <para> - <function>XListDeviceProperties</function> can generate a - <errorname>BadDevice</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadAtom</errorname></term> - <listitem><para>A value does not describe a valid named - identifier.</para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. -</para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - device does not exist. -</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para> - <function>XChangeDeviceProperty</function>, - <function>XGetDeviceProperty</function>, - <function>XDeleteDeviceProperty</function>. - </para> - </refsect1> -</refentry> - -<refentry id="XGetDeviceProperties.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>July 9, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XGetDeviceProperty</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> - </refmeta> - <refnamediv> - <refname>XGetDeviceProperty</refname> - <refname>XChangeDeviceProperty</refname> - <refname>XDeleteDeviceProperty</refname> - <refpurpose>Get, change or delete a device's property.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XGetDeviceProperty</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Atom <parameter>property</parameter></paramdef> - <paramdef>long <parameter>offset</parameter></paramdef> - <paramdef>long <parameter>length</parameter></paramdef> - <paramdef>Bool <parameter>delete</parameter></paramdef> - <paramdef>Bool <parameter>pending</parameter></paramdef> - <paramdef>Atom <parameter>req_type</parameter></paramdef> - <paramdef>Atom *<parameter>actual_type_return</parameter></paramdef> - <paramdef>int *<parameter>actual_format_return</parameter></paramdef> - <paramdef>unsigned long *<parameter>nitems_return</parameter></paramdef> - <paramdef>unsigned long *<parameter>bytes_after_return</parameter></paramdef> - <paramdef>unsigned char **<parameter>prop_return</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>void <function>XChangeDeviceProperty</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Atom <parameter>property</parameter></paramdef> - <paramdef>Atom <parameter>type</parameter></paramdef> - <paramdef>int <parameter>format</parameter></paramdef> - <paramdef>int <parameter>mode</parameter></paramdef> - <paramdef>const char *<parameter>data</parameter></paramdef> - <paramdef>int <parameter>nelements</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>void <function>XDeleteDeviceProperty</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XDevice *<parameter>device</parameter></paramdef> - <paramdef>Atom <parameter>property</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>actual_type_return</parameter></term> - <listitem><para>Returns an atom identifier that defines - the actual type of the property.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>actual_format_return</parameter></term> - <listitem><para>Returns the actual format of the property. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>bytes_after_return</parameter></term> - <listitem><para>Returns the number of bytes remaining to - be read in the property if a partial read was - performed.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>data</parameter></term> - <listitem><para>Specifies the property data.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>delete</parameter></term> - <listitem><para>Specifies a Boolean value that determines - wether the property is deleted.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>device</parameter></term> - <listitem><para>The device to grab.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>format</parameter></term> - <listitem><para>Specifies whether the data should be - viewed as a list of 8-bit, 16-bit, or 32-bit - quantities. Possible values are 8, 16, and 32. - This information allows the X server to correctly - perform byte-swap operations as necessary. If the - format is 16-bit or 32-bit, you must explicitly - cast the data pointer to an (unsigned char*) in - the call to - <function>XChangeDeviceProperty</function>. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>length</parameter></term> - <listitem><para>Specifies the length in 32-bit multiplies - of the data to be retrieved.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>mode</parameter></term> - <listitem><para>Specifies the mode of operation. You can - pass <constant>PropModeReplace</constant>, - <constant>PropModePrepend</constant>, or - <constant>PropModeAppend</constant>. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>nelements</parameter></term> - <listitem><para>Specifies the number of elements in data.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>nitems_return</parameter></term> - <listitem><para>Returns the actual number of 8-bit, - 16-bit, or 32-bit items stored in the prop_return - array.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>num_values</parameter></term> - <listitem><para>Specifies the number of elements in the - values list.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>offset</parameter></term> - <listitem><para>Specifies the offset in the specified - property (in 32-bit quantities) where the data is - to be retrieved.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>pending</parameter></term> - <listitem><para>Specifies whether to retrieve the pending - state of the property or the current state.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>property</parameter></term> - <listitem><para>Specifies the property to modify or query.</para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>prop_return</parameter></term> - <listitem><para>Returns the data in the specified format. - If the returned format is 8, the returned data is - represented as a char array. If the returned - format is 16, the returned data is represented as - an array of short int type and should be cast to - that type to obtain the elements. If the returned - format is 32, the property data will be stored as - an array of longs (which in a 64-bit application - will be 64-bit values that are padded in the upper - 4 bytes). - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>req_type</parameter></term> - <listitem><para>Specifies the atom identifier associated - with the property type or - <constant>AnyPropertyType</constant>.</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <function>XGetDeviceProperty</function> function returns - the actual type of the property; the actual format of the property; - the number of 8-bit, 16-bit, or 32-bit items transferred; the number of bytes - remaining to be read in the property; and a pointer to the data actually - returned. - For a detailed description of this function, see the man page - to <function>XGetWindowProperty</function>. - </para> - <para> - The <function>XChangeDeviceProperty</function> function alters the - property for the specified device and causes the server to - generate a <function>XPropertyNotifyEvent</function> event on that - device. - For a detailed description of this function, see the man page to - <function>XChangeProperty</function>. - </para> - <para> - The <function>XDeleteDeviceProperty</function> function - deletes the specified device property. Note that a client cannot - delete a property created by a driver or the server. Attempting to - do so will result in a <errorname>BadAtom</errorname> error. - </para> - <para> - <function>XGetDeviceProperty</function> can generate a - <errorname>BadAtom</errorname>, - <errorname>BadDevice</errorname> error. - </para> - <para> - <function>XChangeDeviceProperty</function> can generate a - <errorname>BadDevice</errorname>, a - <errorname>BadMatch</errorname>, a - <errorname>BadAtom</errorname>, and a - <errorname>BadValue</errorname> error. - </para> - <para> - <function>XDeleteDeviceProperty</function> can generate a - <errorname>BadDevice</errorname>, and a - <errorname>BadAtom</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadAtom</errorname></term> - <listitem><para>A value does not describe a valid named - identifier or the client attempted to remove - a driver-allocated property.</para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - device does not exist. -</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para> - <function>XListDeviceProperties</function>, - <function>XQueryDeviceProperty</function>, - <function>XConfigureDeviceProperty</function>. - </para> - </refsect1> -</refentry> -<!--- XI2 --> -<refentry id="XISetClientPointer.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XISetClientPointer, XIGetClientPointer</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> - </refmeta> - <refnamediv> - <refname>XISetClientPointer</refname> - <refname>XIGetClientPointer</refname> - <refpurpose>set or get the ClientPointer device.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef><function>XISetClientPointer</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window <parameter>win</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>Bool <function>XIGetClientPointer</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window <parameter>win</parameter></paramdef> - <paramdef>int *<parameter>device</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>win</parameter></term> - <listitem><para>Specifies a window belonging to the - client. May be <constant>None</constant>. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>deviceid</parameter></term> - <listitem><para>Specifies the ClientPointer device. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The ClientPointer is the device that is percieved to be the core - pointer for non-XI protocol requests and replies. Each time a - protocol message needs device-dependent data and the device is - not explicitly given, the ClientPointer device is used to obtain - the data. For example, a <function>XQueryPointer</function> - request will return the coordinates of the ClientPointer. - </para> - <para> - <function>XISetClientPointer</function> request sets the - ClientPointer device for the client that owns the given window. If - <parameter>win</parameter> is <constant>None</constant>, the - requesting client's ClientPointer is set to the device specified - with <constant>deviceid</constant>. Only master pointer devices can be - set as ClientPointer. - </para> - <para> - <function>XISetClientPointer</function> and can generate a - <errorname>BadDevice</errorname> and a - <errorname>BadWindow</errorname> error. - </para> - <para> - The <function>XIGetClientPointer</function> request returns the - ClientPointer's device ID for the client that owns the given - window. If <parameter>win</parameter> is - <constant>None</constant>, the requesting client's ClientPointer - is returned. - </para> - <para> - <parameter>win</parameter> may be a client ID instead - of a window. - </para> - <para> - <function>XIGetClientPointer</function> can generate a - <errorname>BadWindow</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term><listitem> - <para> - An invalid device was specified. The device does - not exist or is not a master pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XIQueryPointer.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XIQueryPointer</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XIQueryPointer</refname> - <refpurpose> get device pointer coordinates.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Bool <function>XIQueryPointer</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Window <parameter>win</parameter></paramdef> - <paramdef>Window *<parameter>root_return</parameter></paramdef> - <paramdef>Window *<parameter>child_return</parameter></paramdef> - <paramdef>int *<parameter>root_x_return</parameter></paramdef> - <paramdef>int *<parameter>root_y_return</parameter></paramdef> - <paramdef>int *<parameter>win_x_return</parameter></paramdef> - <paramdef>int *<parameter>win_y_return</parameter></paramdef> - <paramdef>XIModifierState *<parameter>modifiers_return</parameter></paramdef> - <paramdef>XIGroupState *<parameter>group_return</parameter></paramdef> - <paramdef>XIButtonState *<parameter>buttons_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>buttons_return</parameter></term> - <listitem> - <para> - Returns the current button state. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>child_return</parameter></term> - <listitem> - <para> - Returns the child window that the pointer is - located in, if any. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>deviceid</parameter></term> - <listitem><para>Specifies the device to query. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>group_return</parameter></term> - <listitem> - <para> - Returns the current group state. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>modifiers_return</parameter></term> - <listitem> - <para> - Returns the current state of the modifier keys. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>root_return</parameter></term> - <listitem> - <para> - Returns the root window that the pointer is in. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>root_x_return</parameter></term> - <term><parameter>root_y_return</parameter></term> - <listitem> - <para> - Return the pointer coordinates relative to the root - window's origin. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>win</parameter></term> - <listitem> - <para> - Specifies the window. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>win_x_return</parameter></term> - <term><parameter>win_y_return</parameter></term> - <listitem><para> - Return the pointer coordinates relative to the - specified window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - The <function>XIQueryPointer</function> function returns the root - window the device's pointer is logically on and the pointer - coordinates relative to the root window's origin. If - <function>XIQueryPointer</function> returns - <constant>False</constant>, the pointer is not on the same screen as - the specified window, and - <function>XIQueryPointer</function> returns - <constant>None</constant> to <parameter>child_return</parameter> and - zero to <parameter>win_x_return</parameter> and - <parameter>win_y_return</parameter>. If - <function>XIQueryPointer</function> returns - <constant>True</constant>, the pointer coordinates returned to - <parameter>win_x_return</parameter> and - <parameter>win_y_return</parameter> are relative to the origin of the - specified window. In this case, - <function>XIQueryPointer</function> returns the child that - contains the pointer, if any, or else <constant>None</constant> to - <parameter>child_return</parameter>. - </para> - <para> - <function>XIQueryPointer</function> returns the current - logical state of the buttons - <parameter>buttons_return</parameter>. The keyboard paired with - the master pointer is selected to obtain the data for - <parameter>modifiers_return</parameter> and - <parameter>group_return</parameter>. - </para> - <para> - <function>XIQueryPointer</function> is identical to - <function>XQueryPointer</function> but specifies the device - explicitly. - </para> - <para> - <function>XIQueryPointer</function> can generate a - <errorname>BadDevice</errorname> and a - <errorname>BadWindow</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem> - <para> - An invalid device was specified. The device does - not exist or is not a pointer device. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. -</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - <refsect1><title>See also</title> - <para> - <function>XQueryPointer</function> - </para> - </refsect1> - -</refentry> - -<refentry id="XIDefineCursor.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XIDefineCursor, XIUndefineCursor</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XIDefineCursor</refname> - <refname>XIUndefineCursor</refname> - <refpurpose>define device cursors.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XDefineCursor</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Window <parameter>win</parameter></paramdef> - <paramdef>Cursor <parameter>cursor</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XUndefineCursor</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Window <parameter>win</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>cursor</parameter> </term><listitem> - <para> - Specifies the cursor that is to be displayed or - <constant>None</constant>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>deviceid</parameter></term> - <listitem><para>Specifies the device whose cursor is to - change. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>win</parameter></term> - <listitem><para>Specifies the window. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - If a cursor is set, it will be used when the device's pointer is in the - window. If the cursor is <constant>None</constant>, it is equivalent to - <function>XUndefineDefineCursor</function>. - </para> - <para> - <function>XIDefineCursor</function> can generate - <errorname>BadCursor</errorname> and - <errorname>BadWindow</errorname>. - </para> - <para> - The <function>XIUndefineCursor</function> function undoes the - effect of a previous <function>XIDefineCursor</function> for - this window. When the pointer is in the window, the window's - default cursor will now be used. If no default cursor is defined, - the parent's cursor for this device will be used (if defined) or - the parent's default cursor will be used. - </para> - <para> - <function>XIDefineCursor</function> and - <function>XIUndefineCursor</function> are identical to - <function>XDefineCursor</function> and - <function>XUndefineCursor</function> but specify the device - explicitly. - </para> - <para> - <function>XUndefineDevicePointer</function> can generate a - <errorname>BadDevice</errorname> and a - <errorname>BadWindow</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - device does not exist or is not a pointer - device. - </para></listitem> - - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - <refsect1> <title>See also</title> - <para> - <function>XDefineCursor</function>, - <function>XUndefineCursor</function> - </para> - </refsect1> -</refentry> - -<refentry id="XIWarpPointer.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XIWarpPointer</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XIWarpPointer</refname> - <refpurpose>move a device's pointer.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Bool <function>XIWarpPointer</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Window <parameter>src_w</parameter></paramdef> - <paramdef>Window <parameter>dest_w</parameter></paramdef> - <paramdef>int <parameter>src_x</parameter></paramdef> - <paramdef>int <parameter>src_y</parameter></paramdef> - <paramdef>int <parameter>src_width</parameter></paramdef> - <paramdef>int <parameter>src_height</parameter></paramdef> - <paramdef>int <parameter>dest_x</parameter></paramdef> - <paramdef>int <parameter>dest_y</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>dest_w</parameter></term> - <listitem> - <para> - Specifies the destination window or - <constant>None</constant>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>dest_x</parameter></term> - <term><parameter>dest_y</parameter></term> - <listitem> - <para> - Specify the x and y coordinates within the - destination window. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>deviceid</parameter></term> - <listitem><para>Specifies the master pointer device or - floating slave device to move. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>src_x</parameter></term> - <term><parameter>src_y</parameter></term> - <term><parameter>src_width</parameter></term> - <term><parameter>src_height</parameter></term> - <listitem> - <para> - Specify a rectangle in the source window. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>src_w</parameter></term> - <listitem> - <para> - Specifies the source window or - <constant>None</constant>. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - If <parameter>dest_w</parameter> is <constant>None</constant>, - <function>XIWarpPointer</function> moves the pointer by the - offsets (<parameter>dest_x</parameter>, - <parameter>dest_y</parameter>) relative to the current position - of the pointer. If - <parameter>dest_w</parameter> is a window, - <function>XIWarpPointer</function> moves the pointer to the - offsets - (<parameter>dest_x</parameter>, <parameter>dest_y</parameter>) - relative to the origin of <parameter>dest_w</parameter>. - However, if <parameter>src_w</parameter> is a window, the move - only takes place if the window <parameter>src_w</parameter> - contains the pointer and if the specified rectangle of - <parameter>src_w</parameter> contains the pointer. - </para> - <para> - The <parameter>src_x</parameter> and <parameter>src_y</parameter> - coordinates are relative to the origin of - <parameter>src_w</parameter>. If - <parameter>src_height</parameter> is zero, it is replaced with the - current height of <parameter>src_w</parameter> minus - <parameter>src_y</parameter>. If <parameter>src_w</parameter>idth - is zero, it is replaced with the current width of - <parameter>src_w</parameter> minus <parameter>src_x</parameter>. - </para> - <para> - There is seldom any reason for calling this function. The pointer - should normally be left to the user. If you do use this function, - however, it generates events just as if the user had - instantaneously moved the pointer from one position to another. - Note that you cannot use <function>XIWarpPointer</function> - to move the pointer outside the confine_to window of an active - pointer grab. An attempt to do so will only move the pointer as - far as the closest edge of the confine_to window. - </para> - <para> - <function>XIWarpPointer</function> is identical to - <function>XWarpPointer</function> but specifies the device - explicitly. - </para> - <para> - <function>XIWarpPointer</function> can generate a - <errorname>BadDevice</errorname> and a - <errorname>BadWindow</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - device does not exist or is not a pointer - device. - </para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - <refsect1><title>See also</title> - <para><function>XWarpPointer</function></para> - </refsect1> -</refentry> - -<refentry id="XIChangeHierarchy.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XIChangeHierarchy</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XIChangeHierarchy</refname> - <refpurpose>change the device hierarchy.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XIChangeHierarchy</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>XIAnyHierarchyChangeInfo *<parameter>changes</parameter></paramdef> - <paramdef>int <parameter>num_changes</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>num_changes</parameter></term> - <listitem> - <para> - Specifies the number of elements in changes. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>changes</parameter></term> - <listitem> - <para> - Specifies the changes to be made. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - <function>XIChangeHierarchy</function> modifies the device - hierarchy by creating or removing master devices or changing the - attachment of slave devices. If <parameter>num_changes</parameter> - is non-zero, <parameter>changes</parameter> is an array of - <type>XIAnyHierarchyChangeInfo</type> structures. - </para> - <para> - <function>XIChangeHierarchy</function> processes - <parameter>changes</parameter> in order, effective immediately. If - an error occurs, processing is aborted and the error is reported - to the client. Changes already made remain effective. - </para> - <para> - The list of <parameter>changes</parameter> is any combination of - <structname>XIAnyHierarchyChangeInfo</structname>. The - <structfield>type</structfield> of a hierarchy change can be - <constant>XICreateMaster</constant>, - <constant>XIRemoveMaster</constant>, - <constant>XIAttachSlave</constant> or - <constant>XIDetachSlave</constant>. - </para> - <para> - <synopsis> - typedef union { - int <structfield>type</structfield>; - <structfield>XICreateMasterInfo</structfield> create; - <structfield>XIRemoveMasterInfo</structfield> remove; - <structfield>XIAttachSlave</structfield> attach; - <structfield>XIDetachSlave</structfield> detach; - } <structname>XIAnyHierarchyChangeInfo</structname>; - </synopsis> - </para> - <para> - <synopsis> - typedef struct { - int <structfield>type</structfield>; /* <constant>XICreateMaster</constant> */ - char* <structfield>name</structfield>; - Bool <structfield>sendCore</structfield>; - Bool <structfield>enable</structfield>; - } <structname>XICreateMasterInfo</structname>; - </synopsis> - </para> - <para> - <synopsis> - typedef struct { - int <structfield>type</structfield>; /* <constant>XIRemoveMaster</constant> */ - int <structfield>device</structfield>; - int <structfield>returnMode</structfield>; - XDevice* <structfield>returnPointer</structfield>; - XDevice* <structfield>returnKeyboard</structfield>; - } <structname>XIRemoveMasterInfo</structname>; - </synopsis> - </para> - <para> - <synopsis> - typedef struct { - int <structfield>type</structfield>; /* <constant>XIAttachSlave</constant> */ - int <structfield>device</structfield>; - int <structfield>newMaster</structfield>; - } <structname>XIAttachSlaveInfo</structname>; - </synopsis> - </para> - <para> - <synopsis> - typedef struct { - int <structfield>type</structfield>; /* <constant>XIDetachSlave</constant> */ - int <structfield>device</structfield>; - } <structname>XIDetachSlaveInfo</structname>; - </synopsis> - </para> - <para> - <structname>XICreateMasterInfo</structname> creates a new master - pointer and a new master keyboard labelled - "<structfield>name</structfield> pointer" and - "<structfield>name</structfield> keyboard" respectively. - If <structfield>sendCore</structfield> is - <constant>True</constant>, the devices will send core events. If - <structfield>enable</structfield> is <constant>True</constant>, - the device is enabled immediately. - </para> - <para> - <structname>XICreateMasterInfo</structname> can generate a - <errorname>BadValue</errorname> error. - </para> - <para> - <structname>XIRemoveMasterInfo</structname> removes - <structfield>device</structfield> and its paired master device. If - <structfield>returnMode</structfield> is - <constant>XIAttachToMaster</constant>, all pointers attached to - <structfield>device</structfield> or its paired master device are - attached to <structfield>returnPointer</structfield>. Likewise, - all keyboards are attached to - <structfield>returnKeyboard</structfield>. If - <structfield>returnMode</structfield> is - <constant>XIFloating</constant>, all attached devices are set to - floating. - </para> - <para> - <structname>XIRemoveMasterInfo</structname> can generate a - <errorname>BadValue</errorname> and a - <errorname>BadDevice</errorname> error. - </para> - <para> - <structname>XIAttachSlaveInfo</structname> attaches - <structfield>device</structfield> to - <structfield>newMaster</structfield>. If the device is currently - attached to a master device, it is detached from the master - device and attached to the new master device. - </para> - <para> - <function>XIAttachSlaveInfo</function> can generate a - <errorname>BadDevice</errorname> error. - </para> - <para> - <structname>XIDettachSlaveInfo</structname> deattaches - <structfield>device</structfield> from the current master device - and sets it floating. If the device is already floating, no - changes are made. - </para> - <para> - <function>XIDetachSlaveInfo</function> can generate a - <errorname>BadDevice</errorname> error. - </para> - <para> - <function>XIChangeHierarchy</function> generates an - <constant>XIHierarchyEvent</constant> if any modifications were - successful. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem> - <para> - An invalid device was specified. The device does - not exist or is not a appropriate for the type of - change. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem> - <para> - Some numeric value falls out of the allowed range. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XISelectEvents.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XISelectEvents</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XISelectEvents</refname> - <refpurpose>select for XI2 events on the window.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XISelectEvents</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window <parameter>win</parameter></paramdef> - <paramdef>XIEventMask *<parameter>masks</parameter></paramdef> - <paramdef>int <parameter>num_masks</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>masks</parameter></term> - <listitem><para>Device event mask. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>num_masks</parameter></term> - <listitem><para>Number of masks in - <parameter>masks</parameter>. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>win</parameter></term> - <listitem> - <para> - Specifies the window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - XI2 events must be selected using - <function>XISelectEvents</function>. - </para> - <para> - <function>XISelectEvents</function> sets the event mask for this - client on <parameter>win</parameter>. Further events are only - reported to this client if the event type matches the selected - event mask. - The <parameter>masks</parameter> overrides the previously - selected event mask for the given device. - </para> - <para> - If <parameter>deviceid</parameter> is a valid device, the event mask - is selected only for this device. If - <parameter>deviceid</parameter> is - <constant>XIAllDevices</constant> or - <constant>XIAllMasterDevices</constant>, the event mask is - selected for all devices or all master devices, respectively. - The effective event mask is the bit-wise OR of the - <constant>XIAllDevices</constant>, - <constant>XIAllMasterDevices</constant> and the respective - device's event mask. - </para> - <para> - <synopsis> - typedef struct { - int <structfield>deviceid</structfield>; - int <structfield>mask_len</structfield>; - unsigned char* <structfield>mask</structfield>; - } <structname>XIEventMask</structname>; - </synopsis> - The <structfield>mask_len</structfield> specifies the length of mask - in bytes. <structfield>mask</structfield> is a binary mask in the - form of (1 << event type). <structfield>deviceid</structfield> - must be either a device or <constant>XIAllDevices</constant> or - <constant>XIAllMasterDevices</constant>. A client may submit several - masks with the same <structfield>deviceid</structfield> in one - request but only the last mask will be effective. - </para> - <para> - <function>XISelectEvents</function> can generate a - <errorname>BadValue</errorname>, a - <errorname>BadDevice</errorname>, and a - <errorname>BadWindow</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>A value is outside of the permitted range. -</para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not - name a defined window. -</para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid device was specified. The - device does not exist. -</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XIQueryVersion.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XIQueryVersion</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> -</refmeta> - <refnamediv> - <refname>XIQueryVersion</refname> - <refpurpose>announce and query the support XI2 version.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XIQueryVersion</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int *<parameter>major_version_inout</parameter></paramdef> - <paramdef>int *<parameter>minor_version_inout</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>major_version_inout</parameter></term> - <listitem><para>Specifies the client's supported XI2 version, and - returns the server's supported version. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>minor_version_inout</parameter></term> - <listitem><para>Specifies the client's supported XI2 version, and - returns the server's supported version. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - <function>XIQueryVersion</function> announces the client's - supported XI2 version to the server and returns server's - supported version. The server may treat a client differently - depending on the version support announced. The - <parameter>major_version_inout</parameter> must be 2 or greater, - otherwise a <errorname>BadValue</errorname> error occurs. - </para> - <para> - <function>XIQueryVersion</function> can generate a - <errorname>BadValue</errorname> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>A value is outside of the permitted range. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> - -<refentry id="XISetFocus.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XISetFocus, XIGetFocus</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> - </refmeta> - <refnamediv> - <refname>XISetFocus</refname> - <refname>XIGetFocus</refname> - <refpurpose>set or get the device's focus.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XISetFocus</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Window <parameter>focus</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>Status <function>XIGetFocus</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>Window *<parameter>focus_return</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>deviceid</parameter></term> - <listitem><para>Specifies the device whose focus is to be - queried or changed. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>focus</parameter></term> - <listitem><para>The new focus window. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>focus_return</parameter></term> - <listitem><para>Returns the current focus window. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>time</parameter></term> - <listitem><para>A valid timestamp or CurrentTime. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - <function>XISetFocus</function> changes the focus of the - specified device ans its last-focus-change time. It - has no effect if the specified time is earlier than the current - last-focus-change time or is later than the current X server time. - Otherwise, the last-focus-change time is set to the specified - <parameter>time</parameter>. - <constant>CurrentTime</constant> is replaced by the current X - server time). <constant>XISetFocus</constant> causes the X - server to generate core, XI and XI2 focus events. - </para> - <para> - If the <parameter>focus</parameter> window is - <constant>None</constant> all keyboard events by this device are - discarded until a new focus window is set. Otherwise, if - <parameter>focus</parameter> is a window, it becomes the device's - focus window. If a generated device event would normally be - reported to this window or one of its inferiors, the event is - reported as usual. Otherwise, the event is reported relative to - the focus window. - </para> - <para> - The specified focus window must be viewable at the time - <constant>XISetFocus</constant> is called, or a - <constant>BadMatch</constant> error results. If the focus window - later becomes not viewable, the focus reverts to the parent (or - the closest viewable ancestor. When the focus reverts, the X - server generates core, XI and XI2 focus events but the - last-focus-change time is not affected. - </para> - <para> - Attempting to set the focus on a master pointer device or an - attached slave device will result in a - <constant>BadDevice</constant> error. - </para> - <para> - <constant>XISetFocus</constant> can generate - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadValue</constant>, and - <constant>BadWindow</constant> errors. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>A value is outside of the permitted range. - </para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem> - <para> - An invalid device was specified. The device does - not exist or is not a appropriate for the type of - change. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem> - <para> - The window is not viewable. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not name a defined Window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> -<refentry id="XIGrabDevice.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - <pubdate>February 14, 2008</pubdate> - <authorgroup> - <author> - <firstname>Peter</firstname><surname>Hutterer</surname> - <contrib>Specification and implementation.</contrib> - </author> - </authorgroup> - </refentryinfo> - - <refmeta> - <refentrytitle>XIGrabDevice, XIUngrabDevice</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> - </refmeta> - <refnamediv> - <refname>XIGrabDevice</refname> - <refname>XIUngrabDevice</refname> - <refpurpose>grab or ungrab the device.</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput2.h></funcsynopsisinfo> - <funcprototype> - <funcdef>Status <function>XIGrabDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - <paramdef>Cursor <parameter>cursor</parameter></paramdef> - <paramdef>int <parameter>grab_mode</parameter></paramdef> - <paramdef>int <parameter>paired_device_mode</parameter></paramdef> - <paramdef>Bool <parameter>owner_events</parameter></paramdef> - <paramdef>XIEventMask *<parameter>mask</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>Status <function>XIUngrabDevice</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>Time <parameter>time</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1><title>Arguments</title> - <para> - <variablelist> - <varlistentry> - <term><parameter>cursor</parameter></term> - <listitem><para>Specifies the cursor image to display - for the duration of the grab. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>deviceid</parameter></term> - <listitem><para>Specifies the device that should be - grabbed or ungrabbed. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>grab_mode</parameter></term> - <term><parameter>paired_device_mode</parameter></term> - <listitem><para>The grab mode for this device and (if - applicable) the paired device. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>grab_window</parameter></term> - <listitem><para>The grab window. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>mask</parameter></term> - <listitem><para>Event mask. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>owner_events</parameter></term> - <listitem><para>True if events are to be reported - normally. - </para></listitem> - </varlistentry> - <varlistentry> - <term><parameter>time</parameter></term> - <listitem><para>A valid timestamp or CurrentTime. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - <function>XIGrabDevice</function> actively grabs control of the - device. Further device events are reported only to the grabbing - client. <constant>XIGrabDevice</constant> overrides any active - device grab by this client. if <parameter>deviceid</parameter> - is an attached slave device, the device is set floating until - the client calls <function>XIUngrabDevice</function>. - </para> - <para> - If <parameter>owner_events</parameter> is - <constant>False</constant>, all generated device events are - reported with respect to grab_window if selected. If - <parameter>owner_events</parameter> is <constant>True</constant> - 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 <parameter>mask</parameter>. - </para> - <para> - If the <parameter>grab_mode</parameter> argument is - <constant>GrabModeAsync</constant>, device event processing - continues as usual. If the device is currently frozen by this - client, then processing of device events is resumed. If the - <parameter>grab_mode</parameter> argument is - <constant>GrabModeSync</constant>, 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 - <constant>XIAllowEvents</constant> 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. - </para> - <para> - If <parameter>paired_device_mode</parameter> is - <constant>GrabModeAsync</constant>, processing of events from - the paired master device is unaffected by - activation of the grab. If - <parameter>paired_device_mode</parameter> is - <constant>GrabModeSync</constant>, the state of the paired - master device (as seen by client applications) appears to - freeze, and the X server generates no further events from this - device until the grabbing client issues a releasing - <constant>XIAllowEvents</constant> 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. - If the device is a slave device - <parameter>paired_device_mode</parameter> is ignored. - </para> - <para> - If the device is actively grabbed by some other client, - <constant>XIGrabDevice</constant> fails and returns - <constant>AlreadyGrabbed</constant>. If - <parameter>grab_window</parameter> is not - viewable, it fails and returns - <constant>GrabNotViewable</constant>. If the device is frozen by - an active grab of another client, it fails and returns - <constant>GrabFrozen</constant>. If the specified time is earlier - than the last-device-grab time or later than the current X server - time, it fails and returns <constant>GrabInvalidTime</constant>. - Otherwise, the last-device-grab time is set to the specified - time. <constant>CurrentTime</constant> is replaced by the - current X server time. - </para> - <para> - If cursor is not <constant>None</constant> this cursor is - displayed until the client calls - <function>XIUngrabDevice</function>. - </para> - <para> - <constant>XIGrabDevice</constant> can generate - <constant>BadDevice</constant>, <constant>BadValue</constant>, - and <constant>BadWindow</constant> errors. - </para> - <para> - The <constant>XIUngrabDevice</constant> request releases the - device and any queued events if this client has it actively - grabbed from either <function>XIGrabDevice</function> or - <function>XIGrabKey</function> or - <function>XIGrabButton</function>. If other devices are frozen - by the grab, <function>XUngrabDevice</function> thaws - them. <function>XUngrabDevice</function> 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. The X server automatically performs an - <constant>XIUngrabDevice</constant> request if the event window - for an active device grab becomes not - viewable. - </para> - <para> - <constant>XIUngrabDevice</constant> can generate a - <constant>BadDevice</constant> error. - </para> - </refsect1> - - <refsect1><title>Diagnosis</title> - <para> - <variablelist> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>A value is outside of the permitted range. - </para></listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem> - <para> - An invalid device was specified. The device does - not exist or is not a appropriate for the type of - change. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem> - <para> - The window is not viewable. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not name a defined Window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> -</refentry> -<refentry id="XIGrabButton.man"> - <refentryinfo> - <productname>__vendorversion__</productname> - </refentryinfo> - - <refmeta> - <refentrytitle>XIGrabButton, XIGrabKeysym</refentrytitle> - <manvolnum>__libmansuffix__</manvolnum> - <refmiscinfo class='source'>__xorgversion__</refmiscinfo> - <refmiscinfo class='manual'>XINPUT FUNCTIONS</refmiscinfo> - </refmeta> - <refnamediv> - <refname>XIGrabButton</refname> - <refname>XIUngrabButton</refname> - <refname>XIGrabKeysym</refname> - <refname>XIUngrabKeysym</refname> - <refpurpose>grab/ungrab buttons or keys</refpurpose> - </refnamediv> - <refsynopsisdiv> - <title>Syntax</title> - <funcsynopsis> - <funcsynopsisinfo>#include <X11/extensions/XInput.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>XIGrabButton</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>int <parameter>button</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>Cursor <parameter>cursor</parameter></paramdef> - <paramdef>int <parameter>grab_mode</parameter></paramdef> - <paramdef>int <parameter>paired_device_mode</parameter></paramdef> - <paramdef>Bool<parameter>owner_events</parameter></paramdef> - <paramdef>XIEventMask *<parameter>mask</parameter></paramdef> - <paramdef>int <parameter>num_modifiers</parameter></paramdef> - <paramdef>XIGrabModifiers *<parameter>modifiers_inout</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XIUngrabButton</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>int <parameter>button</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>int <parameter>num_modifiers</parameter></paramdef> - <paramdef>XIGrabModifiers *<parameter>modifiers</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XIGrabKeysym</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>int <parameter>keysym</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>Cursor <parameter>cursor</parameter></paramdef> - <paramdef>int <parameter>grab_mode</parameter></paramdef> - <paramdef>int <parameter>paired_device_mode</parameter></paramdef> - <paramdef>Bool<parameter>owner_events</parameter></paramdef> - <paramdef>XIEventMask *<parameter>mask</parameter></paramdef> - <paramdef>int <parameter>num_modifiers</parameter></paramdef> - <paramdef>XIGrabModifiers *<parameter>modifiers_inout</parameter></paramdef> - </funcprototype> - <funcprototype> - <funcdef>int <function>XIUngrabKeysym</function></funcdef> - <paramdef>Display *<parameter>display</parameter></paramdef> - <paramdef>int <parameter>deviceid</parameter></paramdef> - <paramdef>int <parameter>keysym</parameter></paramdef> - <paramdef>Window <parameter>grab_window</parameter></paramdef> - <paramdef>int <parameter>num_modifiers</parameter></paramdef> - <paramdef>XIGrabModifiers *<parameter>modifiers</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1><title>Arguments</title> - - <para> - <variablelist> - <varlistentry><term><parameter>display</parameter></term> - <listitem><para>Specifies the connection to the X server. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>device</parameter></term> - <listitem><para>Specifies the device that is to be - grabbed or released</para></listitem> - </varlistentry> - <varlistentry><term><parameter>button</parameter></term> - <listitem><para>Specifies the device button that is to - be grabbed or released or <constant>XIAnyButton</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>keysym</parameter></term> - <listitem><para>Specifies the keysym that is to - be grabbed or released or <constant>XIAnyKeysym</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>num_modifiers</parameter></term> - <listitem><para>Number of elements in - <parameter>modifiers</parameter> or - <parameter>modifiers_return</parameter> - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modifiers</parameter></term> - <listitem><para>Specifies the set of latched and base - modifiers or <constant>XIAnyModifier</constant> - to ungrab. The data type is for consistency with - the respective grab request and the status code - of the XIGrabModifiers struct is ignored. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>modifiers_inout</parameter></term> - <listitem><para>Specifies the set of latched and base - modifiers or <constant>XIAnyModifier</constant> - to grab. Returns the modifiers that could not be - grabbed and their status code. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>grab_window</parameter></term> - <listitem><para>Specifies the grab window. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>owner_events</parameter></term> - <listitem><para>Specifies a Boolean value that indicates - whether the are to be reported as - usual or reported with respect to the grab - window. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>mask</parameter></term> - <listitem><para>Specifies the event mask. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>grab_mode</parameter></term> - <listitem><para>Specifies further processing of events - from this device. You can pass - <constant>GrabModeSync</constant> or - <constant>GrabModeAsync</constant>. - </para></listitem> - </varlistentry> - <varlistentry><term><parameter>paired_device_mode</parameter></term> - <listitem><para>Specifies further processing of events - from the paired master device. You can pass - <constant>GrabModeSync</constant> or - <constant>GrabModeAsync</constant>. - If <parameter>deviceid</parameter> specifies a - floating slave device, this parameter is - ignored. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>Description</title> - <para> - <function>XIGrabButton</function> and - <function>XIGrabKeysym</function> establishes a - passive grab. The modifier device for a button grab is the - paired master device if <parameter>deviceid</parameter> - specifies a master pointer. Otherwise, the modifier device is - the device specified with <parameter>deviceid</parameter>. - In the future, the device is actively grabbed (as - for <constant>XIGrabDevice</constant>, the last-grab time is set - to the time at which the button or keysym was pressed and the - <constant>X_XIButtonPress</constant> or - <constant>X_XIKeyPress</constant> event is reported if all - of the following conditions are true: - - <itemizedlist> - <listitem> - <para> - The device is not grabbed, and the specified button - or keysym is logically pressed when the specified - modifier keys are logically down on the modifier - device and no other buttons or modifier keys are - logically down. - </para> - </listitem> - <listitem> - <para>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. - </para> - </listitem> - <listitem> - <para> - A passive grab on the same button/modifier combination - does not exist on any ancestor of grab_window. - </para> - </listitem> - </itemizedlist> - </para> - <para> - The interpretation of the remaining arguments is as for - <constant>XIGrabDevice</constant>. The active grab is terminated - automatically when the logical state of the device has all - buttons or keys released (independent of the logical state of - the modifier keys). - </para> - <para> - Note that the logical state of a device (as seen by client - applications) may lag the physical state if device event - processing is frozen. - </para> - <para> - This request overrides all previous grabs by the same client on - the same button/modifier or keysym/modifier combinations on the - same window. A modifiers of <constant>XIAnyModifier</constant> - is equivalent to issuing the grab request for all possible - modifier combinations (including the combination of no - modifiers). It is not required that all modifiers specified have - currently assigned KeyCodes. A button of - <constant>XIAnyButton</constant> is equivalent to - issuing the request for all possible buttons. Otherwise, it is not - required that the specified button currently be assigned to a - physical button. - </para> - <para> - If some other client has already issued a - <function>XIGrabButton</function> or - <function>XIGrabKeysym</function> with the same - button/modifier or keysym/modifier combination on the same - window, a <constant>BadAccess</constant> error results. When - using <constant>XIAnyModifier</constant> or - <constant>XIAnyButton</constant> , the request fails completely, and - a <constant>XIBadAccess</constant> error results (no grabs are - established) if there is a conflicting grab for any combination. - <function>XIGrabButton</function> and - <function>XIGrabKeysym</function> have no effect on an active - grab. - </para> - <para> - <function>XIGrabButton</function> and - <function>XIGrabKeysym</function> can generate - <constant>BadClass</constant>, <constant>BadDevice</constant>, - <constant>BadMatch</constant>, <constant>BadValue</constant>, and - <constant>BadWindow</constant> errors. - </para> - <para> - <function>XIUngrabButton</function> and - <function>XIUngrabKeysym</function> releases the - passive grab for a button/modifier or keysym/modifier - combination on the specified window if it was grabbed by this - client. A modifier of <constant>XIAnyModifier</constant> is - equivalent to issuing the ungrab request for all possible - modifier combinations, including the combination of no - modifiers. A button of <constant>XIAnyButton</constant> is - equivalent to issuing the request for all possible buttons. - <function>XIUngrabButton</function> and - <function>XIUngrabKeysym</function> have no effect on an - active grab. - </para> - <para> - <function>XIUngrabButton</function> and - <function>XIUngrabKeysym</function> can generate - <constant>BadDevice</constant>, <constant>BadMatch</constant>, - <constant>BadValue</constant> and <constant>BadWindow</constant> - errors. - </para> - </refsect1> - - <refsect1><title>Diagnostics</title><para> - <variablelist> - <varlistentry> - <term><errorname>BadDevice</errorname></term> - <listitem><para>An invalid deviceid was specified.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadMatch</errorname></term> - <listitem><para>This error may occur if - <function>XIGrabButton</function> - specified a device that has no - buttons, or <function>XIGrabKeysym</function> - specified a device that has no keys. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadValue</errorname></term> - <listitem><para>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. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorname>BadWindow</errorname></term> - <listitem><para>A value for a Window argument does not name a defined Window. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1><title>See also</title> - <para>XIAllowEvents(3), XIGrabDevice(3)</para> - </refsect1> -</refentry> -</reference> diff --git a/man/XIChangeHierarchy.txt b/man/XIChangeHierarchy.txt new file mode 100644 index 0000000..e4ffd5b --- /dev/null +++ b/man/XIChangeHierarchy.txt @@ -0,0 +1,119 @@ +XICHANGEHIERARCHY(libmansuffix) +=============================== + +NAME +---- + + XIChangeHierarchy - change the device hierarchy. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Status XIChangeHierarchy( Display *display, + XIAnyHierarchyChangeInfo *changes, + int num_changes); + + display + Specifies the connection to the X server. + + num_changes + Specifies the number of elements in changes. + + changes + Specifies the changes to be made. + +DESCRIPTION +----------- + + XIChangeHierarchy modifies the device hierarchy by creating or + removing master devices or changing the attachment of slave + devices. If num_changes is non-zero, changes is an array of + XIAnyHierarchyChangeInfo structures. + + XIChangeHierarchy processes changes in order, effective + immediately. If an error occurs, processing is aborted and the + error is reported to the client. Changes already made remain + effective. + + The list of changes is any combination of + XIAnyHierarchyChangeInfo. The type of a hierarchy change can be + XICreateMaster, XIRemoveMaster, XIAttachSlave or XIDetachSlave. + + typedef union { + int type; + XICreateMasterInfo create; + XIRemoveMasterInfo remove; + XIAttachSlave attach; + XIDetachSlave detach; + } XIAnyHierarchyChangeInfo; + + typedef struct { + int type; /* XICreateMaster */ + char* name; + Bool sendCore; + Bool enable; + } XICreateMasterInfo; + + typedef struct { + int type; /* XIRemoveMaster */ + int device; + int returnMode; + XDevice* returnPointer; + XDevice* returnKeyboard; + } XIRemoveMasterInfo; + + typedef struct { + int type; /* XIAttachSlave */ + int device; + int newMaster; + } XIAttachSlaveInfo; + + typedef struct { + int type; /* XIDetachSlave */ + int device; + } XIDetachSlaveInfo; + + XICreateMasterInfo creates a new master pointer and a new + master keyboard labelled "name pointer" and "name keyboard" + respectively. If sendCore is True, the devices will send core + events. If enable is True, the device is enabled immediately. + + XICreateMasterInfo can generate a BadValue error. + + XIRemoveMasterInfo removes device and its paired master device. + If returnMode is XIAttachToMaster, all pointers attached to + device or its paired master device are attached to + returnPointer. Likewise, all keyboards are attached to + returnKeyboard. If returnMode is XIFloating, all attached + devices are set to floating. + + XIRemoveMasterInfo can generate a BadValue and a BadDevice + error. + + XIAttachSlaveInfo attaches device to newMaster. If the device + is currently attached to a master device, it is detached from + the master device and attached to the new master device. + + XIAttachSlaveInfo can generate a BadDevice error. + + XIDettachSlaveInfo deattaches device from the current master + device and sets it floating. If the device is already floating, + no changes are made. + + XIDetachSlaveInfo can generate a BadDevice error. + + XIChangeHierarchy generates an XIHierarchyEvent if any + modifications were successful. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The device does not + exist or is not a appropriate for the type of change. + + BadValue + Some numeric value falls out of the allowed range. + diff --git a/man/XIDefineCursor.txt b/man/XIDefineCursor.txt new file mode 100644 index 0000000..2edbc5a --- /dev/null +++ b/man/XIDefineCursor.txt @@ -0,0 +1,72 @@ +XIDEFINECURSOR(libmansuffix) +============================ + +NAME +---- + + XIDefineCursor, XIUndefineCursor - define device cursors. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + int XIDefineCursor( Display *display, + int deviceid, + Window win, + Cursor cursor); + + int XIUndefineCursor( Display *display, + int deviceid, + Window win); + + cursor + Specifies the cursor that is to be displayed or None. + + deviceid + Specifies the device whose cursor is to change. + + display + Specifies the connection to the X server. + + win + Specifies the window. + +DESCRIPTION +----------- + + If a cursor is set, it will be used when the device's pointer + is in the window. If the cursor is None, it is equivalent to + XUndefineDefineCursor. + + XIDefineCursor can generate BadCursor and BadWindow. + + The XIUndefineCursor function undoes the effect of a previous + XIDefineCursor for this window. When the pointer is in the + window, the window's default cursor will now be used. If no + default cursor is defined, the parent's cursor for this device + will be used (if defined) or the parent's default cursor will + be used. + + XIDefineCursor and XIUndefineCursor are identical to + XDefineCursor and XUndefineCursor but specify the device + explicitly. + + XUndefineDevicePointer can generate a BadDevice and a BadWindow + error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The device does not + exist or is not a pointer device. + + BadWindow + A value for a Window argument does not name a defined + window. + +See also + + XDefineCursor, XUndefineCursor + diff --git a/man/XIGrabButton.txt b/man/XIGrabButton.txt new file mode 100644 index 0000000..09b6254 --- /dev/null +++ b/man/XIGrabButton.txt @@ -0,0 +1,195 @@ +XIGRABBUTTON(libmansuffix) +========================== + +NAME +---- + + XIGrabButton, XIUngrabButton, XIGrabKeysym, XIUngrabKeysym - + grab/ungrab buttons or keys + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XIGrabButton( Display *display, + int deviceid, + int button, + Window grab_window, + Cursor cursor, + int grab_mode, + int paired_device_mode, + Bool owner_events, + XIEventMask *mask, + int num_modifiers, + XIGrabModifiers *modifiers_inout); + + int XIUngrabButton( Display *display, + int deviceid, + int button, + Window grab_window, + int num_modifiers, + XIGrabModifiers *modifiers); + + int XIGrabKeysym( Display *display, + int deviceid, + int keysym, + Window grab_window, + Cursor cursor, + int grab_mode, + int paired_device_mode, + Bool owner_events, + XIEventMask *mask, + int num_modifiers, + XIGrabModifiers *modifiers_inout); + + int XIUngrabKeysym( Display *display, + int deviceid, + int keysym, + Window grab_window, + int num_modifiers, + XIGrabModifiers *modifiers); + + 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 XIAnyButton. + + keysym + Specifies the keysym that is to be grabbed or released + or XIAnyKeysym. + + num_modifiers + Number of elements in modifiers or modifiers_return + + modifiers + Specifies the set of latched and base modifiers or + XIAnyModifier to ungrab. The data type is for + consistency with the respective grab request and the + status code of the XIGrabModifiers struct is ignored. + + modifiers_inout + Specifies the set of latched and base modifiers or + XIAnyModifier to grab. Returns the modifiers that could + not be grabbed and their status code. + + grab_window + Specifies the grab window. + + owner_events + Specifies a Boolean value that indicates whether the are + to be reported as usual or reported with respect to the + grab window. + + mask + Specifies the event mask. + + grab_mode + Specifies further processing of events from this device. + You can pass GrabModeSync or GrabModeAsync. + + paired_device_mode + Specifies further processing of events from the paired + master device. You can pass GrabModeSync or + GrabModeAsync. If deviceid specifies a floating slave + device, this parameter is ignored. + +DESCRIPTION +----------- + + XIGrabButton and XIGrabKeysym establishes a passive grab. The + modifier device for a button grab is the paired master device + if deviceid specifies a master pointer. Otherwise, the modifier + device is the device specified with deviceid. In the future, + the device is actively grabbed (as for XIGrabDevice, the + last-grab time is set to the time at which the button or keysym + was pressed and the X_XIButtonPress or X_XIKeyPress event is + reported if all of the following conditions are true: + * The device is not grabbed, and the specified button or + keysym is logically pressed when the specified modifier + keys are logically down on the 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 combination does + not exist on any ancestor of grab_window. + + The interpretation of the remaining arguments is as for + XIGrabDevice. The active grab is terminated automatically when + the logical state of the device has all buttons or keys + 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 or keysym/modifier combinations on the + same window. A modifiers of XIAnyModifier is equivalent to + issuing the grab request for all possible modifier combinations + (including the combination of no modifiers). It is not required + that all modifiers specified have currently assigned KeyCodes. + A button of XIAnyButton is equivalent to issuing the request + for all possible buttons. Otherwise, it is not required that + the specified button currently be assigned to a physical + button. + + If some other client has already issued a XIGrabButton or + XIGrabKeysym with the same button/modifier or keysym/modifier + combination on the same window, a BadAccess error results. When + using XIAnyModifier or XIAnyButton , the request fails + completely, and a XIBadAccess error results (no grabs are + established) if there is a conflicting grab for any + combination. XIGrabButton and XIGrabKeysym have no effect on an + active grab. + + XIGrabButton and XIGrabKeysym can generate BadClass, BadDevice, + BadMatch, BadValue, and BadWindow errors. + + XIUngrabButton and XIUngrabKeysym releases the passive grab for + a button/modifier or keysym/modifier combination on the + specified window if it was grabbed by this client. A modifier + of XIAnyModifier is equivalent to issuing the ungrab request + for all possible modifier combinations, including the + combination of no modifiers. A button of XIAnyButton is + equivalent to issuing the request for all possible buttons. + XIUngrabButton and XIUngrabKeysym have no effect on an active + grab. + + XIUngrabButton and XIUngrabKeysym can generate BadDevice, + BadMatch, BadValue and BadWindow errors. + +DIAGNOSTICS +----------- + + BadDevice + An invalid deviceid was specified. + + BadMatch + This error may occur if XIGrabButton specified a device + that has no buttons, or XIGrabKeysym specified a device + that has no keys. + + 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. + + BadWindow + A value for a Window argument does not name a defined + Window. + +SEE ALSO +-------- + + XIAllowEvents(libmansuffix) + diff --git a/man/XIGrabDevice.txt b/man/XIGrabDevice.txt new file mode 100644 index 0000000..6194ed9 --- /dev/null +++ b/man/XIGrabDevice.txt @@ -0,0 +1,142 @@ +XIGRABDEVICE(libmansuffix) +========================== + +NAME +---- + + XIGrabDevice, XIUngrabDevice - grab or ungrab the device. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Status XIGrabDevice( Display *display, + int deviceid, + Window grab_window, + Time time, + Cursor cursor, + int grab_mode, + int paired_device_mode, + Bool owner_events, + XIEventMask *mask); + + Status XIUngrabDevice( Display *display, + int deviceid, + Time time); + + cursor + Specifies the cursor image to display for the duration + of the grab. + + display + Specifies the connection to the X server. + + deviceid + Specifies the device that should be grabbed or + ungrabbed. + + grab_mode, paired_device_mode + The grab mode for this device and (if applicable) the + paired device. + + grab_window + The grab window. + + mask + Event mask. + + owner_events + True if events are to be reported normally. + + time + A valid timestamp or CurrentTime. + +DESCRIPTION +----------- + + XIGrabDevice actively grabs control of the device. Further + device events are reported only to the grabbing client. + XIGrabDevice overrides any active device grab by this client. + if deviceid is an attached slave device, the device is set + floating until the client calls XIUngrabDevice. + + 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 + mask. + + If the grab_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 grab_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 XIAllowEvents 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. + + If paired_device_mode is GrabModeAsync, processing of events + from the paired master device is unaffected by activation of + the grab. If paired_device_mode is GrabModeSync, the state of + the paired master device (as seen by client applications) + appears to freeze, and the X server generates no further events + from this device until the grabbing client issues a releasing + XIAllowEvents 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. If the device + is a slave device paired_device_mode is ignored. + + If the device is actively grabbed by some other client, + XIGrabDevice 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. + + If cursor is not None this cursor is displayed until the client + calls XIUngrabDevice. + + XIGrabDevice can generate BadDevice, BadValue, and BadWindow + errors. + + The XIUngrabDevice request releases the device and any queued + events if this client has it actively grabbed from either + XIGrabDevice or XIGrabKey or XIGrabButton. 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. The X server + automatically performs an XIUngrabDevice request if the event + window for an active device grab becomes not viewable. + + XIUngrabDevice can generate a BadDevice error. + +DIAGNOSTICS +----------- + + BadValue + A value is outside of the permitted range. + + BadDevice + An invalid device was specified. The device does not + exist or is not a appropriate for the type of change. + + BadMatch + The window is not viewable. + + BadWindow + A value for a Window argument does not name a defined + Window. + +SEE ALSO +-------- + XIAllowEvents(libmansuffix) + diff --git a/man/XIQueryPointer.txt b/man/XIQueryPointer.txt new file mode 100644 index 0000000..ad7f132 --- /dev/null +++ b/man/XIQueryPointer.txt @@ -0,0 +1,99 @@ +XIQUERYPOINTER(libmansuffix) +============================ + +NAME +---- + + XIQueryPointer - get device pointer coordinates. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Bool XIQueryPointer( Display *display, + int deviceid, + Window win, + Window *root_return, + Window *child_return, + int *root_x_return, + int *root_y_return, + int *win_x_return, + int *win_y_return, + XIModifierState *modifiers_return, + XIGroupState *group_return, + XIButtonState *buttons_return); + + buttons_return + Returns the current button state. + + child_return + Returns the child window that the pointer is located in, + if any. + + deviceid + Specifies the device to query. + + display + Specifies the connection to the X server. + + group_return + Returns the current group state. + + modifiers_return + Returns the current state of the modifier keys. + + root_return + Returns the root window that the pointer is in. + + root_x_return, root_y_return + Return the pointer coordinates relative to the root + window's origin. + + win + Specifies the window. + + win_x_return, win_y_return + Return the pointer coordinates relative to the specified + window. + +DESCRIPTION +----------- + + The XIQueryPointer function returns the root window the + device's pointer is logically on and the pointer coordinates + relative to the root window's origin. If XIQueryPointer returns + False, the pointer is not on the same screen as the specified + window, and XIQueryPointer returns None to child_return and + zero to win_x_return and win_y_return. If XIQueryPointer + returns True, the pointer coordinates returned to win_x_return + and win_y_return are relative to the origin of the specified + window. In this case, XIQueryPointer returns the child that + contains the pointer, if any, or else None to child_return. + + XIQueryPointer returns the current logical state of the buttons + buttons_return. The keyboard paired with the master pointer is + selected to obtain the data for modifiers_return and + group_return. + + XIQueryPointer is identical to XQueryPointer but specifies the + device explicitly. + + XIQueryPointer can generate a BadDevice and a BadWindow error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The device does not + exist or is not a pointer device. + + BadWindow + A value for a Window argument does not name a defined + window. + +SEE ALSO +-------- + + XQueryPointer(libmansuffix) + diff --git a/man/XIQueryVersion.txt b/man/XIQueryVersion.txt new file mode 100644 index 0000000..422e51f --- /dev/null +++ b/man/XIQueryVersion.txt @@ -0,0 +1,45 @@ +XIQUERYVERSION(libmansuffix) +============================ + +NAME +---- + + XIQueryVersion - announce and query the support XI2 version. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Status XIQueryVersion( Display *display, + int *major_version_inout, + int *minor_version_inout); + + display + Specifies the connection to the X server. + + major_version_inout + Specifies the client's supported XI2 version, and + returns the server's supported version. + + minor_version_inout + Specifies the client's supported XI2 version, and + returns the server's supported version. + +DESCRIPTION +----------- + + XIQueryVersion announces the client's supported XI2 version to + the server and returns server's supported version. The server + may treat a client differently depending on the version support + announced. The major_version_inout must be 2 or greater, + otherwise a BadValue error occurs. + + XIQueryVersion can generate a BadValue error. + +DIAGNOSTICS +----------- + + BadValue + A value is outside of the permitted range. + diff --git a/man/XISelectEvents.txt b/man/XISelectEvents.txt new file mode 100644 index 0000000..a822fb3 --- /dev/null +++ b/man/XISelectEvents.txt @@ -0,0 +1,75 @@ +XISELECTEVENTS(libmansuffix) +============================ + +NAME +---- + + XISelectEvents - select for XI2 events on the window. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Status XISelectEvents( Display *display, + Window win, + XIEventMask *masks, + int num_masks); + + display + Specifies the connection to the X server. + + masks + Device event mask. + + num_masks + Number of masks in masks. + + win + Specifies the window. + +DESCRIPTION +----------- + + XI2 events must be selected using XISelectEvents. + + XISelectEvents sets the event mask for this client on win. + Further events are only reported to this client if the event + type matches the selected event mask. The masks overrides the + previously selected event mask for the given device. + + If deviceid is a valid device, the event mask is selected only + for this device. If deviceid is XIAllDevices or + XIAllMasterDevices, the event mask is selected for all devices + or all master devices, respectively. The effective event mask + is the bit-wise OR of the XIAllDevices, XIAllMasterDevices and + the respective device's event mask. + + typedef struct { + int deviceid; + int mask_len; + unsigned char* mask; + } XIEventMask; + + The mask_len specifies the length of mask in bytes. mask is a + binary mask in the form of (1 << event type). deviceid must be + either a device or XIAllDevices or XIAllMasterDevices. A client + may submit several masks with the same deviceid in one request + but only the last mask will be effective. + + XISelectEvents can generate a BadValue, a BadDevice, and a + BadWindow error. + +DIAGNOSTICS +----------- + + BadValue + A value is outside of the permitted range. + + BadWindow + A value for a Window argument does not name a defined + window. + + BadDevice + An invalid device was specified. The device does not + exist. diff --git a/man/XISetClientPointer.txt b/man/XISetClientPointer.txt new file mode 100644 index 0000000..bb45cdc --- /dev/null +++ b/man/XISetClientPointer.txt @@ -0,0 +1,69 @@ +XISETCLIENTPOINTER(libmansuffix) +================================ + +NAME +---- + + XISetClientPointer, XIGetClientPointer - set or get the + ClientPointer device. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + XISetClientPointer( Display *display, + Window win, + int deviceid); + + Bool XIGetClientPointer( Display *display, + Window win, + int *device); + + display + Specifies the connection to the X server. + + win + Specifies a window belonging to the client. May be None. + + deviceid + Specifies the ClientPointer device. + +DESCRIPTION +----------- + + The ClientPointer is the device that is percieved to be the + core pointer for non-XI protocol requests and replies. Each + time a protocol message needs device-dependent data and the + device is not explicitly given, the ClientPointer device is + used to obtain the data. For example, a XQueryPointer request + will return the coordinates of the ClientPointer. + + XISetClientPointer request sets the ClientPointer device for + the client that owns the given window. If win is None, the + requesting client's ClientPointer is set to the device + specified with deviceid. Only master pointer devices can be set + as ClientPointer. + + XISetClientPointer and can generate a BadDevice and a BadWindow + error. + + The XIGetClientPointer request returns the ClientPointer's + device ID for the client that owns the given window. If win is + None, the requesting client's ClientPointer is returned. + + win may be a client ID instead of a window. + + XIGetClientPointer can generate a BadWindow error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The device does not + exist or is not a master pointer device. + + BadWindow + A value for a Window argument does not name a defined + window. + diff --git a/man/XISetFocus.txt b/man/XISetFocus.txt new file mode 100644 index 0000000..dbfed70 --- /dev/null +++ b/man/XISetFocus.txt @@ -0,0 +1,86 @@ +XISETFOCUS(libmansuffix) +======================== + +NAME +---- + + XISetFocus, XIGetFocus - set or get the device's focus. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Status XISetFocus( Display *display, + int deviceid, + Window focus, + Time time); + + Status XIGetFocus( Display *display, + Window *focus_return); + + display + Specifies the connection to the X server. + + deviceid + Specifies the device whose focus is to be queried or + changed. + + focus + The new focus window. + + focus_return + Returns the current focus window. + + time + A valid timestamp or CurrentTime. + +DESCRIPTION +----------- + + XISetFocus changes the focus of the specified device ans its + last-focus-change time. It has no effect if the specified time + is earlier than the current last-focus-change time or is later + than the current X server time. Otherwise, the + last-focus-change time is set to the specified time. + CurrentTime is replaced by the current X server time). + XISetFocus causes the X server to generate core, XI and XI2 + focus events. + + If the focus window is None all keyboard events by this device + are discarded until a new focus window is set. Otherwise, if + focus is a window, it becomes the device's focus window. If a + generated device event would normally be reported to this + window or one of its inferiors, the event is reported as usual. + Otherwise, the event is reported relative to the focus window. + + The specified focus window must be viewable at the time + XISetFocus is called, or a BadMatch error results. If the focus + window later becomes not viewable, the focus reverts to the + parent (or the closest viewable ancestor. When the focus + reverts, the X server generates core, XI and XI2 focus events + but the last-focus-change time is not affected. + + Attempting to set the focus on a master pointer device or an + attached slave device will result in a BadDevice error. + + XISetFocus can generate BadDevice, BadMatch, BadValue, and + BadWindow errors. + +DIAGNOSTICS +----------- + + BadValue + A value is outside of the permitted range. + + BadDevice + An invalid device was specified. The device does not + exist or is not a appropriate for the type of change. + + BadMatch + The window is not viewable. + + BadWindow + A value for a Window argument does not name a defined + Window. + diff --git a/man/XIWarpPointer.txt b/man/XIWarpPointer.txt new file mode 100644 index 0000000..7dfaffa --- /dev/null +++ b/man/XIWarpPointer.txt @@ -0,0 +1,89 @@ +XIWARPPOINTER(libmansuffix) +=========================== + +NAME +---- + + XIWarpPointer - move a device's pointer. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput2.h> + + Bool XIWarpPointer( Display *display, + int deviceid, + Window src_w, + Window dest_w, + int src_x, + int src_y, + int src_width, + int src_height, + int dest_x, + int dest_y); + + dest_w + Specifies the destination window or None. + + dest_x, dest_y + Specify the x and y coordinates within the destination + window. + + deviceid + Specifies the master pointer device or floating slave + device to move. + + display + Specifies the connection to the X server. + + src_x, src_y, src_width, src_height + Specify a rectangle in the source window. + + src_w + Specifies the source window or None. + +DESCRIPTION +----------- + + If dest_w is None, XIWarpPointer moves the pointer by the + offsets (dest_x, dest_y) relative to the current position of + the pointer. If dest_w is a window, XIWarpPointer moves the + pointer to the offsets (dest_x, dest_y) relative to the origin + of dest_w. However, if src_w is a window, the move only takes + place if the window src_w contains the pointer and if the + specified rectangle of src_w contains the pointer. + + The src_x and src_y coordinates are relative to the origin of + src_w. If src_height is zero, it is replaced with the current + height of src_w minus src_y. If src_width is zero, it is + replaced with the current width of src_w minus src_x. + + There is seldom any reason for calling this function. The + pointer should normally be left to the user. If you do use this + function, however, it generates events just as if the user had + instantaneously moved the pointer from one position to another. + Note that you cannot use XIWarpPointer to move the pointer + outside the confine_to window of an active pointer grab. An + attempt to do so will only move the pointer as far as the + closest edge of the confine_to window. + + XIWarpPointer is identical to XWarpPointer but specifies the + device explicitly. + + XIWarpPointer can generate a BadDevice and a BadWindow error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The device does not + exist or is not a pointer device. + + BadWindow + A value for a Window argument does not name a defined + window. + +SEE ALSO +-------- + + XWarpPointer(libmansuffix) diff --git a/man/XListDeviceProperties.txt b/man/XListDeviceProperties.txt new file mode 100644 index 0000000..69fd5a1 --- /dev/null +++ b/man/XListDeviceProperties.txt @@ -0,0 +1,66 @@ +XLISTDEVICEPROPERTIES(libmansuffix) +=================================== + +NAME +---- + + XListDeviceProperties - List a device's properties. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + Atom* XListDeviceProperties( Display *display, + XDevice *device, + int *nprops_return); + + display + Specifies the connection to the X server. + + device + The device to grab. + + nprops_return + Specifies the number of Atoms returned. + + num_values + Specifies the number of elements in the values list. + + property + Specifies the property to modify or query. + +DESCRIPTION +----------- + + The XListDeviceProperties function returns a list of the + properties associated with the input device specified in + device. Each device may have an arbitrary number of properties + attached, some of which were created by the driver and/or + server, others created by clients at runtime. + + The client is expected to free the list of properties using + XFree. + + XListDeviceProperties can generate a BadDevice error. + +DIAGNOSTICS +----------- + + BadAtom + A value does not describe a valid named identifier. + + BadWindow + A value for a Window argument does not name a defined + window. + + BadDevice + An invalid device was specified. The device does not + exist. + +SEE ALSO +-------- + + XChangeDeviceProperty(libmansuffix), + XGetDeviceProperty(libmansuffix), + XDeleteDeviceProperty(libmansuffix) diff --git a/man/XListInputDevices.txt b/man/XListInputDevices.txt new file mode 100644 index 0000000..aca1df9 --- /dev/null +++ b/man/XListInputDevices.txt @@ -0,0 +1,225 @@ +XLISTINPUTDEVICES(libmansuffix) +=============================== + +NAME +---- + + XListInputDevices, XFreeDeviceList - list available input + devices + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XDeviceInfo *XListInputDevices( Display *display, + int *ndevices_return); + + int XFreeDeviceList( XDeviceInfo *list); + + display + Specifies the connection to the X server. + + ndevices_return + Specifies a pointer to a variable where the number of + available devices canbe returned. + + list + Specifies the list of devices to free. The + XFreeDeviceList functionfrees the list of available + extension input devices. + +DESCRIPTION +----------- + + The XListInputDevices request lists the available input + devices. This list includes the core keyboard and any physical + input device currently accessible through the X server, and any + input devices that are not currently accessible through the X + server but could be accessed if requested. + + A master pointer is a virtual pointer device that does not + represent a physical device. It is visually represented through + a cursor. A master keyboard is a virtual keyboard device that + does not represent a physical device. It is virtually + representd through a keyboard focus. A master pointer and a + master keyboard are always paired (i.e. if shift is pressed on + the master keyboard, a pointer click would be a shift-click). + Multiple master pointer/keyboard pairs can exist. + + X servers supporting the X Input Extension version 2, + XListInputDevices only returns the first master pointer, the + first master keyboard and all slave devices. Additional master + devices are not listed. + + Physical devices (so-called slave devices) are attached to + either a master pointer or a master keyboard, depending on + their capabilities. If a slave device generates an event, the + event is also generated by the respective master device. + Multiple slave devices can be attached to a single master + device. + + Some server implementations may make all physical input devices + available at the time the server is initialized. Others may + wait until requested by a client to access an input device. In + the latter case, it is possible that an input device will be + listed as available at one time but not at another. + + For each input device available to the server, the + XListInputDevices request returns an XDeviceInfo structure. + That structure contains a pointer to a list of structures, each + of which contains information about one class of input + supported by the device. The XDeviceInfo structure is defined + as follows: + typedef struct _XDeviceInfo { + XID id; + Atom type; + char *name; + int num_classes; + int use; + XAnyClassPtr inputclassinfo; + } XDeviceInfo; + + The id is a number in the range 0-128 that uniquely identifies + the device. It is assigned to the device when it is initialized + by the server. + + The type field is of type Atom and indicates the nature of the + device. + + The name field contains a pointer to a null-terminated string + that corresponds to one of the defined device types. The name + will correspond to one of the following strings (defined in the + header file XI.h: + + XI_MOUSE XI_TABLET XI_KEYBOARD XI_TOUCHSCREEN XI_TOUCHPAD + XI_BUTTONBOX XI_BARCODE XI_TRACKBALL XI_QUADRATURE XI_ID_MODULE + XI_ONE_KNOB XI_NINE_KNOB XI_KNOB_BOX XI_SPACEBALL XI_DATAGLOVE + XI_EYETRACKER XI_CURSORKEYS XI_FOOTMOUSE XI_JOYSTICK + + These names may be directly compared with the name field of the + XDeviceInfo structure, or used in an XInternAtom request to + return an atom that can be compared with the type field of the + XDeviceInfo structure. + + The num_classes field is a number in the range 0-255 that + specifies the number of input classes supported by the device + for which information is returned by ListInputDevices. Some + input classes, such as class Focus and class Proximity do not + have any information to be returned by ListInputDevices. + + All devices provide an AttachClass. This class specifies the + master device a given slave device is attached to. For master + devices, the class specifies the respective paired master + device. + + The use field specifies how the device is currently being used. + If the value is IsXKeyboard, the device is a master keyboard. + If the value is IsXPointer, the device is a master pointer. If + the value is IsXExtensionPointer, the device is a slave + pointer. If the value is IsXExtensionKeyboard, the device is a + slave keyboard. If the value is IsXExtensionDevice, the device + is available for use as an extension device. + + The inputclassinfo field contains a pointer to the first + input-class specific data. The first two fields are common to + all classes. + + The class field is a number in the range 0-255. It uniquely + identifies the class of input for which information is + returned. Currently defined classes are KeyClass, ButtonClass, + and ValuatorClass. + + The length field is a number in the range 0- 255. It specifies + the number of bytes of data that are contained in this input + class. The length includes the class and length fields. + + The XKeyInfo structure describes the characteristics of the + keys on the device. It is defined as follows: + + typedef struct _XKeyInfo { + XID class; + int length; + unsigned short min_keycode; + unsigned short max_keycode; + unsigned short num_keys; + } XKeyInfo; + + + min_keycode is of type KEYCODE. It specifies the minimum + keycode that the device will report. The minimum keycode will + not be smaller than 8. + + max_keycode is of type KEYCODE. It specifies the maximum + keycode that the device will report. The maximum keycode will + not be larger than 255. + + num_keys specifies the number of keys that the device has. + + The XButtonInfo structure defines the characteristics of the + buttons on the device. It is defined as follows: + + typedef struct _XButtonInfo { + XID class; + int length; + short num_buttons; + } XButtonInfo; + + num_buttons specifies the number of buttons that the device + has. + + The XValuatorInfo structure defines the characteristics of the + valuators on the device. It is defined as follows: + + typedef struct _XValuatorInfo { + XID class; + int length; + unsigned char num_axes; + unsigned char mode; + unsigned long motion_buffer; + XAxisInfoPtr axes; + } XValuatorInfo; + + num_axes contains the number of axes the device supports. + + mode is a constant that has one of the following values: + Absolute or Relative. Some devices allow the mode to be changed + dynamically via the SetDeviceMode request. + + motion_buffer_size is a cardinal number that specifies the + number of elements that can be contained in the motion history + buffer for the device. + + The axes field contains a pointer to an XAxisInfo structure. + + The XAxisInfo structure is defined as follows: + + typedef struct _XAxisInfo { + int resolution; + int min_value; + int max_value; + } XAxisInfo; + + The resolution contains a number in counts/meter. + + The min_val field contains a number that specifies the minimum + value the device reports for this axis. For devices whose mode + is Relative, the min_val field will contain 0. + + The max_val field contains a number that specifies the maximum + value the device reports for this axis. For devices whose mode + is Relative, the max_val field will contain 0. + + The XAttachInfo structure is defined as follows: + typedef struct _XAttachInfo { + int attached; + } XAttachInfo; + + If the device is a slave device, attached specifies the device + ID of the master device this device is attached to. If the + device is not attached to a master device, attached is + Floating. If the device is a master device, attached specifies + the device ID of the master device this device is paired with. + + To free the XDeviceInfo array created by XListInputDevices, use + XFreeDeviceList. diff --git a/man/XOpenDevice.txt b/man/XOpenDevice.txt new file mode 100644 index 0000000..fbeb5e7 --- /dev/null +++ b/man/XOpenDevice.txt @@ -0,0 +1,113 @@ +XOPENDEVICE(libmansuffix) +========================= + +NAME +---- + + XOpenDevice, XCloseDevice - open or close an extension input + device + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XDevice *XOpenDevice( Display *display, + XID device_id); + + XCloseDevice( Display *display, + XDevice *device); + + display + Specifies the connection to the X server. + + device_id + Specifies the id of the device to be opened + + device + Specifies the device to be closed + +DESCRIPTION +----------- + + The XOpenDevice request makes an input device accessible to a + client through input extension protocol requests. If + successful, it returns a pointer to an XDevice structure. + + The XCloseDevice request makes an input device inaccessible to + a client through input extension protocol requests. Before + terminating, and client that has opened input devices through + the input extension should close them via CloseDevice. + + When a client makes an XCloseDevice request, any active grabs + that the client has on the device are released. Any event + selections that the client has are deleted, as well as any + passive grabs. If the requesting client is the last client + accessing the device, the server may disable all access by X to + the device. + + XOpenDevice and XCloseDevice can generate a BadDevice error. + +Structures + + The XDevice structure returned by XOpenDevice contains: + typedef struct { + XID device_id; + int num_classes; + XInputClassInfo *classes; + } XDevice; + + The classes field is a pointer to an array of XInputClassInfo + structures. Each element of this array contains an event type + base for a class of input supported by the specified device. + The num_classes field indicates the number of elements in the + classes array. + + The XInputClassInfo structure contains: + + typedef struct { + unsigned char input_class; + unsigned char event_type_base; + } XInputClassInfo; + + The input_class field identifies one class of input supported + by the device. Defined types include KeyClass, ButtonClass, + ValuatorClass, ProximityClass, FeedbackClass, FocusClass, and + OtherClass. The event_type_base identifies the event type of + the first event in that class. + + The information contained in the XInputClassInfo structure is + used by macros to obtain the event classes that clients use in + making XSelectExtensionEvent requests. Currently defined macros + include DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress, + DeviceButtonRelese, DeviceMotionNotify, DeviceFocusIn, + DeviceFocusOut, ProximityIn, ProximityOut, DeviceStateNotify, + DeviceMappingNotify, ChangeDeviceNotify, + DevicePointerMotionHint, DeviceButton1Motion, + DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion, + DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton, + DeviceButtonPressGrab, and NoExtensionEvent. + + To obtain the proper event class for a particular device, one + of the above macros is invoked using the XDevice structure for + that device. For example, + DeviceKeyPress (*device, type, eventclass); + + returns the DeviceKeyPress event type and the eventclass for + DeviceKeyPress events from the specified device. + + This eventclass can then be used in an XSelectExtensionEvent + request to ask the server to send DeviceKeyPress events from + this device. When a selected event is received via XNextEvent, + the type can be used for comparison with the type in the event. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The specified device + does not exist, or is the X keyboard or X pointer. This + error may also occur if some other client has caused the + specified device to become the X keyboard or X pointer + device via the XChangeKeyboardDevice or + XChangePointerDevice requests. diff --git a/man/XQueryDeviceState.txt b/man/XQueryDeviceState.txt new file mode 100644 index 0000000..cd9f982 --- /dev/null +++ b/man/XQueryDeviceState.txt @@ -0,0 +1,84 @@ +XQUERYDEVICESTATE(libmansuffix) +=============================== + +NAME +---- + + XQueryDeviceState - query the state of an extension input + device. + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XQueryDeviceState( Display *display, + XDevice *device); + + display + Specifies the connection to the X server. + + device + Specifies the device whose state is to be queried. + +DESCRIPTION +----------- + + The XQueryDeviceState request queries the state of an input + device. The current state of keys and buttons (up or down), and + valuators (current value) on the device is reported by this + request. Each key or button is represented by a bit in the + XDeviceState structure that is returned. Valuators on the + device report 0 if they are reporting relative information, and + the current value if they are reporting absolute information. + + XQueryDeviceState can generate a BadDevice error. + +Structures + + The XDeviceState structure contains: + + typedef struct { + XID device_id; + int num_classes; + XInputClass *data; + } XDeviceState; + + The XValuatorState structure contains: + + typedef struct { + unsigned char class; + unsigned char length; + unsigned char num_valuators; + unsigned char mode; + int *valuators; + } XValuatorState; + + The XKeyState structure contains: + + typedef struct { + unsigned char class; + unsigned char length; + short num_keys; + char keys[32]; + } XKeyState; + + The XButtonState structure contains: + + typedef struct { + unsigned char class; + unsigned char length; + short num_buttons; + char buttons[32]; + } XButtonState; + +DIAGNOSTICS +----------- + + 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 some + other client has caused the specified device to become + the X keyboard or X pointer device via the + XChangeKeyboardDevice or XChangePointerDevice requests. diff --git a/man/XSelectExtensionEvent.txt b/man/XSelectExtensionEvent.txt new file mode 100644 index 0000000..a31ca40 --- /dev/null +++ b/man/XSelectExtensionEvent.txt @@ -0,0 +1,123 @@ +XSELECTEXTENSIONEVENT(libmansuffix) +=================================== + +NAME +---- + + XSelectExtensionEvent, XGetSelectedExtensionEvents - select + extension events, get the list of currently selected extension + events + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XSelectExtensionEvent( Display *display, + Window w, + XEventClass *event_list, + int event_count); + + XGetSelectedExtensionEvents( Display *display, + Window w, + int this_client_event_count_return, + XEventClass *this_client_event_list_return, + int all_clients_event_count_return, + XEventClass *all_clients_event_list_return); + + display + Specifies the connection to the X server. + + w + Specifies the window whose events you are interested in. + + event_list + Specifies the list of event classes that describe the + events you are interested in. + + event_count + Specifies the count of event classes in the event list. + + this_client_event_count_return + Returns the count of event classes selected by this + client. + + this_client_event_list_return + Returns a pointer to the list of event classes selected + by this client. + + all_clients_event_count_return + Returns the count of event classes selected by all + clients. + + all_clients_event_list_return + Returns a pointer to the list of event classes selected + by all clients. + +DESCRIPTION +----------- + + The XSelectExtensionEvent request causes the X server to report + the events associated with the specified list of event classes. + Initially, X will not report any of these events. Events are + reported relative to a window. If a window is not interested in + a device event, it usually propagates to the closest ancestor + that is interested, unless the do_not_propagate mask prohibits + it. + + Multiple clients can select for the same events on the same + window with the following restrictions: + * Multiple clients can select events on the same window + because their event masks are disjoint. When the X server + generates an event, it reports it to all interested + clients. + * Only one client at a time can select a DeviceButtonPress + event with automatic passive grabbing enabled, which is + associated with the event class DeviceButtonPressGrab. To + receive DeviceButtonPress events without automatic passive + grabbing, use event class DeviceButtonPress but do not + specify event class DeviceButtonPressGrab. + + The server reports the event to all interested clients. + + Information contained in the XDevice structure returned by + XOpenDevice is used by macros to obtain the event classes that + clients use in making XSelectExtensionEvent requests. Currently + defined macros include DeviceKeyPress, DeviceKeyRelease, + DeviceButtonPress, DeviceButtonRelese, DeviceMotionNotify, + DeviceFocusIn, DeviceFocusOut, ProximityIn, ProximityOut, + DeviceStateNotify, DeviceMappiingNotify, ChangeDeviceNotify, + DevicePointerMotionHint, DeviceButton1Motion, + DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion, + DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton, + DeviceButtonPressGrab, and NoExtensionEvent. + + To obtain the proper event class for a particular device, one + of the above macros is invoked using the XDevice structure for + that device. For example, + DeviceKeyPress (*device, type, eventclass); + + returns the DeviceKeyPress event type and the eventclass for + selecting DeviceKeyPress events from this device. + + XSelectExtensionEvent can generate a BadWindow or BadClass + error. The XGetSelectedExtensionEvents request reports the + extension events selected by this client and all clients for + the specified window. This request returns pointers to two + XEventClass arrays. One lists the input extension events + selected by this client from the specified window. The other + lists the event classes selected by all clients from the + specified window. You should use XFree to free these two + arrays. + + XGetSelectedExtensionEvents can generate a BadWindow error. + +DIAGNOSTICS +----------- + + BadWindow + A value for a Window argument does not name a defined + window. + + BadClass + A value for an XEventClass is invalid. diff --git a/man/XSendExtensionEvent.txt b/man/XSendExtensionEvent.txt new file mode 100644 index 0000000..77051a5 --- /dev/null +++ b/man/XSendExtensionEvent.txt @@ -0,0 +1,114 @@ +XSENDEXTENSIONEVENT(libmansuffix) +================================= + +NAME +---- + + XSendExtensionEvent - send input extension events to a client + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + Status XSendExtensionEvent( Display *display, + XDevice *device, + Window destination, + Bool propagate, + int event_count, + XEventClass *event_list, + XEvent *event_send); + + display + Specifies the connection to the X server. + + device + Specifies the device from which the events are to be + sent. + + destination + Specifies the window the event is to be sent to. You can + pass window id, PointerWindow,or InputFocus. + + propagate + Specifies a Boolean value that is either True or False. + + event_count + Specifies the count of XEventClasses in event_list. + + event_list + Specifies the list of event selections to be used. + + event_send + Specifies a pointer to the event that is to be sent. + +DESCRIPTION +----------- + + The XSendExtensionEvent request identifies the destination + window, determines which clients should receive the specified + events, and ignores any active grabs. This request requires you + to pass an event class list. For a discussion of the valid + event class names, see XOpenDevice(libmansuffix) This + request uses the w argument to identify the destination window + as follows: + * If w is PointerWindow,the destination window is the window + that contains the pointer. + * If w is InputFocusand if the focus window contains the + pointer,the destination window is the window that contains + the pointer; otherwise, the destination window is the focus + window. + + To determine which clients should receive the specified events, + XSendExtensionEventuses the propagate argument as follows: + * If event_list is the empty set,the event is sent to the + client that created the destination window. If that client + no longer exists,no event is sent. + * If propagate is False,the event is sent to every client + selecting on destination any of the eventtypes specified by + the event_list array. + * If propagate is Trueand no clients have selected on + destination any ofthe events specified by the event_list + array,the destination is replaced with theclosest ancestor + of destination for which some client has selected atype + specified by the event-list array and for which no + interveningwindow has that type in + itsdo-not-propagate-mask. If no such window exists or if + the window isan ancestor of the focus window and + InputFocuswas originally specifiedas the destination, the + event is not sent to any clients. Otherwise, the event is + reported to every client selecting on the finaldestination + any of the events specified in the event_list array. + + The event in the XEventstructure must be one of the events + defined by the input extension (or a BadValueerror results) so + that the X server can correctly byte-swapthe contents as + necessary. The contents of the event areotherwise unaltered and + unchecked by the X server except to force send_event to Truein + the forwarded event and to set the serial number in the event + correctly. + + XSendExtensionEventreturns zero if the conversion to wire + protocol format failedand returns nonzero + otherwise.XSendExtensionEventcan generate BadClass, BadDevice, + BadValue, and BadWindow errors. + +DIAGNOSTICS +----------- + + 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. + + 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. + + BadWindow + A value for a Window argument does not name a defined + window. diff --git a/man/XSetDeviceButtonMapping.txt b/man/XSetDeviceButtonMapping.txt new file mode 100644 index 0000000..4c1251c --- /dev/null +++ b/man/XSetDeviceButtonMapping.txt @@ -0,0 +1,97 @@ +XSETDEVICEBUTTONMAPPING(libmansuffix) +===================================== + +NAME +---- + + XSetDeviceButtonMapping, XGetDeviceButtonMapping - query or + change device button mappings + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + int XSetDeviceButtonMapping( Display *display, + XDevice *device, + unsigned char map[], + int nmap); + + int XGetDeviceButtonMapping( Display *display, + XDevice *device, + unsigned char map_return[], + int nmap); + + display + Specifies the connection to the X server. + + device + Specifies the device whose button mapping is to be + queried or changed. + + map + Specifies the mapping list. + + map_return + Returns the mapping list. + + nmap + Specifies the number of items in the mapping list. + +DESCRIPTION +----------- + + The XSetDeviceButtonMapping request sets the mapping of the + specified device. If it succeeds, the X server generates a + DeviceMappingNotify event, and XSetDeviceButtonMapping returns + MappingSuccess. Element map[i] defines the logical button + number for the physical button i+1. The length of the list must + be the same as XGetDeviceButtonMapping would return, or a + BadValue error results. A zero element disables a button, and + elements are not restricted in value by the number of physical + buttons. However, no two elements can have the same nonzero + value, or a BadValue error results. If any of the buttons to be + altered are logically in the down state, + XSetDeviceButtonMapping returns MappingBusy, and the mapping is + not changed. + + XSetDeviceButtonMapping can generate BadDevice, BadMatch, and + BadValue errors. + + The XGetDeviceButtonMapping request returns the current mapping + of the specified device. Buttons are numbered starting from + one.XGetDeviceButtonMapping returns the number of physical + buttons actually on the device. The nominal mapping for a + device is map[i]=i+1. The nmap argument specifies the length of + the array where the device mapping is returned, and only the + first nmap elements are returned in map_return. + + XGetDeviceButtonMapping can generate BadDevice or BadMatch + errors. + +DIAGNOSTICS +----------- + + 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. + + BadMatch + This error may occur if an XGetDeviceButtonMapping or + XSetDeviceButtonMapping request was made specifying a + device that has no buttons. + + 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. + +SEE ALSO +-------- + + XChangeDeviceKeyboardControl(libmansuffix), XChangeDeviceKeyMapping(libmansuffix), + XChangeDeviceModifierMapping(libmansuffix) diff --git a/man/XSetDeviceFocus.txt b/man/XSetDeviceFocus.txt new file mode 100644 index 0000000..2d92a9f --- /dev/null +++ b/man/XSetDeviceFocus.txt @@ -0,0 +1,154 @@ +XSETDEVICEFOCUS(libmansuffix) +============================= + +NAME +---- + + XSetDeviceFocus, XGetDeviceFocus - control extension input + device focus + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XSetDeviceFocus( Display *display, + XDevice *device, + Window focus, + int revert_to, + Time time); + + XGetDeviceFocus( Display *display, + XDevice *device, + Window *focus_return, + int *revert_to_return, + int * time_return); + +Arguments + + display + Specifies the connection to the X server. + + device + Specifies the device whose focus is to be queried or + changed. + + focus + Specifies the window, PointerRoot, FollowKeyboard,or + None. + + focus_return + Returns the focus window, PointerRoot, FollowKeyboard,or + None. + + revert_to + Specifies where the input focus reverts to if the window + becomes notviewable.You can pass RevertToParent, + RevertToPointerRoot, RevertToFollowKeyboard,or + RevertToNone. + + revert_to_return + Returns the current focus state RevertToParent, + RevertToPointerRoot, RevertToFollowKeyboard,or + RevertToNone. + + time_return + Returns the last_focus_time for the device. + + time + Specifies the time.You can pass either a timestamp or + CurrentTime. + +DESCRIPTION +----------- + + The XSetDeviceFocus request changes the focus of the specified + device and its last-focus-change time. It has no effect if the + specified time is earlier than the current last-focus-change + time or is later than the current X server time. Otherwise, the + last-focus-change time is set to the specified time CurrentTime + is replaced by the current X server time). XSetDeviceFocus + causes the X server to generate DeviceFocusIn and + DeviceFocusOut events. + + Depending on the focus argument, the following occurs: + * If focus is None , all device events are discarded until a + new focus window is set, and the revert_to argument is + ignored. + * If focus is a window, it becomes the device's focus window. + If a generated device event would normally be reported to + this window or one of its inferiors, the event is reported + as usual. Otherwise, the event is reported relative to the + focus window. + * If focus is PointerRoot, the focus window is dynamically + taken to be the root window of whatever screen the pointer + is on at each event from the specified device. In this + case, the revert_to argument is ignored. + * If focus is FollowKeyboard, the focus window is dynamically + taken to be the window to which the X keyboard focus is set + at each input event. + + The specified focus window must be viewable at the time + XSetDeviceFocus is called, or a BadMatch error results. If the + focus window later becomes not viewable, the X server evaluates + the revert_to argument to determine the new focus window as + follows: + * If revert_to is RevertToParent, the focus reverts to the + parent (or the closest viewable ancestor), and the new + revert_to value is taken to be RevertToNone. + * If revert_to is RevertToPointerRoot, + RevertToFollowKeyboard, or RevertToNone, the focus reverts + to PointerRoot, FollowKeyboard, or None, respectively. + + When the focus reverts, the X server generates DeviceFocusIn + and DeviceFocusOut events, but the last-focus-change time is + not affected. + + Input extension devices are not required to support the ability + to be focused. Attempting to set the focus of a device that + does not support this request will result in a BadMatch error. + Whether or not given device can support this request can be + determined by the information returned by XOpenDevice. For + those devices that support focus, XOpenDevice will return an + XInputClassInfo structure with the input_class field equal to + the constant FocusClass (defined in the file XI.h). + + XSetDeviceFocus can generate BadDevice, BadMatch, BadValue, and + BadWindow errors. + + The XGetDeviceFocus request returns the focus window and the + current focus state. + + Not all input extension devices can be focused. Attempting to + query the focus state of a device that can't be focused results + in a BadMatch error. A device that can be focused returns + information for input Class Focus when an XOpenDevice request + is made. + + XGetDeviceFocus can generate BadDevice, and BadMatch errors. + +DIAGNOSTICS +----------- + + 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. + + 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. + + BadWindow + A value for a Window argument does not name a defined + Window. + + BadMatch + This error may occur if an XGetDeviceFocus or + XSetDeviceFocus request was made specifying a device + that the server implementation does not allow to be + focused. diff --git a/man/XSetDeviceMode.txt b/man/XSetDeviceMode.txt new file mode 100644 index 0000000..947ccfc --- /dev/null +++ b/man/XSetDeviceMode.txt @@ -0,0 +1,57 @@ +XSETDEVICEMODE(libmansuffix) +============================ + +NAME +---- + + XSetDeviceMode - change the mode of a device + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XSetDeviceMode( Display *display, + XDevice *device, + int mode); + + display + Specifies the connection to the X server. + + device + Specifies the device whose mode is to be changed. + + mode + Specifies the mode.You can pass Absolute,or Relative. + +DESCRIPTION +----------- + + The XSetDeviceMode request changes the mode of an input device + that is capable of reporting either absolute positional + information or relative motion information. Not all input + devices are capable of reporting motion data, and not all are + capable of changing modes from Absolute to Relative. + + XSetDeviceMode can generate a BadDevice or BadMode error. + +DIAGNOSTICS +----------- + + 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 some + other client has caused the specified device to become + the X keyboard or X pointer device via the + XChangeKeyboardDevice or XChangePointerDevice requests. + + BadMatch + This error may occur if an XSetDeviceMode request is + made specifying a device that has no valuators and + reports no axes of motion. + + BadMode + An invalid mode was specified. This error will also be + returned if the specified device is not capable of + supporting the XSetDeviceMode request. diff --git a/man/XSetDeviceValuators.txt b/man/XSetDeviceValuators.txt new file mode 100644 index 0000000..1116cea --- /dev/null +++ b/man/XSetDeviceValuators.txt @@ -0,0 +1,74 @@ +XSETDEVICEVALUATORS(libmansuffix) +================================= + +NAME +---- + + XSetDeviceValuators - initialize the valuators on an extension input device + +SYNOPSIS +-------- + + #include <X11/extensions/XInput.h> + + XSetDeviceValuators( Display *display, + XDevice *device, + int *valuators, + int first_valuator, + int num_valuators); + + display + Specifies the connection to the X server. + + device + Specifies the device whose valuators are to be + initialized. + + valuators + Specifies a pointer to an array of integer values to be + used to initialize thedevice valuators. + + first_valuator + Specifies the first valuator to be set. Valuators are + numbered beginning withzero. + + num_valuators + Specifies the number of valuators to be set. + +DESCRIPTION +----------- + + The XSetDeviceValuators request sets the current values of the + valuators of an input device. The valuators in the range + first_valuator to (first_valuator + num_valuators) are set to + the specified values. Valuators are numbered beginning with 0. + Not all input devices support initialization of valuator + values. If this request is made to a device that does not + support valuators initialization, a BadMatch error will occur. + + If the request succeeds, a status of Success is returned. If + another client has the device grabbed, a status of + AlreadyGrabbed is returned. + + XSetDeviceValuators can generate a BadLength, BadDevice, + BadMatch, or BadValue error. + +DIAGNOSTICS +----------- + + BadDevice + An invalid device was specified. The specified device + does not exist or has not been opened by this client via + XOpenInputDevice. + + BadMatch + This error may occur if an XSetDeviceValuators request + is made specifying a device that has no valuators and + reports no axes of motion, or if such a request is made + specifying a device that does not support valuator + initialization. + + BadValue + An invalid first_valuator or num_valuators values was + specified. + |