summaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
Diffstat (limited to 'man')
-rw-r--r--man/XAllowDeviceEvents.man149
-rw-r--r--man/XChangeDeviceDontPropagateList.man104
-rw-r--r--man/XChangeKeyboardDevice.man69
-rw-r--r--man/XChangePointerDevice.man79
-rw-r--r--man/XDeviceBell.man83
-rw-r--r--man/XGetDeviceControl.man149
-rw-r--r--man/XGetDeviceKeyMapping.man187
-rw-r--r--man/XGetDeviceModifierMapping.man145
-rw-r--r--man/XGetDeviceMotionEvents.man125
-rw-r--r--man/XGetExtensionVersion.man53
-rw-r--r--man/XGetFeedbackControl.man329
-rw-r--r--man/XGrabDevice.man207
-rw-r--r--man/XGrabDeviceButton.man217
-rw-r--r--man/XGrabDeviceKey.man231
-rw-r--r--man/XListInputDevices.man234
-rw-r--r--man/XOpenDevice.man128
-rw-r--r--man/XQueryDeviceState.man99
-rw-r--r--man/XSelectExtensionEvent.man148
-rw-r--r--man/XSendExtensionEvent.man149
-rw-r--r--man/XSetDeviceButtonMapping.man113
-rw-r--r--man/XSetDeviceFocus.man216
-rw-r--r--man/XSetDeviceMode.man69
-rw-r--r--man/XSetDeviceValuators.man79
23 files changed, 3362 insertions, 0 deletions
diff --git a/man/XAllowDeviceEvents.man b/man/XAllowDeviceEvents.man
new file mode 100644
index 0000000..bc954d8
--- /dev/null
+++ b/man/XAllowDeviceEvents.man
@@ -0,0 +1,149 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XAllDvEv.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XAllowDeviceEvents 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XAllowDeviceEvents \- release queued events
+.SH SYNTAX
+XAllowDeviceEvents\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIevent_mode\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIevent_mode\fP\^;
+.br
+ Time \fItime\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device from which events are to be allowed.
+.TP 12
+.I event_mode
+Specifies the event mode.
+You can pass
+\fIAsyncThisDevice\fP,
+\fISyncThisDevice\fP,
+\fIReplayThisDevice\fP,
+\fIAsyncOtherDevices\fP,
+\fISyncAll\fP,
+or
+\fIAsyncAll\fP.
+.TP 12
+.I time
+Specifies the time.
+You can pass either a timestamp or
+\fICurrentTime\fP.
+.SH DESCRIPTION
+The
+\fIXAllowDeviceEvents\fP
+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.
+.LP
+The following describes the processing that occurs depending on what
+constant you pass to the event_mode argument.
+.TP 12
+\fIAsyncThisDevice\fP
+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, \fIAsyncThisDevice\fP thaws for all.
+\fIAsyncThisDevice\fP has no effect if the specified device is not frozen by
+the client, but the device need not be grabbed by the client.
+.TP 12
+\fISyncThisDevice\fP
+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. \fISyncThisDevice\fP
+has no effect if the specified device is not frozen by the client or is not
+grabbed by the client.
+.TP 12
+\fIReplayThisDevice\fP
+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.
+.TP 12
+\fIAsyncOtherDevices\fP
+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, \fIAsyncOtherDevices\fP "thaws" for
+all. \fIAsyncOtherDevices\fP has no effect if the devices are not frozen
+by the client.
+.TP 12
+\fISyncAll\fP
+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. \fISyncAll\fP 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, \fISyncAll\fP thaws
+for both. A subsequent freeze for \fISyncAll\fP will only
+freeze each device once.
+.TP 12
+\fIAsyncAll\fP
+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, \fIAsyncAll\fP thaws for
+all. \fIAsyncAll\fP has no effect unless all devices are frozen by
+the client.
+.LP
+\fIAsyncThisDevice\fP,
+\fISyncThisDevice\fP,
+and
+\fIReplayThisDevice\fP
+have no effect on the processing of events from the remaining devices.
+\fIAsyncOtherDevices\fP
+has no effect on the processing of events from the specified device. When
+the event_mode is
+\fISyncAll\fP
+or
+\fIAsyncAll\fP,
+the device parameter is ignored.
+.LP
+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.
+.LP
+\fIXAllowDeviceEvents\fP
+can generate a \fIBadDevice\fP or
+\fIBadValue\fP
+error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadValue\fP
+An invalid mode was specified on the request.
+.SH "SEE ALSO"
+XGrabDevice(3X11)
+.br
+\fI\*(xL\fP
diff --git a/man/XChangeDeviceDontPropagateList.man b/man/XChangeDeviceDontPropagateList.man
new file mode 100644
index 0000000..b3e854e
--- /dev/null
+++ b/man/XChangeDeviceDontPropagateList.man
@@ -0,0 +1,104 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChProp.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XChangeDeviceDontPropagateList 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XChangeDeviceDontPropagateList, XGetDeviceDontPropagateList \- query or change the dont-propagate-list for extension devices
+.SH SYNTAX
+XChangeDeviceDontPropagateList\^(\^\fIdisplay\fP, \fIwindow\fP\^,
+\fIcount\fP\^, \fIevent_list\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window *\fIwindow\fP\^;
+.br
+ int *\fIcount\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ int \fImode\fP\^;
+.br
+XEventClass *XGetDeviceDontPropagateList\^(\^\fIdisplay\fP, \fIwindow\fP\^,
+\fIcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window *\fIwindow\fP\^;
+.br
+ int *\fIcount\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I window
+Specifies the window whose dont-propagate-list is to be queried or modified.
+.TP 12
+.I event_list
+Specifies a pointer to a list of event classes.
+.TP 12
+.I mode
+Specifies the mode.
+You can pass
+\fIAddToList\fP ,
+or
+\fIDeleteFromList\fP.
+.TP 12
+.I count
+Specifies the number of event classes in the list.
+.SH DESCRIPTION
+The \fIXChangeDeviceDontPropagateList\fP 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.
+.LP
+Suppression of event propagation is not allowed for all input extension
+events. If a specified event class is one that cannot be suppressed,
+a \fIBadClass\fP error will result. Events that can be suppressed
+include \fIDeviceKeyPress\fP, \fIDeviceKeyRelease\fP, \fIDeviceButtonPress\fP,
+\fIDeviceButtonRelease\fP, \fIDeviceMotionNotify\fP, \fIProximityIn\fP,
+and \fIProximityOut\fP.
+.LP
+\fIXChangeDeviceDontPropagateList\fP
+can generate a \fIBadDevice\fP, \fIBadClass\fP, or \fIBadValue\fP error.
+.LP
+The \fIXGetDeviceDontPropagateList\fP request queries the list
+of events that should not be propagated to ancestors of the event window.
+.LP
+\fIXGetDeviceDontPropagateList\fP
+can generate a \fIBadClass\fP or \fIBadWindow\fP error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. 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 \fIXChangeKeyboardDevice\fP or
+\fIXChangePointerDevice\fP requests.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadWindow\fP
+An invalid window id was specified.
+.TP 12
+\fIBadClass\fP
+An invalid event class was specified.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XChangeKeyboardDevice.man b/man/XChangeKeyboardDevice.man
new file mode 100644
index 0000000..53c2cf3
--- /dev/null
+++ b/man/XChangeKeyboardDevice.man
@@ -0,0 +1,69 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChgKbd.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XChangeKeyboardDevice 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XChangeKeyboardDevice \- change which device is used as the X keyboard
+.SH SYNTAX
+Status XChangeKeyboardDevice\^(\^\fIdisplay\fP, \fIdevice\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device to be used as the X keyboard.
+.SH DESCRIPTION
+The \fIXChangeKeyboardDevice\fP 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 \fIXOpenDevice\fP or a \fIBadDevice\fP error will result.
+The device must support input class \fIKeys\fP, or a \fIBadMatch\fP error
+will result. If the server implementation does not support using the requested
+device as the X keyboard, a \fIBadDevice\fP error will result.
+.LP
+If the specified device is grabbed by another client, \fIAlreadyGrabbed\fP
+is returned. If the specified device is frozen by a grab on another device,
+\fIGrabFrozen\fP is returned.
+If the request is successful, \fISuccess\fP is returned.
+.LP
+If the request succeeds,
+a \fIChangeDeviceNotify\fP event is sent to all clients that have selected that
+event. A \fIMappingNotify\fP event with request = \fIMappingKeyboard\fP
+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.
+.LP
+\fIXChangeKeyboardDevice\fP can generate a \fIBadDevice\fP or a \fIBadMatch\fP
+error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist, has
+not been opened by this client via \fIXOpenInputDevice\fP, 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.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXChangeKeyboardDevice\fP request was made
+specifying a device that has no keys.
+.SH "SEE ALSO"
+XChangePointerDevice
+.br
+\fI\*(xL\fP
diff --git a/man/XChangePointerDevice.man b/man/XChangePointerDevice.man
new file mode 100644
index 0000000..6122c3b
--- /dev/null
+++ b/man/XChangePointerDevice.man
@@ -0,0 +1,79 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChgPtr.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XChangePointerDevice 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XChangePointerDevice \- change which device is the X pointer
+.SH SYNTAX
+Status XChangePointerDevice\^(\^\fIdisplay\fP, \fIdevice\fP\^ \fIxaxis\fP\^, \fIyaxis\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIxaxis\fP\^;
+.br
+ int \fIyaxis\fP\^;
+.br
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device to be used as the X pointer.
+.TP 12
+.I xaxis
+Specifies the axis of the device to be used as the X pointer x-axis.
+.TP 12
+.I yaxis
+Specifies the axis of the device to be used as the X pointer y-axis.
+.SH DESCRIPTION
+The \fIXChangePointerDevice\fP request causes the server to use the specified
+device as the X pointer. The device must have been opened by the client via
+\fIXOpenDevice\fP or a \fIBadDevice\fP error will result. The device must
+support input class \fIValuators\fP or a \fIBadMatch\fP error will result.
+If the implementation does not support use of the specified device as the
+X pointer, a \fIBadDevice\fP error will result.
+.LP
+If the specified device is grabbed by another client, \fIAlreadyGrabbed\fP
+is returned. If the specified device is frozen by a grab on another device,
+\fIGrabFrozen\fP is returned.
+If the request is successful, \fISuccess\fP is returned.
+.LP
+If the request succeeds,
+a \fIChangeDeviceNotify\fP event is sent to all clients that have selected that
+event. A \fIMappingNotify\fP event with request = \fIMappingPointer\fP 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.
+.LP
+\fIXChangePointerDevice\fP can generate a \fIBadDevice\fP or a \fIBadMatch\fP
+error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist, has
+not been opened by this client via \fIXOpenInputDevice\fP, 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.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXChangePointerDevice\fP request was made
+specifying a device that has less than two valuators, or specifying a
+valuator index beyond the range supported by the device.
+.SH "SEE ALSO"
+XChangeKeyboardDevice
+.br
+\fI\*(xL\fP
diff --git a/man/XDeviceBell.man b/man/XDeviceBell.man
new file mode 100644
index 0000000..5b44667
--- /dev/null
+++ b/man/XDeviceBell.man
@@ -0,0 +1,83 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XDevBell.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XDeviceBell 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XDeviceBell \- ring a bell on a device supported through the input extension
+.SH SYNTAX
+Status XDeviceBell\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIfeedbackclass\fP\^, \fIfeedbackid\fP\^, \fIpercent\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ XID *\fIfeedbackclass\fP\^;
+.br
+ XID *\fIfeedbackid\fP\^;
+.br
+ int *\fIpercent\fP\^;
+.br
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device with which the bell is associated.
+.TP 12
+.I feedbackclass
+Specifies the class of the feedback with which the bell is associated.
+.TP 12
+.I feedbackid
+Specifies the id of the feedback with which the bell is associated.
+.TP 12
+.I percent
+Specifies the volume in the range -100 to 100 at which the bell should be rung.
+.SH DESCRIPTION
+The \fIXDeviceBell\fP 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 \fIBadDevice\fP error will be returned. The feedbackclass and feedbackid
+parameters contain values returned by an \fIXGetFeedbackControl\fP 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 \fIBadValue\fP error will be returned.
+.LP
+The volume at which the bell is rung when the percent argument is
+nonnegative is:
+.IP
+base \- [(base * percent) / 100] + percent
+.LP
+The volume at which the bell rings
+when the percent argument is negative is:
+.IP
+base + [(base * percent) / 100]
+.LP
+To change the base volume of the bell, use \fIXChangeFeedbackControl\fP.
+.LP
+\fIXDeviceBell\fP can generate a \fIBadDevice\fP or a \fIBadValue\fP
+error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist, or has
+not been opened by this client via \fIXOpenInputDevice\fP.
+.TP 12
+\fIBadValue\fP
+An invalid feedbackclass, feedbackid, or percent value was specified.
+.SH "SEE ALSO"
+XChangeFeedbackControl(3X),
+XBell(3X)
+.br
+\fI\*(xL\fP
diff --git a/man/XGetDeviceControl.man b/man/XGetDeviceControl.man
new file mode 100644
index 0000000..ecae869
--- /dev/null
+++ b/man/XGetDeviceControl.man
@@ -0,0 +1,149 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChDCtl.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XGetDeviceControl 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGetDeviceControl, XChangeDeviceControl \- query and change input device controls
+.SH SYNTAX
+XDeviceControl *
+XGetDeviceControl\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIcontrol\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int *\fIcontrolType\fP\^;
+.br
+.sp
+int XChangeDeviceControl\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIcontrolType\fP\^, \fIcontrol\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIcontrolType\fP\^;
+.br
+ XDeviceControl *\fIcontrol\fP\^;
+.SH ARGUMENTS
+.TP 15
+.I display
+Specifies the connection to the X server.
+.TP 15
+.I device
+Specifies the device whose control is to be interrogated or modified.
+.TP 15
+.I controlType
+Specifies the type of control to be interrogated or changed.
+.TP 15
+.I control
+Specifies the address of an \fIXDeviceControl\fP structure that contains
+the new values for the Device.
+.SH DESCRIPTION
+These requests are provided to manipulate those input devices that
+support device control. A \fIBadMatch\fP error will be generated if the
+requested device does not support any device controls.
+.LP
+Valid device control types that can be used with these requests include the
+following:
+.TP 20
+DEVICE_RESOLUTION
+Queries or changes the resolution of valuators on input devices.
+.LP
+The \fIXGetDeviceControl\fP request returns a pointer to an
+\fIXDeviceControl\fP structure.
+.LP
+\fIXGetDeviceControl\fP can generate a \fIBadDevice\fP or
+\fIBadMatch\fP error.
+.LP
+The \fIXChangeDeviceControl\fP request modifies the values of one
+control on the specified device. The control is identified by the id
+field of the \fIXDeviceControl\fP structure that is passed with the
+request.
+.LP
+\fIXChangeDeviceControl\fP can generate a \fIBadDevice\fP,
+\fIBadMatch\fP, or \fIBadValue\fP error.
+.SH STRUCTURES
+Each control is described by a structure specific to that control.
+These structures are defined in the file \fIXInput.h\fP.
+.LP
+\fIXDeviceControl\fP is a generic
+structure that contains two fields that are at the beginning of each class
+of control:
+.LP
+.DS
+.nf
+typedef struct {
+.br
+ XID class;
+.br
+ int length;
+.br
+} XDeviceControl;
+.fi
+.DE
+.LP
+The \fIXDeviceResolutionState\fP structure defines the information that is
+returned for device resolution for devices with valuators.
+.LP
+.DS
+.nf
+typedef struct {
+ XID control;
+ int length;
+ int num_valuators;
+ int *resolutions;
+ int *min_resolutions;
+ int *max_resolutions;
+} XDeviceResolutionState;
+.fi
+.DE
+.LP
+The \fIXDeviceResolutionControl\fP structure defines the attributes that can be
+controlled for keyboard Devices.
+.LP
+.DS
+.nf
+typedef struct {
+ XID control;
+ int length;
+ int first_valuator;
+ int num_valuators;
+ int *resolutions;
+} XDeviceResolutionControl;
+.fi
+.DE
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. 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 \fIXChangeKeyboardDevice\fP or
+\fIXChangePointerDevice\fP requests.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetDeviceControl\fP request was made specifying
+a device that has no controls or an \fIXChangeDeviceControl\fP request was
+made with an \fIXDeviceControl\fP structure that contains an invalid Device
+type. It may also occur if an invalid combination of mask bits is specified
+(\fIDvKey\fP but no \fIDvAutoRepeatMode\fP for keyboard Devices), or if an
+invalid KeySym is specified for a string Device.
+.TP 12
+\fIBadValue\fP
+Some numeric value falls outside the range of values accepted by the
+\fIXChangeDeviceControl\fP 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.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XGetDeviceKeyMapping.man b/man/XGetDeviceKeyMapping.man
new file mode 100644
index 0000000..ba52b7c
--- /dev/null
+++ b/man/XGetDeviceKeyMapping.man
@@ -0,0 +1,187 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChKMap.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XGetDeviceKeyMapping 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGetDeviceKeyMapping, XChangeDeviceKeyMapping \- query or change device key mappings
+.SH SYNTAX
+\fB
+XChangeDeviceKeyMapping(\^\fIdisplay\fP, \fIdevice\fP, \fIfirst_keycode\fP,
+\fIkeysyms_per_keycode\fP, \fIkeysyms\fP, \fIkeycode_count\fP\^)
+.nf
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ int \fIfirst_keycode\fP\^;
+ int \fIkeysyms_per_keycode\fP\^;
+ KeySym *\fIkeysyms\fP\^;
+ int \fIkeycode_count\fP\^;
+
+KeySym *XGetDeviceKeyMapping(\^\fIdisplay\fP, \fIdevice\fP, \fIfirst_keycode\fP, \fIkeycode_count\fP,
+\fIkeysyms_per_keycode_return\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ KeyCode \fIfirst_keycode\fP\^;
+ int \fIkeycode_count\fP\^;
+ int *\fIkeysyms_per_keycode_return\fP\^;
+.fi
+\fP
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose key mapping is to be queried or modified.
+.TP 12
+.I first_keycode
+Specifies the first KeyCode to be returned.
+.TP 12
+.I keycode_count
+Specifies the number of KeyCodes to be returned or modified.
+.TP 12
+.I keysyms_per_keycode
+Specifies the number of KeySyms per KeyCode.
+.TP 12
+.I keysyms_per_keycode_return
+Specifies the address of a variable into which the number of KeySyms per KeyCode
+will be returned.
+.TP 12
+.I keysyms
+Specifies the address of an array of KeySyms.
+.SH DESCRIPTION
+For the specified device,
+the \fIXGetDeviceKeyMapping\fP 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
+\fIXListInputDevices\fP,
+or a
+\fIBadValue\fP
+error results.
+In addition, the following expression must be less than or equal
+to max_keycode as returned by
+\fIXListInputDevices\fP:
+.LP
+.DS
+first_keycode + keycode_count \- 1
+.DE
+.LP
+If this is not the case, a
+\fIBadValue\fP
+error results.
+The number of elements in the KeySyms list is:
+.LP
+.DS
+keycode_count * keysyms_per_keycode_return
+.DE
+.LP
+KeySym number N, counting from zero, for KeyCode K has the following index
+in the list, counting from zero:
+.DS
+(K \- first_code) * keysyms_per_code_return + N
+.DE
+.LP
+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
+\fINoSymbol\fP
+is used to fill in unused elements for
+individual KeyCodes.
+To free the storage returned by
+\fIXGetDeviceKeyMapping\fP,
+use
+\fIXFree\fP.
+.LP
+If the specified device does not support input class keys, a \fIBadMatch\fP
+error will result.
+.LP
+\fIXGetDeviceKeyMapping\fP
+can generate a \fIBadDevice\fP, \fIBadMatch\fP, or \fIBadValue\fP
+error.
+.LP
+For the specified device, the \fIXChangeDeviceKeyMapping\fP
+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:
+.LP
+.DS
+num_codes * keysyms_per_keycode
+.DE
+.LP
+The specified first_keycode must be greater than or equal to min_keycode
+returned by \fIXListInputDevices\fP, or a \fIBadValue\fP error results.
+In addition, the following expression must be less than or equal to
+max_keycode as returned by
+\fIXListInputDevices\fP, or a \fIBadValue\fP error results:
+.LP
+.DS
+first_keycode + num_codes \- 1
+.DE
+.LP
+KeySym number N, counting from zero, for KeyCode K has the following index
+in keysyms, counting from zero:
+.LP
+.DS
+(K \- first_keycode) * keysyms_per_keycode + N
+.DE
+.LP
+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
+\fINoSymbol\fP
+should be used to fill in unused elements
+for individual KeyCodes.
+It is legal for
+\fINoSymbol\fP
+to appear in nontrailing positions
+of the effective list for a KeyCode.
+\fIXChangeDeviceKeyMapping\fP generates a \fIDeviceMappingNotify\fP
+event that is sent to all clients that have selected that type of event.
+.LP
+There is no requirement that the X server interpret this mapping.
+It is merely stored for reading and writing by clients.
+.LP
+If the specified device does not support input class keys, a \fIBadMatch\fP
+error results.
+.LP
+\fIXChangeDeviceKeyMapping\fP can generate a \fIBadDevice\fP,
+\fIBadMatch\fP, \fIBadAlloc\fP, or \fIBadValue\fP error.
+.LP
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetDeviceKeyMapping\fP or
+\fIXChangeDeviceKeyMapping\fP request was made
+specifying
+a device that has no keys.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadAlloc\fP
+The server failed to allocate the requested resource or server memory.
+.SH "SEE ALSO"
+XSetDeviceButtonMapping(3X11)
+.br
+XSetDeviceModifierMapping(3X11)
+.br
+\fI\*(xL\fP
diff --git a/man/XGetDeviceModifierMapping.man b/man/XGetDeviceModifierMapping.man
new file mode 100644
index 0000000..0175d83
--- /dev/null
+++ b/man/XGetDeviceModifierMapping.man
@@ -0,0 +1,145 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChMMap.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XGetDeviceModifierMapping 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGetDeviceModifierMapping, XSetDeviceModifierMapping \- query or change device modifier mappings
+.SH SYNTAX
+\fB
+XSetDeviceModifierMapping(\^\fIdisplay\fP, \fIdevice\fP, \fImodmap\fP\^)
+.nf
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ XModifierKeymap *\fImodmap\fP\^;
+
+XModifierKeymap *XGetDeviceModifierMapping(\^\fIdisplay\fP, \fIdevice\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+.fi
+\fP
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose modifier mapping is to be queried or modified.
+.TP 12
+.I modmap
+Specifies a pointer to the \fIXModifierKeymap\fP structure.
+.SH DESCRIPTION
+The \fIXSetDeviceModifierMapping\fP
+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 \fIDeviceMappingNotify\fP
+event, and \fIXSetDeviceModifierMapping\fP returns \fIMappingSuccess\fP.
+X permits at most eight modifier keys.
+If more than eight are specified in the
+\fIXModifierKeymap\fP structure, a \fIBadLength\fP
+error results.
+.LP
+The modifiermap member of the \fIXModifierKeymap\fP
+structure contains eight sets of max_keypermod KeyCodes,
+one for each modifier in the order
+\fIShift\fP,
+\fILock\fP,
+\fIControl\fP,
+\fIMod1\fP,
+\fIMod2\fP,
+\fIMod3\fP,
+\fIMod4\fP,
+and
+\fIMod5\fP.
+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
+\fIXListInputDevices\fP, or a \fIBadValue\fP
+error results.
+No KeyCode may appear twice in the entire map,
+or a
+\fIBadValue\fP
+error results.
+.LP
+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
+\fIMappingFailed\fP,
+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,
+\fIXSetDeviceModifierMapping\fP
+returns \fIMappingBusy\fP,
+and none of the modifiers is changed.
+.LP
+\fIXSetDeviceModifierMapping\fP
+can generate \fIBadLength\P, \fIBadDevice\fP, \fIBadMatch\fP, \fIBadAlloc\fP,
+and \fIBadValue\fP errors.
+.LP
+The
+\fIXGetDeviceModifierMapping\fP
+request returns a pointer to a newly created
+\fIXModifierKeymap\fP
+structure that contains the keys being used as modifiers.
+The structure should be freed after use by calling
+\fIXFreeModifierMapping \fP.
+If only zero values appear in the set for any modifier,
+that modifier is disabled.
+.LP
+\fIXGetDeviceModifierMapping\fP
+can generate \fIBadDevice\fP and \fIBadMatch\fP errors.
+.SH STRUCTURES
+The \fIXModifierKeymap\fP structure contains:
+.LP
+.nf
+typedef struct {
+ int max_keypermod;
+ KeyCode *modifiermap;
+} XModifierKeymap;
+.fi
+.LP
+.SH DIAGNOSTICS
+.TP 12
+\fIBadLength\fP
+More than eight keys were specified in the
+\fIXModifierKeymap\fP structure.
+.TP 12
+\fIBadAlloc\fP
+The server failed to allocate the requested resource or server memory.
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetDeviceModifierMapping\fP
+or \fIXChangeDeviceModifierMapping\fP request was made
+specifying
+a device that has no keys.
+.TP 12
+\fIBadValue\fP
+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.
+.SH "SEE ALSO"
+XSetDeviceKeyMapping(3X11)
+.br
+XSetDeviceButtonMapping(3X11)
+.br
+\fI\*(xL\fP
diff --git a/man/XGetDeviceMotionEvents.man b/man/XGetDeviceMotionEvents.man
new file mode 100644
index 0000000..cf8d732
--- /dev/null
+++ b/man/XGetDeviceMotionEvents.man
@@ -0,0 +1,125 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XGetDvMo.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XGetDeviceMotionEvents 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGetDeviceMotionEvents, XDeviceTimeCoord \- get device motion history
+.SH SYNTAX
+XDeviceTimeCoord *XGetDeviceMotionEvents\^(\fIdisplay\fP\^, \fIdevice\fP\^,
+\fIstart\fP\^, \fIstop\fP\^,
+.br
+\fInevents_return\fP\^, \fImode_return\fP\^, \fIaxis_count_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Time \fIstart\fP\^, \fIstop\fP\^;
+.br
+ int *\fInevents_return\fP\^;
+.br
+ int *\fImode_return\fP\^;
+.br
+ int *\fIaxis_count_return\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose motion history is to be queried.
+.TP 12
+.I start
+.br
+.ns
+.TP 12
+.I stop
+Specify the time interval in which the events are returned from the motion
+history buffer.
+You can pass a timestamp or \fICurrentTime\fP.
+.TP 12
+.I nevents_return
+Returns the number of events from the motion history buffer.
+.TP 12
+.I mode_return
+Returns the mode of the device (\fIAbsolute\fP or \fIRelative\fP).
+.TP 12
+.I axis_count_return
+Returns the count of axes being reported.
+.SH DESCRIPTION
+The server may retain the recent history of the device motion
+and do so to a finer granularity than is reported by
+\fIDeviceMotionNotify\fP
+events.
+The \fIXGetDeviceMotionEvents\fP request makes this history available.
+.LP
+The
+\fIXGetDeviceMotionEvents\fP
+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
+\fICurrentTime\fP.
+.LP
+The \fImode\fP indicates whether the device is reporting absolute positional
+data (mode=\fIAbsolute\fP) or relative motion data (mode=\fIRelative\fP).
+Some devices allow their mode to be changed via the \fIXSetDeviceMode\fP
+request.
+These constants are defined in the file XI.h. The \fIaxis_count\fP
+returns the number of axes or valuators being reported by the device.
+.LP
+\fIXGetDeviceMotionEvents\fP can generate a \fIBadDevice\fP, or \fIBadMatch\fP
+error.
+.SH STRUCTURES
+The
+\fIXDeviceTimeCoord\fP
+structure contains:
+.LP
+.nf
+typedef struct {
+ Time time;
+ int *data;
+} XDeviceTimeCoord;
+.fi
+.LP
+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 \fIAbsolute\fP, 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 \fIXAxisInfo\fP returned by the \fIXListInputDevices\fP
+request. If the mode is \fIRelative\fP, the data values are the relative
+values generated by the device.
+.LP
+You should use \fIXFreeDeviceMotionEvents\fP to free the data returned by
+this request.
+.LP
+Errors returned by this request: \fIBadDevice\fP, \fIBadMatch\fP.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetDeviceMotionEvents\fP request is made
+specifying
+a device that has no valuators and reports no axes of motion.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XGetExtensionVersion.man b/man/XGetExtensionVersion.man
new file mode 100644
index 0000000..29f7acf
--- /dev/null
+++ b/man/XGetExtensionVersion.man
@@ -0,0 +1,53 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XGetExtV.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XGetExtensionVersion 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGetExtensionVersion \- query the version of the input extension.
+.SH SYNTAX
+XExtensionVersion *XGetExtensionVersion\^(\^\fIdisplay\fP, \fIname\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I name
+Specifies the extension to be queried. The input extension name is defined
+in the header file \fIXI.h\fP.
+.SH DESCRIPTION
+The \fIXGetExtensionVersion\fP request queries the version of the input
+extension, and returns an \fIXExtensionVersion\fP structure. This structure
+contains a major_version and minor_version number which can be compared
+with constants defined in \fIXI.h\fP. 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.
+.LP
+You should use \fIXFree\fP to free the \fIXExtensionVersion\fP structure.
+.SH STRUCTURES
+This request returns an XExtensionVersion structure.
+.DS
+typedef struct {
+ int present;
+ short major_version;
+ short minor_version;
+} XExtensionVersion;
+.DE
+.SH DIAGNOSTICS
+none
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XGetFeedbackControl.man b/man/XGetFeedbackControl.man
new file mode 100644
index 0000000..959052a
--- /dev/null
+++ b/man/XGetFeedbackControl.man
@@ -0,0 +1,329 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XChFCtl.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XGetFeedbackControl 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGetFeedbackControl, XChangeFeedbackControl \- query and change input device feedbacks
+.SH SYNTAX
+XFeedbackState *
+XGetFeedbackControl\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fInum_feedbacks\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int *\fInum_feedbacks\fP\^;
+.br
+.sp
+int XChangeFeedbackControl\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fImask\fP\^, \fIcontrol\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Mask \fImask\fP\^;
+.br
+ XFeedbackControl *\fIcontrol\fP\^;
+.SH ARGUMENTS
+.TP 15
+.I display
+Specifies the connection to the X server.
+.TP 15
+.I device
+Specifies the device whose feedbacks are to be queried or modified.
+.TP 15
+.I num_feedbacks
+Specifies an address into which the number of feedbacks supported by the
+device is to be returned.
+.TP 15
+.I mask
+Specifies a mask specific to each type of feedback that describes how
+the feedback is to be modified.
+.TP 15
+.I control
+Specifies the address of an \fIXFeedbackControl\fP structure that contains
+the new values for the feedback.
+.SH DESCRIPTION
+These requests are provided to manipulate those input devices that
+support feedbacks. A \fIBadMatch\fP 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 \fIXOpenDevice\fP request. For those devices that
+support feedbacks, \fIXOpenDevice\fP will return an
+\fIXInputClassInfo\fP structure with the input_class field
+equal to the constant \fIFeedbackClass\fP (defined in the file \fIXI.h\fP).
+.LP
+The \fIXGetFeedbackControl\fP request returns a pointer to a list of
+\fIXFeedbackState\fP 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.
+.LP
+The feedback classes that are currently defined are: \fIKbdFeedbackClass\fP,
+\fIPtrFeedbackClass\fP, \fIStringFeedbackClass\fP, \fIIntegerFeedbackClass\fP,
+\fILedFeedbackClass\fP, and \fIBellFeedbackClass\fP. These constants are
+defined in the file \fIXI.h\fP. 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 \fIXChangeFeedbackControl\fP request.
+.LP
+\fIXGetFeedbackControl\fP can generate a \fIBadDevice\fP or
+\fIBadMatch\fP error.
+.LP
+The \fIXChangeFeedbackControl\fP request modifies the values of one
+feedback on the specified device. The feedback is identified by the id
+field of the \fIXFeedbackControl\fP 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.
+.LP
+\fIXChangeFeedbackControl\fP can generate a \fIBadDevice\fP,
+\fIBadMatch\fP, or \fIBadValue\fP error.
+.SH STRUCTURES
+Each class of feedback is described by a structure specific to that class.
+These structures are defined in the file \fIXInput.h\fP.
+\fIXFeedbackState\fP and \fIXFeedbackControl\fP are generic
+structures that contain three fields that are at the beginning of each class
+of feedback:
+.LP
+.DS
+typedef struct {
+.br
+ XID class;
+.br
+ int length;
+.br
+ XID id;
+.br
+} XFeedbackState, XFeedbackControl;
+.DE
+.LP
+The \fIXKbdFeedbackState\fP structure defines the attributes that are
+returned for feedbacks equivalent to those on the X keyboard.
+.LP
+.DS
+.nf
+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;
+.fi
+.DE
+.LP
+The \fIXPtrFeedbackState\fP structure defines the attributes that are
+returned for feedbacks equivalent to those on the the X pointer.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int accelNum;
+ int accelDenom;
+ int threshold;
+} XPtrFeedbackState;
+.fi
+.DE
+.LP
+The \fIXIntegerFeedbackState\fP structure defines attributes that are
+returned for integer feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int resolution;
+ int minVal;
+ int maxVal;
+} XIntegerFeedbackState;
+.fi
+.DE
+.LP
+The \fIXStringFeedbackState\fP structure defines the attributes that are
+returned for string feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int max_symbols;
+ int num_syms_supported;
+ KeySym *syms_supported;
+} XStringFeedbackState;
+.fi
+.DE
+.LP
+The \fIXBellFeedbackState\fP structure defines the attributes that are
+returned for bell feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int percent;
+ int pitch;
+ int duration;
+} XBellFeedbackState;
+.fi
+.DE
+.LP
+The \fIXLedFeedbackState\fP structure defines the attributes that are
+returned for LED feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int led_values;
+} XLedFeedbackState;
+.fi
+.DE
+.LP
+The \fIXPrtFeedbackControl\fP structure defines the attributes that can be
+controlled for pointer feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int accelNum;
+ int accelDenom;
+ int threshold;
+} XPtrFeedbackControl;
+.fi
+.DE
+.LP
+The \fIXKbdFeedbackControl\fP structure defines the attributes that can be
+controlled for keyboard feedbacks.
+.LP
+.DS
+.nf
+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;
+.fi
+.DE
+.LP
+The \fIXStringFeedbackControl\fP structure defines the attributes that can be
+controlled for string feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int num_keysyms;
+ KeySym *syms_to_display;
+} XStringFeedbackControl;
+.fi
+.DE
+.LP
+The \fIXIntegerFeedbackControl\fP structure defines the attributes that can
+be controlled for integer feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int int_to_display;
+} XIntegerFeedbackControl;
+.fi
+.DE
+.LP
+The \fIXBellFeedbackControl\fP structure defines the attributes that can be
+controlled for bell feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int percent;
+ int pitch;
+ int duration;
+} XBellFeedbackControl;
+.fi
+.DE
+.LP
+The \fIXLedFeedbackControl\fP structure defines the attributes that can be
+controlled for LED feedbacks.
+.LP
+.DS
+.nf
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int led_mask;
+ int led_values;
+} XLedFeedbackControl;
+.fi
+.DE
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. 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 \fIXChangeKeyboardDevice\fP or
+\fIXChangePointerDevice\fP requests.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetFeedbackControl\fP request was made specifying
+a device that has no feedbacks, or an \fIXChangeFeedbackControl\fP request was
+made with an \fIXFeedbackControl\fP structure that contains an invalid feedback
+type. It may also occur if an invalid combination of mask bits is specified
+(\fIDvKey\fP but no \fIDvAutoRepeatMode\fP for keyboard feedbacks), or if an
+invalid KeySym is specified for a string feedback.
+.TP 12
+\fIBadValue\fP
+Some numeric value falls outside the range of values accepted by the
+\fIXChangeFeedbackControl\fP 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.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XGrabDevice.man b/man/XGrabDevice.man
new file mode 100644
index 0000000..8a5608c
--- /dev/null
+++ b/man/XGrabDevice.man
@@ -0,0 +1,207 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XGrabDev.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XGrabDevice 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGrabDevice, XUngrabDevice \- grab/release the specified extension device
+.SH SYNTAX
+.nf
+\fB
+int XGrabDevice\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIgrab_window\fP\^, \fIowner_events\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^,
+\fIthis_device_mode\fP\^, \fIother_devices_mode\fP\^, \fItime\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ Window \fIgrab_window\fP\^;
+ Bool \fIowner_events\fP\^;
+ int \fIevent_count\fP\^;
+ XEventClass *\fIevent_list\fP\^;
+ int \fIthis_device_mode\fP\^, \fIother_devices_mode\fP\^;
+ Time \fItime\fP\^;
+
+XUngrabDevice\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fItime\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ Time \fItime\fP\^;
+.fi
+\fP
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device to be grabbed or released.
+.TP 12
+.I grab_window
+Specifies the id of a window to be associated with the device.
+.TP 12
+.I owner_events
+Specifies a Boolean value that indicates whether the
+events from the device
+are to be reported as usual or reported with respect to the grab window
+if selected by the event list.
+.TP 12
+.I event_count
+Specifies the number of elements in the event_list array.
+.TP 12
+.I event_list
+Specifies a pointer to a list of event classes that indicates which events
+the client wishes to receive. These event classes must have been
+obtained specifying the device being grabbed.
+.TP 12
+.I this_device_mode
+Specifies further processing of events from this device.
+You can pass
+\fIGrabModeSync\fP
+or
+\fIGrabModeAsync\fP.
+.TP 12
+.I other_devices_mode
+Specifies further processing of events from other devices.
+You can pass
+\fIGrabModeSync\fP
+or
+\fIGrabModeAsync\fP.
+.TP 12
+.I time
+Specifies the time.
+You can pass either a timestamp or
+\fICurrentTime\fP.
+.SH DESCRIPTION
+The
+\fIXGrabDevice\fP
+request actively grabs control of the device and generates
+\fIDeviceFocusIn\fP
+and
+\fIDeviceFocusOut\fP
+events.
+Further device events are reported only to the
+grabbing client.
+\fIXGrabDevice\fP
+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
+\fIFalse\fP ,
+all generated device events are reported with
+respect to grab_window if selected.
+If owner_events is
+\fITrue\fP
+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.
+.LP
+If the this_device_mode argument is
+\fIGrabModeAsync\fP ,
+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
+\fIGrabModeSync\fP ,
+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
+\fIXAllowDeviceEvents\fP
+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.
+.LP
+If other_devices_mode is
+\fIGrabModeAsync\fP ,
+processing of events from other devices is unaffected
+by activation of the grab.
+If other_devices_mode is
+\fIGrabModeSync\fP,
+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
+\fIXAllowDeviceEvents\fP
+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.
+.LP
+If the device is actively grabbed by some other client,
+\fIXGrabDevice\fP
+fails and returns
+\fIAlreadyGrabbed\fP.
+If grab_window is not viewable,
+it fails and returns
+\fIGrabNotViewable\fP.
+If the device is frozen by an active grab of another client,
+it fails and returns
+\fIGrabFrozen\fP.
+If the specified time is earlier than the last-device-grab time
+or later than the current X server time,
+it fails and returns
+\fIGrabInvalidTime\fP.
+Otherwise, the last-device-grab time is set to the specified time
+\fI( CurrentTime\fP
+is replaced by the current X server time).
+.LP
+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.
+.LP
+\fIXGrabDevice\fP
+can generate
+\fIBadClass\fP, \fIBadDevice\fP, \fIBadValue\fP, and \fIBadWindow\fP
+errors.
+.LP
+The
+\fIXUngrabDevice\fP
+request
+releases the device and any queued events if this client has it actively
+grabbed from either
+\fIXGrabDevice\fP
+or
+\fIXGrabDeviceKey\fP.
+If other devices are frozen by the grab, \fIXUngrabDevice\fP thaws them.
+\fIXUngrabDevice\fP
+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
+\fIDeviceFocusIn\fP
+and
+\fIDeviceFocusOut\fP
+events.
+The X server automatically performs an
+\fIUngrabDevice\fP
+request if the event window for an
+active device grab becomes not viewable.
+.LP
+\fIXUngrabDevice\fP
+can generate a \fIBadDevice\fP error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadWindow\fP
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllowDeviceEvents(3X),
+XGrabDeviceButton(3X),
+XGrabDeviceKey(3X),
+.br
+\fI\*(xL\fP
diff --git a/man/XGrabDeviceButton.man b/man/XGrabDeviceButton.man
new file mode 100644
index 0000000..bb42011
--- /dev/null
+++ b/man/XGrabDeviceButton.man
@@ -0,0 +1,217 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XGrDvBut.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XGrabDeviceButton 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGrabDeviceButton, XUngrabDeviceButton \- grab/ungrab extension input device buttons
+.SH SYNTAX
+\fB
+.nf
+XGrabDeviceButton\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIbutton\fP\^, \fImodifiers\fP\^, \fImodifier_device\fP\^, \fIgrab_window\fP\^,
+\fIowner_events\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^, \fIthis_device_mode\fP\^, \fIother_devices_mode\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ unsigned int \fIbutton\fP\^;
+ unsigned int \fImodifiers\fP\^;
+ XDevice *\fImodifier_device\fP\^;
+ Window \fIgrab_window\fP\^;
+ Bool \fIowner_events\fP\^;
+ unsigned int \fIevent_count\fP\^;
+ XEventClass *\fIevent_list\fP\^;
+ int \fIthis_device_mode\fP\^, \fIother_devices_mode\fP\^;
+
+XUngrabDeviceButton\^(\^\fIdisplay\fP\^, \fIdevice\fP\^, \fIbutton\fP\^, \fImodifiers\fP\^, \fImodifier_device\fP\^, \fIgrab_window\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+ unsigned int \fIbutton\fP\^;
+ unsigned int \fImodifiers\fP\^;
+ XDevice *\fImodifier_device\fP\^;
+ Window \fIgrab_window\fP\^;
+.fi
+\fP
+.SH ARGUMENTS
+.ds Bu grabbed or released
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device that is to be \*(Bu
+.TP 12
+.I button
+Specifies the device button that is to be \*(Bu or
+\fIAnyButton\fP.
+.TP 12
+.I modifiers
+Specifies the set of keymasks or
+\fIAnyModifier\fP.
+The mask is the bitwise inclusive OR of the valid keymask bits.
+Valid bits are: Shiftmask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
+Mod3Mask, Mod4Mask, Mod5Mask.
+.TP 12
+.I modifier_device
+specifies the device whose modifiers are to be used. If the modifier_device
+specified is NULL, the X keyboard will be used as the modifier_device.
+.TP 12
+.I grab_window
+Specifies the grab window.
+.TP 12
+.I owner_events
+Specifies a Boolean value that indicates whether the device
+events are to be reported as usual or reported with respect to the grab window
+if selected by the event list.
+.TP 12
+.I event_count
+Specifies the number of event classes in the event list.
+.TP 12
+.I event_list
+Specifies which events are reported to the client.
+.TP 12
+.I this_device_mode
+Specifies further processing of events from this device.
+You can pass \fIGrabModeSync\fP or \fIGrabModeAsync\fP.
+.TP 12
+.I other_devices_mode
+Specifies further processing of events from all other devices.
+You can pass \fIGrabModeSync\fP or \fIGrabModeAsync\fP.
+.SH DESCRIPTION
+The \fIXGrabDeviceButton\fP request establishes a passive grab.
+In the future,
+the device is actively grabbed (as for \fIXGrabDevice\fP,
+the last-grab time is set to the time at which the button was pressed
+(as transmitted in the
+\fIDeviceButtonPress\fP
+event), and the
+\fIDeviceButtonPress\fP
+event is reported if all of the following conditions are true:
+.IP \(bu 5
+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.
+.IP \(bu 5
+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.
+.IP \(bu 5
+A passive grab on the same button/modifier combination does not exist
+on any ancestor of grab_window.
+.LP
+The interpretation of the remaining arguments is as for
+\fIXGrabDevice\fP.
+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).
+.LP
+Note that the logical state of a device (as seen by client applications)
+may lag the physical state if device event processing is frozen.
+.LP
+This request overrides all previous grabs by the same client on the same
+button/modifier combinations on the same window.
+A modifiers of
+\fIAnyModifier\fP
+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
+\fIAnyButton\fP
+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.
+.LP
+A modifier_device of NULL indicates that the X keyboard is to be used as the
+modifier_device.
+.LP
+If some other client has already issued a
+\fIXGrabDeviceButton\fP
+with the same button/modifier combination on the same window, a
+\fIBadAccess\fP
+error results.
+When using
+\fIAnyModifier\fP
+or
+\fIAnyButton\fP ,
+the request fails completely,
+and a
+\fIBadAccess\fP
+error results (no grabs are
+established) if there is a conflicting grab for any combination.
+\fIXGrabDeviceButton\fP
+has no effect on an active grab.
+.LP
+\fIXGrabDeviceButton\fP
+can generate
+\fIBadClass\fP,
+\fIBadDevice\fP,
+\fIBadMatch\fP,
+\fIBadValue\fP,
+and
+\fIBadWindow\fP
+errors.
+.P
+The \fIXUngrabDeviceButton\fP
+request releases the passive grab for a
+button/modifier combination on the specified window if
+it was grabbed by this client.
+A modifier of \fIAnyModifier\fP is
+equivalent to issuing
+the ungrab request for all possible modifier combinations, including
+the combination of no modifiers.
+A button of
+\fIAnyButton\fP
+is equivalent to issuing the
+request for all possible buttons.
+\fIXUngrabDeviceButton\fP
+has no effect on an active grab.
+.LP
+A modifier_device of NULL indicates that the X keyboard should be used as
+the modifier_device.
+.LP
+\fIXUngrabDeviceButton\fP
+can generate
+\fIBadDevice\fP,
+\fIBadMatch\fP,
+\fIBadValue\fP
+and
+\fIBadWindow\fP
+errors.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGrabDeviceButton\fP request was made
+specifying
+a device that has no buttons, or specifying a modifier device
+that has no keys.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadWindow\fP
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllowDeviceEvents(3X),
+.br
+XGrabDevice(3X),
+.br
+XGrabDeviceKey(3X),
+.br
+\fI\*(xL\fP
diff --git a/man/XGrabDeviceKey.man b/man/XGrabDeviceKey.man
new file mode 100644
index 0000000..4f92451
--- /dev/null
+++ b/man/XGrabDeviceKey.man
@@ -0,0 +1,231 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XGrDvKey.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XGrabDeviceKey 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XGrabDeviceKey, XUngrabDeviceKey \- grab/ungrab extension input device Keys
+.SH SYNTAX
+XGrabDeviceKey\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIKey\fP\^, \fImodifiers\fP\^,
+\fImodifier_device\fP\^, \fIgrab_window\fP\^, \fIowner_events\fP\^,
+.br
+\fIevent_count\fP\^, \fIevent_list\fP\^, \fIthis_device_mode\fP\^,
+\fIother_devices_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned int \fIKey\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ XDevice *\fImodifier_device\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ unsigned int \fIevent_count\fP\^;
+.br
+ XEventClass \fIevent_list\fP\^;
+.br
+ int \fIthis_device_mode\fP\^, \fIother_devices_mode\fP\^;
+.sp
+XUngrabDeviceKey\^(\fIdisplay\fP\^, \fIdevice\fP\^, \fIKey\fP\^, \fImodifiers\fP\^,
+\fImodifier_device\fP\^, \fIgrab_window\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned int \fIKey\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ XDevice *\fImodifier_device\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.SH ARGUMENTS
+.ds Bu grabbed or released
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device that is to be \*(Bu
+.TP 12
+.I Key
+Specifies the device Key that is to be \*(Bu or
+\fIAnyKey\fP.
+.TP 12
+.I modifiers
+Specifies the set of keymasks or
+\fIAnyModifier\fP.
+The mask is the bitwise inclusive OR of the valid keymask bits.
+Valid bits are: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
+Mod3Mask, Mod4Mask, Mod5Mask.
+.TP 12
+.I modifier_device
+Specifies the device whose modifiers are to be used. If a modifier_device of
+NULL is specified, the X keyboard will be used as the modifier_device.
+.TP 12
+.I grab_window
+Specifies the grab window.
+.TP 12
+.I owner_events
+Specifies a Boolean value that indicates whether the device
+events are to be reported as usual or reported with respect to the grab window
+if selected by the event list.
+.TP 12
+.I event_count
+Specifies the number of event classes in the event list.
+.TP 12
+.I event_list
+Specifies which device events are reported to the client.
+.TP 12
+.I this_device_mode
+Specifies further processing of events from this device.
+You can pass \fIGrabModeSync\fP or \fIGrabModeAsync\fP.
+.TP 12
+.I other_devices_mode
+Specifies further processing of events from other devices.
+You can pass
+\fIGrabModeSync\fP
+or
+\fIGrabModeAsync\fP.
+.SH DESCRIPTION
+The \fIXGrabDeviceKey\fP request establishes a passive grab.
+In the future,
+the device is actively grabbed (as for
+\fIXGrabDevice\fP,
+the last-device-grab time is set to the time at which the Key was pressed
+(as transmitted in the
+\fIDeviceKeyPress\fP
+event), and the
+\fIDeviceKeyPress\fP
+event is reported if all of the following conditions are true:
+.IP \(bu 5
+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.
+.IP \(bu 5
+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.
+.IP \(bu 5
+The confine_to window (if any) is viewable.
+.IP \(bu 5
+A passive grab on the same key/modifier combination does not exist
+on any ancestor of grab_window.
+.LP
+The interpretation of the remaining arguments is as for
+\fIXGrabDevice\fP .
+The active grab is terminated automatically when the logical state of the
+device has the specified key released.
+.LP
+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.
+.LP
+If the key is not \fIAnyKey\fP, it must be in the range specified by
+min_keycode and max_keycode as returned by the \fIXListInputDevices\fP
+request. Otherwise, a \fIBadValue\fP error results.
+.LP
+This request overrides all previous grabs by the same client on the same
+Key/modifier combinations on the same window.
+A modifier of
+\fIAnyModifier\fP
+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
+\fIAnyKey\fP
+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.
+.LP
+If a modifier_device of NULL is specified, the X keyboard will be used as
+the modifier_device.
+.LP
+If some other client has already issued a
+\fIXGrabDeviceKey\fP
+with the same Key/modifier combination on the same window, a
+\fIBadAccess\fP
+error results.
+When using
+\fIAnyModifier\fP
+or
+\fIAnyKey\fP ,
+the request fails completely,
+and a
+\fIBadAccess\fP
+error results (no grabs are
+established) if there is a conflicting grab for any combination.
+\fIXGrabDeviceKey\fP
+has no effect on an active grab.
+.LP
+\fIXGrabDeviceKey\fP
+can generate
+\fIBadAccess\fP,
+\fIBadClass\fP,
+\fIBadDevice\fP,
+\fIBadMatch\fP,
+\fIBadValue\fP,
+and
+\fIBadWindow\fP
+errors. It returns \fISuccess\fP on successful completion of the request.
+.P
+The \fIXUngrabDeviceKey\fP
+request releases the passive grab for a key/modifier combination on the
+specified window if it was grabbed by this client.
+A modifier of \fIAnyModifier\fP is
+equivalent to issuing
+the ungrab request for all possible modifier combinations, including
+the combination of no modifiers.
+A Key of \fIAnyKey\fP
+is equivalent to issuing the request for all possible Keys.
+\fIXUngrabDeviceKey\fP has no effect on an active grab.
+.LP
+If a modifier_device of NULL is specified, the X keyboard will be used as the
+modifier_device.
+.LP
+\fIXUngrabDeviceKey\fP can generate \fIBadDevice\fP, \fIBadMatch\fP,
+\fIBadValue\fP and \fIBadWindow\fP errors.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGrabDeviceKey\fP request was made
+specifying a device that has no keys, or a modifier device that has no
+keys.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadWindow\fP
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllowDeviceEvents(3X),
+.br
+XGrabDevice(3X),
+.br
+XGrabDeviceButton(3X),
+.br
+.br
+\fI\*(xL\fP
diff --git a/man/XListInputDevices.man b/man/XListInputDevices.man
new file mode 100644
index 0000000..ea780c6
--- /dev/null
+++ b/man/XListInputDevices.man
@@ -0,0 +1,234 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XListDev.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XListInputDevices 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XListInputDevices, XFreeDeviceList \- list available input devices
+.SH SYNTAX
+XDeviceInfo *XListInputDevices\^(\^\fIdisplay\fP, \fIndevices_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fIndevices_return\fP\^;
+.sp
+XFreeDeviceList\^(\^\fIlist\fP\^)
+.br
+ XDeviceInfo *\fIlist\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I ndevices_return
+Specifies a pointer to a variable where the number of available devices can
+be returned.
+.TP 12
+.I list
+Specifies the list of devices to free. The \fIXFreeDeviceList\fP function
+frees the list of available extension input devices.
+.SH DESCRIPTION
+The \fIXListInputDevices\fP
+request lists the available extension input devices. This list includes the
+X pointer and X keyboard, any other input devices that are 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.
+.LP
+Some server implementations may make all 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.
+.LP
+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:
+
+.DS
+.nf
+typedef struct _XDeviceInfo
+{
+ XID id;
+ Atom type;
+ char *name;
+ int num_classes;
+ int use;
+ XAnyClassPtr inputclassinfo;
+} XDeviceInfo;
+.fi
+.DE
+.LP
+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.
+.LP
+The type field is of type Atom and indicates the nature
+of the device.
+.LP
+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 \fIXI.h\fP:
+.LP
+.DS
+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
+.DE
+.LP
+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.
+.LP
+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.
+.LP
+The use field specifies how the device is currently
+being used. If the value is \fIIsXKeyboard\fP, the device is
+currently being used as the X keyboard. If the value
+is \fIIsXPointer\fP, the device is currently being used as
+the X pointer. If the value is \fIIsXExtensionDevice\fP, the
+device is available for use as an extension device.
+.LP
+The inputclassinfo field contains a pointer to the first input-class
+specific data. The first two fields are common to all
+classes.
+.LP
+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.
+.LP
+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.
+.LP
+The XKeyInfo structure describes the characteristics of the keys on the
+device. It is defined as follows:
+.LP
+.DS
+.nf
+typedef struct _XKeyInfo {
+ XID class;
+ int length;
+ unsigned short min_keycode;
+ unsigned short max_keycode;
+ unsigned short num_keys;
+} XKeyInfo;
+.fi
+.DE
+.LP
+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.
+.LP
+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.
+.LP
+num_keys specifies the number of keys that the device has.
+.LP
+The XButtonInfo structure defines the characteristics of the buttons
+on the device. It is defined as follows:
+.LP
+.DS
+.nf
+typedef struct _XButtonInfo {
+ XID class;
+ int length;
+ short num_buttons;
+} XButtonInfo;
+.fi
+.DE
+.LP
+num_buttons specifies the number of buttons that the device has.
+.LP
+The XValuatorInfo structure defines the characteristics of the valuators
+on the device. It is defined as follows:
+.LP
+.DE
+.nf
+typedef struct _XValuatorInfo {
+ XID class;
+ int length;
+ unsigned char num_axes;
+ unsigned char mode;
+ unsigned long motion_buffer;
+ XAxisInfoPtr axes;
+} XValuatorInfo;
+.fi
+.DS
+num_axes contains the number of axes the device supports.
+.LP
+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.
+.LP
+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.
+.LP
+The axes field contains a pointer to an XAxisInfo structure.
+.LP
+The XAxisInfo structure is defined as follows:
+.LP
+.DS
+.nf
+typedef struct _XAxisInfo {
+ int resolution;
+ int min_value;
+ int max_value;
+} XAxisInfo;
+.fi
+.DE
+.LP
+The resolution contains a number in counts/meter.
+.LP
+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.
+.LP
+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.
+.LP
+To free the \fIXDeviceInfo\fP array created by \fIXListInputDevices\fP,
+use \fIXFreeDeviceList\fP.
+.SH DIAGNOSTICS
+none.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XOpenDevice.man b/man/XOpenDevice.man
new file mode 100644
index 0000000..915865e
--- /dev/null
+++ b/man/XOpenDevice.man
@@ -0,0 +1,128 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XOpenDev.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XOpenDevice 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XOpenDevice, XCloseDevice \- open or close an extension input device
+.SH SYNTAX
+\fB
+.nf
+XDevice *XOpenDevice\^(\^\fIdisplay\fP, \fIdevice_id\fP\^)
+ Display *\fIdisplay\fP\^;
+ XID \fIdevice_id\fP\^;
+
+XCloseDevice\^(\^\fIdisplay\fP, \fIdevice\fP\^)
+ Display *\fIdisplay\fP\^;
+ XDevice *\fIdevice\fP\^;
+.fi
+\fP
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device_id
+Specifies the id of the device to be opened
+.TP 12
+.I device
+Specifies the device to be closed
+.SH DESCRIPTION
+The \fIXOpenDevice\fP
+request makes an input device accessible to a client through input extension
+protocol requests. If successful, it returns a pointer to an \fBXDevice\fP
+structure.
+.LP
+The \fIXCloseDevice\fP 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 \fICloseDevice\fP.
+.LP
+When a client makes an \fIXCloseDevice\fP 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.
+.LP
+\fIXOpenDevice\fP and \fIXCloseDevice\fP can generate a \fIBadDevice\fP
+error.
+.SH STRUCTURES
+The
+\fIXDevice\fP structure returned by \fIXOpenDevice\fP contains:
+.nf
+typedef struct {
+ XID device_id;
+ int num_classes;
+ XInputClassInfo *classes;
+} XDevice;
+.fi
+.LP
+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.
+.LP
+The
+\fIXInputClassInfo\fP
+structure contains:
+.LP
+.nf
+typedef struct {
+ unsigned char input_class;
+ unsigned char event_type_base;
+} XInputClassInfo;
+.fi
+.LP
+The input_class field identifies one class of input
+supported by the device. Defined types include \fIKeyClass\fP,
+\fIButtonClass\fP, \fIValuatorClass\fP, \fIProximityClass\fP,
+\fIFeedbackClass\fP, \fIFocusClass\fP, and \fIOtherClass\fP.
+The event_type_base identifies the event type of the first event in that class.
+.LP
+The information contained in the \fIXInputClassInfo\fP structure is used
+by macros to obtain the event classes that clients use in making
+\fIXSelectExtensionEvent\fP requests. Currently defined macros include
+\fIDeviceKeyPress\fP, \fIDeviceKeyRelease\fP, \fIDeviceButtonPress\fP,
+\fIDeviceButtonRelese\fP, \fIDeviceMotionNotify\fP, \fIDeviceFocusIn\fP,
+\fIDeviceFocusOut\fP, \fIProximityIn\fP, \fIProximityOut\fP,
+\fIDeviceStateNotify\fP, \fIDeviceMappiingNotify\fP,
+\fIChangeDeviceNotify\fP, \fIDevicePointerMotionHint\fP,
+\fIDeviceButton1Motion\fP, \fIDeviceButton2Motion\fP, \fIDeviceButton3Motion\fP,
+\fIDeviceButton4Motion\fP, \fIDeviceButton5Motion\fP, \fIDeviceButtonMotion\fP,
+\fIDeviceOwnerGrabButton\fP, \fIDeviceButtonPressGrab\fP, and
+\fINoExtensionEvent\fP.
+.LP
+To obtain the proper event class for a particular device, one of the above
+macros is invoked using the \fIXDevice\fP structure for that device. For
+example,
+.LP
+.nf
+DeviceKeyPress (*device, type, eventclass);
+.fi
+.LP
+returns the \fIDeviceKeyPress\fP event type and the eventclass for
+\fIDeviceKeyPress\fP events from the specified device.
+.LP
+This \fIeventclass\fP can then be used in an \fIXSelectExtensionEvent\fP
+request to ask the server to send \fIDeviceKeyPress\fP events from this device.
+When a selected event is received via \fIXNextEvent\fP, the \fItype\fP can be
+used for comparison with the type in the event.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+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 \fIXChangeKeyboardDevice\fP or
+\fIXChangePointerDevice\fP requests.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XQueryDeviceState.man b/man/XQueryDeviceState.man
new file mode 100644
index 0000000..195d5e4
--- /dev/null
+++ b/man/XQueryDeviceState.man
@@ -0,0 +1,99 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XQueryDv.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XQueryDeviceState 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XQueryDeviceState \- query the state of an extension input device.
+.SH SYNTAX
+XQueryDeviceState\^(\^\fIdisplay\fP, \fIdevice\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose state is to be queried.
+.SH DESCRIPTION
+The
+\fIXQueryDeviceState\fP
+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 \fIXDeviceState\fP 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.
+.LP
+\fIXQueryDeviceState\fP
+can generate a \fIBadDevice\fP error.
+.SH STRUCTURES
+The
+\fIXDeviceState\fP
+structure contains:
+.LP
+.nf
+typedef struct {
+ XID device_id;
+ int num_classes;
+ XInputClass *data;
+} XDeviceState;
+.fi
+.LP
+The
+\fIXValuatorState\fP
+structure contains:
+.LP
+.nf
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ unsigned char num_valuators;
+ unsigned char mode;
+ int *valuators;
+} XValuatorState;
+.fi
+.LP
+The \fIXKeyState\fP structure contains:
+.LP
+.nf
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_keys;
+ char keys[32];
+} XKeyState;
+.fi
+.LP
+The \fIXButtonState\fP structure contains:
+.LP
+.nf
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_buttons;
+ char buttons[32];
+} XButtonState;
+.fi
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. 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 \fIXChangeKeyboardDevice\fP or
+\fIXChangePointerDevice\fP requests.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XSelectExtensionEvent.man b/man/XSelectExtensionEvent.man
new file mode 100644
index 0000000..95ec1bc
--- /dev/null
+++ b/man/XSelectExtensionEvent.man
@@ -0,0 +1,148 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XSelExtEv.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XSelectExtensionEvent 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XSelectExtensionEvent, XGetSelectedExtensionEvents \- select extension events, get the list of currently selected extension events
+.SH SYNTAX
+XSelectExtensionEvent\^(\^\fIdisplay\fP, \fIw\fP\^, \fIevent_list\fP\^, \fIevent_count\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.sp
+XGetSelectedExtensionEvents\^(\^\fIdisplay\fP, \fIw\fP\^, \fIthis_client_event_count_return\fP\^,
+.br
+\fIthis_client_event_list_return\fP\^, \fIall_clients_event_count_return\fP\^,
+\fIall_clients_event_list_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIthis_client_event_count_return\fP\^;
+.br
+ XEventClass *\fIthis_client_event_list_return\fP\^;
+.br
+ int \fIall_clients_event_count_return\fP\^;
+.br
+ XEventClass *\fIall_clients_event_list_return\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.ds Wi whose events you are interested in
+.TP 12
+.I w
+Specifies the window \*(Wi.
+.TP 12
+.I event_list
+Specifies the list of event classes that describe the events you are interested in.
+.TP 12
+.I event_count
+Specifies the count of event classes in the event list.
+.TP 12
+.I this_client_event_count_return
+Returns the count of event classes selected by this client.
+.TP 12
+.I this_client_event_list_return
+Returns a pointer to the list of event classes selected by this client.
+.TP 12
+.I all_clients_event_count_return
+Returns the count of event classes selected by all clients.
+.TP 12
+.I all_clients_event_list_return
+Returns a pointer to the list of event classes selected by all clients.
+.SH DESCRIPTION
+The
+\fIXSelectExtensionEvent\fP 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.
+.LP
+Multiple clients can select for the same events on the same window
+with the following restrictions:
+.IP \(bu 5
+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.
+.IP \(bu 5
+Only one client at a time can select a
+\fIDeviceButtonPress\fP
+event with automatic passive grabbing enabled, which is associated with
+the event class \fIDeviceButtonPressGrab\fP.
+To receive \fIDeviceButtonPress\fP events without automatic passive
+grabbing, use event class \fIDeviceButtonPress\fP but do not specify
+event class \fIDeviceButtonPressGrab\fP.
+.LP
+The server reports the event to all interested clients.
+.LP
+Information contained in the \fIXDevice\fP structure returned by
+\fIXOpenDevice\fP is used
+by macros to obtain the event classes that clients use in making
+\fIXSelectExtensionEvent\fP requests. Currently defined macros include
+\fIDeviceKeyPress\fP, \fIDeviceKeyRelease\fP, \fIDeviceButtonPress\fP,
+\fIDeviceButtonRelese\fP, \fIDeviceMotionNotify\fP, \fIDeviceFocusIn\fP,
+\fIDeviceFocusOut\fP, \fIProximityIn\fP, \fIProximityOut\fP,
+\fIDeviceStateNotify\fP, \fIDeviceMappiingNotify\fP,
+\fIChangeDeviceNotify\fP, \fIDevicePointerMotionHint\fP,
+\fIDeviceButton1Motion\fP, \fIDeviceButton2Motion\fP, \fIDeviceButton3Motion\fP,
+\fIDeviceButton4Motion\fP, \fIDeviceButton5Motion\fP, \fIDeviceButtonMotion\fP,
+\fIDeviceOwnerGrabButton\fP, \fIDeviceButtonPressGrab\fP, and
+\fINoExtensionEvent\fP.
+.LP
+To obtain the proper event class for a particular device, one of the above
+macros is invoked using the \fIXDevice\fP structure for that device. For
+example,
+.LP
+.DS 0
+.TA .5i
+.ta .5i
+DeviceKeyPress (*device, type, eventclass);
+.DE
+.LP
+returns the \fIDeviceKeyPress\fP event type and the eventclass for selecting
+\fIDeviceKeyPress\fP events from this device.
+.LP
+\fIXSelectExtensionEvent\fP
+can generate a \fIBadWindow\fP or \fIBadClass\fP error.
+The
+\fIXGetSelectedExtensionEvents\fP
+request reports the extension events selected by this client and all clients
+for the specified window. This request returns pointers to two
+\fIXEventClass\fP
+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 \fIXFree\fP to free these
+two arrays.
+.LP
+\fIXGetSelectedExtensionEvents\fP
+can generate a \fIBadWindow\fP error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadWindow\fP
+A value for a Window argument does not name a defined Window.
+.TP 12
+\fIBadClass\fP
+A value for an XEventClass argument is invalid.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XSendExtensionEvent.man b/man/XSendExtensionEvent.man
new file mode 100644
index 0000000..ad66beb
--- /dev/null
+++ b/man/XSendExtensionEvent.man
@@ -0,0 +1,149 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XSExEvnt.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XSendExtensionEvent 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XSendExtensionEvent \- send input extension events to a client
+.SH SYNTAX
+Status XSendExtensionEvent\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIdestination\fP\^, \fIpropagate\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^, \fIevent_send\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Window \fIdestination\fP\^;
+.br
+ Bool \fIpropagate\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ XEvent *\fIevent_send\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device from which the events are to be sent.
+.TP 12
+.I destination
+Specifies the window the event is to be sent to. You can pass window id,
+\fIPointerWindow\fP, \
+or \
+\fIInputFocus\fP.
+.TP 12
+.I propagate
+Specifies a Boolean value that is either True or False.
+.TP 12
+.I event_count
+Specifies the count of XEventClasses in event_list.
+.TP 12
+.I event_list
+Specifies the list of event selections to be used.
+.TP 12
+.I event_send
+Specifies a pointer to the event that is to be sent.
+.TP 12
+.SH DESCRIPTION
+The
+\fIXSendExtensionEvent\fP
+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 \fIXOpenDevice(3X11)\fP.
+This request uses the w argument to identify the destination window as follows:
+.IP \(bu 5
+If w is
+\fIPointerWindow\fP ,
+the destination window is the window that contains the pointer.
+.IP \(bu 5
+If w is
+\fIInputFocus\fP
+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.
+.LP
+To determine which clients should receive the specified events,
+\fIXSendExtensionEvent\fP
+uses the propagate argument as follows:
+.IP \(bu 5
+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.
+.IP \(bu 5
+If propagate is
+\fIFalse\fP,
+the event is sent to every client selecting on destination any of the event
+types specified by the event_list array.
+.IP \(bu 5
+If propagate is
+\fITrue\fP
+and no clients have selected on destination any of
+the events specified by the event_list array,
+the destination is replaced with the
+closest ancestor of destination for which some client has selected a
+type specified by the event-list array and for which no intervening
+window has that type in its
+do-not-propagate-mask.
+If no such window exists or if the window is
+an ancestor of the focus window and
+\fIInputFocus\fP
+was originally specified
+as the destination, the event is not sent to any clients.
+Otherwise, the event is reported to every client selecting on the final
+destination any of the events specified in the event_list array.
+.LP
+The event in the
+\fIXEvent\fP
+structure must be one of the events defined by the input extension (or a
+\fIBadValue\fP
+error results) so that the X server can correctly byte-swap
+the contents as necessary.
+The contents of the event are
+otherwise unaltered and unchecked by the X server except to force send_event to
+\fITrue\fP
+in the forwarded event and to set the serial number in the event correctly.
+.LP
+\fIXSendExtensionEvent\fP
+returns zero if the conversion to wire protocol format failed
+and returns nonzero otherwise.
+\fIXSendExtensionEvent\fP
+can generate
+\fIBadClass\fP,
+\fIBadDevice\fP,
+\fIBadValue\fP,
+and
+\fIBadWindow\fP
+errors.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadWindow\fP
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XSetDeviceButtonMapping.man b/man/XSetDeviceButtonMapping.man
new file mode 100644
index 0000000..e6635db
--- /dev/null
+++ b/man/XSetDeviceButtonMapping.man
@@ -0,0 +1,113 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XSeBMap.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming With Xlib
+.TH XSetDeviceButtonMapping 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XSetDeviceButtonMapping, XGetDeviceButtonMapping \- query or change device button mappings
+.SH SYNTAX
+int XSetDeviceButtonMapping\^(\^\fIdisplay\fP, \fIdevice\fP, \fImap\fP, \fInmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned char \fImap\fP\^[]\^;
+.br
+ int \fInmap\fP\^;
+.sp
+int XGetDeviceButtonMapping\^(\^\fIdisplay\fP, \fIdevice\fP, \fImap_return\fP,
+\fInmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned char \fImap_return\fP\^[]\^;
+.br
+ int \fInmap\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose button mapping is to be queried or changed.
+.TP 12
+.I map
+Specifies the mapping list.
+.TP 12
+.I map_return
+Returns the mapping list.
+.TP 12
+.I nmap
+Specifies the number of items in the mapping list.
+.SH DESCRIPTION
+The \fIXSetDeviceButtonMapping\fP
+request sets the mapping of the specified device.
+If it succeeds, the X server generates a
+\fIDeviceMappingNotify\fP event, and
+\fIXSetDeviceButtonMapping\fP returns \fIMappingSuccess\fP.
+Element map[i] defines the logical button number for the physical button
+i+1.
+The length of the list must be the same as
+\fIXGetDeviceButtonMapping\fP
+would return, or a \fIBadValue\fP
+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 \fIBadValue\fP error results.
+If any of the buttons to be altered are logically in the down state,
+\fIXSetDeviceButtonMapping\fP returns \fIMappingBusy\fP,
+and the mapping is not changed.
+.LP
+\fIXSetDeviceButtonMapping\fP
+can generate \fIBadDevice\fP, \fIBadMatch\fP, and \fIBadValue\fP errors.
+.LP
+The \fIXGetDeviceButtonMapping\fP
+request returns the current mapping of the specified device.
+Buttons are numbered starting from one.
+\fIXGetDeviceButtonMapping\fP
+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.
+.LP
+\fIXGetDeviceButtonMapping\fP
+can generate \fIBadDevice\fP or \fIBadMatch\fP errors.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetDeviceButtonMapping\fP or
+\fIXSetDeviceButtonMapping\fP request was made
+specifying a device that has no buttons.
+.TP 12
+\fIBadValue\fP
+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.
+.SH "SEE ALSO"
+XChangeDeviceKeyboardControl(3X),
+.br
+XChangeDeviceKeyMapping(3X)
+.br
+XChangeDeviceModifierMapping(3X)
+.br
+.br
+\fI\*(xL\fP
diff --git a/man/XSetDeviceFocus.man b/man/XSetDeviceFocus.man
new file mode 100644
index 0000000..b07764b
--- /dev/null
+++ b/man/XSetDeviceFocus.man
@@ -0,0 +1,216 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XSeDvFoc.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XSetDeviceFocus 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XSetDeviceFocus, XGetDeviceFocus \- control extension input device focus
+.SH SYNTAX
+XSetDeviceFocus\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIfocus\fP\^, \fIrevert_to\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Display *\fIdevice\fP\^;
+.br
+ Window \fIfocus\fP\^;
+.br
+ int \fIrevert_to\fP\^;
+.br
+ Time \fItime\fP\^;
+.sp
+XGetDeviceFocus\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIfocus_return\fP\^,
+\fIrevert_to_return\fP, \fItime_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Display *\fIdevice\fP\^;
+.br
+ Window *\fIfocus_return\fP\^;
+.br
+ int *\fIrevert_to_return\fP\^;
+.br
+ int *\fItime_return\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose focus is to be queried or changed.
+.TP 12
+.I focus
+Specifies the window,
+\fIPointerRoot\fP,
+\fIFollowKeyboard\fP,
+or
+\fINone\fP.
+.TP 12
+.I focus_return
+Returns the focus window,
+\fIPointerRoot\fP,
+\fIFollowKeyboard\fP,
+or
+\fINone\fP.
+.TP 12
+.I revert_to
+Specifies where the input focus reverts to if the window becomes not
+viewable.
+You can pass
+\fIRevertToParent\fP,
+\fIRevertToPointerRoot\fP,
+\fIRevertToFollowKeyboard\fP,
+or
+\fIRevertToNone\fP.
+.TP 12
+.I revert_to_return
+Returns the current focus state
+\fIRevertToParent\fP,
+\fIRevertToPointerRoot\fP,
+\fIRevertToFollowKeyboard\fP,
+or
+\fIRevertToNone\fP.
+.TP 12
+.I time_return
+Returns the last_focus_time for the device.
+.TP 12
+.I time
+Specifies the time.
+You can pass either a timestamp or
+\fICurrentTime\fP.
+.SH DESCRIPTION
+The \fIXSetDeviceFocus\fP
+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
+\fICurrentTime\fP
+is replaced by the current X server time).
+\fIXSetDeviceFocus\fP
+causes the X server to generate
+\fIDeviceFocusIn\fP
+and
+\fIDeviceFocusOut\fP
+events.
+.LP
+Depending on the focus argument,
+the following occurs:
+.IP \(bu 5
+If focus is
+\fINone\fP ,
+all device events are discarded until a new focus window is set,
+and the revert_to argument is ignored.
+.IP \(bu 5
+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.
+.IP \(bu 5
+If focus is
+\fIPointerRoot\fP,
+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.
+.IP \(bu 5
+If focus is
+\fIFollowKeyboard\fP,
+the focus window is dynamically taken to be the window to which the X keyboard
+focus is set at each input event.
+.LP
+The specified focus window must be viewable at the time
+\fIXSetDeviceFocus\fP
+is called,
+or a
+\fIBadMatch\fP
+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:
+.IP \(bu 5
+If revert_to is
+\fIRevertToParent\fP,
+the focus reverts to the parent (or the closest viewable ancestor),
+and the new revert_to value is taken to be
+\fIRevertToNone\fP.
+.IP \(bu 5
+If revert_to is
+\fIRevertToPointerRoot\fP,
+\fIRevertToFollowKeyboard\fP,
+or
+\fIRevertToNone\fP,
+the focus reverts to
+\fIPointerRoot\fP,
+\fIFollowKeyboard\fP,
+or
+\fINone\fP,
+respectively.
+.LP
+When the focus reverts,
+the X server generates
+\fIDeviceFocusIn\fP
+and
+\fIDeviceFocusOut\fP
+events, but the last-focus-change time is not affected.
+.LP
+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 \fIBadMatch\fP error. Whether or not given device can
+support this request can be determined by the information returned by
+\fIXOpenDevice\fP.
+For those devices that
+support focus, \fIXOpenDevice\fP will return an
+\fIXInputClassInfo\fP structure with the input_class field
+equal to the constant \fIFocusClass\fP (defined in the file \fIXI.h\fP).
+.LP
+\fIXSetDeviceFocus\fP
+can generate
+\fIBadDevice\fP,
+\fIBadMatch\fP,
+\fIBadValue\fP,
+and
+\fIBadWindow\fP
+errors.
+.LP
+The
+\fIXGetDeviceFocus\fP
+request returns the focus window and the current focus state.
+.LP
+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 \fIBadMatch\fP
+error. A device that can be focused returns information for input Class
+Focus when an \fIXOpenDevice\fP request is made.
+.LP
+\fIXGetDeviceFocus\fP can generate \fIBadDevice\fP,
+and \fIBadMatch\fP errors.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. This error may
+also occur if the specified device is the X keyboard or X pointer device.
+.TP 12
+\fIBadValue\fP
+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.
+.TP 12
+\fIBadWindow\fP
+A value for a Window argument does not name a defined Window.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXGetDeviceFocus\fP or \fIXSetDeviceFocus\fP
+request was made specifying a device that the server implementation does not
+allow to be focused.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XSetDeviceMode.man b/man/XSetDeviceMode.man
new file mode 100644
index 0000000..0f30233
--- /dev/null
+++ b/man/XSetDeviceMode.man
@@ -0,0 +1,69 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XSetMode.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XSetDeviceMode 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XSetDeviceMode \- change the mode of a device
+.SH SYNTAX
+XSetDeviceMode\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fI_mode\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose mode is to be changed.
+.TP 12
+.I mode
+Specifies the mode.
+You can pass
+\fIAbsolute\fP ,
+or
+\fIRelative\fP.
+.SH DESCRIPTION
+The
+\fIXSetDeviceMode\fP
+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 \fIAbsolute\fP to \fIRelative\fP.
+.LP
+\fIXSetDeviceMode\fP
+can generate a \fIBadDevice\fP or
+\fIBadMode\fP
+error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP. 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 \fIXChangeKeyboardDevice\fP or
+\fIXChangePointerDevice\fP requests.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXSetDeviceMode\fP request is made
+specifying a device that has no valuators and reports no axes of motion.
+.TP 12
+\fIBadMode\fP
+An invalid mode was specified. This error will also be returned if the
+specified device is not capable of supporting the \fIXSetDeviceMode\fP
+request.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP
diff --git a/man/XSetDeviceValuators.man b/man/XSetDeviceValuators.man
new file mode 100644
index 0000000..1b3a054
--- /dev/null
+++ b/man/XSetDeviceValuators.man
@@ -0,0 +1,79 @@
+.\"
+.\" Copyright ([\d,\s]*) 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.
+.\"
+.\" $Xorg: XSetDVal.man,v 1.4 2001/03/16 17:51:13 pookie Exp $
+.ds xL Programming with Xlib
+.TH XSetDeviceValuators 3X11 "Release 6.6" "X Version 11" "X FUNCTIONS"
+.SH NAME
+XSetDeviceValuators \- initialize the valuators on an extension input device
+.SH SYNTAX
+XSetDeviceValuators\^(\^\fIdisplay\fP, \fIdevice\fP\^, \fIvaluators\fP\^, \fIfirst_valuator\fP\^, \fInum_valuators\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int *\fIvaluators\fP\^;
+.br
+ int \fIfirst_valuator\fP\^;
+.br
+ int \fInum_valuators\fP\^;
+.SH ARGUMENTS
+.TP 12
+.I display
+Specifies the connection to the X server.
+.TP 12
+.I device
+Specifies the device whose valuators are to be initialized.
+.TP 12
+.I valuators
+Specifies a pointer to an array of integer values to be used to initialize the
+device valuators.
+.TP 12
+.I first_valuator
+Specifies the first valuator to be set. Valuators are numbered beginning with
+zero.
+.TP 12
+.I num_valuators
+Specifies the number of valuators to be set.
+.SH DESCRIPTION
+The
+\fIXSetDeviceValuators\fP
+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 \fIBadMatch\fP error will occur.
+.LP
+If the request succeeds, a status of Success is returned. If another
+client has the device grabbed, a status of AlreadyGrabbed is returned.
+.LP
+\fIXSetDeviceValuators\fP
+can generate a \fIBadLength\fP, \fIBadDevice\fP , \fIBadMatch\fP, or
+\fIBadValue\fP error.
+.SH DIAGNOSTICS
+.TP 12
+\fIBadDevice\fP
+An invalid device was specified. The specified device does not exist or has
+not been opened by this client via \fIXOpenInputDevice\fP.
+.TP 12
+\fIBadMatch\fP
+This error may occur if an \fIXSetDeviceValuators\fP 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.
+.TP 12
+\fIBadValue\fP
+An invalid first_valuator or num_valuators values was specified.
+.SH "SEE ALSO"
+.br
+\fI\*(xL\fP