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