[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

x11proto-input: Changes to 'upstream-unstable'



Rebased ref, commits from common ancestor:
commit 56ffb564712257e0f998170e83071a6ee85aa231
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Nov 11 14:10:26 2010 +1000

    inputproto 2.0.1
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 7466dc3..39e4df9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ([2.60])
-AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([InputProto], [2.0.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
 

commit 52e92f280c4e065d6a3f040493a0b46d2c8bee1d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Aug 2 15:53:52 2010 +1000

    Typo fix: GrabTypeFocusIn -> GrabtypeFocusIn
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/XI2proto.txt b/XI2proto.txt
index 78eae8e..10f58c2 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -999,7 +999,7 @@ are required to be 0.
     └───
 
         GRABTYPE         { GrabtypeButton, GrabtypeKeycode, GrabtypeEnter,
-                           GrabTypeFocusIn}
+                           GrabtypeFocusIn}
 
         GRABMODIFIERINFO {   status:    Access
                              modifiers: CARD32 }

commit 3dc8e70f761f7da338c632a5acb0176bef515b33
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Aug 6 09:52:33 2010 +1000

    Spell out event types for XIDeviceEvent.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/XI2proto.txt b/XI2proto.txt
index 79a1483..78eae8e 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -1485,7 +1485,8 @@ EVENTHEADER { type:                       BYTE
 
     An XIDeviceEvent is generated whenever the logical state of a device
     changes in response to a button press, a button release, a motion, a key
-    press or a key release.
+    press or a key release. The event type may be one of KeyPress,
+    KeyRelease, ButtonPress, ButtonRelease, Motion.
 
     detail
         The button number or key code, or 0.

commit 993ca70d7ecfb88037edfd77bccfcb671aea4c7b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Jan 11 17:02:55 2010 +1000

    Define the error cases for XSetDeviceMode better.
    
    Take the error codes as described in the man page for XSetDeviceMode. This
    is more likely to be what clients expect, especially since the protocol spec
    doesn't actually define when BadMode is to be reported.
    
    This behaviour is the same as specified in the XSetDeviceMode man page.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Fernando Carrijo <fcarrijo@yahoo.com.br>

diff --git a/XIproto.txt b/XIproto.txt
index 20cc02a..f9d19f0 100644
--- a/XIproto.txt
+++ b/XIproto.txt
@@ -577,7 +577,9 @@
    already has the device open with a different mode. It will fail
    and return AlreadyGrabbed if another client has the device
    grabbed. The request will fail with a BadMatch error if the
-   requested mode is not supported by the device.
+   device has no valuators and reports no axes of motion. The
+   request will fail with a BadMode error if the requested mode
+   is not supported by the device.
 
                        SetDeviceMode
                                device:DEVICE

commit 617c4a2db48e98d06f728fa6b8caa18fbbfb66fc
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 23 10:21:17 2009 +1000

    XI2proto.txt: fix up some request names.
    
    Leftovers from previous versions of the spec before the requests were
    renamed.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/XI2proto.txt b/XI2proto.txt
index 706f50a..79a1483 100644
--- a/XI2proto.txt
+++ b/XI2proto.txt
@@ -296,7 +296,7 @@ are required to be 0.
                   value:                FP3232
                   resolution:           CARD32 }
 
-    XIQueryDevices details information about the requested input devices.
+    XIQueryDevice details information about the requested input devices.
 
     devices
         The device to list. If devices is AllDevices, all enabled and
@@ -871,7 +871,7 @@ are required to be 0.
     └───
 
     This request releases the device if this client has it actively grabbed
-    (from either XIGrabDevice,  XIGrabDeviceKey or XIGrabDeviceButton) and
+    (from either XIGrabDevice or  XIPassiveGrabDevice) and
     releases any queued events. If any devices were frozen by the grab,
     XIUngrabDevice thaws them.
 
@@ -1223,7 +1223,7 @@ are required to be 0.
         until server reset.
 
         A property cannot be deleted by setting nitems to zero. To delete a
-        property, use XIDeleteDeviceProperty.
+        property, use XIDeleteProperty.
 
         This request generates an XIPropertyEvent.
 
@@ -1443,8 +1443,7 @@ EVENTHEADER { type:                       BYTE
         Details the available classes provided by the device.  The order the
         classes are provided in is undefined.
 
-    For a detailed description of classes, see the XQueryInputDevice
-    request.
+    For a detailed description of classes, see the XQueryDevice request.
 
     ┌───
         DeviceEvent:
@@ -1554,8 +1553,8 @@ EVENTHEADER { type:                       BYTE
             axisvalues_raw:            LISTofFP3232
     └───
 
-    A RawDevice event provides the information provided by the driver to the
-    client. RawDevice provide both the raw data as supplied by the driver and
+    A RawEvent provides the information provided by the driver to the
+    client. RawEvent provides both the raw data as supplied by the driver and
     transformed data as used in the server. Transformations include, but are
     not limited to, axis clipping and acceleration.
     Transformed valuator data may be equivalent to raw data. In this case,

commit b2e8bd74f0922e742ab41e9ccc202c0fdd9e152f
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Mar 28 19:25:52 2010 -0400

    config: update AC_PREREQ statement to 2.60
    
    Unrelated to the previous patches, the new value simply reflects
    the reality that the minimum level for autoconf to configure
    all x.org modules is 2.60 dated June 2006.
    
    ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 2e3f2b6..7466dc3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_PREREQ([2.57])
+AC_PREREQ([2.60])
 AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE

commit 5e22edcb54a29393ffb72e4014010835d1ceab69
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Mar 28 19:00:31 2010 -0400

    config: remove the pkgconfig pc.in file from EXTRA_DIST
    
    Automake always includes it in the tarball.
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/Makefile.am b/Makefile.am
index 62e247b..77d1ea7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,7 +10,6 @@ pkgconfig_DATA = inputproto.pc
 
 dist_doc_DATA = XI2proto.txt XIproto.txt
 
-EXTRA_DIST = inputproto.pc.in
 
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 

commit 33bab5091b5c16133d88269744f5305dfd4e4fcb
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Mar 28 17:46:57 2010 -0400

    config: install and distribute XI2proto.txt XIproto.txt
    
    It will now be installed in $docdir in addition
    to being distributed in the tarball.
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/Makefile.am b/Makefile.am
index 5954c43..62e247b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,8 +8,9 @@ input_HEADERS = \
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = inputproto.pc
 
+dist_doc_DATA = XI2proto.txt XIproto.txt
+
 EXTRA_DIST = inputproto.pc.in
-EXTRA_DIST += XI2proto.txt XIproto.txt
 
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 

commit 0746aed42e50d7ac10fd1545cf6b89a8bc809884
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Mon Dec 21 19:00:00 2009 -0500

    Add Red Had Copyright in the COPYING file.
    
    Refer to XI2.h and XI2proto.h
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/COPYING b/COPYING
index aac40e8..f0b75c0 100644
--- a/COPYING
+++ b/COPYING
@@ -39,3 +39,25 @@ ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 SOFTWARE.
+
+Copyright © 2009 Red Hat, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+

commit e0ec5c81eef67a2b98396189b22b439953b616c0
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Nov 22 19:24:48 2009 -0500

    Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
    
    Now that the INSTALL file is generated.
    Allows running make maintainer-clean.

diff --git a/Makefile.am b/Makefile.am
index e49f90d..5954c43 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,9 +9,10 @@ pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = inputproto.pc
 
 EXTRA_DIST = inputproto.pc.in
-
 EXTRA_DIST += XI2proto.txt XIproto.txt
 
+MAINTAINERCLEANFILES = ChangeLog INSTALL
+
 .PHONY: ChangeLog INSTALL
 
 INSTALL:

commit 30c2e875941b1dcce06821fb0c5af6a15ca98d4e
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Mon Nov 16 11:13:30 2009 -0500

    README: file created or updated #24206
    
    Contains a set of URLs to freedesktop.org.

diff --git a/README b/README
new file mode 100644
index 0000000..6b98e2b
--- /dev/null
+++ b/README
@@ -0,0 +1,30 @@
+				X Input Extension		
+
+This extension defines a protocol to provide additional input devices
+management such as graphic tablets.
+
+Extension name: XInputExtension
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+        http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+        git://anongit.freedesktop.org/git/xorg/proto/inputproto
+
+        http://cgit.freedesktop.org/xorg/proto/inputproto
+
+For patch submission instructions, see:
+
+	http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+        http://wiki.x.org/wiki/GitPage
+

commit 7ddcd9b428797e37c3d362b27975b157647aceeb
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Nov 15 19:45:26 2009 -0500

    Makefile.am: ChangeLog not required: EXTRA_DIST or *CLEANFILES #24432
    
    ChangeLog filename is known to Automake and requires no further
    coding in the makefile.

diff --git a/Makefile.am b/Makefile.am
index b7fcbc5..e49f90d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,8 +10,7 @@ pkgconfig_DATA = inputproto.pc
 
 EXTRA_DIST = inputproto.pc.in
 
-EXTRA_DIST += ChangeLog XI2proto.txt XIproto.txt
-MAINTAINERCLEANFILES = ChangeLog
+EXTRA_DIST += XI2proto.txt XIproto.txt
 
 .PHONY: ChangeLog INSTALL
 

commit ee09bc24cebbb18c2a2ed81336ab4ead600d2e94
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Nov 15 18:31:28 2009 -0500

    Makefile.am: INSTALL file is missing or incorrect #24206
    
    The standard GNU file on building/installing  tarball is copied
    using the XORG_INSTALL macro contained in XORG_DEFAULT_OPTIONS
    Add INSTALL target

diff --git a/Makefile.am b/Makefile.am
index 85ca02f..b7fcbc5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -13,9 +13,12 @@ EXTRA_DIST = inputproto.pc.in
 EXTRA_DIST += ChangeLog XI2proto.txt XIproto.txt
 MAINTAINERCLEANFILES = ChangeLog
 
-.PHONY: ChangeLog
+.PHONY: ChangeLog INSTALL
+
+INSTALL:
+	$(INSTALL_CMD)
 
 ChangeLog:
 	$(CHANGELOG_CMD)
 
-dist-hook: ChangeLog
+dist-hook: ChangeLog INSTALL

commit 2ee03af19d17c973072bbacaf7ab44a8fd8b64b1
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Nov 15 18:11:36 2009 -0500

    configure.ac: deploy the new XORG_DEFAULT_OPTIONS #24242
    
    This macro aggregate a number of existing macros that sets commmon
    X.Org components configuration options. It shields the configuration file from
    future changes.

diff --git a/configure.ac b/configure.ac
index 0e547c9..2e3f2b6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,9 +4,9 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
 
 # Require xorg-macros: XORG_DEFAULT_OPTIONS
-m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])])
+m4_ifndef([XORG_MACROS_VERSION],
+          [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
 XORG_MACROS_VERSION(1.3)
-
 XORG_DEFAULT_OPTIONS
 
 AC_OUTPUT([Makefile

commit bf66af595c9b43e4086401a11c5a7b269857f039
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sun Nov 15 13:55:25 2009 -0500

    configure.ac: AM_MAINTAINER_MODE missing #24238
    
    This turns off maintainer mode build rules in tarballs.
    Works in conjunction with autogen.sh --enable-maintainer-mode

diff --git a/configure.ac b/configure.ac
index 1052dc2..0e547c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,7 @@
 AC_PREREQ([2.57])
 AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AM_MAINTAINER_MODE
 
 # Require xorg-macros: XORG_DEFAULT_OPTIONS
 m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])])

