summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/.gitattributes1
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in479
-rw-r--r--src/composite.xml6
-rw-r--r--src/damage.xml8
-rw-r--r--src/dpms.xml8
-rw-r--r--src/dri2.xml26
-rw-r--r--src/dri3.xml97
-rw-r--r--src/glx.xml15
-rw-r--r--src/present.xml205
-rw-r--r--src/randr.xml236
-rw-r--r--src/render.xml140
-rw-r--r--src/res.xml75
-rw-r--r--src/screensaver.xml27
-rw-r--r--src/shape.xml16
-rw-r--r--src/shm.xml21
-rw-r--r--src/sync.xml104
-rw-r--r--src/xcb.xsd12
-rw-r--r--src/xevie.xml4
-rw-r--r--src/xfixes.xml52
-rw-r--r--src/xinput.xml2577
-rw-r--r--src/xkb.xml615
-rw-r--r--src/xproto.xml170
-rw-r--r--src/xtest.xml3
-rw-r--r--src/xv.xml42
25 files changed, 3108 insertions, 1833 deletions
diff --git a/src/.gitattributes b/src/.gitattributes
new file mode 100644
index 0000000..8d345b0
--- /dev/null
+++ b/src/.gitattributes
@@ -0,0 +1 @@
+*.xml diff=xcb
diff --git a/src/Makefile.am b/src/Makefile.am
index eef2dbc..d81d818 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,8 +6,10 @@ xcbinclude_HEADERS = \
damage.xml \
dpms.xml \
dri2.xml \
+ dri3.xml \
ge.xml \
glx.xml \
+ present.xml \
randr.xml \
record.xml \
render.xml \
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index 99a37ef..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,479 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
- esac; \
- test $$am__dry = yes; \
- }
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(xcbinclude_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(xcbincludedir)"
-HEADERS = $(xcbinclude_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMLLINT = @XMLLINT@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-am__leading_dot = @am__leading_dot@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xcbincludedir = @xcbincludedir@
-xcbinclude_HEADERS = \
- xcb.xsd \
- xproto.xml \
- bigreq.xml \
- composite.xml \
- damage.xml \
- dpms.xml \
- dri2.xml \
- ge.xml \
- glx.xml \
- randr.xml \
- record.xml \
- render.xml \
- res.xml \
- screensaver.xml \
- shape.xml \
- shm.xml \
- sync.xml \
- xc_misc.xml \
- xevie.xml \
- xf86dri.xml \
- xf86vidmode.xml \
- xfixes.xml \
- xinerama.xml \
- xinput.xml \
- xkb.xml \
- xprint.xml \
- xselinux.xml \
- xtest.xml \
- xv.xml \
- xvmc.xml
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-xcbincludeHEADERS: $(xcbinclude_HEADERS)
- @$(NORMAL_INSTALL)
- @list='$(xcbinclude_HEADERS)'; test -n "$(xcbincludedir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(xcbincludedir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(xcbincludedir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(xcbincludedir)'"; \
- $(INSTALL_HEADER) $$files "$(DESTDIR)$(xcbincludedir)" || exit $$?; \
- done
-
-uninstall-xcbincludeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(xcbinclude_HEADERS)'; test -n "$(xcbincludedir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(xcbincludedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-@HAVE_XMLLINT_FALSE@check-local:
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(xcbincludedir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-xcbincludeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-xcbincludeHEADERS
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
- clean-generic ctags distclean distclean-generic distclean-tags \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip install-xcbincludeHEADERS installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-xcbincludeHEADERS
-
-
-@HAVE_XMLLINT_TRUE@check-local:
-@HAVE_XMLLINT_TRUE@ $(XMLLINT) --noout --schema $(srcdir)/xcb.xsd $(srcdir)/*.xml
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/composite.xml b/src/composite.xml
index d16b6e7..86de146 100644
--- a/src/composite.xml
+++ b/src/composite.xml
@@ -26,14 +26,14 @@ authorization from the authors.
-->
<!-- This file describes version 0.3 of COMPOSITE. -->
<xcb header="composite" extension-xname="Composite" extension-name="Composite"
- major-version="0" minor-version="3">
+ major-version="0" minor-version="4">
<import>xproto</import>
<import>xfixes</import>
<enum name="Redirect">
- <item name="Automatic" />
- <item name="Manual" />
+ <item name="Automatic"> <value>0</value> </item>
+ <item name="Manual"> <value>1</value> </item>
</enum>
<request name="QueryVersion" opcode="0">
diff --git a/src/damage.xml b/src/damage.xml
index 9c5cde5..c04721d 100644
--- a/src/damage.xml
+++ b/src/damage.xml
@@ -35,10 +35,10 @@ authorization from the authors.
<xidtype name="DAMAGE" />
<enum name="ReportLevel">
- <item name="RawRectangles" />
- <item name="DeltaRectangles" />
- <item name="BoundingBox" />
- <item name="NonEmpty" />
+ <item name="RawRectangles"> <value>0</value> </item>
+ <item name="DeltaRectangles"> <value>1</value> </item>
+ <item name="BoundingBox"> <value>2</value> </item>
+ <item name="NonEmpty"> <value>3</value> </item>
</enum>
<error name="BadDamage" number="0" />
diff --git a/src/dpms.xml b/src/dpms.xml
index 0c2ac20..5581284 100644
--- a/src/dpms.xml
+++ b/src/dpms.xml
@@ -66,10 +66,10 @@ authorization from the authors.
<request name="Disable" opcode="5" />
<enum name="DPMSMode">
- <item name="On" />
- <item name="Standby" />
- <item name="Suspend" />
- <item name="Off" />
+ <item name="On"> <value>0</value> </item>
+ <item name="Standby"> <value>1</value> </item>
+ <item name="Suspend"> <value>2</value> </item>
+ <item name="Off"> <value>3</value> </item>
</enum>
<request name="ForceLevel" opcode="6">
diff --git a/src/dri2.xml b/src/dri2.xml
index 1916d47..d14df41 100644
--- a/src/dri2.xml
+++ b/src/dri2.xml
@@ -32,22 +32,22 @@ authorization from the authors.
<import>xproto</import>
<enum name="Attachment">
- <item name="BufferFrontLeft" />
- <item name="BufferBackLeft" />
- <item name="BufferFrontRight" />
- <item name="BufferBackRight" />
- <item name="BufferDepth" />
- <item name="BufferStencil" />
- <item name="BufferAccum" />
- <item name="BufferFakeFrontLeft" />
- <item name="BufferFakeFrontRight" />
- <item name="BufferDepthStencil" />
- <item name="BufferHiz" />
+ <item name="BufferFrontLeft"> <value>0</value> </item>
+ <item name="BufferBackLeft"> <value>1</value> </item>
+ <item name="BufferFrontRight"> <value>2</value> </item>
+ <item name="BufferBackRight"> <value>3</value> </item>
+ <item name="BufferDepth"> <value>4</value> </item>
+ <item name="BufferStencil"> <value>5</value> </item>
+ <item name="BufferAccum"> <value>6</value> </item>
+ <item name="BufferFakeFrontLeft"> <value>7</value> </item>
+ <item name="BufferFakeFrontRight"> <value>8</value> </item>
+ <item name="BufferDepthStencil"> <value>9</value> </item>
+ <item name="BufferHiz"> <value>10</value> </item>
</enum>
<enum name="DriverType">
- <item name="DRI" />
- <item name="VDPAU" />
+ <item name="DRI"> <value>0</value> </item>
+ <item name="VDPAU"> <value>1</value> </item>
</enum>
<enum name="EventType">
diff --git a/src/dri3.xml b/src/dri3.xml
new file mode 100644
index 0000000..608af31
--- /dev/null
+++ b/src/dri3.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Copyright © 2013 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and
+that the name of the copyright holders not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. The copyright holders make no representations
+about the suitability of this software for any purpose. It is provided "as
+is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR 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.
+-->
+
+<xcb header="dri3" extension-xname="DRI3" extension-name="DRI3"
+ major-version="1" minor-version="0">
+ <import>xproto</import>
+
+ <!-- Types -->
+
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="Open" opcode="1">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="provider" />
+ <reply>
+ <field type="CARD8" name="nfd"/>
+ <fd name="device_fd" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <request name="PixmapFromBuffer" opcode="2">
+ <field type="PIXMAP" name="pixmap" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="stride" />
+ <field type="CARD8" name="depth" />
+ <field type="CARD8" name="bpp" />
+ <fd name="pixmap_fd" />
+ </request>
+
+ <request name="BufferFromPixmap" opcode="3">
+ <field type="PIXMAP" name="pixmap" />
+ <reply>
+ <field type="CARD8" name="nfd"/>
+ <field type="CARD32" name="size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="stride" />
+ <field type="CARD8" name="depth" />
+ <field type="CARD8" name="bpp" />
+ <fd name="pixmap_fd" />
+ <pad bytes="12"/>
+ </reply>
+ </request>
+
+ <request name="FenceFromFD" opcode="4">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="fence"/>
+ <field type="BOOL" name="initially_triggered"/>
+ <pad bytes="3"/>
+ <fd name="fence_fd"/>
+ </request>
+
+ <request name="FDFromFence" opcode="5">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="fence"/>
+ <reply>
+ <field type="CARD8" name="nfd"/>
+ <fd name="fence_fd" />
+ <pad bytes="24"/>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/src/glx.xml b/src/glx.xml
index 53c9267..2a36daa 100644
--- a/src/glx.xml
+++ b/src/glx.xml
@@ -45,8 +45,7 @@ The patch that fixed this server bug in X.org CVS is here:
-->
<xcb header="glx" extension-xname="GLX" extension-name="Glx"
- major-version="1" minor-version="3">
- <!-- target support: 1.3 -->
+ major-version="1" minor-version="4">
<import>xproto</import>
@@ -107,6 +106,18 @@ The patch that fixed this server bug in X.org CVS is here:
<pad bytes="4" />
</event>
+ <event name="BufferSwapComplete" number="1">
+ <pad bytes="1" />
+ <field type="CARD16" name="event_type" />
+ <pad bytes="2" />
+ <field type="glx:DRAWABLE" name="drawable" />
+ <field type="CARD32" name="ust_hi" />
+ <field type="CARD32" name="ust_lo" />
+ <field type="CARD32" name="msc_hi" />
+ <field type="CARD32" name="msc_lo" />
+ <field type="CARD32" name="sbc" />
+ </event>
+
<!-- enums for PbufferClobber event/draw type -->
<enum name="PBCET">
<item name="Damaged">
diff --git a/src/present.xml b/src/present.xml
new file mode 100644
index 0000000..a9adc2b
--- /dev/null
+++ b/src/present.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Copyright © 2013 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and
+that the name of the copyright holders not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. The copyright holders make no representations
+about the suitability of this software for any purpose. It is provided "as
+is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR 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.
+-->
+
+<xcb header="present" extension-xname="Present" extension-name="Present"
+ major-version="1" minor-version="0">
+ <import>xproto</import>
+ <import>randr</import>
+ <import>xfixes</import>
+ <import>sync</import>
+
+ <!-- Types -->
+
+ <enum name="Event">
+ <item name="ConfigureNotify"><value>0</value></item>
+ <item name="CompleteNotify"><value>1</value></item>
+ <item name="IdleNotify"><value>2</value></item>
+ <item name="RedirectNotify"><value>3</value></item>
+ </enum>
+
+ <enum name="EventMask">
+ <item name="NoEvent"><value>0</value></item>
+ <item name="ConfigureNotify"><bit>0</bit></item>
+ <item name="CompleteNotify"><bit>1</bit></item>
+ <item name="IdleNotify"><bit>2</bit></item>
+ <item name="RedirectNotify"><bit>3</bit></item>
+ </enum>
+
+ <enum name="Option">
+ <item name="None"><value>0</value></item>
+ <item name="Async"><bit>0</bit></item>
+ <item name="Copy"><bit>1</bit></item>
+ <item name="UST"><bit>2</bit></item>
+ </enum>
+
+ <enum name="Capability">
+ <item name="None"><value>0</value></item>
+ <item name="Async"><bit>0</bit></item>
+ <item name="Fence"><bit>1</bit></item>
+ <item name="UST"><bit>2</bit></item>
+ </enum>
+
+ <enum name="CompleteKind">
+ <item name="Pixmap"><value>0</value></item>
+ <item name="NotifyMSC"><value>1</value></item>
+ </enum>
+
+ <enum name="CompleteMode">
+ <item name="Copy"><value>0</value></item>
+ <item name="Flip"><value>1</value></item>
+ <item name="Skip"><value>2</value></item>
+ </enum>
+
+ <struct name="Notify">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="serial" />
+ </struct>
+
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="Pixmap" opcode="1">
+ <field type="WINDOW" name="window" />
+ <field type="PIXMAP" name="pixmap" />
+ <field type="CARD32" name="serial" />
+ <field type="REGION" name="valid" />
+ <field type="REGION" name="update" />
+ <field type="INT16" name="x_off" />
+ <field type="INT16" name="y_off" />
+ <field type="CRTC" name="target_crtc" />
+ <field type="FENCE" name="wait_fence" />
+ <field type="FENCE" name="idle_fence" />
+ <field type="CARD32" name="options" />
+ <pad bytes="4"/>
+ <field type="CARD64" name="target_msc" />
+ <field type="CARD64" name="divisor" />
+ <field type="CARD64" name="remainder" />
+ <list type="Notify" name="notifies"/>
+ </request>
+
+ <request name="NotifyMSC" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="serial" />
+ <pad bytes="4"/>
+ <field type="CARD64" name="target_msc" />
+ <field type="CARD64" name="divisor" />
+ <field type="CARD64" name="remainder" />
+ </request>
+
+ <xidtype name="EVENT"/>
+
+ <request name="SelectInput" opcode="3">
+ <field type="EVENT" name="eid"/>
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="event_mask" mask="EventMask" />
+ </request>
+
+ <request name="QueryCapabilities" opcode="4">
+ <field type="CARD32" name="target" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="capabilities" />
+ </reply>
+ </request>
+
+ <!-- Events -->
+
+ <event name="Generic" number="0">
+ <field type="CARD8" name="extension" />
+ <field type="CARD32" name="length" />
+ <field type="CARD16" name="evtype" />
+ <pad bytes="2" />
+ <field type="EVENT" name="event" />
+ </event>
+
+ <event name="ConfigureNotify" number="0" xge="true">
+ <pad bytes="2" />
+ <field type="EVENT" name="event" />
+ <field type="WINDOW" name="window" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="INT16" name="off_x" />
+ <field type="INT16" name="off_y" />
+ <field type="CARD16" name="pixmap_width" />
+ <field type="CARD16" name="pixmap_height" />
+ <field type="CARD32" name="pixmap_flags" />
+ </event>
+
+ <event name="CompleteNotify" number="1" xge="true">
+ <field type="CARD8" name="kind" enum="CompleteKind" />
+ <field type="CARD8" name="mode" enum="CompleteMode" />
+ <field type="EVENT" name="event" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="serial" />
+ <field type="CARD64" name="ust" />
+ <field type="CARD64" name="msc" />
+ </event>
+
+ <event name="IdleNotify" number="2" xge="true">
+ <pad bytes="2"/>
+ <field type="EVENT" name="event" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="serial" />
+ <field type="PIXMAP" name="pixmap" />
+ <field type="FENCE" name="idle_fence" />
+ </event>
+
+ <event name="RedirectNotify" number="3" xge="true">
+ <field type="BOOL" name="update_window"/>
+ <pad bytes="1"/>
+ <field type="EVENT" name="event" />
+ <field type="WINDOW" name="event_window" />
+ <field type="WINDOW" name="window" />
+ <field type="PIXMAP" name="pixmap" />
+ <field type="CARD32" name="serial" />
+
+ <field type="REGION" name="valid_region" />
+ <field type="REGION" name="update_region" />
+ <field type="RECTANGLE" name="valid_rect" />
+ <field type="RECTANGLE" name="update_rect" />
+
+ <field type="INT16" name="x_off" />
+ <field type="INT16" name="y_off" />
+ <field type="CRTC" name="target_crtc" />
+ <field type="FENCE" name="wait_fence" />
+ <field type="FENCE" name="idle_fence" />
+ <field type="CARD32" name="options" />
+ <pad bytes="4"/>
+ <field type="CARD64" name="target_msc" />
+ <field type="CARD64" name="divisor" />
+ <field type="CARD64" name="remainder" />
+ <list type="Notify" name="notifies"/>
+ </event>
+
+</xcb>
diff --git a/src/randr.xml b/src/randr.xml
index 4f0716f..d9192b2 100644
--- a/src/randr.xml
+++ b/src/randr.xml
@@ -27,7 +27,7 @@ authorization from the authors.
-->
<xcb header="randr" extension-xname="RANDR" extension-name="RandR"
- major-version="1" minor-version="3">
+ major-version="1" minor-version="4">
<import>xproto</import>
<import>render</import>
@@ -36,12 +36,14 @@ authorization from the authors.
<xidtype name="MODE" />
<xidtype name="CRTC" />
<xidtype name="OUTPUT" />
+ <xidtype name="PROVIDER" />
<!-- Errors -->
- <error name="BadOutput" number="0" />
- <error name="BadCrtc" number="1" />
- <error name="BadMode" number="2" />
+ <error name="BadOutput" number="0" />
+ <error name="BadCrtc" number="1" />
+ <error name="BadMode" number="2" />
+ <error name="BadProvider" number="3" />
<!-- Requests -->
@@ -113,11 +115,15 @@ authorization from the authors.
<!-- opcode 3 is obsolete -->
<enum name="NotifyMask" >
- <item name="ScreenChange"> <bit>0</bit></item>
- <!-- new in 1.2 -->
- <item name="CrtcChange"> <bit>1</bit></item>
- <item name="OutputChange"> <bit>2</bit></item>
- <item name="OutputProperty"><bit>3</bit></item>
+ <item name="ScreenChange"> <bit>0</bit></item>
+ <!-- New in version 1.2 -->
+ <item name="CrtcChange"> <bit>1</bit></item>
+ <item name="OutputChange"> <bit>2</bit></item>
+ <item name="OutputProperty"> <bit>3</bit></item>
+ <!-- New in version 1.4 -->
+ <item name="ProviderChange"> <bit>4</bit></item>
+ <item name="ProviderProperty"><bit>5</bit></item>
+ <item name="ResourceChange"> <bit>6</bit></item>
</enum>
<request name="SelectInput" opcode="4">
@@ -242,9 +248,9 @@ authorization from the authors.
<!-- for GetOutputInfo.connection -->
<enum name="Connection">
- <item name="Connected" />
- <item name="Disconnected" />
- <item name="Unknown" />
+ <item name="Connected"> <value>0</value> </item>
+ <item name="Disconnected"> <value>1</value> </item>
+ <item name="Unknown"> <value>2</value> </item>
</enum>
<request name="GetOutputInfo" opcode="9">
@@ -506,6 +512,14 @@ authorization from the authors.
</reply>
</request>
+ <enum name="Transform">
+ <!-- Introduced in version 1.3, but not referenced. -->
+ <item name="Unit"> <bit>0</bit></item>
+ <item name="ScaleUp"> <bit>1</bit></item>
+ <item name="ScaleDown"> <bit>2</bit></item>
+ <item name="Projective"> <bit>3</bit></item>
+ </enum>
+
<request name="SetCrtcTransform" opcode="26">
<field type="CRTC" name="crtc" />
<field type="TRANSFORM" name="transform" />
@@ -599,6 +613,162 @@ authorization from the authors.
</reply>
</request>
+ <!-- New in version 1.4 -->
+
+ <request name="GetProviders" opcode="32">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD16" name="num_providers" />
+ <pad bytes="18" />
+ <list type="PROVIDER" name="providers">
+ <fieldref>num_providers</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <enum name="ProviderCapability">
+ <item name="SourceOutput"> <bit>0</bit></item>
+ <item name="SinkOutput"> <bit>1</bit></item>
+ <item name="SourceOffload"> <bit>2</bit></item>
+ <item name="SinkOffload"> <bit>3</bit></item>
+ </enum>
+
+ <request name="GetProviderInfo" opcode="33">
+ <field type="PROVIDER" name="provider" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <reply>
+ <field type="CARD8" name="status" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD32" name="capabilities" mask="ProviderCapability" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_associated_providers" />
+ <field type="CARD16" name="name_len" />
+ <pad bytes="8" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="PROVIDER" name="associated_providers">
+ <fieldref>num_associated_providers</fieldref>
+ </list>
+ <list type="CARD32" name="associated_capability">
+ <fieldref>num_associated_providers</fieldref>
+ </list>
+ <list type="char" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ <!-- XXX: Prepared for the future. Until xcbgen supports
+ the align attribute in <pad>, we ignore the
+ trailing pad bytes here.
+ <pad align="4" />
+ -->
+ </reply>
+ </request>
+
+ <request name="SetProviderOffloadSink" opcode="34">
+ <field type="PROVIDER" name="provider" />
+ <field type="PROVIDER" name="sink_provider" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ </request>
+
+ <request name="SetProviderOutputSource" opcode="35">
+ <field type="PROVIDER" name="provider" />
+ <field type="PROVIDER" name="source_provider" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ </request>
+
+ <request name="ListProviderProperties" opcode="36">
+ <field type="PROVIDER" name="provider" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_atoms" />
+ <pad bytes="22" />
+ <list type="ATOM" name="atoms">
+ <fieldref>num_atoms</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryProviderProperty" opcode="37">
+ <field type="PROVIDER" name="provider" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="pending" />
+ <field type="BOOL" name="range" />
+ <field type="BOOL" name="immutable" />
+ <pad bytes="21" />
+ <list type="INT32" name="valid_values">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ConfigureProviderProperty" opcode="38">
+ <field type="PROVIDER" name="provider" />
+ <field type="ATOM" name="property" />
+ <field type="BOOL" name="pending" />
+ <field type="BOOL" name="range" />
+ <pad bytes="2" />
+ <list type="INT32" name="values" />
+ </request>
+
+ <request name="ChangeProviderProperty" opcode="39">
+ <field type="PROVIDER" name="provider" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD8" name="format" />
+ <field type="CARD8" name="mode" />
+ <pad bytes="2" />
+ <field type="CARD32" name="num_items" />
+ <list type="void" name="data">
+ <op op="*">
+ <fieldref>num_items</fieldref>
+ <op op="/">
+ <fieldref>format</fieldref>
+ <value>8</value>
+ </op>
+ </op>
+ </list>
+ </request>
+
+ <request name="DeleteProviderProperty" opcode="40">
+ <field type="PROVIDER" name="provider" />
+ <field type="ATOM" name="property" />
+ </request>
+
+ <request name="GetProviderProperty" opcode="41">
+ <field type="PROVIDER" name="provider" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" /> <!-- AnyProperty -->
+ <field type="CARD32" name="long_offset" />
+ <field type="CARD32" name="long_length" />
+ <field type="BOOL" name="delete" />
+ <field type="BOOL" name="pending" />
+ <pad bytes="2" />
+ <reply>
+ <field type="CARD8" name="format" />
+ <field type="ATOM" name="type" /> <!-- None -->
+ <field type="CARD32" name="bytes_after" />
+ <field type="CARD32" name="num_items" />
+ <pad bytes="12" />
+ <list type="void" name="data">
+ <op op="*">
+ <fieldref>num_items</fieldref>
+ <op op="/">
+ <fieldref>format</fieldref>
+ <value>8</value>
+ </op>
+ </op>
+ </list>
+ </reply>
+ </request>
+
<!-- Events -->
<event name="ScreenChangeNotify" number="0">
@@ -619,9 +789,12 @@ authorization from the authors.
<!-- subcode -->
<enum name="Notify" >
- <item name="CrtcChange"> <value>0</value></item>
- <item name="OutputChange"> <value>1</value></item>
- <item name="OutputProperty"><value>2</value></item>
+ <item name="CrtcChange"> <value>0</value></item>
+ <item name="OutputChange"> <value>1</value></item>
+ <item name="OutputProperty"> <value>2</value></item>
+ <item name="ProviderChange"> <value>3</value></item>
+ <item name="ProviderProperty"><value>4</value></item>
+ <item name="ResourceChange"> <value>5</value></item>
</enum>
<struct name="CrtcChange">
@@ -658,10 +831,37 @@ authorization from the authors.
<pad bytes="11" />
</struct>
+ <!-- New in version 1.4 -->
+
+ <struct name="ProviderChange">
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="WINDOW" name="window" />
+ <field type="PROVIDER" name="provider" />
+ <pad bytes="16" />
+ </struct>
+
+ <struct name="ProviderProperty">
+ <field type="WINDOW" name="window" />
+ <field type="PROVIDER" name="provider" />
+ <field type="ATOM" name="atom" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD8" name="state" />
+ <pad bytes="11" />
+ </struct>
+
+ <struct name="ResourceChange">
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="WINDOW" name="window" />
+ <pad bytes="20" />
+ </struct>
+
<union name="NotifyData">
- <field type="CrtcChange" name="cc" />
- <field type="OutputChange" name="oc" />
- <field type="OutputProperty" name="op" />
+ <field type="CrtcChange" name="cc" />
+ <field type="OutputChange" name="oc" />
+ <field type="OutputProperty" name="op" />
+ <field type="ProviderChange" name="pc" />
+ <field type="ProviderProperty" name="pp" />
+ <field type="ResourceChange" name="rc" />
</union>
<event name="Notify" number="1">
diff --git a/src/render.xml b/src/render.xml
index 9667fbe..55b73f7 100644
--- a/src/render.xml
+++ b/src/render.xml
@@ -11,84 +11,84 @@ for licensing information.
<import>xproto</import>
<enum name="PictType">
- <item name="Indexed" />
- <item name="Direct" />
+ <item name="Indexed"> <value>0</value> </item>
+ <item name="Direct"> <value>1</value> </item>
</enum>
<enum name="Picture">
- <item name="None" />
+ <item name="None"> <value>0</value> </item>
</enum>
<!-- Disjoint* and Conjoint* are new in version 0.2 -->
<!-- PDF blend modes are new in version 0.11 -->
<enum name="PictOp">
- <item name="Clear" />
- <item name="Src" />
- <item name="Dst" />
- <item name="Over" />
- <item name="OverReverse" />
- <item name="In" />
- <item name="InReverse" />
- <item name="Out" />
- <item name="OutReverse" />
- <item name="Atop" />
- <item name="AtopReverse" />
- <item name="Xor" />
- <item name="Add" />
- <item name="Saturate" />
+ <item name="Clear"> <value>0</value> </item>
+ <item name="Src"> <value>1</value> </item>
+ <item name="Dst"> <value>2</value> </item>
+ <item name="Over"> <value>3</value> </item>
+ <item name="OverReverse"> <value>4</value> </item>
+ <item name="In"> <value>5</value> </item>
+ <item name="InReverse"> <value>6</value> </item>
+ <item name="Out"> <value>7</value> </item>
+ <item name="OutReverse"> <value>8</value> </item>
+ <item name="Atop"> <value>9</value> </item>
+ <item name="AtopReverse"> <value>10</value> </item>
+ <item name="Xor"> <value>11</value> </item>
+ <item name="Add"> <value>12</value> </item>
+ <item name="Saturate"> <value>13</value> </item>
- <item name="DisjointClear"><value>16</value></item>
- <item name="DisjointSrc" />
- <item name="DisjointDst" />
- <item name="DisjointOver" />
- <item name="DisjointOverReverse" />
- <item name="DisjointIn" />
- <item name="DisjointInReverse" />
- <item name="DisjointOut" />
- <item name="DisjointOutReverse" />
- <item name="DisjointAtop" />
- <item name="DisjointAtopReverse" />
- <item name="DisjointXor" />
+ <item name="DisjointClear"> <value>16</value></item>
+ <item name="DisjointSrc"> <value>17</value> </item>
+ <item name="DisjointDst"> <value>18</value> </item>
+ <item name="DisjointOver"> <value>19</value> </item>
+ <item name="DisjointOverReverse"> <value>20</value> </item>
+ <item name="DisjointIn"> <value>21</value> </item>
+ <item name="DisjointInReverse"> <value>22</value> </item>
+ <item name="DisjointOut"> <value>23</value> </item>
+ <item name="DisjointOutReverse"> <value>24</value> </item>
+ <item name="DisjointAtop"> <value>25</value> </item>
+ <item name="DisjointAtopReverse"> <value>26</value> </item>
+ <item name="DisjointXor"> <value>27</value> </item>
- <item name="ConjointClear"><value>32</value></item>
- <item name="ConjointSrc" />
- <item name="ConjointDst" />
- <item name="ConjointOver" />
- <item name="ConjointOverReverse" />
- <item name="ConjointIn" />
- <item name="ConjointInReverse" />
- <item name="ConjointOut" />
- <item name="ConjointOutReverse" />
- <item name="ConjointAtop" />
- <item name="ConjointAtopReverse" />
- <item name="ConjointXor" />
+ <item name="ConjointClear"> <value>32</value></item>
+ <item name="ConjointSrc"> <value>33</value> </item>
+ <item name="ConjointDst"> <value>34</value> </item>
+ <item name="ConjointOver"> <value>35</value> </item>
+ <item name="ConjointOverReverse"> <value>36</value> </item>
+ <item name="ConjointIn"> <value>37</value> </item>
+ <item name="ConjointInReverse"> <value>38</value> </item>
+ <item name="ConjointOut"> <value>39</value> </item>
+ <item name="ConjointOutReverse"> <value>40</value> </item>
+ <item name="ConjointAtop"> <value>41</value> </item>
+ <item name="ConjointAtopReverse"> <value>42</value> </item>
+ <item name="ConjointXor"> <value>43</value> </item>
<!-- PDF blend modes are new in version 0.11 -->
- <item name="Multiply"><value>48</value></item>
- <item name="Screen" />
- <item name="Overlay" />
- <item name="Darken" />
- <item name="Lighten" />
- <item name="ColorDodge" />
- <item name="ColorBurn" />
- <item name="HardLight" />
- <item name="SoftLight" />
- <item name="Difference" />
- <item name="Exclusion" />
- <item name="HSLHue" />
- <item name="HSLSaturation" />
- <item name="HSLColor" />
- <item name="HSLLuminosity" />
+ <item name="Multiply"> <value>48</value></item>
+ <item name="Screen"> <value>49</value> </item>
+ <item name="Overlay"> <value>50</value> </item>
+ <item name="Darken"> <value>51</value> </item>
+ <item name="Lighten"> <value>52</value> </item>
+ <item name="ColorDodge"> <value>53</value> </item>
+ <item name="ColorBurn"> <value>54</value> </item>
+ <item name="HardLight"> <value>55</value> </item>
+ <item name="SoftLight"> <value>56</value> </item>
+ <item name="Difference"> <value>57</value> </item>
+ <item name="Exclusion"> <value>58</value> </item>
+ <item name="HSLHue"> <value>59</value> </item>
+ <item name="HSLSaturation"> <value>60</value> </item>
+ <item name="HSLColor"> <value>61</value> </item>
+ <item name="HSLLuminosity"> <value>62</value> </item>
</enum>
<enum name="PolyEdge">
- <item name="Sharp" />
- <item name="Smooth" />
+ <item name="Sharp"> <value>0</value> </item>
+ <item name="Smooth"> <value>1</value> </item>
</enum>
<enum name="PolyMode">
- <item name="Precise" />
- <item name="Imprecise" />
+ <item name="Precise"> <value>0</value> </item>
+ <item name="Imprecise"> <value>1</value> </item>
</enum>
<enum name="CP">
@@ -108,20 +108,20 @@ for licensing information.
</enum>
<enum name="SubPixel">
- <item name="Unknown" />
- <item name="HorizontalRGB" />
- <item name="HorizontalBGR" />
- <item name="VerticalRGB" />
- <item name="VerticalBGR" />
- <item name="None" />
+ <item name="Unknown"> <value>0</value> </item>
+ <item name="HorizontalRGB"> <value>1</value> </item>
+ <item name="HorizontalBGR"> <value>2</value> </item>
+ <item name="VerticalRGB"> <value>3</value> </item>
+ <item name="VerticalBGR"> <value>4</value> </item>
+ <item name="None"> <value>5</value> </item>
</enum>
<!-- Extended repeat attributes introduced in 0.10 -->
<enum name="Repeat">
- <item name="None" />
- <item name="Normal" />
- <item name="Pad" />
- <item name="Reflect" />
+ <item name="None"> <value>0</value> </item>
+ <item name="Normal"> <value>1</value> </item>
+ <item name="Pad"> <value>2</value> </item>
+ <item name="Reflect"> <value>3</value> </item>
</enum>
<typedef oldname="CARD32" newname="GLYPH" />
diff --git a/src/res.xml b/src/res.xml
index d758d89..17e6f83 100644
--- a/src/res.xml
+++ b/src/res.xml
@@ -26,9 +26,10 @@ sale, use or other dealings in this Software without prior written
authorization from the authors.
-->
<xcb header="res" extension-xname="X-Resource" extension-name="Res"
- major-version="1" minor-version="0">
+ major-version="1" minor-version="2">
<import>xproto</import>
+ <!-- v1.0 -->
<struct name="Client">
<field type="CARD32" name="resource_base" />
<field type="CARD32" name="resource_mask" />
@@ -39,6 +40,46 @@ authorization from the authors.
<field type="CARD32" name="count" />
</struct>
+ <!-- v1.2 -->
+ <enum name="ClientIdMask">
+ <item name="ClientXID"> <bit>0</bit> </item>
+ <item name="LocalClientPID"> <bit>1</bit> </item>
+ </enum>
+
+ <struct name="ClientIdSpec">
+ <field type="CARD32" name="client" />
+ <field type="CARD32" name="mask" mask="ClientIdMask" />
+ </struct>
+
+ <struct name="ClientIdValue">
+ <field type="ClientIdSpec" name="spec" />
+ <field type="CARD32" name="length" />
+ <list type="CARD32" name="value">
+ <fieldref>length</fieldref>
+ </list>
+ </struct>
+
+ <struct name="ResourceIdSpec">
+ <field type="CARD32" name="resource" />
+ <field type="CARD32" name="type" />
+ </struct>
+
+ <struct name="ResourceSizeSpec">
+ <field type="ResourceIdSpec" name="spec" />
+ <field type="CARD32" name="bytes" />
+ <field type="CARD32" name="ref_count" />
+ <field type="CARD32" name="use_count" />
+ </struct>
+
+ <struct name="ResourceSizeValue">
+ <field type="ResourceSizeSpec" name="size" />
+ <field type="CARD32" name="num_cross_references" />
+ <list type="ResourceSizeSpec" name="cross_references">
+ <fieldref>num_cross_references</fieldref>
+ </list>
+ </struct>
+
+ <!-- v1.0 -->
<request name="QueryVersion" opcode="0">
<field type="CARD8" name="client_major" />
<field type="CARD8" name="client_minor" />
@@ -80,4 +121,36 @@ authorization from the authors.
<field type="CARD32" name="bytes_overflow" />
</reply>
</request>
+
+ <!-- v1.2 -->
+ <request name="QueryClientIds" opcode="4">
+ <field type="CARD32" name="num_specs" />
+ <list type="ClientIdSpec" name="specs">
+ <fieldref>num_specs</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_ids" />
+ <pad bytes="20" />
+ <list type="ClientIdValue" name="ids">
+ <fieldref>num_ids</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryResourceBytes" opcode="5">
+ <field type="CARD32" name="client" />
+ <field type="CARD32" name="num_specs" />
+ <list type="ResourceIdSpec" name="specs">
+ <fieldref>num_specs</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_sizes" />
+ <pad bytes="20" />
+ <list type="ResourceSizeValue" name="sizes">
+ <fieldref>num_sizes</fieldref>
+ </list>
+ </reply>
+ </request>
</xcb>
diff --git a/src/screensaver.xml b/src/screensaver.xml
index 9c7bccb..491869e 100644
--- a/src/screensaver.xml
+++ b/src/screensaver.xml
@@ -36,9 +36,9 @@ Draft Standard Version 1.1
<import>xproto</import>
<enum name="Kind">
- <item name="Blanked" />
- <item name="Internal" />
- <item name="External" />
+ <item name="Blanked"> <value>0</value> </item>
+ <item name="Internal"> <value>1</value> </item>
+ <item name="External"> <value>2</value> </item>
</enum>
<enum name="Event">
@@ -47,10 +47,10 @@ Draft Standard Version 1.1
</enum>
<enum name="State">
- <item name="Off" />
- <item name="On" />
- <item name="Cycle" />
- <item name="Disabled" />
+ <item name="Off"> <value>0</value> </item>
+ <item name="On"> <value>1</value> </item>
+ <item name="Cycle"> <value>2</value> </item>
+ <item name="Disabled"> <value>3</value> </item>
</enum>
<!-- Errors -->
@@ -75,14 +75,14 @@ Draft Standard Version 1.1
<field type="CARD32" name="ms_until_server"/>
<field type="CARD32" name="ms_since_user_input"/>
<field type="CARD32" name="event_mask" />
- <field type="BYTE" name="kind"/> <!-- enum Kind -->
+ <field type="BYTE" name="kind" enum="Kind"/>
<pad bytes="7"/>
</reply>
</request>
<request name="SelectInput" opcode="2">
<field type="DRAWABLE" name="drawable"/>
- <field type="CARD32" name="event_mask" /> <!-- enum Event -->
+ <field type="CARD32" name="event_mask" mask="Event"/>
</request>
<request name="SetAttributes" opcode="3">
@@ -92,7 +92,7 @@ Draft Standard Version 1.1
<field type="CARD16" name="width"/>
<field type="CARD16" name="height"/>
<field type="CARD16" name="border_width"/>
- <field type="BYTE" name="class"/> <!-- enum XCBWindowClass -->
+ <field type="BYTE" name="class" enum="WindowClass"/>
<field type="CARD8" name="depth"/>
<field type="VISUALID" name="visual"/>
<valueparam value-mask-type="CARD32"
@@ -113,14 +113,11 @@ Draft Standard Version 1.1
<!-- Events -->
<event name="Notify" number="0">
- <field type="CARD8" name="code"/>
- <field type="BYTE" name="state"/> <!-- enum State -->
- <pad bytes="1" />
- <field type="CARD16" name="sequence_number"/>
+ <field type="BYTE" name="state" enum="State"/>
<field type="TIMESTAMP" name="time"/>
<field type="WINDOW" name="root"/>
<field type="WINDOW" name="window"/>
- <field type="BYTE" name="kind"/> <!-- enum Kind -->
+ <field type="BYTE" name="kind" enum="Kind"/>
<field type="BOOL" name="forced"/>
<pad bytes="14"/>
</event>
diff --git a/src/shape.xml b/src/shape.xml
index c128ade..d75549e 100644
--- a/src/shape.xml
+++ b/src/shape.xml
@@ -34,18 +34,18 @@ authorization from the authors.
<!-- Shape attributes of type OP. -->
<enum name="SO">
- <item name="Set" />
- <item name="Union" />
- <item name="Intersect" />
- <item name="Subtract" />
- <item name="Invert" />
+ <item name="Set"> <value>0</value> </item>
+ <item name="Union"> <value>1</value> </item>
+ <item name="Intersect"> <value>2</value> </item>
+ <item name="Subtract"> <value>3</value> </item>
+ <item name="Invert"> <value>4</value> </item>
</enum>
<!-- Shape attributes of type KIND. -->
<enum name="SK">
- <item name="Bounding" />
- <item name="Clip" />
- <item name="Input" /> <!-- added in version 1.1 -->
+ <item name="Bounding"> <value>0</value> </item>
+ <item name="Clip"> <value>1</value> </item>
+ <item name="Input"> <value>2</value> </item> <!-- added in version 1.1 -->
</enum>
<event name="Notify" number="0">
diff --git a/src/shm.xml b/src/shm.xml
index adda509..71fce14 100644
--- a/src/shm.xml
+++ b/src/shm.xml
@@ -26,7 +26,7 @@ sale, use or other dealings in this Software without prior written
authorization from the authors.
-->
<xcb header="shm" extension-xname="MIT-SHM" extension-name="Shm"
- major-version="1" minor-version="1">
+ major-version="1" minor-version="2">
<import>xproto</import>
<xidtype name="SEG" />
@@ -113,4 +113,23 @@ authorization from the authors.
<field type="SEG" name="shmseg" />
<field type="CARD32" name="offset" />
</request>
+
+ <request name="AttachFd" opcode="6">
+ <field type="SEG" name="shmseg" />
+ <fd name="shm_fd" />
+ <field type="BOOL" name="read_only" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="CreateSegment" opcode="7">
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="size" />
+ <field type="BOOL" name="read_only" />
+ <pad bytes="3" />
+ <reply>
+ <field type="CARD8" name="nfd" />
+ <fd name="shm_fd" />
+ <pad bytes="24" />
+ </reply>
+ </request>
</xcb>
diff --git a/src/sync.xml b/src/sync.xml
index 516d149..23175cb 100644
--- a/src/sync.xml
+++ b/src/sync.xml
@@ -11,9 +11,9 @@ for licensing information.
<xidtype name="ALARM" />
<enum name="ALARMSTATE">
- <item name="Active" />
- <item name="Inactive" />
- <item name="Destroyed" />
+ <item name="Active"> <value>0</value> </item>
+ <item name="Inactive"> <value>1</value> </item>
+ <item name="Destroyed"> <value>2</value> </item>
</enum>
<xidtype name="COUNTER" />
@@ -21,15 +21,15 @@ for licensing information.
<xidtype name="FENCE" />
<enum name="TESTTYPE">
- <item name="PositiveTransition" />
- <item name="NegativeTransition" />
- <item name="PositiveComparison" />
- <item name="NegativeComparison" />
+ <item name="PositiveTransition"> <value>0</value> </item>
+ <item name="NegativeTransition"> <value>1</value> </item>
+ <item name="PositiveComparison"> <value>2</value> </item>
+ <item name="NegativeComparison"> <value>3</value> </item>
</enum>
<enum name="VALUETYPE">
- <item name="Absolute" />
- <item name="Relative" />
+ <item name="Absolute"> <value>0</value> </item>
+ <item name="Relative"> <value>1</value> </item>
</enum>
<enum name="CA">
@@ -48,7 +48,7 @@ for licensing information.
<struct name="SYSTEMCOUNTER">
<field type="COUNTER" name="counter" />
- <field type="INT64" name="resolution" />
+ <field type="sync:INT64" name="resolution" />
<field type="CARD16" name="name_len" />
<list type="char" name="name">
<fieldref>name_len</fieldref>
@@ -58,13 +58,13 @@ for licensing information.
<struct name="TRIGGER">
<field type="COUNTER" name="counter" />
<field type="CARD32" name="wait_type" enum="VALUETYPE" />
- <field type="INT64" name="wait_value" />
+ <field type="sync:INT64" name="wait_value" />
<field type="CARD32" name="test_type" enum="TESTTYPE" />
</struct>
<struct name="WAITCONDITION">
<field type="TRIGGER" name="trigger" />
- <field type="INT64" name="event_threshold" />
+ <field type="sync:INT64" name="event_threshold" />
</struct>
<error name="Counter" number="0">
@@ -103,7 +103,7 @@ for licensing information.
<request name="CreateCounter" opcode="2">
<field type="COUNTER" name="id" />
- <field type="INT64" name="initial_value" />
+ <field type="sync:INT64" name="initial_value" />
</request>
<request name="DestroyCounter" opcode="6">
@@ -114,7 +114,7 @@ for licensing information.
<field type="COUNTER" name="counter" />
<reply>
<pad bytes="1" />
- <field type="INT64" name="counter_value" />
+ <field type="sync:INT64" name="counter_value" />
</reply>
</request>
@@ -124,26 +124,76 @@ for licensing information.
<request name="ChangeCounter" opcode="4">
<field type="COUNTER" name="counter" />
- <field type="INT64" name="amount" />
+ <field type="sync:INT64" name="amount" />
</request>
<request name="SetCounter" opcode="3">
<field type="COUNTER" name="counter" />
- <field type="INT64" name="value" />
+ <field type="sync:INT64" name="value" />
</request>
<request name="CreateAlarm" opcode="8">
<field type="ALARM" name="id" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CA" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CA">Counter</enumref>
+ <field type="COUNTER" name="counter" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">ValueType</enumref>
+ <field type="CARD32" name="valueType" enum="VALUETYPE" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">Value</enumref>
+ <field type="sync:INT64" name="value" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">TestType</enumref>
+ <field type="CARD32" name="testType" enum="TESTTYPE" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">Delta</enumref>
+ <field type="sync:INT64" name="delta" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">Events</enumref>
+ <field type="CARD32" name="events" />
+ </bitcase>
+ </switch>
</request>
<request name="ChangeAlarm" opcode="9">
<field type="ALARM" name="id" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CA" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CA">Counter</enumref>
+ <field type="COUNTER" name="counter" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">ValueType</enumref>
+ <field type="CARD32" name="valueType" enum="VALUETYPE" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">Value</enumref>
+ <field type="sync:INT64" name="value" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">TestType</enumref>
+ <field type="CARD32" name="testType" enum="TESTTYPE" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">Delta</enumref>
+ <field type="sync:INT64" name="delta" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CA">Events</enumref>
+ <field type="CARD32" name="events" />
+ </bitcase>
+ </switch>
</request>
<request name="DestroyAlarm" opcode="11">
@@ -155,7 +205,7 @@ for licensing information.
<reply>
<pad bytes="1" />
<field type="TRIGGER" name="trigger" />
- <field type="INT64" name="delta" />
+ <field type="sync:INT64" name="delta" />
<field type="BOOL" name="events" />
<field type="CARD8" name="state" enum="ALARMSTATE" />
<pad bytes="2" />
@@ -209,8 +259,8 @@ for licensing information.
<event name="CounterNotify" number="0">
<field type="CARD8" name="kind" />
<field type="COUNTER" name="counter" />
- <field type="INT64" name="wait_value" />
- <field type="INT64" name="counter_value" />
+ <field type="sync:INT64" name="wait_value" />
+ <field type="sync:INT64" name="counter_value" />
<field type="TIMESTAMP" name="timestamp" />
<field type="CARD16" name="count" />
<field type="BOOL" name="destroyed" />
@@ -220,8 +270,8 @@ for licensing information.
<event name="AlarmNotify" number="1">
<field type="CARD8" name="kind" />
<field type="ALARM" name="alarm" />
- <field type="INT64" name="counter_value" />
- <field type="INT64" name="alarm_value" />
+ <field type="sync:INT64" name="counter_value" />
+ <field type="sync:INT64" name="alarm_value" />
<field type="TIMESTAMP" name="timestamp" />
<field type="CARD8" name="state" enum="ALARMSTATE" />
<pad bytes="3" />
diff --git a/src/xcb.xsd b/src/xcb.xsd
index cfa90c9..73dbf8a 100644
--- a/src/xcb.xsd
+++ b/src/xcb.xsd
@@ -59,7 +59,7 @@ authorization from the authors.
<xsd:complexType name="caseexpr">
<xsd:sequence>
<!-- case expression: -->
- <xsd:group ref="expression" minOccurs="1" maxOccurs="1" />
+ <xsd:group ref="expression" minOccurs="1" maxOccurs="unbounded" />
<!-- match -->
<xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
<xsd:choice>
@@ -89,6 +89,9 @@ authorization from the authors.
<!-- field replaces FIELD, PARAM, and REPLY. -->
<xsd:element name="field" type="var" />
+ <!-- fd passing parameter -->
+ <xsd:element name="fd" />
+
<!-- list replaces ARRAYFIELD, LISTPARAM, and ARRAYREPLY. The name and type
are specified as attributes. The content is an expression giving the
length. -->
@@ -185,6 +188,7 @@ authorization from the authors.
<xsd:element ref="pad" />
<xsd:element ref="field" />
<xsd:element ref="list" />
+ <xsd:element ref="fd" />
</xsd:choice>
</xsd:group>
@@ -324,6 +328,7 @@ authorization from the authors.
</xsd:sequence>
<xsd:attribute name="no-sequence-number" type="xsd:boolean"
use="optional" />
+ <xsd:attribute name="xge" type="xsd:boolean" use="optional" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
@@ -352,7 +357,10 @@ authorization from the authors.
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="item">
<xsd:complexType>
- <xsd:group ref="expression" minOccurs="0" maxOccurs="1" />
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="value" type="dec-or-hex-integer" />
+ <xsd:element name="bit" type="xsd:integer" />
+ </xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
diff --git a/src/xevie.xml b/src/xevie.xml
index 222b412..bafa990 100644
--- a/src/xevie.xml
+++ b/src/xevie.xml
@@ -55,8 +55,8 @@ authorization from the authors.
</request>
<enum name="Datatype">
- <item name="Unmodified" />
- <item name="Modified" />
+ <item name="Unmodified"> <value>0</value> </item>
+ <item name="Modified"> <value>1</value> </item>
</enum>
<!-- The Send request needs to send an arbitrary Event; this type is used
diff --git a/src/xfixes.xml b/src/xfixes.xml
index 9bbeaab..c5cba35 100644
--- a/src/xfixes.xml
+++ b/src/xfixes.xml
@@ -26,7 +26,7 @@ authorization from the authors.
-->
<!-- This file describes version 4 of XFixes. -->
<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
- major-version="4" minor-version="0">
+ major-version="5" minor-version="0">
<import>xproto</import>
<import>render</import>
<import>shape</import>
@@ -44,18 +44,18 @@ authorization from the authors.
</request>
<enum name="SaveSetMode">
- <item name="Insert" />
- <item name="Delete" />
+ <item name="Insert"> <value>0</value> </item>
+ <item name="Delete"> <value>1</value> </item>
</enum>
<enum name="SaveSetTarget">
- <item name="Nearest" />
- <item name="Root" />
+ <item name="Nearest"> <value>0</value> </item>
+ <item name="Root"> <value>1</value> </item>
</enum>
<enum name="SaveSetMapping">
- <item name="Map" />
- <item name="Unmap" />
+ <item name="Map"> <value>0</value> </item>
+ <item name="Unmap"> <value>1</value> </item>
</enum>
<request name="ChangeSaveSet" opcode="1">
@@ -67,9 +67,9 @@ authorization from the authors.
</request>
<enum name="SelectionEvent">
- <item name="SetSelectionOwner" />
- <item name="SelectionWindowDestroy" />
- <item name="SelectionClientClose" />
+ <item name="SetSelectionOwner"> <value>0</value> </item>
+ <item name="SelectionWindowDestroy"> <value>1</value> </item>
+ <item name="SelectionClientClose"> <value>2</value> </item>
</enum>
<enum name="SelectionEventMask">
@@ -95,7 +95,7 @@ authorization from the authors.
</request>
<enum name="CursorNotify">
- <item name="DisplayCursor" />
+ <item name="DisplayCursor"> <value>0</value> </item>
</enum>
<enum name="CursorNotifyMask">
@@ -143,7 +143,7 @@ authorization from the authors.
<error name="BadRegion" number="0" />
<enum name="Region">
- <item name="None" />
+ <item name="None"> <value>0</value> </item>
</enum>
<request name="CreateRegion" opcode="5">
@@ -331,4 +331,32 @@ authorization from the authors.
<request name="ShowCursor" opcode="30">
<field type="WINDOW" name="window" />
</request>
+
+ <!-- Version 5 -->
+
+ <xidtype name="BARRIER" />
+
+ <enum name="BarrierDirections">
+ <item name="PositiveX"><bit>0</bit></item>
+ <item name="PositiveY"><bit>1</bit></item>
+ <item name="NegativeX"><bit>2</bit></item>
+ <item name="NegativeY"><bit>3</bit></item>
+ </enum>
+
+ <request name="CreatePointerBarrier" opcode="31">
+ <field type="BARRIER" name="barrier" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="x1" />
+ <field type="CARD16" name="y1" />
+ <field type="CARD16" name="x2" />
+ <field type="CARD16" name="y2" />
+ <field type="CARD32" name="directions" mask="BarrierDirections" />
+ <pad bytes="2" />
+ <field type="CARD16" name="num_devices" />
+ <list type="CARD16" name="devices"><fieldref>num_devices</fieldref></list>
+ </request>
+
+ <request name="DeletePointerBarrier" opcode="32">
+ <field type="BARRIER" name="barrier" />
+ </request>
</xcb>
diff --git a/src/xinput.xml b/src/xinput.xml
index 80416fe..fa115bd 100644
--- a/src/xinput.xml
+++ b/src/xinput.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-Copyright (C) 2006 Peter Hutterer
+Copyright (C) 2006 Peter Hutterer
+Copyright (C) 2013 Daniel Martin
All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -26,995 +27,2211 @@ sale, use or other dealings in this Software without prior written
authorization from the authors.
-->
-<!-- Spec: http://refspecs.freestandards.org/X11/Xinput.pdf -->
+<!-- Specifications:
+ http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XIproto.txt
+ http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XI2proto.txt
+-->
<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input"
- major-version="1" minor-version="4">
+ major-version="2" minor-version="3">
+ <import>xfixes</import>
<import>xproto</import>
- <typedef oldname="CARD8" newname="KeyCode" />
+ <!-- ⋅⋅⋅ Types (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
<typedef oldname="CARD32" newname="EventClass" />
+ <typedef oldname="CARD8" newname="KeyCode" />
- <enum name="ValuatorMode">
- <item name="Relative"> <value>0</value></item>
- <item name="Absolute"> <value>1</value></item>
- </enum>
+ <!-- ⋅⋅⋅ Types (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
- <enum name="PropagateMode">
- <item name="AddToList"> <value>0</value></item>
- <item name="DeleteFromList"> <value>1</value></item>
- </enum>
+ <typedef oldname="CARD16" newname="DeviceId" />
+ <typedef oldname="INT32" newname="FP1616" />
+
+ <struct name="FP3232">
+ <field type="INT32" name="integral" />
+ <field type="CARD32" name="frac" />
+ </struct>
+
+ <!-- ⋅⋅⋅ Requests (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
<!-- GetExtensionVersion -->
<request name="GetExtensionVersion" opcode="1">
- <field type="CARD16" name="name_len" />
- <pad bytes="2" />
- <list type="char" name="name">
- <fieldref>name_len</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- <field type="BOOL" name="present" />
- <pad bytes="19" />
- </reply>
+ <field type="CARD16" name="name_len" />
+ <pad bytes="2" />
+ <list type="char" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ <field type="BOOL" name="present" />
+ <pad bytes="19" />
+ </reply>
</request>
<!-- ListInputDevices -->
<enum name="DeviceUse">
- <item name="IsXPointer"><value>0</value></item>
- <item name="IsXKeyboard"><value>1</value></item>
- <item name="IsXExtensionDevice"><value>2</value></item>
- <item name="IsXExtensionKeyboard"><value>3</value></item>
- <item name="IsXExtensionPointer"><value>4</value></item>
+ <item name="IsXPointer"> <value>0</value> </item>
+ <item name="IsXKeyboard"> <value>1</value> </item>
+ <item name="IsXExtensionDevice"> <value>2</value> </item>
+ <item name="IsXExtensionKeyboard"> <value>3</value> </item>
+ <item name="IsXExtensionPointer"> <value>4</value> </item>
</enum>
- <struct name="DeviceInfo">
- <field type="ATOM" name="device_type" />
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="num_class_info" />
- <field type="CARD8" name="device_use" enum="DeviceUse" />
- <pad bytes="1" />
- </struct>
-
- <request name="ListInputDevices" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="devices_len" />
- <pad bytes="23" />
- <list type="DeviceInfo" name="devices">
- <fieldref>devices_len</fieldref>
- </list>
- <!-- Uninterpreted: list of deviceinfo structs of 3 the subtypes -->
- <!-- Uninterpreted: list of null-terminated strings -->
- </reply>
- </request>
-
<enum name="InputClass">
- <item name="Key"><value>0</value></item>
- <item name="Button"><value>1</value></item>
- <item name="Valuator"><value>2</value></item>
- <item name="Feedback"><value>3</value></item>
- <item name="Proximity"><value>4</value></item>
- <item name="Focus"><value>5</value></item>
- <item name="Other"><value>6</value></item>
+ <item name="Key"> <value>0</value> </item>
+ <item name="Button"> <value>1</value> </item>
+ <item name="Valuator"> <value>2</value> </item>
+ <item name="Feedback"> <value>3</value> </item>
+ <item name="Proximity"> <value>4</value> </item>
+ <item name="Focus"> <value>5</value> </item>
+ <item name="Other"> <value>6</value> </item>
</enum>
- <struct name="InputInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
+ <enum name="ValuatorMode">
+ <item name="Relative"> <value>0</value> </item>
+ <item name="Absolute"> <value>1</value> </item>
+ </enum>
+
+ <struct name="DeviceInfo">
+ <field type="ATOM" name="device_type" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="num_class_info" />
+ <field type="CARD8" name="device_use" enum="DeviceUse" />
+ <pad bytes="1" />
</struct>
<struct name="KeyInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="KeyCode" name="min_keycode" />
- <field type="KeyCode" name="max_keycode" />
- <field type="CARD16" name="num_keys" />
- <pad bytes="2" />
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="KeyCode" name="min_keycode" />
+ <field type="KeyCode" name="max_keycode" />
+ <field type="CARD16" name="num_keys" />
+ <pad bytes="2" />
</struct>
<struct name="ButtonInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD16" name="num_buttons" />
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD16" name="num_buttons" />
</struct>
<struct name="AxisInfo">
- <field type="CARD32" name="resolution" />
- <field type="INT32" name="minimum" />
- <field type="INT32" name="maximum" />
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="minimum" />
+ <field type="INT32" name="maximum" />
</struct>
<struct name="ValuatorInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="axes_len" />
- <field type="CARD8" name="mode" enum="ValuatorMode" />
- <field type="CARD32" name="motion_size" />
- <list type="AxisInfo" name="axes">
- <fieldref>axes_len</fieldref>
- </list>
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="axes_len" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <field type="CARD32" name="motion_size" />
+ <list type="AxisInfo" name="axes">
+ <fieldref>axes_len</fieldref>
+ </list>
</struct>
+ <struct name="InputInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ </struct>
+
+ <struct name="DeviceName">
+ <field type="CARD8" name="len" />
+ <list type="char" name="string">
+ <fieldref>len</fieldref>
+ </list>
+ </struct>
+
+ <request name="ListInputDevices" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="devices_len" />
+ <pad bytes="23" />
+ <list type="DeviceInfo" name="devices">
+ <fieldref>devices_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (infos) of InputInfo structures,
+ length is <sumof> all devices.num_class_info -->
+ <!-- Uninterpreted: list (name) of DeviceName structures -->
+ </reply>
+ </request>
+
<!-- OpenDevice -->
<struct name="InputClassInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="event_type_base" />
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="event_type_base" />
</struct>
<request name="OpenDevice" opcode="3">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="num_classes" />
- <pad bytes="23" />
- <list type="InputClassInfo" name="class_info">
- <fieldref>num_classes</fieldref>
- </list>
- </reply>
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="num_classes" />
+ <pad bytes="23" />
+ <list type="InputClassInfo" name="class_info">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
</request>
<!-- CloseDevice -->
<request name="CloseDevice" opcode="4">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
</request>
<!-- SetDeviceMode -->
<request name="SetDeviceMode" opcode="5">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="mode" enum="ValuatorMode" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- SelectExtensionEvent -->
<request name="SelectExtensionEvent" opcode="6">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="num_classes" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_classes" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</request>
<!-- GetSelectedExtensionEvents -->
<request name="GetSelectedExtensionEvents" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_this_classes" />
- <field type="CARD16" name="num_all_classes" />
- <pad bytes="20" />
- <list type="EventClass" name="this_classes">
- <fieldref>num_this_classes</fieldref>
- </list>
- <list type="EventClass" name="all_classes">
- <fieldref>num_all_classes</fieldref>
- </list>
- </reply>
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_this_classes" />
+ <field type="CARD16" name="num_all_classes" />
+ <pad bytes="20" />
+ <list type="EventClass" name="this_classes">
+ <fieldref>num_this_classes</fieldref>
+ </list>
+ <list type="EventClass" name="all_classes">
+ <fieldref>num_all_classes</fieldref>
+ </list>
+ </reply>
</request>
<!-- ChangeDeviceDontPropagateList -->
+ <enum name="PropagateMode">
+ <item name="AddToList"> <value>0</value> </item>
+ <item name="DeleteFromList"> <value>1</value> </item>
+ </enum>
+
<request name="ChangeDeviceDontPropagateList" opcode="8">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="mode" enum="PropagateMode" />
- <pad bytes="1" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="mode" enum="PropagateMode" />
+ <pad bytes="1" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</request>
<!-- GetDeviceDontPropagateList -->
<request name="GetDeviceDontPropagateList" opcode="9">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_classes" />
- <pad bytes="22" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </reply>
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_classes" />
+ <pad bytes="22" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
</request>
<!-- GetDeviceMotionEvents -->
- <request name="GetDeviceMotionEvents" opcode="10">
- <field type="TIMESTAMP" name="start" />
- <field type="TIMESTAMP" name="stop" altenum="Time" />
- <field type="CARD8" name="device_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_coords" />
- <field type="CARD8" name="num_axes" />
- <field type="CARD8" name="device_mode" enum="ValuatorMode" />
- <pad bytes="18" />
- <!-- Uninterpreted: list of DeviceTimeCoord structures -->
- </reply>
- </request>
-
<struct name="DeviceTimeCoord">
- <field type="TIMESTAMP" name="time" />
- <!-- Uninterpreted: list of CARD16 -->
+ <field type="TIMESTAMP" name="time" />
+ <!-- Uninterpreted: list (axisvalues) of CARD32,
+ length is num_axes from GetDeviceMotionEvents -->
</struct>
+ <request name="GetDeviceMotionEvents" opcode="10">
+ <field type="TIMESTAMP" name="start" />
+ <field type="TIMESTAMP" name="stop" altenum="Time" />
+ <field type="CARD8" name="device_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_events" />
+ <field type="CARD8" name="num_axes" />
+ <field type="CARD8" name="device_mode" enum="ValuatorMode" />
+ <pad bytes="18" />
+ <!-- Uninterpreted: list (events) of DeviceTimeCoord structures -->
+ </reply>
+ </request>
+
<!-- ChangeKeyboardDevice -->
+
<request name="ChangeKeyboardDevice" opcode="11">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- ChangePointerDevice -->
<request name="ChangePointerDevice" opcode="12">
- <field type="CARD8" name="x_axis" />
- <field type="CARD8" name="y_axis" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="CARD8" name="x_axis" />
+ <field type="CARD8" name="y_axis" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- GrabDevice -->
<request name="GrabDevice" opcode="13">
- <field type="WINDOW" name="grab_window" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="BOOL" name="owner_events" />
- <field type="CARD8" name="device_id" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="GrabStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="WINDOW" name="grab_window" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- UngrabDevice -->
<request name="UngrabDevice" opcode="14">
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="device_id" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="device_id" />
</request>
<!-- GrabDeviceKey -->
<request name="GrabDeviceKey" opcode="15">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="grabbed_device" />
- <field type="CARD8" name="key" altenum="Grab" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="BOOL" name="owner_events" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="grabbed_device" />
+ <field type="CARD8" name="key" altenum="Grab" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</request>
<!-- UngrabDeviceKey -->
<request name="UngrabDeviceKey" opcode="16">
- <field type="WINDOW" name="grabWindow" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="key" altenum="Grab" />
- <field type="CARD8" name="grabbed_device" />
+ <field type="WINDOW" name="grabWindow" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="key" altenum="Grab" />
+ <field type="CARD8" name="grabbed_device" />
</request>
<!-- GrabDeviceButton -->
<request name="GrabDeviceButton" opcode="17">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD8" name="grabbed_device" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="CARD8" name="button" altenum="Grab" />
- <field type="CARD8" name="owner_events" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD8" name="grabbed_device" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="button" altenum="Grab" />
+ <field type="CARD8" name="owner_events" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</request>
<!-- UngrabDeviceButton -->
<request name="UngrabDeviceButton" opcode="18">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="button" altenum="Grab" />
- <field type="CARD8" name="grabbed_device" />
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="button" altenum="Grab" />
+ <field type="CARD8" name="grabbed_device" />
</request>
<!-- AllowDeviceEvents -->
<enum name="DeviceInputMode">
- <item name="AsyncThisDevice" />
- <item name="SyncThisDevice" />
- <item name="ReplayThisDevice" />
- <item name="AsyncOtherDevices" />
- <item name="AsyncAll" />
- <item name="SyncAll" />
+ <item name="AsyncThisDevice"> <value>0</value> </item>
+ <item name="SyncThisDevice"> <value>1</value> </item>
+ <item name="ReplayThisDevice"> <value>2</value> </item>
+ <item name="AsyncOtherDevices"> <value>3</value> </item>
+ <item name="AsyncAll"> <value>4</value> </item>
+ <item name="SyncAll"> <value>5</value> </item>
</enum>
<request name="AllowDeviceEvents" opcode="19">
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="mode" enum="DeviceInputMode" />
- <field type="CARD8" name="device_id" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="mode" enum="DeviceInputMode" />
+ <field type="CARD8" name="device_id" />
</request>
<!-- GetDeviceFocus -->
<request name="GetDeviceFocus" opcode="20">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="focus" altenum="InputFocus" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="revert_to" enum="InputFocus" />
- <pad bytes="15" />
- </reply>
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="focus" altenum="InputFocus" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="revert_to" enum="InputFocus" />
+ <pad bytes="15" />
+ </reply>
</request>
<!-- SetDeviceFocus -->
<request name="SetDeviceFocus" opcode="21">
- <field type="WINDOW" name="focus" altenum="InputFocus" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="revert_to" enum="InputFocus" />
- <field type="CARD8" name="device_id" />
+ <field type="WINDOW" name="focus" altenum="InputFocus" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="revert_to" enum="InputFocus" />
+ <field type="CARD8" name="device_id" />
</request>
<!-- GetFeedbackControl -->
- <request name="GetFeedbackControl" opcode="22">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_feedback" />
- <pad bytes="22" />
- <!-- Uninterpreted: list of FeedbackState structures -->
- </reply>
- </request>
-
<enum name="FeedbackClass">
- <item name="Keyboard" />
- <item name="Pointer" />
- <item name="String" />
- <item name="Integer" />
- <item name="Led" />
- <item name="Bell" />
+ <item name="Keyboard"> <value>0</value> </item>
+ <item name="Pointer"> <value>1</value> </item>
+ <item name="String"> <value>2</value> </item>
+ <item name="Integer"> <value>3</value> </item>
+ <item name="Led"> <value>4</value> </item>
+ <item name="Bell"> <value>5</value> </item>
</enum>
- <struct name="FeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- </struct>
-
<struct name="KbdFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD16" name="pitch" />
- <field type="CARD16" name="duration" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- <field type="BOOL" name="global_auto_repeat" />
- <field type="CARD8" name="click" />
- <field type="CARD8" name="percent" />
- <pad bytes="1" />
- <list type="CARD8" name="auto_repeats"><value>32</value></list>
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ <field type="BOOL" name="global_auto_repeat" />
+ <field type="CARD8" name="click" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="1" />
+ <list type="CARD8" name="auto_repeats">
+ <value>32</value>
+ </list>
</struct>
<struct name="PtrFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="CARD16" name="accel_num" />
- <field type="CARD16" name="accel_denom" />
- <field type="CARD16" name="threshold" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="CARD16" name="accel_num" />
+ <field type="CARD16" name="accel_denom" />
+ <field type="CARD16" name="threshold" />
</struct>
<struct name="IntegerFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="resolution" />
- <field type="INT32" name="min_value" />
- <field type="INT32" name="max_value" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="min_value" />
+ <field type="INT32" name="max_value" />
</struct>
<struct name="StringFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD16" name="max_symbols" />
- <field type="CARD16" name="num_keysyms" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>num_keysyms</fieldref>
- </list>
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="max_symbols" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
</struct>
<struct name="BellFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="percent" />
- <pad bytes="3" />
- <field type="CARD16" name="pitch" />
- <field type="CARD16" name="duration" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="3" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
</struct>
<struct name="LedFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
</struct>
- <!-- ChangeFeedbackControl
+ <struct name="FeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
+ </struct>
- <request name="ChangeFeedbackControl" opcode="23">
- <field type="CARD32" name="mask" />
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="feedback_id" />
- Uninterpreted: list of FeedbackCtl structures
+ <request name="GetFeedbackControl" opcode="22">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_feedbacks" />
+ <pad bytes="22" />
+ <list type="FeedbackState" name="feedbacks">
+ <fieldref>num_feedbacks</fieldref>
+ </list>
+ </reply>
</request>
- -->
-
- <struct name="FeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- </struct>
+ <!-- ChangeFeedbackControl -->
<struct name="KbdFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="KeyCode" name="key" />
- <field type="CARD8" name="auto_repeat_mode" />
- <field type="INT8" name="key_click_percent" />
- <field type="INT8" name="bell_percent" />
- <field type="INT16" name="bell_pitch" />
- <field type="INT16" name="bell_duration" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="KeyCode" name="key" />
+ <field type="CARD8" name="auto_repeat_mode" />
+ <field type="INT8" name="key_click_percent" />
+ <field type="INT8" name="bell_percent" />
+ <field type="INT16" name="bell_pitch" />
+ <field type="INT16" name="bell_duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
</struct>
<struct name="PtrFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="INT16" name="num" />
- <field type="INT16" name="denom" />
- <field type="INT16" name="threshold" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="INT16" name="num" />
+ <field type="INT16" name="denom" />
+ <field type="INT16" name="threshold" />
</struct>
<struct name="IntegerFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="int_to_display" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="int_to_display" />
</struct>
<struct name="StringFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="CARD16" name="num_keysyms" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>num_keysyms</fieldref>
- </list>
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
</struct>
<struct name="BellFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="INT8" name="percent" />
- <pad bytes="3" />
- <field type="INT16" name="pitch" />
- <field type="INT16" name="duration" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="INT8" name="percent" />
+ <pad bytes="3" />
+ <field type="INT16" name="pitch" />
+ <field type="INT16" name="duration" />
</struct>
<struct name="LedFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <struct name="FeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
</struct>
+ <request name="ChangeFeedbackControl" opcode="23">
+ <field type="CARD32" name="mask" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="FeedbackCtl" name="feedback" />
+ </request>
+
<!-- GetDeviceKeyMapping -->
<request name="GetDeviceKeyMapping" opcode="24">
- <field type="CARD8" name="device_id" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="count" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="keysyms_per_keycode" />
- <pad bytes="23" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>length</fieldref>
- </list>
- </reply>
+ <field type="CARD8" name="device_id" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="count" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="keysyms_per_keycode" />
+ <pad bytes="23" />
+ <list type="KEYSYM" name="keysyms">
+ <!-- 'length' is a field in the header -->
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
</request>
<!-- ChangeDeviceKeyMapping -->
<request name="ChangeDeviceKeyMapping" opcode="25">
- <field type="CARD8" name="device_id" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="keysyms_per_keycode" />
- <field type="CARD8" name="keycode_count" />
- <list type="KEYSYM" name="keysyms">
- <op op="*">
- <fieldref>keycode_count</fieldref>
- <fieldref>keysyms_per_keycode</fieldref>
- </op>
- </list>
+ <field type="CARD8" name="device_id" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="keysyms_per_keycode" />
+ <field type="CARD8" name="keycode_count" />
+ <list type="KEYSYM" name="keysyms">
+ <op op="*">
+ <fieldref>keycode_count</fieldref>
+ <fieldref>keysyms_per_keycode</fieldref>
+ </op>
+ </list>
</request>
<!-- GetDeviceModifierMapping -->
<request name="GetDeviceModifierMapping" opcode="26">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="keycodes_per_modifier" />
- <pad bytes="23" />
- <list type="CARD8" name="keymaps">
- <op op="*">
- <fieldref>keycodes_per_modifier</fieldref>
- <value>8</value>
- </op>
- </list>
- </reply>
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="keycodes_per_modifier" />
+ <pad bytes="23" />
+ <list type="CARD8" name="keymaps">
+ <op op="*">
+ <fieldref>keycodes_per_modifier</fieldref>
+ <value>8</value>
+ </op>
+ </list>
+ </reply>
</request>
<!-- SetDeviceModifierMapping -->
<request name="SetDeviceModifierMapping" opcode="27">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="keycodes_per_modifier" />
- <pad bytes="1" />
- <list type="CARD8" name="keymaps">
- <op op="*">
- <fieldref>keycodes_per_modifier</fieldref>
- <value>8</value>
- </op>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="MappingStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="keycodes_per_modifier" />
+ <pad bytes="1" />
+ <list type="CARD8" name="keymaps">
+ <op op="*">
+ <fieldref>keycodes_per_modifier</fieldref>
+ <value>8</value>
+ </op>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="MappingStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- GetDeviceButtonMapping -->
<request name="GetDeviceButtonMapping" opcode="28">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="map_size" />
- <pad bytes="23" />
- <list type="CARD8" name="map">
- <fieldref>map_size</fieldref>
- </list>
- </reply>
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="map_size" />
+ <pad bytes="23" />
+ <list type="CARD8" name="map">
+ <fieldref>map_size</fieldref>
+ </list>
+ </reply>
</request>
<!-- SetDeviceButtonMapping -->
<request name="SetDeviceButtonMapping" opcode="29">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="map_size" />
- <pad bytes="2" />
- <list type="CARD8" name="map">
- <fieldref>map_size</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="MappingStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="map_size" />
+ <pad bytes="2" />
+ <list type="CARD8" name="map">
+ <fieldref>map_size</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="MappingStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- QueryDeviceState -->
- <request name="QueryDeviceState" opcode="30">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="num_classes" />
- <pad bytes="23" />
- <!-- Uninterpreted: list of InputState structures -->
- </reply>
- </request>
-
- <struct name="InputState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_items" />
- </struct>
-
<struct name="KeyState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_keys" />
- <pad bytes="1" />
- <list type="CARD8" name="keys">
- <value>32</value>
- </list>
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_keys" />
+ <pad bytes="1" />
+ <list type="CARD8" name="keys">
+ <value>32</value>
+ </list>
</struct>
<struct name="ButtonState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_buttons" />
- <pad bytes="1" />
- <list type="CARD8" name="buttons">
- <value>32</value>
- </list>
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_buttons" />
+ <pad bytes="1" />
+ <list type="CARD8" name="buttons">
+ <value>32</value>
+ </list>
</struct>
<struct name="ValuatorState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="mode" />
- <list type="CARD32" name="valuators">
- <fieldref>num_valuators</fieldref>
- </list>
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="mode" />
+ <list type="CARD32" name="valuators">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <struct name="InputState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_items" />
+ <pad bytes="1" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
</struct>
+ <request name="QueryDeviceState" opcode="30">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="num_classes" />
+ <pad bytes="23" />
+ <list type="InputState" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
<!-- SendExtensionEvent -->
<request name="SendExtensionEvent" opcode="31">
- <field type="WINDOW" name="destination" />
- <field type="CARD8" name="device_id" />
- <field type="BOOL" name="propagate" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="num_events" />
- <pad bytes="3" />
- <list type="char" name="events">
- <op op="*">
- <fieldref>num_events</fieldref>
- <value>32</value>
- </op>
- </list>
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
+ <field type="WINDOW" name="destination" />
+ <field type="CARD8" name="device_id" />
+ <field type="BOOL" name="propagate" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="num_events" />
+ <pad bytes="3" />
+ <list type="CARD8" name="events">
+ <op op="*">
+ <fieldref>num_events</fieldref>
+ <value>32</value>
+ </op>
+ </list>
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</request>
<!-- DeviceBell -->
<request name="DeviceBell" opcode="32">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="feedback_id" />
- <field type="CARD8" name="feedback_class" />
- <field type="INT8" name="percent" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD8" name="feedback_class" />
+ <field type="INT8" name="percent" />
</request>
<!-- SetDeviceValuators -->
<request name="SetDeviceValuators" opcode="33">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="first_valuator" />
- <field type="CARD8" name="num_valuators" />
- <pad bytes="1" />
- <list type="INT32" name="valuators">
- <fieldref>num_valuators</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="GrabStatus" />
- <pad bytes="23" />
- </reply>
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <pad bytes="1" />
+ <list type="INT32" name="valuators">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
</request>
<!-- GetDeviceControl -->
- <request name="GetDeviceControl" opcode="34">
- <field type="CARD16" name="control_id" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- <!-- Uninterpreted: list of DeviceState structures -->
- </reply>
- </request>
-
- <struct name="DeviceState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- </struct>
+ <enum name="DeviceControl">
+ <item name="resolution"> <value>1</value> </item>
+ <item name="abs_calib"> <value>2</value> </item>
+ <item name="core"> <value>3</value> </item>
+ <item name="enable"> <value>4</value> </item>
+ <item name="abs_area"> <value>5</value> </item>
+ </enum>
<struct name="DeviceResolutionState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="num_valuators" />
- <list type="CARD32" name="resolution_values">
- <fieldref>num_valuators</fieldref>
- </list>
- <list type="CARD32" name="resolution_min">
- <fieldref>num_valuators</fieldref>
- </list>
- <list type="CARD32" name="resolution_max">
- <fieldref>num_valuators</fieldref>
- </list>
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_min">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_max">
+ <fieldref>num_valuators</fieldref>
+ </list>
</struct>
<struct name="DeviceAbsCalibState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="min_x" />
- <field type="INT32" name="max_x" />
- <field type="INT32" name="min_y" />
- <field type="INT32" name="max_y" />
- <field type="CARD32" name="flip_x" />
- <field type="CARD32" name="flip_y" />
- <field type="CARD32" name="rotation" />
- <field type="CARD32" name="button_threshold" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
</struct>
<struct name="DeviceAbsAreaState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="offset_x" />
- <field type="CARD32" name="offset_y" />
- <field type="CARD32" name="width" />
- <field type="CARD32" name="height" />
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="following" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="CARD32" name="width" />
+ <field type="CARD32" name="height" />
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="following" />
</struct>
<struct name="DeviceCoreState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="status" />
- <field type="CARD8" name="iscore" />
- <pad bytes="2" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="status" />
+ <field type="CARD8" name="iscore" />
+ <pad bytes="2" />
</struct>
<struct name="DeviceEnableState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="enable" />
- <pad bytes="3" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
</struct>
- <!-- ChangeDeviceControl
+ <struct name="DeviceState">
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
+ </struct>
- <request name="ChangeDeviceControl" opcode="35">
- <field type="CARD16" name="control_id" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- Uninterpreted: list of DeviceCtl structures
- <reply>
- <pad byte="1" />
+ <request name="GetDeviceControl" opcode="34">
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <reply>
+ <pad bytes="1" />
<field type="CARD8" name="status" altenum="GrabStatus" />
<pad bytes="23" />
- </reply>
+ <field type="DeviceState" name="control" />
+ </reply>
</request>
- -->
-
- <struct name="DeviceCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- </struct>
+ <!-- ChangeDeviceControl -->
<struct name="DeviceResolutionCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="first_valuator" />
- <field type="CARD8" name="num_valuators" />
- <list type="CARD32" name="resolution_values">
- <fieldref>num_valuators</fieldref>
- </list>
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
</struct>
<struct name="DeviceAbsCalibCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="min_x" />
- <field type="INT32" name="max_x" />
- <field type="INT32" name="min_y" />
- <field type="INT32" name="max_y" />
- <field type="CARD32" name="flip_x" />
- <field type="CARD32" name="flip_y" />
- <field type="CARD32" name="rotation" />
- <field type="CARD32" name="button_threshold" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
</struct>
<struct name="DeviceAbsAreaCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="offset_x" />
- <field type="CARD32" name="offset_y" />
- <field type="INT32" name="width" />
- <field type="INT32" name="height" />
- <field type="INT32" name="screen" />
- <field type="CARD32" name="following" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="INT32" name="width" />
+ <field type="INT32" name="height" />
+ <field type="INT32" name="screen" />
+ <field type="CARD32" name="following" />
</struct>
<struct name="DeviceCoreCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="status" />
- <pad bytes="3" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="status" />
+ <pad bytes="3" />
</struct>
<struct name="DeviceEnableCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="enable" />
- <pad bytes="3" />
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </struct>
+
+ <struct name="DeviceCtl">
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
+ </struct>
+
+ <request name="ChangeDeviceControl" opcode="35">
+ <field type="CARD16" name="control_id" enum="DeviceControl" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <field type="DeviceCtl" name="control" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- ⋅⋅⋅ Requests (v1.5) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <!-- ListDeviceProperties -->
+
+ <request name="ListDeviceProperties" opcode="36">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_atoms" />
+ <pad bytes="22" />
+ <list type="ATOM" name="atoms">
+ <fieldref>num_atoms</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- ChangeDeviceProperty -->
+
+ <enum name="PropertyFormat">
+ <item name="8Bits"> <value> 8</value> </item>
+ <item name="16Bits"> <value>16</value> </item>
+ <item name="32Bits"> <value>32</value> </item>
+ </enum>
+
+ <request name="ChangeDeviceProperty" opcode="37">
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="format" enum="PropertyFormat" />
+ <field type="CARD8" name="mode" enum="PropMode" />
+ <pad bytes="1" />
+ <field type="CARD32" name="num_items" />
+ <switch name="items">
+ <fieldref>format</fieldref>
+ <!-- <bitcase> is not correct, this would need <cases>s.
+ It works in that case, because PropertyFormat items can be
+ distinguished exactly as their values don't have equal bits.
+ -->
+ <bitcase>
+ <enumref ref="PropertyFormat">8Bits</enumref>
+ <list type="CARD8" name="data8">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">16Bits</enumref>
+ <list type="CARD16" name="data16">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">32Bits</enumref>
+ <list type="CARD32" name="data32">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ </switch>
+ </request>
+
+ <!-- DeleteDeviceProperty -->
+
+ <request name="DeleteDeviceProperty" opcode="38">
+ <field type="ATOM" name="property" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ </request>
+
+ <!-- GetDeviceProperty -->
+
+ <request name="GetDeviceProperty" opcode="39">
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD32" name="offset" />
+ <field type="CARD32" name="len" />
+ <field type="CARD8" name="device_id" />
+ <field type="BOOL" name="delete" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="ATOM" name="type" />
+ <field type="CARD32" name="bytes_after" />
+ <field type="CARD32" name="num_items" />
+ <field type="CARD8" name="format" enum="PropertyFormat" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="10" />
+ <switch name="items">
+ <fieldref>format</fieldref>
+ <!-- <bitcase> is not correct, this would need <cases>s.
+ It works in that case, because PropertyFormat items can be
+ distinguished exactly as their values don't have equal bits.
+ -->
+ <bitcase>
+ <enumref ref="PropertyFormat">8Bits</enumref>
+ <list type="CARD8" name="data8">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">16Bits</enumref>
+ <list type="CARD16" name="data16">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">32Bits</enumref>
+ <list type="CARD32" name="data32">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ </switch>
+ </reply>
+ </request>
+
+ <!-- ⋅⋅⋅ Requests (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <!-- XIQueryPointer -->
+
+ <enum name="Device">
+ <item name="All"> <value>0</value> </item>
+ <item name="AllMaster"> <value>1</value> </item>
+ </enum>
+
+ <struct name="GroupInfo">
+ <field type="CARD8" name="base" />
+ <field type="CARD8" name="latched" />
+ <field type="CARD8" name="locked" />
+ <field type="CARD8" name="effective" />
+ </struct>
+
+ <struct name="ModifierInfo">
+ <field type="CARD32" name="base" />
+ <field type="CARD32" name="latched" />
+ <field type="CARD32" name="locked" />
+ <field type="CARD32" name="effective" />
+ </struct>
+
+ <request name="XIQueryPointer" opcode="40">
+ <field type="WINDOW" name="window" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="child" />
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP1616" name="win_x" />
+ <field type="FP1616" name="win_y" />
+ <field type="CARD8" name="same_screen" />
+ <pad bytes="1" />
+ <field type="CARD16" name="buttons_len" />
+ <field type="ModifierInfo" name="mods" />
+ <field type="GroupInfo" name="group" />
+ <list type="CARD32" name="buttons">
+ <fieldref>buttons_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- XIWarpPointer -->
+
+ <request name="XIWarpPointer" opcode="41">
+ <field type="WINDOW" name="src_win" />
+ <field type="WINDOW" name="dst_win" />
+ <field type="FP1616" name="src_x" />
+ <field type="FP1616" name="src_y" />
+ <field type="CARD16" name="src_width" />
+ <field type="CARD16" name="src_height" />
+ <field type="FP1616" name="dst_x" />
+ <field type="FP1616" name="dst_y" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </request>
+
+ <!-- XIChangeCursor -->
+
+ <request name="XIChangeCursor" opcode="42">
+ <field type="WINDOW" name="window" />
+ <field type="CURSOR" name="cursor" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </request>
+
+ <!-- XIChangeHierarchy -->
+
+ <enum name="HierarchyChangeType">
+ <item name="AddMaster"> <value>1</value> </item>
+ <item name="RemoveMaster"> <value>2</value> </item>
+ <item name="AttachSlave"> <value>3</value> </item>
+ <item name="DetachSlave"> <value>4</value> </item>
+ </enum>
+
+ <enum name="ChangeMode">
+ <item name="Attach"> <value>1</value> </item>
+ <item name="Float"> <value>2</value> </item>
+ </enum>
+
+ <struct name="AddMaster">
+ <field type="CARD16" name="type" enum="HierarchyChangeType" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="name_len" />
+ <field type="CARD8" name="send_core" />
+ <field type="CARD8" name="enable" />
+ <list type="char" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ </struct>
+
+ <struct name="RemoveMaster">
+ <field type="CARD16" name="type" enum="HierarchyChangeType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD8" name="return_mode" enum="ChangeMode" />
+ <pad bytes="1" />
+ <field type="DeviceId" name="return_pointer" altenum="Device" />
+ <field type="DeviceId" name="return_keyboard" altenum="Device" />
+ </struct>
+
+ <struct name="AttachSlave">
+ <field type="CARD16" name="type" enum="HierarchyChangeType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="DeviceId" name="master" altenum="Device" />
+ </struct>
+
+ <struct name="DetachSlave">
+ <field type="CARD16" name="type" enum="HierarchyChangeType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </struct>
+
+ <struct name="HierarchyChange">
+ <field type="CARD16" name="type" enum="HierarchyChangeType" />
+ <field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <op op="*">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ <value>4</value>
+ </op>
+ </list>
+ </struct>
+
+ <request name="XIChangeHierarchy" opcode="43">
+ <field type="CARD8" name="num_changes" />
+ <list type="HierarchyChange" name="changes">
+ <fieldref>num_changes</fieldref>
+ </list>
+ </request>
+
+ <!-- XISetClientPointer -->
+
+ <request name="XISetClientPointer" opcode="44">
+ <field type="WINDOW" name="window" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </request>
+
+ <!-- XIGetClientPointer -->
+
+ <request name="XIGetClientPointer" opcode="45">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="set" />
+ <pad bytes="1" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <!-- XISelectEvents -->
+
+ <enum name="XIEventMask">
+ <item name="DeviceChanged"> <bit>1</bit> </item>
+ <item name="KeyPress"> <bit>2</bit> </item>
+ <item name="KeyRelease"> <bit>3</bit> </item>
+ <item name="ButtonPress"> <bit>4</bit> </item>
+ <item name="ButtonRelease"> <bit>5</bit> </item>
+ <item name="Motion"> <bit>6</bit> </item>
+ <item name="Enter"> <bit>7</bit> </item>
+ <item name="Leave"> <bit>8</bit> </item>
+ <item name="FocusIn"> <bit>9</bit> </item>
+ <item name="FocusOut"> <bit>10</bit> </item>
+ <item name="Hierarchy"> <bit>11</bit> </item>
+ <item name="Property"> <bit>12</bit> </item>
+ <!-- ⋅⋅⋅ Events (v2.1) ⋅⋅⋅ -->
+ <item name="RawKeyPress"> <bit>13</bit> </item>
+ <item name="RawKeyRelease"> <bit>14</bit> </item>
+ <item name="RawButtonPress"> <bit>15</bit> </item>
+ <item name="RawButtonRelease"> <bit>16</bit> </item>
+ <item name="RawMotion"> <bit>17</bit> </item>
+ <!-- ⋅⋅⋅ Events (v2.2) ⋅⋅⋅ -->
+ <item name="TouchBegin"> <bit>18</bit> </item>
+ <item name="TouchUpdate"> <bit>19</bit> </item>
+ <item name="TouchEnd"> <bit>20</bit> </item>
+ <item name="TouchOwnership"> <bit>21</bit> </item>
+ <item name="RawTouchBegin"> <bit>22</bit> </item>
+ <item name="RawTouchUpdate"> <bit>23</bit> </item>
+ <item name="RawTouchEnd"> <bit>24</bit> </item>
+ <!-- ⋅⋅⋅ Events (v2.3) ⋅⋅⋅ -->
+ <item name="BarrierHit"> <bit>25</bit> </item>
+ <item name="BarrierLeave"> <bit>26</bit> </item>
+ </enum>
+
+ <struct name="EventMask">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD16" name="mask_len" />
+ <list type="CARD32" name="mask" mask="XIEventMask">
+ <fieldref>mask_len</fieldref>
+ </list>
+ </struct>
+
+ <request name="XISelectEvents" opcode="46">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_mask" />
+ <pad bytes="2" />
+ <list type="EventMask" name="masks">
+ <fieldref>num_mask</fieldref>
+ </list>
+ </request>
+
+ <!-- XIQueryVersion -->
+
+ <request name="XIQueryVersion" opcode="47">
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <!-- XIQueryDevice -->
+
+ <enum name="DeviceClassType">
+ <item name="Key"> <value>0</value> </item>
+ <item name="Button"> <value>1</value> </item>
+ <item name="Valuator"> <value>2</value> </item>
+ <item name="Scroll"> <value>3</value> </item>
+ <item name="Touch"> <value>8</value> </item>
+ </enum>
+
+ <enum name="DeviceType">
+ <item name="MasterPointer"> <value>1</value> </item>
+ <item name="MasterKeyboard"> <value>2</value> </item>
+ <item name="SlavePointer"> <value>3</value> </item>
+ <item name="SlaveKeyboard"> <value>4</value> </item>
+ <item name="FloatingSlave"> <value>5</value> </item>
+ </enum>
+
+ <enum name="ScrollFlags">
+ <item name="NoEmulation"> <bit>0</bit> </item>
+ <item name="Preferred"> <bit>1</bit> </item>
+ </enum>
+
+ <enum name="ScrollType">
+ <item name="Vertical"> <value>1</value> </item>
+ <item name="Horizontal"> <value>2</value> </item>
+ </enum>
+
+ <enum name="TouchMode">
+ <item name="Direct"> <value>1</value> </item>
+ <item name="Dependent"> <value>2</value> </item>
+ </enum>
+
+ <struct name="ButtonClass">
+ <field type="CARD16" name="type" enum="DeviceClassType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="num_buttons" />
+ <list type="CARD32" name="state">
+ <op op="/">
+ <op op="+">
+ <fieldref>num_buttons</fieldref>
+ <value>31</value>
+ </op>
+ <value>32</value>
+ </op>
+ </list>
+ <list type="ATOM" name="labels">
+ <fieldref>num_buttons</fieldref>
+ </list>
+ </struct>
+
+ <struct name="KeyClass">
+ <field type="CARD16" name="type" enum="DeviceClassType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="num_keys" />
+ <list type="CARD32" name="keys">
+ <fieldref>num_keys</fieldref>
+ </list>
+ </struct>
+
+ <struct name="ScrollClass">
+ <field type="CARD16" name="type" enum="DeviceClassType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="number" />
+ <field type="CARD16" name="scroll_type" enum="ScrollType" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" enum="ScrollFlags" />
+ <field type="FP3232" name="increment" />
+ </struct>
+
+ <struct name="TouchClass">
+ <field type="CARD16" name="type" enum="DeviceClassType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD8" name="mode" enum="TouchMode" />
+ <field type="CARD8" name="num_touches" />
+ </struct>
+
+ <struct name="ValuatorClass">
+ <field type="CARD16" name="type" enum="DeviceClassType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="number" />
+ <field type="ATOM" name="label" />
+ <field type="FP3232" name="min" />
+ <field type="FP3232" name="max" />
+ <field type="FP3232" name="value" />
+ <field type="CARD32" name="resolution" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <pad bytes="3" />
+ </struct>
+
+ <struct name="DeviceClass">
+ <field type="CARD16" name="type" enum="DeviceClassType" />
+ <field type="CARD16" name="len" />
+ <field type="DeviceId" name="sourceid" />
+ <pad bytes="2" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <op op="*">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ <value>8</value>
+ </op>
+ </list>
+ </struct>
+
+ <struct name="XIDeviceInfo">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD16" name="type" altenum="DeviceType" />
+ <field type="DeviceId" name="attachment" altenum="Device" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="name_len" />
+ <field type="BOOL" name="enabled" />
+ <pad bytes="1" />
+ <list type="char" name="name">
+ <!-- name_len is without padding, so we've to pad on our own,
+ auto align pad after the list would be helpfull -->
+ <op op="*">
+ <op op="/">
+ <op op="+">
+ <fieldref>name_len</fieldref>
+ <value>3</value>
+ </op>
+ <value>4</value>
+ </op>
+ <value>4</value>
+ </op>
+ </list>
+ <list type="DeviceClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </struct>
+
+ <request name="XIQueryDevice" opcode="48">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_infos" />
+ <pad bytes="22" />
+ <list type="XIDeviceInfo" name="infos">
+ <fieldref>num_infos</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- XISetFocus -->
+
+ <request name="XISetFocus" opcode="49">
+ <field type="WINDOW" name="window" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </request>
+
+ <!-- XIGetFocus -->
+
+ <request name="XIGetFocus" opcode="50">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="focus" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <!-- XIGrabDevice -->
+
+ <enum name="GrabOwner">
+ <item name="NoOwner"> <value>0</value> </item>
+ <item name="Owner"> <value>1</value> </item>
+ </enum>
+
+ <request name="XIGrabDevice" opcode="51">
+ <field type="WINDOW" name="window" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CURSOR" name="cursor" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD8" name="mode" enum="GrabMode" />
+ <field type="CARD8" name="paired_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" enum="GrabOwner" />
+ <pad bytes="1" />
+ <field type="CARD16" name="mask_len" />
+ <list type="CARD32" name="mask">
+ <fieldref>mask_len</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- XIUngrabDevice -->
+
+ <request name="XIUngrabDevice" opcode="52">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </request>
+
+ <!-- XIAllowEvents -->
+
+ <enum name="EventMode">
+ <item name="AsyncDevice"> <value>0</value> </item>
+ <item name="SyncDevice"> <value>1</value> </item>
+ <item name="ReplayDevice"> <value>2</value> </item>
+ <item name="AsyncPairedDevice"> <value>3</value> </item>
+ <item name="AsyncPair"> <value>4</value> </item>
+ <item name="SyncPair"> <value>5</value> </item>
+ <item name="AcceptTouch"> <value>6</value> </item>
+ <item name="RejectTouch"> <value>7</value> </item>
+ </enum>
+
+ <request name="XIAllowEvents" opcode="53">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD8" name="event_mode" enum="EventMode" />
+ <pad bytes="1" />
+ <field type="CARD32" name="touchid" />
+ <field type="WINDOW" name="grab_window" />
+ </request>
+
+ <!-- XIPassiveGrabDevice -->
+
+ <enum name="GrabMode22">
+ <item name="Sync"> <value>0</value> </item>
+ <item name="Async"> <value>1</value> </item>
+ <item name="Touch"> <value>2</value> </item>
+ </enum>
+
+ <enum name="GrabType">
+ <item name="Button"> <value>0</value> </item>
+ <item name="Keycode"> <value>1</value> </item>
+ <item name="Enter"> <value>2</value> </item>
+ <item name="FocusIn"> <value>3</value> </item>
+ <item name="TouchBegin"> <value>4</value> </item>
+ </enum>
+
+ <enum name="ModifierMask">
+ <item name="Any"> <bit>31</bit> </item>
+ </enum>
+
+ <struct name="GrabModifierInfo">
+ <field type="CARD32" name="modifiers" altenum="ModifierMask" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="3" />
+ </struct>
+
+ <request name="XIPassiveGrabDevice" opcode="54">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="WINDOW" name="grab_window" />
+ <field type="CURSOR" name="cursor" />
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD16" name="num_modifiers" />
+ <field type="CARD16" name="mask_len" />
+ <field type="CARD8" name="grab_type" enum="GrabType" />
+ <field type="CARD8" name="grab_mode" enum="GrabMode22" />
+ <field type="CARD8" name="paired_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" enum="GrabOwner" />
+ <pad bytes="2" />
+ <list type="CARD32" name="mask">
+ <fieldref>mask_len</fieldref>
+ </list>
+ <list type="CARD32" name="modifiers">
+ <fieldref>num_modifiers</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_modifiers" />
+ <pad bytes="22" />
+ <list type="GrabModifierInfo" name="modifiers">
+ <fieldref>num_modifiers</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- XIPassiveUngrabDevice -->
+
+ <request name="XIPassiveUngrabDevice" opcode="55">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD16" name="num_modifiers" />
+ <field type="CARD8" name="grab_type" enum="GrabType" />
+ <pad bytes="3" />
+ <list type="CARD32" name="modifiers">
+ <fieldref>num_modifiers</fieldref>
+ </list>
+ </request>
+
+ <!-- XIListProperties -->
+
+ <request name="XIListProperties" opcode="56">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_properties" />
+ <pad bytes="22" />
+ <list type="ATOM" name="properties">
+ <fieldref>num_properties</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- XIChangeProperty -->
+
+ <request name="XIChangeProperty" opcode="57">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD8" name="mode" enum="PropMode" />
+ <field type="CARD8" name="format" enum="PropertyFormat" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD32" name="num_items" />
+ <switch name="items">
+ <fieldref>format</fieldref>
+ <!-- <bitcase> is not correct, this would need <cases>s.
+ It works in that case, because PropertyFormat items can be
+ distinguished exactly as their values don't have equal bits.
+ -->
+ <bitcase>
+ <enumref ref="PropertyFormat">8Bits</enumref>
+ <list type="CARD8" name="data8">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">16Bits</enumref>
+ <list type="CARD16" name="data16">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">32Bits</enumref>
+ <list type="CARD32" name="data32">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ </switch>
+ </request>
+
+ <!-- XIDeleteProperty -->
+
+ <request name="XIDeleteProperty" opcode="58">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="ATOM" name="property" />
+ </request>
+
+ <!-- XIGetProperty -->
+
+ <request name="XIGetProperty" opcode="59">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="BOOL" name="delete" />
+ <pad bytes="1" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD32" name="offset" />
+ <field type="CARD32" name="len" />
+ <reply>
+ <pad bytes="1" />
+ <field type="ATOM" name="type" />
+ <field type="CARD32" name="bytes_after" />
+ <field type="CARD32" name="num_items" />
+ <field type="CARD8" name="format" enum="PropertyFormat" />
+ <pad bytes="11" />
+ <switch name="items">
+ <fieldref>format</fieldref>
+ <!-- <bitcase> is not correct, this would need <cases>s.
+ It works in that case, because PropertyFormat items can be
+ distinguished exactly as their values don't have equal bits.
+ -->
+ <bitcase>
+ <enumref ref="PropertyFormat">8Bits</enumref>
+ <list type="CARD8" name="data8">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">16Bits</enumref>
+ <list type="CARD16" name="data16">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ <bitcase>
+ <enumref ref="PropertyFormat">32Bits</enumref>
+ <list type="CARD32" name="data32">
+ <fieldref>num_items</fieldref>
+ </list>
+ </bitcase>
+ </switch>
+ </reply>
+ </request>
+
+ <!-- XIGetSelectedEvents -->
+
+ <request name="XIGetSelectedEvents" opcode="60">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_masks" />
+ <pad bytes="22" />
+ <list type="EventMask" name="masks">
+ <fieldref>num_masks</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- ⋅⋅⋅ Requests (v2.3) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <!-- XIBarrierReleasePointer -->
+
+ <struct name="BarrierReleasePointerInfo">
+ <field type="DeviceId" name="deviceid" />
+ <pad bytes="2" />
+ <field type="BARRIER" name="barrier" />
+ <field type="CARD32" name="eventid" />
</struct>
- <!-- EVENTS -->
+ <request name="XIBarrierReleasePointer" opcode="61">
+ <field type="CARD32" name="num_barriers" />
+ <list type="BarrierReleasePointerInfo" name="barriers">
+ <fieldref>num_barriers</fieldref>
+ </list>
+ </request>
+
+ <!-- ⋅⋅⋅ Events (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+ <!-- Notes:
+ - A 'len' field in a v1++ structure is in bytes.
+ -->
<event name="DeviceValuator" number="0">
- <field type="CARD8" name="device_id" />
- <field type="CARD16" name="device_state" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="first_valuator" />
- <list type="INT32" name="valuators"><value>6</value></list>
+ <field type="CARD8" name="device_id" />
+ <field type="CARD16" name="device_state" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="first_valuator" />
+ <list type="INT32" name="valuators">
+ <value>6</value>
+ </list>
</event>
<event name="DeviceKeyPress" number="1">
- <field type="BYTE" name="detail" />
- <field type="TIMESTAMP" name="time" />
- <field type="WINDOW" name="root" />
- <field type="WINDOW" name="event" />
- <field type="WINDOW" name="child" altenum="Window" />
- <field type="INT16" name="root_x" />
- <field type="INT16" name="root_y" />
- <field type="INT16" name="event_x" />
- <field type="INT16" name="event_y" />
- <field type="CARD16" name="state" />
- <field type="BOOL" name="same_screen" />
- <field type="CARD8" name="device_id" />
+ <field type="BYTE" name="detail" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" altenum="Window" />
+ <field type="INT16" name="root_x" />
+ <field type="INT16" name="root_y" />
+ <field type="INT16" name="event_x" />
+ <field type="INT16" name="event_y" />
+ <field type="CARD16" name="state" />
+ <field type="BOOL" name="same_screen" />
+ <field type="CARD8" name="device_id" />
</event>
- <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" />
- <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" />
<eventcopy name="DeviceButtonRelease" number="4" ref="DeviceKeyPress" />
- <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" />
- <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" />
- <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" />
-
- <event name="FocusIn" number="6">
- <field type="BYTE" name="detail" enum="NotifyDetail" />
- <field type="TIMESTAMP" name="time" />
- <field type="WINDOW" name="window" />
- <field type="BYTE" name="mode" enum="NotifyMode" />
- <field type="CARD8" name="device_id" />
- <pad bytes="18" />
+ <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" />
+
+ <event name="DeviceFocusIn" number="6">
+ <field type="BYTE" name="detail" enum="xproto:NotifyDetail" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="WINDOW" name="window" />
+ <field type="BYTE" name="mode" enum="xproto:NotifyMode" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="18" />
</event>
- <eventcopy name="FocusOut" number="7" ref="FocusIn" />
+ <eventcopy name="DeviceFocusOut" number="7" ref="DeviceFocusIn" />
+ <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" />
+ <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" />
<event name="DeviceStateNotify" number="10">
- <field type="BYTE" name="device_id" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="num_keys" />
- <field type="CARD8" name="num_buttons" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="classes_reported" />
- <list type="CARD8" name="buttons">
+ <field type="BYTE" name="device_id" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="num_keys" />
+ <field type="CARD8" name="num_buttons" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="classes_reported" />
+ <list type="CARD8" name="buttons">
<value>4</value>
- </list>
- <list type="CARD8" name="keys">
+ </list>
+ <list type="CARD8" name="keys">
<value>4</value>
- </list>
- <list type="CARD32" name="valuators">
- <value>3</value>
- </list>
+ </list>
+ <list type="CARD32" name="valuators">
+ <value>3</value>
+ </list>
</event>
<event name="DeviceMappingNotify" number="11">
- <field type="BYTE" name="device_id" />
- <field type="CARD8" name="request" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="count" />
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <pad bytes="20" />
+ <field type="BYTE" name="device_id" />
+ <field type="CARD8" name="request" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="count" />
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <pad bytes="20" />
</event>
<event name="ChangeDeviceNotify" number="12">
- <field type="BYTE" name="device_id" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="request" />
- <pad bytes="23" />
+ <field type="BYTE" name="device_id" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="request" />
+ <pad bytes="23" />
</event>
<event name="DeviceKeyStateNotify" number="13">
- <field type="BYTE" name="device_id" />
- <list type="CARD8" name="keys">
+ <field type="BYTE" name="device_id" />
+ <list type="CARD8" name="keys">
<value>28</value>
- </list>
+ </list>
</event>
<event name="DeviceButtonStateNotify" number="14">
- <field type="BYTE" name="device_id" />
- <list type="CARD8" name="buttons">
+ <field type="BYTE" name="device_id" />
+ <list type="CARD8" name="buttons">
<value>28</value>
- </list>
+ </list>
</event>
+ <!-- ⋅⋅⋅ Events (v1.4) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <enum name="DeviceChange">
+ <item name="Added"> <value>0</value> </item>
+ <item name="Removed"> <value>1</value> </item>
+ <item name="Enabled"> <value>2</value> </item>
+ <item name="Disabled"> <value>3</value> </item>
+ <item name="Unrecoverable"> <value>4</value> </item>
+ <item name="ControlChanged"> <value>5</value> </item>
+ </enum>
+
<event name="DevicePresenceNotify" number="15">
<pad bytes="1" />
<field type="TIMESTAMP" name="time" />
- <field type="BYTE" name="devchange" />
- <field type="BYTE" name="device_id" />
- <field type="CARD16" name="control" />
- <pad bytes="20" />
+ <field type="BYTE" name="devchange" enum="DeviceChange" />
+ <field type="BYTE" name="device_id" />
+ <field type="CARD16" name="control" />
+ <pad bytes="20" />
</event>
- <!-- ERRORS -->
- <error name="Device" number="0" />
- <error name="Event" number="1" />
- <error name="Mode" number="2" />
+ <!-- ⋅⋅⋅ Events (v1.5) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <event name="DevicePropertyNotify" number="16">
+ <field type="BYTE" name="state" enum="Property" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="ATOM" name="property" />
+ <pad bytes="19" />
+ <field type="CARD8" name="device_id" />
+ </event>
+
+ <!-- ⋅⋅⋅ Events (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+ <!-- Notes:
+ - A 'len' field in a v2++ structure is in 4 byte units.
+ -->
+
+ <enum name="ChangeReason">
+ <item name="SlaveSwitch"> <value>1</value> </item>
+ <item name="DeviceChange"> <value>2</value> </item>
+ </enum>
+
+ <event name="DeviceChanged" number="1" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD16" name="num_classes" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <field type="CARD8" name="reason" enum="ChangeReason" />
+ <pad bytes="11" />
+ <!-- 32 byte boundary -->
+ <list type="DeviceClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </event>
+
+ <enum name="KeyEventFlags">
+ <item name="KeyRepeat"> <bit>16</bit> </item>
+ </enum>
+
+ <event name="KeyPress" number="2" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP1616" name="event_x" />
+ <field type="FP1616" name="event_y" />
+ <field type="CARD16" name="buttons_len" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="KeyEventFlags" />
+ <field type="ModifierInfo" name="mods" />
+ <field type="GroupInfo" name="group" />
+ <list type="CARD32" name="button_mask">
+ <fieldref>buttons_len</fieldref>
+ </list>
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="KeyRelease" number="3" ref="KeyPress" />
+
+ <enum name="PointerEventFlags">
+ <item name="PointerEmulated"> <bit>16</bit> </item>
+ </enum>
+
+ <event name="ButtonPress" number="4" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP1616" name="event_x" />
+ <field type="FP1616" name="event_y" />
+ <field type="CARD16" name="buttons_len" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="PointerEventFlags" />
+ <field type="ModifierInfo" name="mods" />
+ <field type="GroupInfo" name="group" />
+ <list type="CARD32" name="button_mask">
+ <fieldref>buttons_len</fieldref>
+ </list>
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="ButtonRelease" number="5" ref="ButtonPress" />
+ <eventcopy name="Motion" number="6" ref="ButtonPress" />
+
+ <enum name="NotifyMode">
+ <item name="Normal"> <value>0</value> </item>
+ <item name="Grab"> <value>1</value> </item>
+ <item name="Ungrab"> <value>2</value> </item>
+ <item name="WhileGrabbed"> <value>3</value> </item>
+ <item name="PassiveGrab"> <value>4</value> </item>
+ <item name="PassiveUngrab"> <value>5</value> </item>
+ </enum>
+
+ <enum name="NotifyDetail">
+ <item name="Ancestor"> <value>0</value> </item>
+ <item name="Virtual"> <value>1</value> </item>
+ <item name="Inferior"> <value>2</value> </item>
+ <item name="Nonlinear"> <value>3</value> </item>
+ <item name="NonlinearVirtual"> <value>4</value> </item>
+ <item name="Pointer"> <value>5</value> </item>
+ <item name="PointerRoot"> <value>6</value> </item>
+ <item name="None"> <value>7</value> </item>
+ </enum>
+
+ <event name="Enter" number="7" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <field type="CARD8" name="mode" enum="xinput:NotifyMode" />
+ <field type="CARD8" name="detail" enum="xinput:NotifyDetail" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP1616" name="event_x" />
+ <field type="FP1616" name="event_y" />
+ <field type="CARD8" name="same_screen" />
+ <field type="CARD8" name="focus" />
+ <field type="CARD16" name="buttons_len" />
+ <field type="ModifierInfo" name="mods" />
+ <field type="GroupInfo" name="group" />
+ <list type="CARD32" name="buttons">
+ <fieldref>buttons_len</fieldref>
+ </list>
+ </event>
+
+ <eventcopy name="Leave" number="8" ref="Enter" />
+ <eventcopy name="FocusIn" number="9" ref="Enter" />
+ <eventcopy name="FocusOut" number="10" ref="Enter" />
+
+ <enum name="HierarchyMask">
+ <item name="MasterAdded"> <bit>0</bit> </item>
+ <item name="MasterRemoved"> <bit>1</bit> </item>
+ <item name="SlaveAdded"> <bit>2</bit> </item>
+ <item name="SlaveRemoved"> <bit>3</bit> </item>
+ <item name="SlaveAttached"> <bit>4</bit> </item>
+ <item name="SlaveDetached"> <bit>5</bit> </item>
+ <item name="DeviceEnabled"> <bit>6</bit> </item>
+ <item name="DeviceDisabled"> <bit>7</bit> </item>
+ </enum>
+
+ <struct name="HierarchyInfo">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="DeviceId" name="attachment" altenum="Device" />
+ <field type="CARD8" name="type" enum="DeviceType"/>
+ <field type="BOOL" name="enabled" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="HierarchyMask" />
+ </struct>
+
+ <event name="Hierarchy" number="11" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="flags" mask="HierarchyMask" />
+ <field type="CARD16" name="num_infos" />
+ <pad bytes="10" />
+ <!-- 32 byte boundary -->
+ <list type="HierarchyInfo" name="infos">
+ <fieldref>num_infos</fieldref>
+ </list>
+ </event>
+
+ <enum name="PropertyFlag">
+ <item name="Deleted"> <value>0</value> </item>
+ <item name="Created"> <value>1</value> </item>
+ <item name="Modified"> <value>2</value> </item>
+ </enum>
+
+ <event name="Property" number="12" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="ATOM" name="property" />
+ <field type="CARD8" name="what" enum="PropertyFlag" />
+ <pad bytes="11" />
+ <!-- 32 byte boundary -->
+ </event>
+
+ <!-- ⋅⋅⋅ Events (v2.1) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <event name="RawKeyPress" number="13" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="CARD32" name="flags" mask="KeyEventFlags"/>
+ <pad bytes="4" />
+ <!-- 32 byte boundary -->
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="RawKeyRelease" number="14" ref="RawKeyPress" />
+
+ <event name="RawButtonPress" number="15" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="CARD32" name="flags" mask="PointerEventFlags"/>
+ <pad bytes="4" />
+ <!-- 32 byte boundary -->
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="RawButtonRelease" number="16" ref="RawButtonPress" />
+ <eventcopy name="RawMotion" number="17" ref="RawButtonPress" />
+
+ <!-- ⋅⋅⋅ Events (v2.2) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <enum name="TouchEventFlags">
+ <item name="TouchPendingEnd"> <bit>16</bit> </item>
+ <item name="TouchEmulatingPointer"> <bit>17</bit> </item>
+ </enum>
+
+ <event name="TouchBegin" number="18" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP1616" name="event_x" />
+ <field type="FP1616" name="event_y" />
+ <field type="CARD16" name="buttons_len" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="TouchEventFlags" />
+ <field type="ModifierInfo" name="mods" />
+ <field type="GroupInfo" name="group" />
+ <list type="CARD32" name="button_mask">
+ <fieldref>buttons_len</fieldref>
+ </list>
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="TouchUpdate" number="19" ref="TouchBegin" />
+ <eventcopy name="TouchEnd" number="20" ref="TouchBegin" />
+
+ <enum name="TouchOwnershipFlags">
+ <!-- XXX: Remove this enum? Currently, no flag is defined. -->
+ <item name="None"> <value>0</value> </item>
+ </enum>
+
+ <event name="TouchOwnership" number="21" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="touchid" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" enum="TouchOwnershipFlags" />
+ <pad bytes="8" />
+ </event>
+
+ <event name="RawTouchBegin" number="22" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="CARD32" name="flags" mask="TouchEventFlags"/>
+ <pad bytes="4" />
+ <!-- 32 byte boundary -->
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="RawTouchUpdate" number="23" ref="RawTouchBegin" />
+ <eventcopy name="RawTouchEnd" number="24" ref="RawTouchBegin" />
+
+ <!-- ⋅⋅⋅ Events (v2.3) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <event name="BarrierHit" number="25" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="eventid" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="BARRIER" name="barrier" />
+ <!-- 32 byte boundary -->
+ <field type="CARD32" name="dtime" />
+ <field type="CARD32" name="flags" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP3232" name="dx" />
+ <field type="FP3232" name="dy" />
+ </event>
+
+ <eventcopy name="BarrierLeave" number="26" ref="BarrierHit" />
+
+ <!-- ⋅⋅⋅ Errors (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <error name="Device" number="0" />
+ <error name="Event" number="1" />
+ <error name="Mode" number="2" />
<error name="DeviceBusy" number="3" />
- <error name="Class" number="4" />
+ <error name="Class" number="4" />
</xcb>
diff --git a/src/xkb.xml b/src/xkb.xml
index a6ef374..1df0771 100644
--- a/src/xkb.xml
+++ b/src/xkb.xml
@@ -130,29 +130,21 @@ authorization from the authors.
<item name="ControlsEnabled"> <bit>31</bit> </item>
</enum>
- <enum name="AXFBOpt">
+ <enum name="AXOption">
<item name="SKPressFB"> <bit>0</bit> </item>
<item name="SKAcceptFB"> <bit>1</bit> </item>
<item name="FeatureFB"> <bit>2</bit> </item>
<item name="SlowWarnFB"> <bit>3</bit> </item>
<item name="IndicatorFB"> <bit>4</bit> </item>
<item name="StickyKeysFB"> <bit>5</bit> </item>
- <item name="SKReleaseFB"> <bit>6</bit> </item>
- <item name="SKRejectFB"> <bit>7</bit> </item>
- <item name="BKRejectFB"> <bit>8</bit> </item>
- <item name="DumbBell"> <bit>9</bit> </item>
+ <item name="TwoKeys"> <bit>6</bit> </item>
+ <item name="LatchToLock"> <bit>7</bit> </item>
+ <item name="SKReleaseFB"> <bit>8</bit> </item>
+ <item name="SKRejectFB"> <bit>9</bit> </item>
+ <item name="BKRejectFB"> <bit>10</bit> </item>
+ <item name="DumbBell"> <bit>11</bit> </item>
</enum>
- <enum name="AXSKOpt">
- <item name="TwoKeys"> <bit>6</bit> </item>
- <item name="LatchToLock"> <bit>7</bit> </item>
- </enum>
-
- <union name="AXOption">
- <field name="fbopt" type="CARD16" enum="AXFBOpt" />
- <field name="skopt" type="CARD16" enum="AXSKOpt" />
- </union>
-
<typedef oldname="CARD16" newname="DeviceSpec" />
<enum name="LedClassResult">
@@ -161,8 +153,10 @@ authorization from the authors.
</enum>
<enum name="LedClass">
- <item name="DfltXIClass"> <value>768</value> </item> <!--0x300-->
- <item name="AllXIClasses"> <value>1280</value> </item> <!--0x500-->
+ <item name="KbdFeedbackClass"> <value>0</value> </item>
+ <item name="LedFeedbackClass"> <value>4</value> </item>
+ <item name="DfltXIClass"> <value>768</value> </item> <!--0x300-->
+ <item name="AllXIClasses"> <value>1280</value> </item> <!--0x500-->
</enum>
<typedef oldname="CARD16" newname="LedClassSpec" />
@@ -172,7 +166,9 @@ authorization from the authors.
</enum>
<enum name="BellClass">
- <item name="DfltXIClass"> <value>768</value> </item> <!--0x300-->
+ <item name="KbdFeedbackClass"> <value>0</value> </item>
+ <item name="BellFeedbackClass"> <value>5</value> </item>
+ <item name="DfltXIClass"> <value>768</value> </item> <!--0x300-->
</enum>
<typedef oldname="CARD16" newname="BellClassSpec" />
@@ -268,7 +264,7 @@ authorization from the authors.
<item name="KeyType1"> <bit>0</bit> </item>
</enum>
- <enum name="SymInterpret">
+ <enum name="SymInterpretMatch">
<item name="NoneOf"> <value>0</value> </item>
<item name="AnyOfOrNone"> <value>1</value> </item>
<item name="AnyOf"> <value>2</value> </item>
@@ -311,7 +307,7 @@ authorization from the authors.
<field name="mods" type="CARD8" mask="ModMask" />
<field name="realMods" type="CARD8" mask="ModMask" />
<field name="vmods" type="CARD16" mask="VMod" />
- <field name="ctrls" type="CARD32" enum="BoolCtrl" />
+ <field name="ctrls" type="CARD32" mask="BoolCtrl" />
</struct>
<enum name="CMDetail">
@@ -370,43 +366,48 @@ authorization from the authors.
</struct>
<struct name="KeyName">
- <list name="name" type="CARD8">
+ <list name="name" type="char">
<value>4</value>
</list>
</struct>
<struct name="KeyAlias">
- <list name="real" type="CARD8">
+ <list name="real" type="char">
<value>4</value>
</list>
- <list name="alias" type="CARD8">
+ <list name="alias" type="char">
<value>4</value>
</list>
</struct>
- <struct name="CountedString8">
- <field name="length" type="CARD8" />
- <list name="string" type="CARD8">
- <fieldref>length</fieldref>
- </list>
- </struct>
-
<struct name="CountedString16">
<field name="length" type="CARD16" />
- <list name="string" type="CARD8">
+ <list name="string" type="char">
<fieldref>length</fieldref>
</list>
- <pad bytes="1" />
+ <list type="void" name="alignment_pad">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <fieldref>length</fieldref>
+ <value>5</value>
+ </op>
+ <unop op="~">
+ <value>3</value>
+ </unop>
+ </op>
+ <op op="+">
+ <fieldref>length</fieldref>
+ <value>2</value>
+ </op>
+ </op>
+ </list>
</struct>
<struct name="KTMapEntry">
<field name="active" type="BOOL" />
- <!-- Xlib uses a different arrangement of fields
<field name="mods_mask" type="CARD8" mask="ModMask" />
<field name="level" type="CARD8" />
- -->
- <field name="level" type="CARD8" />
- <field name="mods_mask" type="CARD8" mask="ModMask" />
<field name="mods_mods" type="CARD8" mask="ModMask" />
<field name="mods_vmods" type="CARD16" mask="VMod" />
<pad bytes="2" />
@@ -462,32 +463,26 @@ authorization from the authors.
<field name="group" type="CARD8" />
</struct>
- <struct name="Overlay1Behavior">
+ <struct name="OverlayBehavior">
<field name="type" type="CARD8" />
<field name="key" type="KEYCODE" />
</struct>
- <struct name="Overlay2Behavior">
- <field name="type" type="CARD8" />
- <field name="key" type="CARD8" />
- </struct>
-
<typedef oldname="LockBehavior" newname="PermamentLockBehavior" />
<typedef oldname="RadioGroupBehavior" newname="PermamentRadioGroupBehavior" />
- <typedef oldname="Overlay1Behavior" newname="PermamentOverlay1Behavior" />
- <typedef oldname="Overlay2Behavior" newname="PermamentOverlay2Behavior" />
+ <typedef oldname="OverlayBehavior" newname="PermamentOverlayBehavior" />
<union name="Behavior">
<field name="common" type="CommonBehavior" />
<field name="default" type="DefaultBehavior" />
<field name="lock" type="LockBehavior" />
<field name="radioGroup" type="RadioGroupBehavior" />
- <field name="overlay1" type="Overlay1Behavior" />
- <field name="overlay2" type="Overlay2Behavior" />
+ <field name="overlay1" type="OverlayBehavior" />
+ <field name="overlay2" type="OverlayBehavior" />
<field name="permamentLock" type="PermamentLockBehavior" />
<field name="permamentRadioGroup" type="PermamentRadioGroupBehavior" />
- <field name="permamentOverlay1" type="PermamentOverlay1Behavior" />
- <field name="permamentOverlay2" type="PermamentOverlay2Behavior" />
+ <field name="permamentOverlay1" type="PermamentOverlayBehavior" />
+ <field name="permamentOverlay2" type="PermamentOverlayBehavior" />
<field name="type" type="CARD8" />
</union>
@@ -552,6 +547,7 @@ authorization from the authors.
<typedef oldname="char" newname="STRING8" />
+ <!-- XXX: Property is broken
<struct name="Property">
<field name="nameLength" type="CARD16" />
<list name="name" type="STRING8">
@@ -562,6 +558,15 @@ authorization from the authors.
<fieldref>valueLength</fieldref>
</list>
</struct>
+ -->
+ <!-- XXX: This would be the correct Property structure as per spec.,
+ but it's broken atm. too. Add it anyway here, so we don't
+ loose that information.
+ <struct name="Property">
+ <field name="name" type="CountedString16" />
+ <field name="value" type="CountedString16" />
+ </struct>
+ -->
<struct name="Outline">
<field name="nPoints" type="CARD8" />
@@ -638,6 +643,7 @@ authorization from the authors.
<item name="Logo"> <value>5</value> </item>
</enum>
+ <!-- XXX: doodads are broken
<struct name="CommonDoodad">
<field name="name" type="ATOM" />
<field name="type" type="CARD8" enum="DoodadType" />
@@ -645,6 +651,7 @@ authorization from the authors.
<field name="top" type="INT16" />
<field name="left" type="INT16" />
<field name="angle" type="INT16" />
+ <pad bytes="8" />
</struct>
<struct name="ShapeDoodad">
@@ -730,6 +737,7 @@ authorization from the authors.
<fieldref>nOverlays</fieldref>
</list>
</struct>
+ -->
<struct name="Listing">
<field name="flags" type="CARD16" />
@@ -869,7 +877,8 @@ authorization from the authors.
</struct>
<enum name="SASetPtrDfltFlag">
- <item name="DfltBtnAbsolute"> <bit>1</bit> </item>
+ <!-- The spec says 0x02 but Xlib uses 0x04. -->
+ <item name="DfltBtnAbsolute"> <bit>2</bit> </item>
<item name="AffectDfltButton"> <bit>0</bit> </item>
</enum>
@@ -998,6 +1007,7 @@ authorization from the authors.
<pad bytes="1" />
<field name="button" type="CARD8" />
<field name="device" type="CARD8" />
+ <pad bytes="3" />
</struct>
<enum name="SAValWhat">
@@ -1020,6 +1030,23 @@ authorization from the authors.
<field name="val2value" type="CARD8" />
</struct>
+ <struct name="SIAction">
+ <field name="type" type="CARD8" enum="SAType" />
+ <list name="data" type="CARD8">
+ <value>7</value>
+ </list>
+ </struct>
+
+ <struct name="SymInterpret">
+ <field name="sym" type="KEYSYM" />
+ <field name="mods" type="CARD8" mask="ModMask" />
+ <!-- "match" may also have XkbSI_LevelOneOnly (0x80) or'd into it -->
+ <field name="match" type="CARD8" altenum="SymInterpretMatch" />
+ <field name="virtualMod" type="CARD8" mask="VModsLow" />
+ <field name="flags" type="CARD8" />
+ <field name="action" type="SIAction" />
+ </struct>
+
<union name="Action">
<field name="noaction" type="SANoAction" />
<field name="setmods" type="SASetMods" />
@@ -1060,11 +1087,11 @@ authorization from the authors.
<request name="SelectEvents" opcode="1">
<field name="deviceSpec" type="DeviceSpec" />
- <field name="affectWhich" type="CARD16" enum="EventType" />
- <field name="clear" type="CARD16" enum="EventType" />
- <field name="selectAll" type="CARD16" enum="EventType" />
- <field name="affectMap" type="CARD16" enum="MapPart" />
- <field name="map" type="CARD16" enum="MapPart" />
+ <field name="affectWhich" type="CARD16" mask="EventType" />
+ <field name="clear" type="CARD16" mask="EventType" />
+ <field name="selectAll" type="CARD16" mask="EventType" />
+ <field name="affectMap" type="CARD16" mask="MapPart" />
+ <field name="map" type="CARD16" mask="MapPart" />
<switch name="details">
<op op="&amp;">
<fieldref>affectWhich</fieldref>
@@ -1206,14 +1233,14 @@ authorization from the authors.
<field name="mouseKeysTimeToMax" type="CARD16" />
<field name="mouseKeysMaxSpeed" type="CARD16" />
<field name="mouseKeysCurve" type="INT16" />
- <field name="accessXOption" type="AXOption" />
+ <field name="accessXOption" type="CARD16" mask="AXOption" />
<field name="accessXTimeout" type="CARD16" />
- <field name="accessXTimeoutOptionsMask" type="AXOption" />
- <field name="accessXTimeoutOptionsValues" type="AXOption" />
+ <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
+ <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
<pad bytes="2" />
- <field name="accessXTimeoutMask" type="CARD32" enum="BoolCtrl" />
- <field name="accessXTimeoutValues" type="CARD32" enum="BoolCtrl" />
- <field name="enabledControls" type="CARD32" enum="BoolCtrl" />
+ <field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
+ <field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
+ <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
<list name="perKeyRepeat" type="CARD8">
<value>32</value>
</list>
@@ -1232,10 +1259,10 @@ authorization from the authors.
<field name="ignoreLockVirtualMods" type="CARD16" mask="VMod" />
<field name="mouseKeysDfltBtn" type="CARD8" />
<field name="groupsWrap" type="CARD8" />
- <field name="accessXOptions" type="AXOption" />
+ <field name="accessXOptions" type="CARD16" mask="AXOption" />
<pad bytes="2" />
- <field name="affectEnabledControls" type="CARD32" enum="BoolCtrl" />
- <field name="enabledControls" type="CARD32" enum="BoolCtrl" />
+ <field name="affectEnabledControls" type="CARD32" mask="BoolCtrl" />
+ <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
<field name="changeControls" type="CARD32" mask="Control" />
<field name="repeatDelay" type="CARD16" />
<field name="repeatInterval" type="CARD16" />
@@ -1247,10 +1274,10 @@ authorization from the authors.
<field name="mouseKeysMaxSpeed" type="CARD16" />
<field name="mouseKeysCurve" type="INT16" />
<field name="accessXTimeout" type="CARD16" />
- <field name="accessXTimeoutMask" type="CARD32" enum="BoolCtrl" />
- <field name="accessXTimeoutValues" type="CARD32" enum="BoolCtrl" />
- <field name="accessXTimeoutOptionsMask" type="AXOption" />
- <field name="accessXTimeoutOptionsValues" type="AXOption" />
+ <field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
+ <field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
+ <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
+ <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
<list name="perKeyRepeat" type="CARD8">
<value>32</value>
</list>
@@ -1258,8 +1285,8 @@ authorization from the authors.
<request name="GetMap" opcode="8">
<field name="deviceSpec" type="DeviceSpec" />
- <field name="full" type="CARD16" enum="MapPart" />
- <field name="partial" type="CARD16" enum="MapPart" />
+ <field name="full" type="CARD16" mask="MapPart" />
+ <field name="partial" type="CARD16" mask="MapPart" />
<field name="firstType" type="CARD8" />
<field name="nTypes" type="CARD8" />
<field name="firstKeySym" type="KEYCODE" />
@@ -1281,7 +1308,7 @@ authorization from the authors.
<pad bytes="2" />
<field name="minKeyCode" type="KEYCODE" />
<field name="maxKeyCode" type="KEYCODE" />
- <field name="present" type="CARD16" enum="MapPart" />
+ <field name="present" type="CARD16" mask="MapPart" />
<field name="firstType" type="CARD8" />
<field name="nTypes" type="CARD8" />
<field name="totalTypes" type="CARD8" />
@@ -1324,6 +1351,20 @@ authorization from the authors.
<list name="acts_rtrn_count" type="CARD8">
<fieldref>nKeyActions</fieldref>
</list>
+ <list type="CARD8" name="alignment_pad">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <fieldref>nKeyActions</fieldref>
+ <value>3</value>
+ </op>
+ <unop op="~">
+ <value>3</value>
+ </unop>
+ </op>
+ <fieldref>nKeyActions</fieldref>
+ </op>
+ </list>
<list name="acts_rtrn_acts" type="Action">
<fieldref>totalActions</fieldref>
</list>
@@ -1337,7 +1378,21 @@ authorization from the authors.
<bitcase>
<enumref ref="MapPart">VirtualMods</enumref>
<list name="vmods_rtrn" type="CARD8" mask="ModMask">
- <fieldref>nVModMapKeys</fieldref>
+ <popcount><fieldref>virtualMods</fieldref></popcount>
+ </list>
+ <list type="CARD8" name="alignment_pad2">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <popcount><fieldref>virtualMods</fieldref></popcount>
+ <value>3</value>
+ </op>
+ <unop op="~">
+ <value>3</value>
+ </unop>
+ </op>
+ <popcount><fieldref>virtualMods</fieldref></popcount>
+ </op>
</list>
</bitcase>
<bitcase>
@@ -1345,12 +1400,40 @@ authorization from the authors.
<list name="explicit_rtrn" type="SetExplicit">
<fieldref>totalKeyExplicit</fieldref>
</list>
+ <list type="CARD16" name="alignment_pad3">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <fieldref>totalKeyExplicit</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ <fieldref>totalKeyExplicit</fieldref>
+ </op>
+ </list>
</bitcase>
<bitcase>
<enumref ref="MapPart">ModifierMap</enumref>
<list name="modmap_rtrn" type="KeyModMap">
<fieldref>totalModMapKeys</fieldref>
</list>
+ <list type="CARD16" name="alignment_pad4">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <fieldref>totalModMapKeys</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ <fieldref>totalModMapKeys</fieldref>
+ </op>
+ </list>
</bitcase>
<bitcase>
<enumref ref="MapPart">VirtualModMap</enumref>
@@ -1364,7 +1447,7 @@ authorization from the authors.
<request name="SetMap" opcode="9">
<field name="deviceSpec" type="DeviceSpec" />
- <field name="present" type="CARD16" enum="MapPart" />
+ <field name="present" type="CARD16" mask="MapPart" />
<field name="flags" type="CARD16" mask="SetMapFlags" />
<field name="minKeyCode" type="KEYCODE" />
<field name="maxKeyCode" type="KEYCODE" />
@@ -1421,7 +1504,7 @@ authorization from the authors.
<bitcase>
<enumref ref="MapPart">VirtualMods</enumref>
<list name="vmods" type="CARD8">
- <fieldref>nVModMapKeys</fieldref>
+ <popcount><fieldref>virtualMods</fieldref></popcount>
</list>
</bitcase>
<bitcase>
@@ -1459,11 +1542,8 @@ authorization from the authors.
<field name="nSIRtrn" type="CARD16" />
<field name="nTotalSI" type="CARD16" />
<pad bytes="16" />
- <list name="si_rtrn" type="CARD8" mask="SymInterpret">
- <op op="*">
- <value>16</value>
- <fieldref>nSIRtrn</fieldref>
- </op>
+ <list name="si_rtrn" type="SymInterpret">
+ <fieldref>nSIRtrn</fieldref>
</list>
<list name="group_rtrn" type="ModDef">
<popcount>
@@ -1482,11 +1562,8 @@ authorization from the authors.
<field name="firstSI" type="CARD16" />
<field name="nSI" type="CARD16" />
<pad bytes="2"/>
- <list name="si" type="CARD8" mask="SymInterpret">
- <op op="*">
- <value>16</value>
- <fieldref>nSI</fieldref>
- </op>
+ <list name="si" type="SymInterpret">
+ <fieldref>nSI</fieldref>
</list>
<list name="groupMaps" type="ModDef">
<popcount>
@@ -1516,7 +1593,7 @@ authorization from the authors.
<field name="nIndicators" type="CARD8" />
<pad bytes="15" />
<list name="maps" type="IndicatorMap">
- <fieldref>nIndicators</fieldref>
+ <popcount><fieldref>which</fieldref></popcount>
</list>
</reply>
</request>
@@ -1553,6 +1630,7 @@ authorization from the authors.
<field name="map_realMods" type="CARD8" mask="ModMask" />
<field name="map_vmod" type="CARD16" mask="VMod" />
<field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
+ <field name="supported" type="BOOL" />
<pad bytes="3" />
</reply>
</request>
@@ -1637,6 +1715,20 @@ authorization from the authors.
<fieldref>nKTLevels</fieldref> -->
<fieldref>nTypes</fieldref>
</list>
+ <list type="CARD8" name="alignment_pad">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <fieldref>nTypes</fieldref>
+ <value>3</value>
+ </op>
+ <unop op="~">
+ <value>3</value>
+ </unop>
+ </op>
+ <fieldref>nTypes</fieldref>
+ </op>
+ </list>
<list name="ktLevelNames" type="ATOM">
<sumof ref="nLevelsPerType" />
</list>
@@ -1789,6 +1881,7 @@ authorization from the authors.
</switch>
</request>
+ <!-- XXX: Property and doodads are broken, which renders GetGeometry useless
<request name="GetGeometry" opcode="19">
<field name="deviceSpec" type="DeviceSpec" />
<pad bytes="2" />
@@ -1829,7 +1922,9 @@ authorization from the authors.
</list>
</reply>
</request>
+ -->
+ <!-- XXX: Property and doodads are broken, which renders SetGeometry useless
<request name="SetGeometry" opcode="20">
<field name="deviceSpec" type="DeviceSpec" />
<field name="nShapes" type="CARD8" />
@@ -1864,6 +1959,7 @@ authorization from the authors.
<fieldref>nKeyAliases</fieldref>
</list>
</request>
+ -->
<request name="PerClientFlags" opcode="21">
<field name="deviceSpec" type="DeviceSpec" />
@@ -1886,6 +1982,7 @@ authorization from the authors.
<request name="ListComponents" opcode="22">
<field name="deviceSpec" type="DeviceSpec" />
<field name="maxNames" type="CARD16" />
+ <!-- XXX: Intermixed fixed size fields and lists are broken
<field name="keymapsSpecLen" type="CARD8" />
<list name="keymapsSpec" type="STRING8">
<fieldref>keymapsSpecLen</fieldref>
@@ -1910,6 +2007,7 @@ authorization from the authors.
<list name="geometrySpec" type="STRING8">
<fieldref>geometrySpecLen</fieldref>
</list>
+ -->
<reply>
<field name="deviceID" type="CARD8" />
<field name="nKeymaps" type="CARD16" />
@@ -1947,6 +2045,7 @@ authorization from the authors.
<field name="want" type="CARD16" mask="GBNDetail" />
<field name="load" type="BOOL" />
<pad bytes="1" />
+ <!-- XXX: Intermixed fixed size fields and lists are broken
<field name="keymapsSpecLen" type="CARD8" />
<list name="keymapsSpec" type="STRING8">
<fieldref>keymapsSpecLen</fieldref>
@@ -1971,6 +2070,7 @@ authorization from the authors.
<list name="geometrySpec" type="STRING8">
<fieldref>geometrySpecLen</fieldref>
</list>
+ -->
<reply>
<field name="deviceID" type="CARD8" />
<field name="minKeyCode" type="KEYCODE" />
@@ -1984,6 +2084,8 @@ authorization from the authors.
<fieldref>reported</fieldref>
<bitcase name="types">
<enumref ref="GBNDetail">Types</enumref>
+ <enumref ref="GBNDetail">ClientSymbols</enumref>
+ <enumref ref="GBNDetail">ServerSymbols</enumref>
<!-- from the spec, this has to be a GetMap reply -->
<field name="getmap_type" type="CARD8" />
<!-- done 'emulating' GetMap reply header-->
@@ -1995,7 +2097,7 @@ authorization from the authors.
<pad bytes="2" />
<field name="typeMinKeyCode" type="KEYCODE" />
<field name="typeMaxKeyCode" type="KEYCODE" />
- <field name="present" type="CARD16" enum="MapPart" />
+ <field name="present" type="CARD16" mask="MapPart" />
<field name="firstType" type="CARD8" />
<field name="nTypes" type="CARD8" />
<field name="totalTypes" type="CARD8" />
@@ -2051,7 +2153,7 @@ authorization from the authors.
<bitcase>
<enumref ref="MapPart">VirtualMods</enumref>
<list name="vmods_rtrn" type="CARD8" mask="ModMask">
- <fieldref>nVModMapKeys</fieldref>
+ <popcount><fieldref>virtualMods</fieldref></popcount>
</list>
</bitcase>
<bitcase>
@@ -2076,18 +2178,20 @@ authorization from the authors.
</bitcase>
<bitcase name="compat_map">
<enumref ref="GBNDetail">CompatMap</enumref>
+ <!-- from the spec, this has to include a reply header -->
+ <field name="compatmap_type" type="CARD8" />
<field name="compatDeviceID" type="CARD8" />
+ <field name="compatmap_sequence" type="CARD16" />
+ <field name="compatmap_length" type="CARD32" />
+ <!-- done 'emulating' reply header -->
<field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
<pad bytes="1" />
<field name="firstSIRtrn" type="CARD16" />
<field name="nSIRtrn" type="CARD16" />
<field name="nTotalSI" type="CARD16" />
<pad bytes="16" />
- <list name="si_rtrn" type="CARD8" mask="SymInterpret">
- <op op="*">
- <value>16</value>
- <fieldref>nSIRtrn</fieldref>
- </op>
+ <list name="si_rtrn" type="SymInterpret">
+ <fieldref>nSIRtrn</fieldref>
</list>
<list name="group_rtrn" type="ModDef">
<popcount>
@@ -2095,179 +2199,14 @@ authorization from the authors.
</popcount>
</list>
</bitcase>
- <bitcase name="client_symbols">
- <enumref ref="GBNDetail">ClientSymbols</enumref>
- <field name="clientDeviceID" type="CARD8" />
- <pad bytes="2" />
- <field name="clientMinKeyCode" type="KEYCODE" />
- <field name="clientMaxKeyCode" type="KEYCODE" />
- <field name="present" type="CARD16" enum="MapPart" />
- <field name="firstType" type="CARD8" />
- <field name="nTypes" type="CARD8" />
- <field name="totalTypes" type="CARD8" />
- <field name="firstKeySym" type="KEYCODE" />
- <field name="totalSyms" type="CARD16" />
- <field name="nKeySyms" type="CARD8" />
- <field name="firstKeyAction" type="KEYCODE" />
- <field name="totalActions" type="CARD16" />
- <field name="nKeyActions" type="CARD8" />
- <field name="firstKeyBehavior" type="KEYCODE" />
- <field name="nKeyBehaviors" type="CARD8" />
- <field name="totalKeyBehaviors" type="CARD8" />
- <field name="firstKeyExplicit" type="KEYCODE" />
- <field name="nKeyExplicit" type="CARD8" />
- <field name="totalKeyExplicit" type="CARD8" />
- <field name="firstModMapKey" type="KEYCODE" />
- <field name="nModMapKeys" type="CARD8" />
- <field name="totalModMapKeys" type="CARD8" />
- <field name="firstVModMapKey" type="KEYCODE" />
- <field name="nVModMapKeys" type="CARD8" />
- <field name="totalVModMapKeys" type="CARD8" />
- <pad bytes="1" />
- <field name="virtualMods" type="CARD16" mask="VMod" />
- <switch name="map">
- <fieldref>present</fieldref>
- <bitcase>
- <enumref ref="MapPart">KeyTypes</enumref>
- <list name="types_rtrn" type="KeyType">
- <fieldref>nTypes</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">KeySyms</enumref>
- <list name="syms_rtrn" type="KeySymMap">
- <fieldref>nKeySyms</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">KeyActions</enumref>
- <list name="acts_rtrn_count" type="CARD8">
- <fieldref>nKeyActions</fieldref>
- </list>
- <list name="acts_rtrn_acts" type="Action">
- <fieldref>totalActions</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">KeyBehaviors</enumref>
- <list name="behaviors_rtrn" type="SetBehavior">
- <fieldref>totalKeyBehaviors</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">VirtualMods</enumref>
- <list name="vmods_rtrn" type="CARD8" mask="ModMask">
- <fieldref>nVModMapKeys</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">ExplicitComponents</enumref>
- <list name="explicit_rtrn" type="SetExplicit">
- <fieldref>totalKeyExplicit</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">ModifierMap</enumref>
- <list name="modmap_rtrn" type="KeyModMap">
- <fieldref>totalModMapKeys</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">VirtualModMap</enumref>
- <list name="vmodmap_rtrn" type="KeyVModMap">
- <fieldref>totalVModMapKeys</fieldref>
- </list>
- </bitcase>
- </switch>
- </bitcase>
- <bitcase name="server_symbols">
- <enumref ref="GBNDetail">ServerSymbols</enumref>
- <field name="serverDeviceID" type="CARD8" />
- <pad bytes="2" />
- <field name="serverMinKeyCode" type="KEYCODE" />
- <field name="serverMaxKeyCode" type="KEYCODE" />
- <field name="present" type="CARD16" enum="MapPart" />
- <field name="firstType" type="CARD8" />
- <field name="nTypes" type="CARD8" />
- <field name="totalTypes" type="CARD8" />
- <field name="firstKeySym" type="KEYCODE" />
- <field name="totalSyms" type="CARD16" />
- <field name="nKeySyms" type="CARD8" />
- <field name="firstKeyAction" type="KEYCODE" />
- <field name="totalActions" type="CARD16" />
- <field name="nKeyActions" type="CARD8" />
- <field name="firstKeyBehavior" type="KEYCODE" />
- <field name="nKeyBehaviors" type="CARD8" />
- <field name="totalKeyBehaviors" type="CARD8" />
- <field name="firstKeyExplicit" type="KEYCODE" />
- <field name="nKeyExplicit" type="CARD8" />
- <field name="totalKeyExplicit" type="CARD8" />
- <field name="firstModMapKey" type="KEYCODE" />
- <field name="nModMapKeys" type="CARD8" />
- <field name="totalModMapKeys" type="CARD8" />
- <field name="firstVModMapKey" type="KEYCODE" />
- <field name="nVModMapKeys" type="CARD8" />
- <field name="totalVModMapKeys" type="CARD8" />
- <pad bytes="1" />
- <field name="virtualMods" type="CARD16" mask="VMod" />
- <switch name="map">
- <fieldref>present</fieldref>
- <bitcase>
- <enumref ref="MapPart">KeyTypes</enumref>
- <list name="types_rtrn" type="KeyType">
- <fieldref>nTypes</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">KeySyms</enumref>
- <list name="syms_rtrn" type="KeySymMap">
- <fieldref>nKeySyms</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">KeyActions</enumref>
- <list name="acts_rtrn_count" type="CARD8">
- <fieldref>nKeyActions</fieldref>
- </list>
- <list name="acts_rtrn_acts" type="Action">
- <fieldref>totalActions</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">KeyBehaviors</enumref>
- <list name="behaviors_rtrn" type="SetBehavior">
- <fieldref>totalKeyBehaviors</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">VirtualMods</enumref>
- <list name="vmods_rtrn" type="CARD8" mask="ModMask">
- <fieldref>nVModMapKeys</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">ExplicitComponents</enumref>
- <list name="explicit_rtrn" type="SetExplicit">
- <fieldref>totalKeyExplicit</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">ModifierMap</enumref>
- <list name="modmap_rtrn" type="KeyModMap">
- <fieldref>totalModMapKeys</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="MapPart">VirtualModMap</enumref>
- <list name="vmodmap_rtrn" type="KeyVModMap">
- <fieldref>totalVModMapKeys</fieldref>
- </list>
- </bitcase>
- </switch>
- </bitcase>
<bitcase name="indicator_maps">
<enumref ref="GBNDetail">IndicatorMaps</enumref>
+ <!-- from the spec, this has to include a reply header -->
+ <field name="indicatormap_type" type="CARD8" />
<field name="indicatorDeviceID" type="CARD8" />
+ <field name="indicatormap_sequence" type="CARD16" />
+ <field name="indicatormap_length" type="CARD32" />
+ <!-- done 'emulating' reply header -->
<field name="which" type="CARD32" />
<field name="realIndicators" type="CARD32" />
<field name="nIndicators" type="CARD8" />
@@ -2278,7 +2217,13 @@ authorization from the authors.
</bitcase>
<bitcase name="key_names">
<enumref ref="GBNDetail">KeyNames</enumref>
+ <enumref ref="GBNDetail">OtherNames</enumref>
+ <!-- from the spec, this has to include a reply header -->
+ <field name="keyname_type" type="CARD8" />
<field name="keyDeviceID" type="CARD8" />
+ <field name="keyname_sequence" type="CARD16" />
+ <field name="keyname_length" type="CARD32" />
+ <!-- done 'emulating' reply header -->
<field name="which" type="CARD32" mask="NameDetail" />
<field name="keyMinKeyCode" type="KEYCODE" />
<field name="keyMaxKeyCode" type="KEYCODE" />
@@ -2377,110 +2322,14 @@ authorization from the authors.
</bitcase>
</switch>
</bitcase>
- <bitcase name="other_names">
- <enumref ref="GBNDetail">OtherNames</enumref>
- <field name="otherDeviceID" type="CARD8" />
- <field name="which" type="CARD32" mask="NameDetail" />
- <field name="otherMinKeyCode" type="KEYCODE" />
- <field name="otherMaxKeyCode" type="KEYCODE" />
- <field name="nTypes" type="CARD8" />
- <field name="groupNames" type="CARD8" mask="SetOfGroup" />
- <field name="virtualMods" type="CARD16" mask="VMod" />
- <field name="firstKey" type="KEYCODE" />
- <field name="nKeys" type="CARD8" />
- <field name="indicators" type="CARD32" />
- <field name="nRadioGroups" type="CARD8" />
- <field name="nKeyAliases" type="CARD8" />
- <field name="nKTLevels" type="CARD16" />
- <pad bytes="4" />
- <switch name="valueList">
- <fieldref>which</fieldref>
- <bitcase>
- <enumref ref="NameDetail">Keycodes</enumref>
- <field name="keycodesName" type="ATOM" />
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">Geometry</enumref>
- <field name="geometryName" type="ATOM" />
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">Symbols</enumref>
- <field name="symbolsName" type="ATOM" />
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">PhysSymbols</enumref>
- <field name="physSymbolsName" type="ATOM" />
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">Types</enumref>
- <field name="typesName" type="ATOM" />
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">Compat</enumref>
- <field name="compatName" type="ATOM" />
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">KeyTypeNames</enumref>
- <list name="typeNames" type="ATOM">
- <fieldref>nTypes</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">KTLevelNames</enumref>
- <list name="nLevelsPerType" type="CARD8">
- <fieldref>nKTLevels</fieldref>
- </list>
- <list name="ktLevelNames" type="ATOM">
- <sumof ref="nLevelsPerType" />
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">IndicatorNames</enumref>
- <list name="indicatorNames" type="ATOM">
- <popcount>
- <fieldref>indicators</fieldref>
- </popcount>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">VirtualModNames</enumref>
- <list name="virtualModNames" type="ATOM">
- <popcount>
- <fieldref>virtualMods</fieldref>
- </popcount>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">GroupNames</enumref>
- <list name="groups" type="ATOM">
- <popcount>
- <fieldref>groupNames</fieldref>
- </popcount>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">KeyNames</enumref>
- <list name="keyNames" type="KeyName">
- <fieldref>nKeys</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">KeyAliases</enumref>
- <list name="keyAliases" type="KeyAlias">
- <fieldref>nKeyAliases</fieldref>
- </list>
- </bitcase>
- <bitcase>
- <enumref ref="NameDetail">RGNames</enumref>
- <list name="radioGroupNames" type="ATOM">
- <fieldref>nRadioGroups</fieldref>
- </list>
- </bitcase>
- </switch>
- </bitcase>
<bitcase name="geometry">
<enumref ref="GBNDetail">Geometry</enumref>
+ <!-- from the spec, this has to include a reply header -->
+ <field name="geometry_type" type="CARD8" />
<field name="geometryDeviceID" type="CARD8" />
+ <field name="geometry_sequence" type="CARD16" />
+ <field name="geometry_length" type="CARD32" />
+ <!-- done 'emulating' reply header -->
<field name="name" type="ATOM" />
<field name="geometryFound" type="BOOL" />
<pad bytes="1" />
@@ -2495,6 +2344,7 @@ authorization from the authors.
<field name="baseColorNdx" type="CARD8" />
<field name="labelColorNdx" type="CARD8" />
<field name="labelFont" type="CountedString16" />
+ <!-- XXX: Property is broken
<list name="properties" type="Property">
<fieldref>nProperties</fieldref>
</list>
@@ -2504,6 +2354,8 @@ authorization from the authors.
<list name="shapes" type="Shape">
<fieldref>nShapes</fieldref>
</list>
+ -->
+ <!-- XXX: doodads are broken
<list name="sections" type="Section">
<fieldref>nSections</fieldref>
</list>
@@ -2513,6 +2365,7 @@ authorization from the authors.
<list name="keyAliases" type="KeyAlias">
<fieldref>nKeyAliases</fieldref>
</list>
+ -->
</bitcase>
</switch>
</reply>
@@ -2593,9 +2446,8 @@ authorization from the authors.
<!-- Events -->
- <event name="NewKeyboardNotify" number="0" no-sequence-number="true">
+ <event name="NewKeyboardNotify" number="0">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="oldDeviceID" type="CARD8" />
@@ -2609,9 +2461,8 @@ authorization from the authors.
<pad bytes="14" />
</event>
- <event name="MapNotify" number="1" no-sequence-number="true">
+ <event name="MapNotify" number="1">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="ptrBtnActions" type="CARD8" />
@@ -2636,9 +2487,8 @@ authorization from the authors.
<pad bytes="2" />
</event>
- <event name="StateNotify" number="2" no-sequence-number="true">
+ <event name="StateNotify" number="2">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="mods" type="CARD8" mask="ModMask" />
@@ -2662,9 +2512,8 @@ authorization from the authors.
<field name="requestMinor" type="CARD8" />
</event>
- <event name="ControlsNotify" number="3" no-sequence-number="true">
+ <event name="ControlsNotify" number="3">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="numGroups" type="CARD8" />
@@ -2679,9 +2528,8 @@ authorization from the authors.
<pad bytes="4" />
</event>
- <event name="IndicatorStateNotify" number="4" no-sequence-number="true">
+ <event name="IndicatorStateNotify" number="4">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<pad bytes="3" />
@@ -2690,9 +2538,8 @@ authorization from the authors.
<pad bytes="12" />
</event>
- <event name="IndicatorMapNotify" number="5" no-sequence-number="true">
+ <event name="IndicatorMapNotify" number="5">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<pad bytes="3" />
@@ -2701,9 +2548,8 @@ authorization from the authors.
<pad bytes="12" />
</event>
- <event name="NamesNotify" number="6" no-sequence-number="true">
+ <event name="NamesNotify" number="6">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<pad bytes="1" />
@@ -2723,9 +2569,8 @@ authorization from the authors.
<pad bytes="4" />
</event>
- <event name="CompatMapNotify" number="7" no-sequence-number="true">
+ <event name="CompatMapNotify" number="7">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="changedGroups" type="CARD8" mask="SetOfGroup" />
@@ -2735,9 +2580,8 @@ authorization from the authors.
<pad bytes="16" />
</event>
- <event name="BellNotify" number="8" no-sequence-number="true">
+ <event name="BellNotify" number="8">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="bellClass" type="CARD8" enum="BellClassResult" />
@@ -2751,9 +2595,8 @@ authorization from the authors.
<pad bytes="7" />
</event>
- <event name="ActionMessage" number="9" no-sequence-number="true">
+ <event name="ActionMessage" number="9">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="keycode" type="KEYCODE" />
@@ -2767,9 +2610,8 @@ authorization from the authors.
<pad bytes="10" />
</event>
- <event name="AccessXNotify" number="10" no-sequence-number="true">
+ <event name="AccessXNotify" number="10">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<field name="keycode" type="KEYCODE" />
@@ -2779,15 +2621,14 @@ authorization from the authors.
<pad bytes="16" />
</event>
- <event name="ExtensionDeviceNotify" number="11" no-sequence-number="true">
+ <event name="ExtensionDeviceNotify" number="11">
<field name="xkbType" type="CARD8" />
- <field name="sequence" type="CARD16" />
<field name="time" type="TIMESTAMP" />
<field name="deviceID" type="CARD8" />
<pad bytes="1" />
<field name="reason" type="CARD16" mask="XIFeature" />
<field name="ledClass" type="CARD16" enum="LedClassResult" />
- <field name="ledID" type="CARD8" />
+ <field name="ledID" type="CARD16" />
<field name="ledsDefined" type="CARD32" />
<field name="ledState" type="CARD32" />
<field name="firstButton" type="CARD8" />
diff --git a/src/xproto.xml b/src/xproto.xml
index bf4dcbf..0779568 100644
--- a/src/xproto.xml
+++ b/src/xproto.xml
@@ -889,74 +889,74 @@ A timestamp of the server time when the property was changed.
<enum name="Atom">
<item name="None"> <value>0</value></item>
<item name="Any"> <value>0</value></item>
- <item name="PRIMARY" />
- <item name="SECONDARY" />
- <item name="ARC" />
- <item name="ATOM" />
- <item name="BITMAP" />
- <item name="CARDINAL" />
- <item name="COLORMAP" />
- <item name="CURSOR" />
- <item name="CUT_BUFFER0" />
- <item name="CUT_BUFFER1" />
- <item name="CUT_BUFFER2" />
- <item name="CUT_BUFFER3" />
- <item name="CUT_BUFFER4" />
- <item name="CUT_BUFFER5" />
- <item name="CUT_BUFFER6" />
- <item name="CUT_BUFFER7" />
- <item name="DRAWABLE" />
- <item name="FONT" />
- <item name="INTEGER" />
- <item name="PIXMAP" />
- <item name="POINT" />
- <item name="RECTANGLE" />
- <item name="RESOURCE_MANAGER" />
- <item name="RGB_COLOR_MAP" />
- <item name="RGB_BEST_MAP" />
- <item name="RGB_BLUE_MAP" />
- <item name="RGB_DEFAULT_MAP" />
- <item name="RGB_GRAY_MAP" />
- <item name="RGB_GREEN_MAP" />
- <item name="RGB_RED_MAP" />
- <item name="STRING" />
- <item name="VISUALID" />
- <item name="WINDOW" />
- <item name="WM_COMMAND" />
- <item name="WM_HINTS" />
- <item name="WM_CLIENT_MACHINE" />
- <item name="WM_ICON_NAME" />
- <item name="WM_ICON_SIZE" />
- <item name="WM_NAME" />
- <item name="WM_NORMAL_HINTS" />
- <item name="WM_SIZE_HINTS" />
- <item name="WM_ZOOM_HINTS" />
- <item name="MIN_SPACE" />
- <item name="NORM_SPACE" />
- <item name="MAX_SPACE" />
- <item name="END_SPACE" />
- <item name="SUPERSCRIPT_X" />
- <item name="SUPERSCRIPT_Y" />
- <item name="SUBSCRIPT_X" />
- <item name="SUBSCRIPT_Y" />
- <item name="UNDERLINE_POSITION" />
- <item name="UNDERLINE_THICKNESS" />
- <item name="STRIKEOUT_ASCENT" />
- <item name="STRIKEOUT_DESCENT" />
- <item name="ITALIC_ANGLE" />
- <item name="X_HEIGHT" />
- <item name="QUAD_WIDTH" />
- <item name="WEIGHT" />
- <item name="POINT_SIZE" />
- <item name="RESOLUTION" />
- <item name="COPYRIGHT" />
- <item name="NOTICE" />
- <item name="FONT_NAME" />
- <item name="FAMILY_NAME" />
- <item name="FULL_NAME" />
- <item name="CAP_HEIGHT" />
- <item name="WM_CLASS" />
- <item name="WM_TRANSIENT_FOR" />
+ <item name="PRIMARY"> <value>1</value> </item>
+ <item name="SECONDARY"> <value>2</value> </item>
+ <item name="ARC"> <value>3</value> </item>
+ <item name="ATOM"> <value>4</value> </item>
+ <item name="BITMAP"> <value>5</value> </item>
+ <item name="CARDINAL"> <value>6</value> </item>
+ <item name="COLORMAP"> <value>7</value> </item>
+ <item name="CURSOR"> <value>8</value> </item>
+ <item name="CUT_BUFFER0"> <value>9</value> </item>
+ <item name="CUT_BUFFER1"> <value>10</value> </item>
+ <item name="CUT_BUFFER2"> <value>11</value> </item>
+ <item name="CUT_BUFFER3"> <value>12</value> </item>
+ <item name="CUT_BUFFER4"> <value>13</value> </item>
+ <item name="CUT_BUFFER5"> <value>14</value> </item>
+ <item name="CUT_BUFFER6"> <value>15</value> </item>
+ <item name="CUT_BUFFER7"> <value>16</value> </item>
+ <item name="DRAWABLE"> <value>17</value> </item>
+ <item name="FONT"> <value>18</value> </item>
+ <item name="INTEGER"> <value>19</value> </item>
+ <item name="PIXMAP"> <value>20</value> </item>
+ <item name="POINT"> <value>21</value> </item>
+ <item name="RECTANGLE"> <value>22</value> </item>
+ <item name="RESOURCE_MANAGER"> <value>23</value> </item>
+ <item name="RGB_COLOR_MAP"> <value>24</value> </item>
+ <item name="RGB_BEST_MAP"> <value>25</value> </item>
+ <item name="RGB_BLUE_MAP"> <value>26</value> </item>
+ <item name="RGB_DEFAULT_MAP"> <value>27</value> </item>
+ <item name="RGB_GRAY_MAP"> <value>28</value> </item>
+ <item name="RGB_GREEN_MAP"> <value>29</value> </item>
+ <item name="RGB_RED_MAP"> <value>30</value> </item>
+ <item name="STRING"> <value>31</value> </item>
+ <item name="VISUALID"> <value>32</value> </item>
+ <item name="WINDOW"> <value>33</value> </item>
+ <item name="WM_COMMAND"> <value>34</value> </item>
+ <item name="WM_HINTS"> <value>35</value> </item>
+ <item name="WM_CLIENT_MACHINE"> <value>36</value> </item>
+ <item name="WM_ICON_NAME"> <value>37</value> </item>
+ <item name="WM_ICON_SIZE"> <value>38</value> </item>
+ <item name="WM_NAME"> <value>39</value> </item>
+ <item name="WM_NORMAL_HINTS"> <value>40</value> </item>
+ <item name="WM_SIZE_HINTS"> <value>41</value> </item>
+ <item name="WM_ZOOM_HINTS"> <value>42</value> </item>
+ <item name="MIN_SPACE"> <value>43</value> </item>
+ <item name="NORM_SPACE"> <value>44</value> </item>
+ <item name="MAX_SPACE"> <value>45</value> </item>
+ <item name="END_SPACE"> <value>46</value> </item>
+ <item name="SUPERSCRIPT_X"> <value>47</value> </item>
+ <item name="SUPERSCRIPT_Y"> <value>48</value> </item>
+ <item name="SUBSCRIPT_X"> <value>49</value> </item>
+ <item name="SUBSCRIPT_Y"> <value>50</value> </item>
+ <item name="UNDERLINE_POSITION"> <value>51</value> </item>
+ <item name="UNDERLINE_THICKNESS"> <value>52</value> </item>
+ <item name="STRIKEOUT_ASCENT"> <value>53</value> </item>
+ <item name="STRIKEOUT_DESCENT"> <value>54</value> </item>
+ <item name="ITALIC_ANGLE"> <value>55</value> </item>
+ <item name="X_HEIGHT"> <value>56</value> </item>
+ <item name="QUAD_WIDTH"> <value>57</value> </item>
+ <item name="WEIGHT"> <value>58</value> </item>
+ <item name="POINT_SIZE"> <value>59</value> </item>
+ <item name="RESOLUTION"> <value>60</value> </item>
+ <item name="COPYRIGHT"> <value>61</value> </item>
+ <item name="NOTICE"> <value>62</value> </item>
+ <item name="FONT_NAME"> <value>63</value> </item>
+ <item name="FAMILY_NAME"> <value>64</value> </item>
+ <item name="FULL_NAME"> <value>65</value> </item>
+ <item name="CAP_HEIGHT"> <value>66</value> </item>
+ <item name="WM_CLASS"> <value>67</value> </item>
+ <item name="WM_TRANSIENT_FOR"> <value>68</value> </item>
</enum>
<event name="SelectionRequest" number="30">
@@ -1080,7 +1080,21 @@ The number of keycodes altered.
</doc>
</event>
-
+ <event name="GeGeneric" number="35" xge="true">
+ <pad bytes="22" />
+ <doc>
+ <brief>generic event (with length)</brief>
+ <field name="extension"><![CDATA[
+The major opcode of the extension creating this event
+ ]]></field>
+ <field name="length"><![CDATA[
+The amount (in 4-byte units) of data beyond 32 bytes
+ ]]></field>
+ <field name="evtype"><![CDATA[
+The extension-specific event type
+ ]]></field>
+ </doc>
+ </event>
<!-- Core error types -->
@@ -3404,7 +3418,7 @@ The number of characters in `string`.
<field name="string"><![CDATA[
The text to get text extents for.
]]></field>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified graphics context does not exist.
]]></error>
<error type="Font"><![CDATA[
@@ -3953,7 +3967,7 @@ example.
<error type="Font"><![CDATA[
TODO: reasons?
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
TODO: reasons?
]]></error>
<error type="Match"><![CDATA[
@@ -4012,7 +4026,7 @@ The X server could not allocate the requested resources (no memory?).
Destroys the specified `gc` and all associated storage.
]]></description>
<field name="gc"><![CDATA[The graphics context to destroy.]]></field>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified graphics context does not exist.
]]></error>
</doc>
@@ -4073,7 +4087,7 @@ The height of the area to copy (in pixels).
<error type="Drawable"><![CDATA[
The specified `drawable` (Window or Pixmap) does not exist.
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified graphics context does not exist.
]]></error>
<error type="Match"><![CDATA[
@@ -4162,7 +4176,7 @@ An array of points.
<error type="Drawable"><![CDATA[
TODO: reasons?
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
TODO: reasons?
]]></error>
<error type="Match"><![CDATA[
@@ -4216,7 +4230,7 @@ An array of `xcb_segment_t` structures.
<error type="Drawable"><![CDATA[
The specified `drawable` does not exist.
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified `gc` does not exist.
]]></error>
<error type="Match"><![CDATA[
@@ -4294,7 +4308,7 @@ The rectangles to fill.
<error type="Drawable"><![CDATA[
The specified `drawable` (Window or Pixmap) does not exist.
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified graphics context does not exist.
]]></error>
<error type="Match"><![CDATA[
@@ -4417,7 +4431,7 @@ background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
<error type="Drawable"><![CDATA[
The specified `drawable` (Window or Pixmap) does not exist.
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified graphics context does not exist.
]]></error>
<error type="Match"><![CDATA[
@@ -4475,7 +4489,7 @@ background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
<error type="Drawable"><![CDATA[
The specified `drawable` (Window or Pixmap) does not exist.
]]></error>
- <error type="GC"><![CDATA[
+ <error type="GContext"><![CDATA[
The specified graphics context does not exist.
]]></error>
<error type="Match"><![CDATA[
diff --git a/src/xtest.xml b/src/xtest.xml
index 7f0b262..085d3a3 100644
--- a/src/xtest.xml
+++ b/src/xtest.xml
@@ -27,8 +27,7 @@ authorization from the authors.
-->
<xcb header="xtest" extension-xname="XTEST" extension-name="Test"
- major-version="2" minor-version="1">
- <!-- Conforms to XTEST 2.1 -->
+ major-version="2" minor-version="2">
<import>xproto</import>
diff --git a/src/xv.xml b/src/xv.xml
index d2bfc29..0b55d36 100644
--- a/src/xv.xml
+++ b/src/xv.xml
@@ -44,13 +44,13 @@ authorization from the authors.
</enum>
<enum name="ImageFormatInfoType">
- <item name="RGB" />
- <item name="YUV" />
+ <item name="RGB"> <value>0</value> </item>
+ <item name="YUV"> <value>1</value> </item>
</enum>
<enum name="ImageFormatInfoFormat">
- <item name="Packed" />
- <item name="Planar" />
+ <item name="Packed"> <value>0</value> </item>
+ <item name="Planar"> <value>1</value> </item>
</enum>
<enum name="AttributeFlag">
@@ -59,25 +59,25 @@ authorization from the authors.
</enum>
<enum name="VideoNotifyReason">
- <item name="Started" />
- <item name="Stopped" />
- <item name="Busy" />
- <item name="Preempted" />
- <item name="HardError" />
+ <item name="Started"> <value>0</value> </item>
+ <item name="Stopped"> <value>1</value> </item>
+ <item name="Busy"> <value>2</value> </item>
+ <item name="Preempted"> <value>3</value> </item>
+ <item name="HardError"> <value>4</value> </item>
</enum>
<enum name="ScanlineOrder">
- <item name="TopToBottom" />
- <item name="BottomToTop" />
+ <item name="TopToBottom"> <value>0</value> </item>
+ <item name="BottomToTop"> <value>1</value> </item>
</enum>
<enum name="GrabPortStatus">
- <item name="Success" />
- <item name="BadExtension" />
- <item name="AlreadyGrabbed" />
- <item name="InvalidTime" />
- <item name="BadReply" />
- <item name="BadAlloc" />
+ <item name="Success"> <value>0</value> </item>
+ <item name="BadExtension"> <value>1</value> </item>
+ <item name="AlreadyGrabbed"> <value>2</value> </item>
+ <item name="InvalidTime"> <value>3</value> </item>
+ <item name="BadReply"> <value>4</value> </item>
+ <item name="BadAlloc"> <value>5</value> </item>
</enum>
<struct name="Rational">
@@ -112,10 +112,6 @@ authorization from the authors.
<field type="CARD16" name="name_size" />
<field type="CARD16" name="width" />
<field type="CARD16" name="height" />
- <!--
- Some versions of Xvproto.h incorrectly have
- this padding after "rate".
- -->
<pad bytes="2" />
<field type="Rational" name="rate" />
<list type="char" name="name">
@@ -234,10 +230,6 @@ authorization from the authors.
<reply>
<pad bytes="1" />
<field type="CARD16" name="num_encodings" />
- <!--
- In Xvproto.h this padding is 24 bytes
- in actuality it is 22 bytes
- -->
<pad bytes="22" />
<list type="EncodingInfo" name="info">
<fieldref>num_encodings</fieldref>