commit 9ad88d954d544db29972144f5a778bb05d9b19ad
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sat Nov 14 18:26:47 2009 -0500

    .gitignore: use common defaults with custom section # 24239
    
    Using common defaults will reduce errors and maintenance.
    Only the very small or inexistent custom section need periodic maintenance
    when the structure of the component changes. Do not edit defaults.

diff --git a/.gitignore b/.gitignore
index 28ba404..d1359e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,78 @@
-Makefile
-Makefile.in
+#
+#		X.Org module default exclusion patterns
+#		The next section if for module specific patterns
+#
+#	Do not edit the following section
+# 	GNU Build System (Autotools)
 aclocal.m4
-autom4te.cache
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
 config.log
+config-ml.in
+config.py
 config.status
+config.status.lineno
+config.sub
 configure
+configure.scan
+depcomp
+.deps/
+INSTALL
 install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
 missing
-inputproto.pc
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+#	Do not edit the following section
+# 	Edit Compile Debug Document Distribute
 *~
-inputproto-*.tar.*
-ChangeLog
-tags
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+#		Add & Override patterns for inputproto 
+#
+#		Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+# 

commit 34a9ab1151fb7b35a371cc98a34a20993816f78a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Oct 2 11:38:12 2009 +1000

    inputproto 2.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 5c43cca..1052dc2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ([2.57])
-AC_INIT([InputProto], [1.9.99.902], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
 # Require xorg-macros: XORG_DEFAULT_OPTIONS

commit 0470d29c1e690f3784ca1a42f6d27aa322f9b37a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 1 16:47:11 2009 +1000

    Add XIproto.txt
    
    This is the XI protocol specification document that used to be in xorg-docs.
    It's now moved here, and if it ever sees updates, the updates will only
    apply to here.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/Makefile.am b/Makefile.am
index f41d768..85ca02f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,7 +10,7 @@ pkgconfig_DATA = inputproto.pc
 
 EXTRA_DIST = inputproto.pc.in
 
-EXTRA_DIST += ChangeLog XI2proto.txt
+EXTRA_DIST += ChangeLog XI2proto.txt XIproto.txt
 MAINTAINERCLEANFILES = ChangeLog
 
 .PHONY: ChangeLog
diff --git a/XIproto.txt b/XIproto.txt
new file mode 100644
index 0000000..20cc02a
--- /dev/null
+++ b/XIproto.txt
@@ -0,0 +1,2542 @@
+           X11 Input Extension Protocol Specification
+                      Version 1.0
+                   X Consortium Standard
+                 X Version 11, Release 6.8
+               Mark Patrick, Ardent Computer
+               George Sachs, Hewlett-Packard
+               
+                      Version 1.5
+                    Peter Hutterer
+
+   Copyright © 1989, 1990, 1991 by Hewlett-Packard Company and
+   Ardent Computer
+
+   Permission to use, copy, modify, and distribute this
+   documentation for any purpose and without fee is hereby
+   granted, provided that the above copyright notice and this
+   permission notice appear in all copies. Ardent and
+   Hewlett-Packard make no representations about the suitability
+   for any purpose of the information in this document. It is
+   provided "as is" without express or implied warranty. Copyright
+   © 1989, 1990, 1991, 1992 X Consortium
+
+   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 shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM 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.
+
+   Except as contained in this notice, the name of the X
+   Consortium shall not be used in advertising or otherwise to
+   promote the sale, use or other dealings in this Software
+   without prior written authorization from the X Consortium. X
+   Window System is a trademark of The Open Group.
+
+   Copyright © 2008 by Peter Hutterer
+
+   Permission is hereby granted, free of charge, to any person
+   obtaining a copy of this software and associated documentation
+   files (the "Software"), to deal in the Software without
+   restriction, including without limitation the rights to use,
+   copy, modify, merge, publish, distribute, sublicense, and/or
+   sell copies of the Software, and to permit persons to whom the
+   Software is furnished to do so, subject to the following
+   conditions:
+
+   The above copyright notice and this permission notice
+   (including the next paragraph) shall be included in all copies
+   or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+   OTHER DEALINGS IN THE SOFTWARE.
+
+1. Input Extension Overview
+
+   This document defines an extension to the X11 protocol to
+   support input devices other than the core X keyboard and
+   pointer. An accompanying document defines a corresponding
+   extension to Xlib (similar extensions for languages other than
+   C are anticipated). This first section gives an overview of the
+   input extension. The next section defines the new protocol
+   requests defined by the extension. We conclude with a
+   description of the new input events generated by the additional
+   input devices.
+
+   This document only describes the behaviour of servers supporting 
+   up to the X Input Extension 1.5. For servers supporting the X 
+   Input Extensions 2.0, see XI2proto.txt. New clients are discouraged
+   from using this protocol specification. Instead, the use of XI 2.x 
+   is recommended.
+
+1.1 Design Approach
+
+   The design approach of the extension is to define requests and
+   events analogous to the core requests and events. This allows
+   extension input devices to be individually distinguishable from
+   each other and from the core input devices. These requests and
+   events make use of a device identifier and support the
+   reporting of n-dimensional motion data as well as other data
+   that is not reportable via the core input events.
+
+1.2 Core Input Devices
+
+   The X server core protocol supports two input devices: a
+   pointer and a keyboard. The pointer device has two major
+   functions. First, it may be used to generate motion information
+   that client programs can detect. Second, it may also be used to
+   indicate the current location and focus of the X keyboard. To
+   accomplish this, the server echoes a cursor at the current
+   position of the X pointer. Unless the X keyboard has been
+   explicitly focused, this cursor also shows the current location
+   and focus of the X keyboard. The X keyboard is used to generate
+   input that client programs can detect.
+
+   In servers supporting XI 1.4 and above, the core pointer and
+   the core keyboard are virtual devices that do not represent a
+   physical device connected to the host computer.
+   In servers supporting XI 2.0 and above, there may be multiple 
+   core pointers and keyboards. Refer to XI2proto.txt for more 
+   information.
+
+   The X keyboard and X pointer are referred to in this document
+   as the core devices, and the input events they generate
+   (KeyPress, KeyRelease, ButtonPress, ButtonRelease, and
+   MotionNotify) are known as the core input events. All other
+   input devices are referred to as extension input devices and
+   the input events they generate are referred to as extension
+   input events.
+
+   In servers supporting only XI 1.x, this input extension does
+   not change the behavior or functionality of the core input
+   devices, core events, or core protocol requests, with the
+   exception of the core grab requests. These requests may affect
+   the synchronization of events from extension devices. See the
+   explanation in the section titled "Event Synchronization and
+   Core Grabs".
+
+   Selection of the physical devices to be initially used by the
+   server as the core devices is left implementation-dependent.
+   Requests are defined that allow client programs to change which
+   physical devices are used as the core devices.
+
+1.3 Extension Input Devices
+
+   The input extension v1.x controls access to input devices other
+   than the X keyboard and X pointer. It allows client programs to
+   select input from these devices independently from each other
+   and independently from the core devices.
+
+   A client that wishes to access a specific device must first
+   determine whether that device is connected to the X server.
+   This is done through the ListInputDevices request, which will
+   return a list of all devices that can be opened by the X
+   server. A client can then open one or more of these devices
+   using the OpenDevice request, specify what events they are
+   interested in receiving, and receive and process input events
+   from extension devices in the same way as events from the X
+   keyboard and X pointer. Input events from these devices are of
+   extension types ( DeviceKeyPress, DeviceKeyRelease,
+   DeviceButtonPress, DeviceButtonRelease, DeviceMotionNotify,
+   etc.) and contain a device identifier so that events of the
+   same type coming from different input devices can be
+   distinguished.
+
+   Any kind of input device may be used as an extension input
+   device. Extension input devices may have 0 or more keys, 0 or
+   more buttons, and may report 0 or more axes of motion. Motion
+   may be reported as relative movements from a previous position
+   or as an absolute position. All valuators reporting motion
+   information for a given extension input device must report the
+   same kind of motion information (absolute or relative).
+
+   This extension is designed to accommodate new types of input
+   devices that may be added in the future. The protocol requests
+   that refer to specific characteristics of input devices
+   organize that information by input classes. Server implementors
+   may add new classes of input devices without changing the
+   protocol requests. Input classes are unique numbers registered
+   with the X Consortium. Each extension input device may support
+   multiple input classes.
+
+   In XI 1.x, all extension input devices are treated like the
+   core X keyboard in determining their location and focus. The
+   server does not track the location of these devices on an
+   individual basis, and therefore does not echo a cursor to
+   indicate their current location. Instead, their location is
+   determined by the location of the core X pointer. Like the core
+   X keyboard, some may be explicitly focused. If they are not
+   explicitly focused, their focus is determined by the location
+   of the core X pointer.
+
+   Most input events reported by the server to a client are of
+   fixed size (32 bytes). In order to represent the change in
+   state of an input device the extension may need to generate a
+   sequence of input events. A client side library (such as Xlib)
+   will typically take these raw input events and format them into
+   a form more convenient to the client.
+
+1.4 Event Classes
+
+   In the core protocol a client registers interest in receiving
+   certain input events directed to a window by modifying that
+   window's event-mask. Most of the bits in the event mask are
+   already used to specify interest in core X events. The input
+   extension specifies a different mechanism by which a client can
+   express interest in events generated by this extension.
+
+   When a client opens a extension input device via the OpenDevice
+   request, an XDevice structure is returned. Macros are provided
+   that extract 32-bit numbers called event classes from that
+   structure, that a client can use to register interest in
+   extension events via the SelectExtensionEvent request. The
+   event class combines the desired event type and device id, and
+   may be thought of as the equivalent of core event masks.
+
+1.5 Input Classes
+
+   Some of the input extension requests divide input devices into
+   classes based on their functionality. This is intended to allow
+   new classes of input devices to be defined at a later time
+   without changing the semantics of these requests. The following
+   input device classes are currently defined:
+
+   KEY
+          The device reports key events.
+
+   BUTTON
+          The device reports button events.
+
+   VALUATOR
+          The device reports valuator data in motion events.
+
+   PROXIMITY
+          The device reports proximity events.
+
+   FOCUS
+          The device can be focused and reports focus events.
+
+   FEEDBACK
+          The device supports feedbacks.
+
+   OTHER
+          The ChangeDeviceNotify, DeviceMappingNotify, and
+          DeviceStateNotify macros may be invoked passing the
+          XDevice structure returned for this device.
+
+   Each extension input device may support multiple input classes.
+   Additional classes may be added in the future. Requests that
+   support multiple input classes, such as the ListInputDevices
+   function that lists all available input devices, organize the
+   data they return by input class. Client programs that use these
+   requests should not access data unless it matches a class
+   defined at the time those clients were compiled. In this way,
+   new classes can be added without forcing existing clients that
+   use these requests to be recompiled.
+
+2. Requests
+
+   Extension input devices are accessed by client programs through
+   the use of new protocol requests. This section summarizes the
+   new requests defined by this extension. The syntax and type
+   definitions used below follow the notation used for the X11
+   core protocol.
+
+2.1 Getting the Extension Version
+
+   The GetExtensionVersion request returns version information
+   about the input extension.
+
+                       GetExtensionVersion
+                               name: STRING
+                       =>
+                               present: BOOL
+                               protocol-major-version: CARD16
+                               protocol-minor-version: CARD16
+
+   The protocol version numbers returned indicate the version of
+   the input extension supported by the target X server. The
+   version numbers can be compared to constants defined in the
+   header file XI.h. Each version is a superset of the previous
+   versions.
+
+   The name must be the name of the Input Extension as defined 
+   in the header file XI.h.
+
+2.2 Listing Available Devices
+
+   A client that wishes to access a specific device must first
+   determine whether that device is connected to the X server.
+   This is done through the ListInputDevices request, which will
+   return a list of all devices that can be opened by the X
+   server.
+
+                   ListInputDevices
+                   =>
+                   input-devices: ListOfDeviceInfo
+
+   where
+
+                   DEVICEINFO:
+                           [type: ATOM
+                            id: CARD8
+                            num_classes: CARD8
+                            use: {IsXKeyboard, IsXPointer, IsXExtensionPointer,
+                                  IsXExtensionKeyboard, IsExtensionDevice}
+                            info: LISTofINPUTINFO
+                            name: STRING8]
+
+                   INPUTINFO: {KEYINFO, BUTTONINFO, VALUATORINFO}
+                   KEYINFO:
+                           [class: CARD8
+                            length: CARD8
+                            min-keycode: KEYCODE
+                            max-keycode: KEYCODE
+                            num-keys: CARD16]
+                   BUTTONINFO:
+                           [class: CARD8
+                            length: CARD8
+                            num-buttons: CARD16]
+                   VALUATORINFO:
+                           [class: CARD8
+                            length: CARD8
+                            num_axes: CARD8
+                            mode: SETofDEVICEMODE
+                            motion_buffer_size: CARD32
+                            axes: LISTofAXISINFO]
+
+                   AXISINFO:
+                           [resolution: CARD32
+                            min-val: CARD32
+                            max-val: CARD32]
+                   DEVICEMODE: {Absolute, Relative}
+
+   Errors: None
+
+   This request returns a list of all devices that can be opened
+   by the X server, including the core X keyboard and X pointer.
+   Some implementations may open all input devices as part of X
+   initialization, while others may not open an input device until
+   requested to do so by a client program.
+
+   The information returned for each device is as follows:
+
+   type
+          The type field is of type Atom and indicates the nature
+          of the device. Clients may determine device types by
+          invoking the XInternAtom request passing one of the
+          names defined in the header file XI.h. The following
+          names have been defined to date:
+
+                                      MOUSE
+                                      TABLET
+                                      KEYBOARD
+                                      TOUCHSCREEN
+                                      TOUCHPAD
+                                      BUTTONBOX
+                                      BARCODE
+                                      KNOB_BOX
+                                      TRACKBALL
+                                      QUADRATURE
+                                      SPACEBALL
+                                      DATAGLOVE
+                                      EYETRACKER
+                                      CURSORKEYS
+                                      FOOTMOUSE
+                                      ID_MODULE
+                                      ONE_KNOB
+                                      NINE_KNOB
+                                      JOYSTICK
+
+
+   id
+          The id is a small cardinal value in the range 0-128 that
+          uniquely identifies the device. It is assigned to the
+          device when it is initialized by the server. Some
+          implementations may not open an input device until
+          requested by a client program, and may close the device
+          when the last client accessing it requests that it be
+          closed. If a device is opened by a client program via
+          XOpenDevice, then closed via XCloseDevice, then opened
+          again, it is not guaranteed to have the same id after
+          the second open request.
+
+   num_classes
+          The num_classes field is a small cardinal value 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.
+
+   use
+          The use field specifies how the device is currently
+          being used. If the value is IsXKeyboard, the device is
+          currently being used as the X keyboard. If the value is
+          IsXPointer, the device is currently being used as the X
+          pointer. If the value is IsXExtensionPointer, the device


Reply to: