summaryrefslogtreecommitdiff
path: root/elpa/xelb-0.20
diff options
context:
space:
mode:
authorthing1 <thing1@seacrossedlovers.xyz>2025-04-01 18:10:15 +0000
committerthing1 <thing1@seacrossedlovers.xyz>2025-04-01 18:10:15 +0000
commitdabaff03992c102c395314629f63ce93a2c1bd3a (patch)
tree990472507186637085165b7cbbf7abf15c10889a /elpa/xelb-0.20
init commit
Diffstat (limited to 'elpa/xelb-0.20')
-rw-r--r--elpa/xelb-0.20/.elpaignore2
-rw-r--r--elpa/xelb-0.20/Makefile30
-rw-r--r--elpa/xelb-0.20/xcb-bigreq.el48
-rw-r--r--elpa/xelb-0.20/xcb-bigreq.elcbin0 -> 2572 bytes
-rw-r--r--elpa/xelb-0.20/xcb-composite.el116
-rw-r--r--elpa/xelb-0.20/xcb-composite.elcbin0 -> 14810 bytes
-rw-r--r--elpa/xelb-0.20/xcb-cursor.el432
-rw-r--r--elpa/xelb-0.20/xcb-cursor.elcbin0 -> 16520 bytes
-rw-r--r--elpa/xelb-0.20/xcb-damage.el112
-rw-r--r--elpa/xelb-0.20/xcb-damage.elcbin0 -> 10523 bytes
-rw-r--r--elpa/xelb-0.20/xcb-dbe.el162
-rw-r--r--elpa/xelb-0.20/xcb-dbe.elcbin0 -> 20199 bytes
-rw-r--r--elpa/xelb-0.20/xcb-debug.el135
-rw-r--r--elpa/xelb-0.20/xcb-debug.elcbin0 -> 4049 bytes
-rw-r--r--elpa/xelb-0.20/xcb-dpms.el134
-rw-r--r--elpa/xelb-0.20/xcb-dpms.elcbin0 -> 16720 bytes
-rw-r--r--elpa/xelb-0.20/xcb-dri2.el322
-rw-r--r--elpa/xelb-0.20/xcb-dri2.elcbin0 -> 38624 bytes
-rw-r--r--elpa/xelb-0.20/xcb-dri3.el228
-rw-r--r--elpa/xelb-0.20/xcb-dri3.elcbin0 -> 25029 bytes
-rw-r--r--elpa/xelb-0.20/xcb-ewmh.el752
-rw-r--r--elpa/xelb-0.20/xcb-ewmh.elcbin0 -> 172168 bytes
-rw-r--r--elpa/xelb-0.20/xcb-ge.el52
-rw-r--r--elpa/xelb-0.20/xcb-ge.elcbin0 -> 2827 bytes
-rw-r--r--elpa/xelb-0.20/xcb-glx.el1861
-rw-r--r--elpa/xelb-0.20/xcb-glx.elcbin0 -> 244469 bytes
-rw-r--r--elpa/xelb-0.20/xcb-icccm.el563
-rw-r--r--elpa/xelb-0.20/xcb-icccm.elcbin0 -> 83243 bytes
-rw-r--r--elpa/xelb-0.20/xcb-keysyms.el813
-rw-r--r--elpa/xelb-0.20/xcb-keysyms.elcbin0 -> 23234 bytes
-rw-r--r--elpa/xelb-0.20/xcb-present.el269
-rw-r--r--elpa/xelb-0.20/xcb-present.elcbin0 -> 22975 bytes
-rw-r--r--elpa/xelb-0.20/xcb-randr.el1121
-rw-r--r--elpa/xelb-0.20/xcb-randr.elcbin0 -> 129377 bytes
-rw-r--r--elpa/xelb-0.20/xcb-record.el213
-rw-r--r--elpa/xelb-0.20/xcb-record.elcbin0 -> 23776 bytes
-rw-r--r--elpa/xelb-0.20/xcb-render.el763
-rw-r--r--elpa/xelb-0.20/xcb-render.elcbin0 -> 80990 bytes
-rw-r--r--elpa/xelb-0.20/xcb-renderutil.el296
-rw-r--r--elpa/xelb-0.20/xcb-renderutil.elcbin0 -> 6116 bytes
-rw-r--r--elpa/xelb-0.20/xcb-res.el195
-rw-r--r--elpa/xelb-0.20/xcb-res.elcbin0 -> 24403 bytes
-rw-r--r--elpa/xelb-0.20/xcb-screensaver.el164
-rw-r--r--elpa/xelb-0.20/xcb-screensaver.elcbin0 -> 14144 bytes
-rw-r--r--elpa/xelb-0.20/xcb-shape.el187
-rw-r--r--elpa/xelb-0.20/xcb-shape.elcbin0 -> 19933 bytes
-rw-r--r--elpa/xelb-0.20/xcb-shm.el170
-rw-r--r--elpa/xelb-0.20/xcb-shm.elcbin0 -> 17179 bytes
-rw-r--r--elpa/xelb-0.20/xcb-sync.el340
-rw-r--r--elpa/xelb-0.20/xcb-sync.elcbin0 -> 43152 bytes
-rw-r--r--elpa/xelb-0.20/xcb-systemtray.el142
-rw-r--r--elpa/xelb-0.20/xcb-systemtray.elcbin0 -> 17200 bytes
-rw-r--r--elpa/xelb-0.20/xcb-types.el912
-rw-r--r--elpa/xelb-0.20/xcb-types.elcbin0 -> 43304 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xc_misc.el79
-rw-r--r--elpa/xelb-0.20/xcb-xc_misc.elcbin0 -> 7797 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xembed.el184
-rw-r--r--elpa/xelb-0.20/xcb-xembed.elcbin0 -> 23705 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xevie.el105
-rw-r--r--elpa/xelb-0.20/xcb-xevie.elcbin0 -> 12951 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xf86dri.el213
-rw-r--r--elpa/xelb-0.20/xcb-xf86dri.elcbin0 -> 30241 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xf86vidmode.el550
-rw-r--r--elpa/xelb-0.20/xcb-xf86vidmode.elcbin0 -> 59762 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xfixes.el454
-rw-r--r--elpa/xelb-0.20/xcb-xfixes.elcbin0 -> 59786 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xim.el1022
-rw-r--r--elpa/xelb-0.20/xcb-xim.elcbin0 -> 109424 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xinerama.el123
-rw-r--r--elpa/xelb-0.20/xcb-xinerama.elcbin0 -> 16426 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xinput.el2976
-rw-r--r--elpa/xelb-0.20/xcb-xinput.elcbin0 -> 313511 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xkb.el2315
-rw-r--r--elpa/xelb-0.20/xcb-xkb.elcbin0 -> 180900 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xlib.el112
-rw-r--r--elpa/xelb-0.20/xcb-xlib.elcbin0 -> 3497 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xprint.el414
-rw-r--r--elpa/xelb-0.20/xcb-xprint.elcbin0 -> 57439 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xproto.el3012
-rw-r--r--elpa/xelb-0.20/xcb-xproto.elcbin0 -> 312700 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xselinux.el392
-rw-r--r--elpa/xelb-0.20/xcb-xselinux.elcbin0 -> 56236 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xsettings.el88
-rw-r--r--elpa/xelb-0.20/xcb-xsettings.elcbin0 -> 7091 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xtest.el87
-rw-r--r--elpa/xelb-0.20/xcb-xtest.elcbin0 -> 7844 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xv.el523
-rw-r--r--elpa/xelb-0.20/xcb-xv.elcbin0 -> 56159 bytes
-rw-r--r--elpa/xelb-0.20/xcb-xvmc.el188
-rw-r--r--elpa/xelb-0.20/xcb-xvmc.elcbin0 -> 22009 bytes
-rw-r--r--elpa/xelb-0.20/xcb.el883
-rw-r--r--elpa/xelb-0.20/xcb.elcbin0 -> 29081 bytes
-rw-r--r--elpa/xelb-0.20/xelb-autoloads.el253
-rwxr-xr-xelpa/xelb-0.20/xelb-gen726
-rw-r--r--elpa/xelb-0.20/xelb-pkg.el2
-rw-r--r--elpa/xelb-0.20/xelb-test.el96
-rw-r--r--elpa/xelb-0.20/xelb-test.elcbin0 -> 3209 bytes
-rw-r--r--elpa/xelb-0.20/xelb.el70
-rw-r--r--elpa/xelb-0.20/xelb.elcbin0 -> 149 bytes
99 files changed, 25401 insertions, 0 deletions
diff --git a/elpa/xelb-0.20/.elpaignore b/elpa/xelb-0.20/.elpaignore
new file mode 100644
index 0000000..f0f644e
--- /dev/null
+++ b/elpa/xelb-0.20/.elpaignore
@@ -0,0 +1,2 @@
+LICENSE
+README.md
diff --git a/elpa/xelb-0.20/Makefile b/elpa/xelb-0.20/Makefile
new file mode 100644
index 0000000..2d56356
--- /dev/null
+++ b/elpa/xelb-0.20/Makefile
@@ -0,0 +1,30 @@
+PROTO_PATH := /usr/share/xcb
+
+EXTENSIONS := bigreq composite damage dbe dpms dri2 dri3 ge glx present randr \
+record render res screensaver shape shm sync xc_misc xevie xf86dri \
+xf86vidmode xfixes xinerama xinput xkb xprint xselinux xtest xvmc xv
+
+EXT_LIBS = $(addprefix xcb-,$(addsuffix .el,$(EXTENSIONS)))
+LIBS = xcb-xproto.el $(EXT_LIBS)
+
+all: clean $(LIBS)
+
+xcb-%.el: $(PROTO_PATH)/%.xml
+ @echo -n "\n"Generating $@...
+ @./xelb-gen $< > $@
+
+$(EXT_LIBS): xcb-xproto.el
+
+xcb-composite.el: xcb-xfixes.el
+xcb-damage.el: xcb-xfixes.el
+xcb-present.el: xcb-randr.el xcb-xfixes.el xcb-sync.el
+xcb-randr.el: xcb-render.el
+xcb-xfixes.el: xcb-render.el xcb-shape.el
+xcb-xinput.el: xcb-xfixes.el
+xcb-xvmc.el: xcb-xv.el
+xcb-xv.el: xcb-shm.el
+
+.PHONY: clean
+
+clean:
+ @rm -vf $(LIBS)
diff --git a/elpa/xelb-0.20/xcb-bigreq.el b/elpa/xelb-0.20/xcb-bigreq.el
new file mode 100644
index 0000000..e263413
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-bigreq.el
@@ -0,0 +1,48 @@
+;;; xcb-bigreq.el --- X11 BigRequests extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'bigreq.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:bigreq:-extension-xname "BIG-REQUESTS")
+(defconst xcb:bigreq:-extension-name "BigRequests")
+(defconst xcb:bigreq:-major-version 0)
+(defconst xcb:bigreq:-minor-version 0)
+
+(defclass xcb:bigreq:Enable
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:bigreq:Enable~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (maximum-request-length :initarg :maximum-request-length :type xcb:CARD32)))
+
+
+
+(provide 'xcb-bigreq)
+
+;;; xcb-bigreq.el ends here
diff --git a/elpa/xelb-0.20/xcb-bigreq.elc b/elpa/xelb-0.20/xcb-bigreq.elc
new file mode 100644
index 0000000..4963805
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-bigreq.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-composite.el b/elpa/xelb-0.20/xcb-composite.el
new file mode 100644
index 0000000..66d30f1
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-composite.el
@@ -0,0 +1,116 @@
+;;; xcb-composite.el --- X11 Composite extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'composite.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:composite:-extension-xname "Composite")
+(defconst xcb:composite:-extension-name "Composite")
+(defconst xcb:composite:-major-version 0)
+(defconst xcb:composite:-minor-version 4)
+
+(require 'xcb-xproto)
+
+(require 'xcb-xfixes)
+
+(defconst xcb:composite:Redirect:Automatic 0)
+(defconst xcb:composite:Redirect:Manual 1)
+
+(defclass xcb:composite:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD32)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD32)))
+(defclass xcb:composite:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:composite:RedirectWindow
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (update :initarg :update :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:composite:RedirectSubwindows
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (update :initarg :update :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:composite:UnredirectWindow
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (update :initarg :update :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:composite:UnredirectSubwindows
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (update :initarg :update :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:composite:CreateRegionFromBorderClip
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:composite:NameWindowPixmap
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)))
+
+(defclass xcb:composite:GetOverlayWindow
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:composite:GetOverlayWindow~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (overlay-win :initarg :overlay-win :type xcb:WINDOW)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:composite:ReleaseOverlayWindow
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+
+
+
+(provide 'xcb-composite)
+
+;;; xcb-composite.el ends here
diff --git a/elpa/xelb-0.20/xcb-composite.elc b/elpa/xelb-0.20/xcb-composite.elc
new file mode 100644
index 0000000..09eab9b
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-composite.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-cursor.el b/elpa/xelb-0.20/xcb-cursor.el
new file mode 100644
index 0000000..f0a3243
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-cursor.el
@@ -0,0 +1,432 @@
+;;; xcb-cursor.el --- Port of Xcursor -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library is a port of Xcursor in Xlib, and roughly corresponds to the
+;; xcb/util-cursor project.
+
+;; Usage tips:
+;; + Do not forget to call `xcb:cursor:init' for _every_ connection using this
+;; library.
+;; + The only useful method in this library is `xcb:cursor:load-cursor', which
+;; loads a cursor by its name (e.g. "left_ptr"), in the following order:
+;; 1. themed cursor
+;; 2. inherited themed cursor
+;; 3. standard X cursor
+
+;; Todo:
+;; + Add legacy support for RENDER.
+;; + Cursor should be set per screen (only the first is used right now).
+;; + Move codes corresponding to xcb/util-renderutil or xcb/util-image
+;; elsewhere.
+
+;; References:
+;; + Xcursor(3).
+;; + xcb/util-cursor (git://anongit.freedesktop.org/xcb/util-cursor)
+;; + xcb/util-renderutil (git://anongit.freedesktop.org/xcb/util-renderutil)
+;; + xcb/util-image (git://anongit.freedesktop.org/xcb/util-image)
+
+;;; Code:
+
+(eval-when-compile (require 'cl-lib))
+(require 'xcb)
+(require 'xcb-render)
+
+;; FIXME: check if resource manager really works
+(cl-defmethod xcb:cursor:init ((obj xcb:connection))
+ "Initialize Xcursor for connection OBJ."
+ ;; Initialize resource manager
+ (let* ((root (slot-value (car (slot-value (xcb:get-setup obj) 'roots))
+ 'root))
+ (rm (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:GetProperty
+ :delete 0 :window root
+ :property xcb:Atom:RESOURCE_MANAGER
+ :type xcb:Atom:STRING
+ :long-offset 0
+ :long-length 16384))) ;FIXME: xcb/util-cursor
+ (rm (split-string
+ (decode-coding-string
+ (apply #'unibyte-string (append (slot-value rm 'value) nil))
+ 'iso-latin-1)
+ "\n"))
+ theme size dpi)
+ (dolist (i rm)
+ (pcase (replace-regexp-in-string "^\\(\\S-+\\)" "\\1" i)
+ ("Xcursor.theme"
+ (setq theme
+ (replace-regexp-in-string "^[^:]+:\\s-*\\(.+$\\)" "\\1" i)))
+ ("Xcursor.size"
+ (setq size
+ (string-to-number
+ (replace-regexp-in-string "^[^:]+:\\s-*\\(.+$\\)" "\\1" i))))
+ ("Xft.dpi"
+ (setq dpi
+ (string-to-number
+ (replace-regexp-in-string "^[^:]+:\\s-*\\(.+$\\)" "\\1" i))))))
+ ;; Get cursor size from XCURSOR_SIZE environment variable
+ (let ((default-size (getenv "XCURSOR_SIZE")))
+ (when default-size
+ (setq default-size (string-to-number default-size)))
+ (setq size (or default-size size)))
+ ;; Alternatives
+ (when (and (not size) dpi)
+ (setq size (/ (* dpi 16) 72))) ;FIXME: xcb/util-cursor
+ (unless size
+ (setq size
+ ;; FIXME: xcb/util-cursor
+ (/ (min (x-display-pixel-width) (x-display-pixel-height)) 48)))
+ ;; Save default values
+ (let ((plist (plist-get (slot-value obj 'extra-plist) 'cursor)))
+ (setq plist (plist-put plist 'theme theme)
+ plist (plist-put plist 'size size))
+ (setf (slot-value obj 'extra-plist)
+ (plist-put (slot-value obj 'extra-plist) 'cursor plist))))
+ ;; Initialize render extension
+ (if (= 0 (slot-value (xcb:get-extension-data obj 'xcb:render) 'present))
+ (error "[XELB:CURSOR] Render extension is not supported by this server")
+ (with-slots (minor-version)
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:render:QueryVersion
+ :client-major-version 0 :client-minor-version 8))
+ (if (> 8 minor-version)
+ (error "[XELB:CURSOR] Render version 0.8 is not supported")
+ (let* ((formats
+ (slot-value (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:render:QueryPictFormats))
+ 'formats))
+ (format (catch 'break
+ (dolist (i formats)
+ (with-slots (type depth direct) i
+ (with-slots (red-shift red-mask
+ green-shift green-mask
+ blue-shift blue-mask
+ alpha-shift alpha-mask)
+ direct
+ ;; FIXME: xcb/util-renderutil
+ (when (and (= type xcb:render:PictType:Direct)
+ (= depth 32)
+ (= red-shift 16) (= red-mask #xFF)
+ (= green-shift 8) (= green-mask #xFF)
+ (= blue-shift 0) (= blue-mask #xFF)
+ (= alpha-shift 24)
+ (= alpha-mask #xFF))
+ (throw 'break i)))))))
+ (plist (plist-get (slot-value obj 'extra-plist) 'cursor)))
+ (setf (slot-value obj 'extra-plist)
+ (plist-put (slot-value obj 'extra-plist) 'cursor
+ (plist-put plist 'pict-format format))))))))
+
+(defsubst xcb:cursor:-get-path ()
+ "Return a list of cursor paths."
+ (let ((path (getenv "XCURSOR_PATH")))
+ (if path
+ (split-string path ":" t)
+ '("~/.icons"
+ "/usr/share/icons"
+ "/usr/share/pixmaps"
+ "/usr/X11R6/lib/X11/icons"))))
+
+(defun xcb:cursor:-get-theme-inherits (file)
+ "Return the inherited themes in a index.theme file FILE."
+ (let ((lines (with-temp-buffer
+ (insert-file-contents file)
+ (split-string (buffer-string) "\n" t))))
+ (catch 'break
+ (dolist (line lines)
+ (when (string-match "^Inherits\\s-*=\\s-*" line)
+ (throw 'break
+ (split-string (replace-regexp-in-string "^[^=]+=\\(.*\\)$"
+ "\\1" line)
+ "[;, \t\n]+" t)))))))
+
+(defsubst xcb:cursor:-shape->id (name)
+ "Return the standard Xcursor font for cursor named NAME."
+ ;; Standard X cursor fonts are defined in Emacs
+ (intern-soft (concat "x-pointer-" (replace-regexp-in-string "_" "-" name))))
+
+(defun xcb:cursor:-find-file (theme name &optional skip)
+ "Return the file for cursor named NAME in theme THEME, or nil if not found."
+ (catch 'return
+ ;; Skip searched themes
+ (when (memq theme skip)
+ (throw 'return nil))
+ ;; Give up when supplied "core" theme and a valid cursor name
+ (when (and (string= "core" theme) (xcb:cursor:-shape->id name))
+ (throw 'return nil))
+ (let ((path (xcb:cursor:-get-path))
+ file)
+ ;; 1. try THEME/cursors/NAME in each cursor path
+ (dolist (i path)
+ (setq file (concat i "/" theme "/cursors/" name))
+ (when (file-readable-p file)
+ (throw 'return file)))
+ ;; 2. try "Inherits=" key in "index.theme"
+ (dolist (i path)
+ (setq file (concat i "/" theme "/index.theme"))
+ (when (file-readable-p file)
+ (cl-pushnew theme skip)
+ ;; try all inherited themes
+ (dolist (j (xcb:cursor:-get-theme-inherits file))
+ (setq file (xcb:cursor:-find-file j name skip))
+ (when file
+ (throw 'return file))
+ (cl-pushnew j skip)))))
+ nil))
+
+(defconst xcb:cursor:-file-magic-lsb "Xcur"
+ "The magic number for little-endian Xcursor file.")
+(defconst xcb:cursor:-file-magic-msb "rucX"
+ "The magic number for big-endian Xcursor file.")
+
+(defclass xcb:cursor:-file-header (xcb:-struct)
+ ((magic :type xcb:CARD32)
+ (header :type xcb:CARD32)
+ (version :type xcb:CARD32)
+ (ntoc :type xcb:CARD32)) ;redundant, required for calculating TOC bytes
+ :documentation "Xcursor file header.")
+
+(defclass xcb:cursor:-file-header-toc (xcb:-struct)
+ ((ntoc :type xcb:CARD32) ;redundant slot
+ (toc :type xcb:-ignore)
+ (toc~ :initform '(name toc type xcb:cursor:-file-toc
+ size (xcb:-fieldref 'ntoc))
+ :type xcb:-list))
+ :documentation "The TOC field in Xcursor file header.")
+
+(defclass xcb:cursor:-file-toc (xcb:-struct)
+ ((type :type xcb:CARD32)
+ (subtype :type xcb:CARD32)
+ (position :type xcb:CARD32))
+ :documentation "Xcursor file TOC entry.")
+
+(defclass xcb:cursor:-file-chunk-header (xcb:-struct)
+ ((header :type xcb:CARD32)
+ (type :type xcb:CARD32)
+ (subtype :type xcb:CARD32)
+ (version :type xcb:CARD32)
+ (width :type xcb:CARD32) ;redundant, required for calculating image bytes
+ (height :type xcb:CARD32)) ;redundant, required for calculating image bytes
+ :documentation "Xcursor file chunk header.")
+
+(defconst xcb:cursor:-file-chunk-image-header 36
+ "Header value of image-type chunk in Xcursor file.")
+(defconst xcb:cursor:-file-chunk-image-type 4294770690.
+ "Type of image-type chunk in Xcursor file.")
+(defconst xcb:cursor:-file-chunk-image-version 1
+ "Version of image-type chunk in Xcursor file.")
+
+(defclass xcb:cursor:-file-chunk-image (xcb:-struct)
+ ((width :type xcb:CARD32) ;<= #x7FFF, redundant
+ (height :type xcb:CARD32) ;<= #x7FFF, redundant
+ (xhot :type xcb:CARD32) ;<= width
+ (yhot :type xcb:CARD32) ;<= height
+ (delay :type xcb:CARD32) ;in ms
+ (pixels :type xcb:-ignore)
+ (pixels~ :initform '(name pixels type xcb:CARD32
+ size (* (xcb:-fieldref 'width)
+ (xcb:-fieldref 'height)))
+ :type xcb:-list))
+ :documentation "Image-type chunk in Xcursor file.")
+
+(cl-defmethod xcb:cursor:-parse-file ((obj xcb:connection) path)
+ "Parse an Xcursor file named PATH."
+ (catch 'return
+ (let ((data (let ((coding-system-for-read 'binary))
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-file-contents path) (buffer-string))))
+ xcb:lsb ;override global byte order
+ best-size chunks
+ magic file-header file-header-toc chunk-header chunk)
+ ;; Determine byte order
+ (setq magic (substring data 0 4))
+ (if (string= xcb:cursor:-file-magic-lsb magic)
+ (setq xcb:lsb t) ;LSB first
+ (if (string= xcb:cursor:-file-magic-msb magic)
+ (setq xcb:lsb nil) ;MSB first
+ (throw 'return nil)))
+ (setq file-header (make-instance 'xcb:cursor:-file-header))
+ ;;
+ (xcb:unmarshal file-header (substring data 0 16))
+ ;; FIXME: checks
+ (setq file-header-toc (make-instance 'xcb:cursor:-file-header-toc))
+ (xcb:unmarshal file-header-toc
+ (substring data 12 (+ 16 (* 12 (slot-value file-header
+ 'ntoc)))))
+ (with-slots (toc) file-header-toc
+ (let ((target (plist-get
+ (plist-get (slot-value obj 'extra-plist) 'cursor)
+ 'size)))
+ (catch 'break
+ (dolist (i toc)
+ (with-slots (type subtype) i
+ (when (= type xcb:cursor:-file-chunk-image-type)
+ (when (= target subtype)
+ (setq best-size target)
+ (throw 'break nil))
+ (when (or (not best-size)
+ (> (abs (- target best-size))
+ (abs (- target subtype))))
+ (setq best-size subtype)))))))
+ ;; Collect chunks fitting this size
+ (setq chunk-header (make-instance 'xcb:cursor:-file-chunk-header))
+ (dolist (i toc)
+ (with-slots (type subtype position) i
+ (when (and (= type xcb:cursor:-file-chunk-image-type)
+ (= subtype best-size))
+ (xcb:unmarshal chunk-header (substring data position
+ (+ position 24)))
+ ;; Validate the header of this chunk
+ (with-slots (header type subtype version) chunk-header
+ (when (or (/= header xcb:cursor:-file-chunk-image-header)
+ (/= type xcb:cursor:-file-chunk-image-type)
+ (/= subtype best-size)
+ (/= version xcb:cursor:-file-chunk-image-version))
+ (throw 'return nil)))
+ ;; Parse this chunk
+ (setq chunk (make-instance 'xcb:cursor:-file-chunk-image))
+ (xcb:unmarshal chunk (substring data (+ position 16)
+ (+ position 36
+ (* 4
+ (slot-value chunk-header
+ 'width)
+ (slot-value chunk-header
+ 'height)))))
+ (setq chunks (nconc chunks (list chunk))))))
+ (list xcb:lsb chunks)))))
+
+(cl-defmethod xcb:cursor:-load-cursor ((obj xcb:connection) file)
+ "Load a cursor file FILE."
+ (let* ((images (xcb:cursor:-parse-file obj file))
+ (lsb (car images))
+ (images (cadr images))
+ (root (slot-value (car (slot-value (xcb:get-setup obj) 'roots))
+ 'root))
+ (picture (xcb:generate-id obj))
+ (pict-format (slot-value
+ (plist-get
+ (plist-get (slot-value obj 'extra-plist) 'cursor)
+ 'pict-format)
+ 'id))
+ pixmap gc cursors cursor last-width last-height)
+ (dolist (image images)
+ (with-slots (width height xhot yhot delay pixels) image
+ (when (or (not pixmap) (/= last-width width) (/= last-height height))
+ (if pixmap
+ (progn (xcb:+request obj (make-instance 'xcb:FreePixmap
+ :pixmap pixmap))
+ (xcb:+request obj (make-instance 'xcb:FreeGC :gc gc)))
+ (setq pixmap (xcb:generate-id obj)
+ gc (xcb:generate-id obj)))
+ (xcb:+request obj (make-instance 'xcb:CreatePixmap
+ :depth 32 :pid pixmap :drawable root
+ :width width :height height))
+ (xcb:+request obj (make-instance 'xcb:CreateGC
+ :cid gc :drawable pixmap
+ :value-mask 0))
+ (setq last-width width
+ last-height height))
+ (xcb:+request obj (make-instance 'xcb:PutImage
+ :format xcb:ImageFormat:ZPixmap
+ :drawable pixmap
+ :gc gc
+ :width width
+ :height height
+ :dst-x 0
+ :dst-y 0
+ :left-pad 0
+ :depth 32
+ :data (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (mapconcat
+ (if lsb #'xcb:-pack-u4-lsb
+ #'xcb:-pack-u4)
+ pixels []))))
+ (xcb:+request obj (make-instance 'xcb:render:CreatePicture
+ :pid picture
+ :drawable pixmap
+ :format pict-format
+ :value-mask 0))
+ (setq cursor (xcb:generate-id obj)
+ cursors (nconc cursors
+ (list (make-instance 'xcb:render:ANIMCURSORELT
+ :cursor cursor
+ :delay delay))))
+ (xcb:+request obj (make-instance 'xcb:render:CreateCursor
+ :cid cursor
+ :source picture
+ :x xhot :y yhot))
+ (xcb:+request obj (make-instance 'xcb:render:FreePicture
+ :picture picture))))
+ (xcb:+request obj (make-instance 'xcb:FreePixmap :pixmap pixmap))
+ (xcb:+request obj (make-instance 'xcb:FreeGC :gc gc))
+ (xcb:flush obj)
+ (if (= 1 (length cursors))
+ ;; Non-animated cursor
+ (slot-value (car cursors) 'cursor)
+ ;; Animated cursor
+ (setq cursor (xcb:generate-id obj))
+ (xcb:+request obj (make-instance 'xcb:render:CreateAnimCursor
+ :cid cursor
+ :cursors (vconcat cursors)))
+ (dolist (i cursors)
+ (xcb:+request obj (make-instance 'xcb:FreeCursor
+ :cursor (slot-value i 'cursor))))
+ (xcb:flush obj)
+ cursor)))
+
+(cl-defmethod xcb:cursor:load-cursor ((obj xcb:connection) name)
+ "Return a cursor whose name is NAME."
+ (let* ((theme (or (plist-get
+ (plist-get (slot-value obj 'extra-plist) 'cursor) 'theme)
+ "default"))
+ (file (xcb:cursor:-find-file theme name)))
+ (if file
+ (xcb:cursor:-load-cursor obj file)
+ ;; Fallback to standard X cursors
+ (let ((pointer (xcb:cursor:-shape->id name))
+ (cursor xcb:Cursor:None)
+ font)
+ (when (boundp pointer)
+ (setq pointer (symbol-value pointer)
+ font (xcb:generate-id obj)
+ cursor (xcb:generate-id obj))
+ (xcb:+request obj
+ (make-instance 'xcb:OpenFont
+ :fid font :name-len (length "cursor")
+ :name "cursor"))
+ (xcb:+request obj
+ (make-instance 'xcb:CreateGlyphCursor
+ :cid cursor :source-font font :mask-font font
+ :source-char pointer :mask-char (1+ pointer)
+ :fore-red 0 :fore-green 0 :fore-blue 0
+ :back-red #xFFFF :back-green #xFFFF
+ :back-blue #xFFFF))
+ (xcb:flush obj))
+ cursor))))
+
+
+
+(provide 'xcb-cursor)
+
+;;; xcb-cursor.el ends here
diff --git a/elpa/xelb-0.20/xcb-cursor.elc b/elpa/xelb-0.20/xcb-cursor.elc
new file mode 100644
index 0000000..1e4235d
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-cursor.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-damage.el b/elpa/xelb-0.20/xcb-damage.el
new file mode 100644
index 0000000..2ae0d87
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-damage.el
@@ -0,0 +1,112 @@
+;;; xcb-damage.el --- X11 Damage extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'damage.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:damage:-extension-xname "DAMAGE")
+(defconst xcb:damage:-extension-name "Damage")
+(defconst xcb:damage:-major-version 1)
+(defconst xcb:damage:-minor-version 1)
+
+(require 'xcb-xproto)
+
+(require 'xcb-xfixes)
+
+(xcb:deftypealias 'xcb:damage:DAMAGE 'xcb:-u4)
+
+(defconst xcb:damage:ReportLevel:RawRectangles 0)
+(defconst xcb:damage:ReportLevel:DeltaRectangles 1)
+(defconst xcb:damage:ReportLevel:BoundingBox 2)
+(defconst xcb:damage:ReportLevel:NonEmpty 3)
+
+(defclass xcb:damage:BadDamage
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:damage:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD32)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD32)))
+(defclass xcb:damage:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:damage:Create
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (damage :initarg :damage :type xcb:damage:DAMAGE)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (level :initarg :level :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:damage:Destroy
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (damage :initarg :damage :type xcb:damage:DAMAGE)))
+
+(defclass xcb:damage:Subtract
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (damage :initarg :damage :type xcb:damage:DAMAGE)
+ (repair :initarg :repair :type xcb:xfixes:REGION)
+ (parts :initarg :parts :type xcb:xfixes:REGION)))
+
+(defclass xcb:damage:Add
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (region :initarg :region :type xcb:xfixes:REGION)))
+
+(defclass xcb:damage:Notify
+ (xcb:-event)
+ ((~code :initform 0)
+ (level :initarg :level :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (damage :initarg :damage :type xcb:damage:DAMAGE)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (area :initarg :area :type xcb:RECTANGLE)
+ (geometry :initarg :geometry :type xcb:RECTANGLE)))
+
+(defconst xcb:damage:error-number-class-alist
+ '((0 . xcb:damage:BadDamage))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:damage:event-number-class-alist
+ '((0 . xcb:damage:Notify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-damage)
+
+;;; xcb-damage.el ends here
diff --git a/elpa/xelb-0.20/xcb-damage.elc b/elpa/xelb-0.20/xcb-damage.elc
new file mode 100644
index 0000000..380ee35
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-damage.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-dbe.el b/elpa/xelb-0.20/xcb-dbe.el
new file mode 100644
index 0000000..5e9168a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dbe.el
@@ -0,0 +1,162 @@
+;;; xcb-dbe.el --- X11 Dbe extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'dbe.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:dbe:-extension-xname "DOUBLE-BUFFER")
+(defconst xcb:dbe:-extension-name "Dbe")
+(defconst xcb:dbe:-major-version 1)
+(defconst xcb:dbe:-minor-version 0)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:dbe:BackBuffer 'xcb:DRAWABLE)
+
+(defconst xcb:dbe:SwapAction:Undefined 0)
+(defconst xcb:dbe:SwapAction:Background 1)
+(defconst xcb:dbe:SwapAction:Untouched 2)
+(defconst xcb:dbe:SwapAction:Copied 3)
+
+(defclass xcb:dbe:SwapInfo
+ (xcb:-struct)
+ ((window :initarg :window :type xcb:WINDOW)
+ (swap-action :initarg :swap-action :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:dbe:BufferAttributes
+ (xcb:-struct)
+ ((window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:dbe:VisualInfo
+ (xcb:-struct)
+ ((visual-id :initarg :visual-id :type xcb:VISUALID)
+ (depth :initarg :depth :type xcb:CARD8)
+ (perf-level :initarg :perf-level :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:dbe:VisualInfos
+ (xcb:-struct)
+ ((n-infos :initarg :n-infos :type xcb:CARD32)
+ (infos~ :initform
+ '(name infos type xcb:dbe:VisualInfo size
+ (xcb:-fieldref 'n-infos))
+ :type xcb:-list)
+ (infos :initarg :infos :type xcb:-ignore)))
+
+(defclass xcb:dbe:BadBuffer
+ (xcb:-error)
+ ((~code :initform 0)
+ (bad-buffer :initarg :bad-buffer :type xcb:dbe:BackBuffer)))
+
+(defclass xcb:dbe:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD8)
+ (minor-version :initarg :minor-version :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:dbe:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD8)
+ (minor-version :initarg :minor-version :type xcb:CARD8)
+ (pad~1 :initform 22 :type xcb:-pad)))
+
+(defclass xcb:dbe:AllocateBackBuffer
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (buffer :initarg :buffer :type xcb:dbe:BackBuffer)
+ (swap-action :initarg :swap-action :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:dbe:DeallocateBackBuffer
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (buffer :initarg :buffer :type xcb:dbe:BackBuffer)))
+
+(defclass xcb:dbe:SwapBuffers
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (n-actions :initarg :n-actions :type xcb:CARD32)
+ (actions~ :initform
+ '(name actions type xcb:dbe:SwapInfo size
+ (xcb:-fieldref 'n-actions))
+ :type xcb:-list)
+ (actions :initarg :actions :type xcb:-ignore)))
+
+(defclass xcb:dbe:BeginIdiom
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)))
+
+(defclass xcb:dbe:EndIdiom
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)))
+
+(defclass xcb:dbe:GetVisualInfo
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (n-drawables :initarg :n-drawables :type xcb:CARD32)
+ (drawables~ :initform
+ '(name drawables type xcb:DRAWABLE size
+ (xcb:-fieldref 'n-drawables))
+ :type xcb:-list)
+ (drawables :initarg :drawables :type xcb:-ignore)))
+(defclass xcb:dbe:GetVisualInfo~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (n-supported-visuals :initarg :n-supported-visuals :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (supported-visuals~ :initform
+ '(name supported-visuals type xcb:dbe:VisualInfos size
+ (xcb:-fieldref 'n-supported-visuals))
+ :type xcb:-list)
+ (supported-visuals :initarg :supported-visuals :type xcb:-ignore)))
+
+(defclass xcb:dbe:GetBackBufferAttributes
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (buffer :initarg :buffer :type xcb:dbe:BackBuffer)))
+(defclass xcb:dbe:GetBackBufferAttributes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (attributes :initarg :attributes :type xcb:dbe:BufferAttributes)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defconst xcb:dbe:error-number-class-alist
+ '((0 . xcb:dbe:BadBuffer))
+ "(error-number . error-class) alist.")
+
+
+
+(provide 'xcb-dbe)
+
+;;; xcb-dbe.el ends here
diff --git a/elpa/xelb-0.20/xcb-dbe.elc b/elpa/xelb-0.20/xcb-dbe.elc
new file mode 100644
index 0000000..56306c9
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dbe.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-debug.el b/elpa/xelb-0.20/xcb-debug.el
new file mode 100644
index 0000000..e99661d
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-debug.el
@@ -0,0 +1,135 @@
+;;; xcb-debug.el --- Debugging helpers for XELB -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018-2024 Free Software Foundation, Inc.
+
+;; Author: Adrián Medraño Calvo <adrian@medranocalvo.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This module collects functions that help in debugging XELB.
+
+;;; Code:
+
+(defvar xcb-debug:buffer "*XELB-DEBUG*" "Buffer to write debug messages to.")
+
+(defvar xcb-debug:backtrace-start-frame 5
+ "From which frame to start collecting backtraces.")
+
+(defvar xcb-debug:log-time-function #'xcb-debug:log-uptime
+ "Function used for generating timestamps in XELB debug logs.
+
+Here are some predefined candidates:
+`xcb-debug:log-uptime': Display the uptime of this Emacs instance.
+`xcb-debug:log-time': Display time of day.
+`nil': Disable timestamp.")
+
+(defun xcb-debug:log-uptime ()
+ "Add uptime to XELB debug logs."
+ (emacs-uptime "[%.2h:%.2m:%.2s] "))
+
+(defun xcb-debug:log-time ()
+ "Add time of day to XELB debug logs."
+ (format-time-string "[%T] "))
+
+(defun xcb-debug:-call-stack ()
+ "Return the current call stack frames."
+ (let (frames frame
+ ;; No need to acount for our setq, while, let, ...
+ (index xcb-debug:backtrace-start-frame))
+ (while (setq frame (backtrace-frame index))
+ (push frame frames)
+ (cl-incf index))
+ (cl-remove-if-not 'car frames)))
+
+(defmacro xcb-debug:compile-time-function-name ()
+ "Get the name of outermost definition at expansion time."
+ (let* ((frame (cl-find-if
+ (lambda (frame)
+ (ignore-errors
+ (let ((clause (car (cl-third frame))))
+ (or (equal clause 'defalias)
+ (equal clause 'cl-defmethod)))))
+ (reverse (xcb-debug:-call-stack))))
+ (defn (cl-third frame))
+ (deftype (car defn)))
+ (cl-case deftype
+ ((defalias) (symbol-name (cl-cadadr defn)))
+ ((cl-defmethod) (symbol-name (cadr defn)))
+ (t "<unknown function>"))))
+
+(defmacro xcb-debug:-with-debug-buffer (&rest forms)
+ "Evaluate FORMS making sure `xcb-debug:buffer' is correctly updated."
+ `(with-current-buffer (xcb-debug:-get-buffer)
+ (let (windows-eob)
+ ;; Note windows whose point is at EOB.
+ (dolist (w (get-buffer-window-list (current-buffer) t 'nomini))
+ (when (and (window-live-p w)
+ (= (window-point w) (point-max)))
+ (push w windows-eob)))
+ (save-excursion
+ (goto-char (point-max))
+ ,@forms)
+ ;; Restore point.
+ (dolist (w windows-eob)
+ (set-window-point w (point-max))))))
+
+(defun xcb-debug:message (format-string &rest objects)
+ "Print a message to `xcb-debug:buffer'.
+
+The FORMAT-STRING argument follows the speficies how to print each of
+the passed OBJECTS. See `format' for details."
+ (xcb-debug:-with-debug-buffer
+ (insert (apply #'format format-string objects))))
+
+(defmacro xcb-debug:backtrace ()
+ "Print a backtrace to the `xcb-debug:buffer'."
+ '(xcb-debug:-with-debug-buffer
+ (let ((standard-output (xcb-debug:-get-buffer)))
+ (backtrace))))
+
+(defmacro xcb-debug:backtrace-on-error (&rest forms)
+ "Evaluate FORMS. Printing a backtrace if an error is signaled."
+ `(let ((debug-on-error t)
+ (debugger (lambda (&rest _) (xcb-debug:backtrace))))
+ ,@forms))
+
+(defun xcb-debug:-get-buffer ()
+ "Get or create `xcb-debug:buffer'."
+ (let ((buffer (get-buffer xcb-debug:buffer)))
+ (unless buffer
+ (setq buffer (get-buffer-create xcb-debug:buffer))
+ (buffer-disable-undo buffer))
+ buffer))
+
+(defun xcb-debug:clear ()
+ "Clear the debug buffer."
+ (interactive)
+ (xcb-debug:-with-debug-buffer
+ (erase-buffer)))
+
+(defun xcb-debug:mark ()
+ "Insert a mark in the debug buffer."
+ (interactive)
+ (xcb-debug:-with-debug-buffer
+ (insert " \n")))
+
+
+
+(provide 'xcb-debug)
+
+;;; xcb-debug.el ends here
diff --git a/elpa/xelb-0.20/xcb-debug.elc b/elpa/xelb-0.20/xcb-debug.elc
new file mode 100644
index 0000000..1132c70
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-debug.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-dpms.el b/elpa/xelb-0.20/xcb-dpms.el
new file mode 100644
index 0000000..63b31f1
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dpms.el
@@ -0,0 +1,134 @@
+;;; xcb-dpms.el --- X11 DPMS extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'dpms.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:dpms:-extension-xname "DPMS")
+(defconst xcb:dpms:-extension-name "DPMS")
+(defconst xcb:dpms:-major-version 1)
+(defconst xcb:dpms:-minor-version 2)
+
+(require 'xcb-xproto)
+
+(defclass xcb:dpms:GetVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD16)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD16)))
+(defclass xcb:dpms:GetVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major-version :initarg :server-major-version :type xcb:CARD16)
+ (server-minor-version :initarg :server-minor-version :type xcb:CARD16)))
+
+(defclass xcb:dpms:Capable
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)))
+(defclass xcb:dpms:Capable~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (capable :initarg :capable :type xcb:BOOL)
+ (pad~1 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:dpms:GetTimeouts
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)))
+(defclass xcb:dpms:GetTimeouts~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (standby-timeout :initarg :standby-timeout :type xcb:CARD16)
+ (suspend-timeout :initarg :suspend-timeout :type xcb:CARD16)
+ (off-timeout :initarg :off-timeout :type xcb:CARD16)
+ (pad~1 :initform 18 :type xcb:-pad)))
+
+(defclass xcb:dpms:SetTimeouts
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (standby-timeout :initarg :standby-timeout :type xcb:CARD16)
+ (suspend-timeout :initarg :suspend-timeout :type xcb:CARD16)
+ (off-timeout :initarg :off-timeout :type xcb:CARD16)))
+
+(defclass xcb:dpms:Enable
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)))
+
+(defclass xcb:dpms:Disable
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)))
+
+(defconst xcb:dpms:DPMSMode:On 0)
+(defconst xcb:dpms:DPMSMode:Standby 1)
+(defconst xcb:dpms:DPMSMode:Suspend 2)
+(defconst xcb:dpms:DPMSMode:Off 3)
+
+(defclass xcb:dpms:ForceLevel
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (power-level :initarg :power-level :type xcb:CARD16)))
+
+(defclass xcb:dpms:Info
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)))
+(defclass xcb:dpms:Info~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (power-level :initarg :power-level :type xcb:CARD16)
+ (state :initarg :state :type xcb:BOOL)
+ (pad~1 :initform 21 :type xcb:-pad)))
+
+(defconst xcb:dpms:EventMask:InfoNotify 1)
+
+(defclass xcb:dpms:SelectInput
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+
+(defclass xcb:dpms:InfoNotify
+ (xcb:-generic-event)
+ ((~evtype :initform 0)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (power-level :initarg :power-level :type xcb:CARD16)
+ (state :initarg :state :type xcb:BOOL)
+ (pad~1 :initform 21 :type xcb:-pad)))
+
+(defconst xcb:dpms:xge-number-class-alist
+ '((0 . xcb:dpms:InfoNotify))
+ "(xge-number . event-class) alist.")
+
+
+
+(provide 'xcb-dpms)
+
+;;; xcb-dpms.el ends here
diff --git a/elpa/xelb-0.20/xcb-dpms.elc b/elpa/xelb-0.20/xcb-dpms.elc
new file mode 100644
index 0000000..4bdfeaa
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dpms.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-dri2.el b/elpa/xelb-0.20/xcb-dri2.el
new file mode 100644
index 0000000..040bb52
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dri2.el
@@ -0,0 +1,322 @@
+;;; xcb-dri2.el --- X11 DRI2 extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'dri2.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:dri2:-extension-xname "DRI2")
+(defconst xcb:dri2:-extension-name "DRI2")
+(defconst xcb:dri2:-major-version 1)
+(defconst xcb:dri2:-minor-version 4)
+
+(require 'xcb-xproto)
+
+(defconst xcb:dri2:Attachment:BufferFrontLeft 0)
+(defconst xcb:dri2:Attachment:BufferBackLeft 1)
+(defconst xcb:dri2:Attachment:BufferFrontRight 2)
+(defconst xcb:dri2:Attachment:BufferBackRight 3)
+(defconst xcb:dri2:Attachment:BufferDepth 4)
+(defconst xcb:dri2:Attachment:BufferStencil 5)
+(defconst xcb:dri2:Attachment:BufferAccum 6)
+(defconst xcb:dri2:Attachment:BufferFakeFrontLeft 7)
+(defconst xcb:dri2:Attachment:BufferFakeFrontRight 8)
+(defconst xcb:dri2:Attachment:BufferDepthStencil 9)
+(defconst xcb:dri2:Attachment:BufferHiz 10)
+
+(defconst xcb:dri2:DriverType:DRI 0)
+(defconst xcb:dri2:DriverType:VDPAU 1)
+
+(defconst xcb:dri2:EventType:ExchangeComplete 1)
+(defconst xcb:dri2:EventType:BlitComplete 2)
+(defconst xcb:dri2:EventType:FlipComplete 3)
+
+(defclass xcb:dri2:DRI2Buffer
+ (xcb:-struct)
+ ((attachment :initarg :attachment :type xcb:CARD32)
+ (name :initarg :name :type xcb:CARD32)
+ (pitch :initarg :pitch :type xcb:CARD32)
+ (cpp :initarg :cpp :type xcb:CARD32)
+ (flags :initarg :flags :type xcb:CARD32)))
+
+(defclass xcb:dri2:AttachFormat
+ (xcb:-struct)
+ ((attachment :initarg :attachment :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD32)))
+
+(defclass xcb:dri2:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+(defclass xcb:dri2:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+
+(defclass xcb:dri2:Connect
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (driver-type :initarg :driver-type :type xcb:CARD32)))
+(defclass xcb:dri2:Connect~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (driver-name-length :initarg :driver-name-length :type xcb:CARD32)
+ (device-name-length :initarg :device-name-length :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (driver-name~ :initform
+ '(name driver-name type xcb:char size
+ (xcb:-fieldref 'driver-name-length))
+ :type xcb:-list)
+ (driver-name :initarg :driver-name :type xcb:-ignore)
+ (alignment-pad~ :initform
+ '(name alignment-pad type xcb:void size
+ (-
+ (logand
+ (+
+ (xcb:-fieldref 'driver-name-length)
+ 3)
+ (lognot 3))
+ (xcb:-fieldref 'driver-name-length)))
+ :type xcb:-list)
+ (alignment-pad :initarg :alignment-pad :type xcb:-ignore)
+ (device-name~ :initform
+ '(name device-name type xcb:char size
+ (xcb:-fieldref 'device-name-length))
+ :type xcb:-list)
+ (device-name :initarg :device-name :type xcb:-ignore)))
+
+(defclass xcb:dri2:Authenticate
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (magic :initarg :magic :type xcb:CARD32)))
+(defclass xcb:dri2:Authenticate~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (authenticated :initarg :authenticated :type xcb:CARD32)))
+
+(defclass xcb:dri2:CreateDrawable
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+
+(defclass xcb:dri2:DestroyDrawable
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+
+(defclass xcb:dri2:GetBuffers
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (count :initarg :count :type xcb:CARD32)
+ (attachments~ :initform
+ '(name attachments type xcb:CARD32 size nil)
+ :type xcb:-list)
+ (attachments :initarg :attachments :type xcb:-ignore)))
+(defclass xcb:dri2:GetBuffers~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)
+ (count :initarg :count :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (buffers~ :initform
+ '(name buffers type xcb:dri2:DRI2Buffer size
+ (xcb:-fieldref 'count))
+ :type xcb:-list)
+ (buffers :initarg :buffers :type xcb:-ignore)))
+
+(defclass xcb:dri2:CopyRegion
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (region :initarg :region :type xcb:CARD32)
+ (dest :initarg :dest :type xcb:CARD32)
+ (src :initarg :src :type xcb:CARD32)))
+(defclass xcb:dri2:CopyRegion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:dri2:GetBuffersWithFormat
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (count :initarg :count :type xcb:CARD32)
+ (attachments~ :initform
+ '(name attachments type xcb:dri2:AttachFormat size nil)
+ :type xcb:-list)
+ (attachments :initarg :attachments :type xcb:-ignore)))
+(defclass xcb:dri2:GetBuffersWithFormat~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)
+ (count :initarg :count :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (buffers~ :initform
+ '(name buffers type xcb:dri2:DRI2Buffer size
+ (xcb:-fieldref 'count))
+ :type xcb:-list)
+ (buffers :initarg :buffers :type xcb:-ignore)))
+
+(defclass xcb:dri2:SwapBuffers
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (target-msc-hi :initarg :target-msc-hi :type xcb:CARD32)
+ (target-msc-lo :initarg :target-msc-lo :type xcb:CARD32)
+ (divisor-hi :initarg :divisor-hi :type xcb:CARD32)
+ (divisor-lo :initarg :divisor-lo :type xcb:CARD32)
+ (remainder-hi :initarg :remainder-hi :type xcb:CARD32)
+ (remainder-lo :initarg :remainder-lo :type xcb:CARD32)))
+(defclass xcb:dri2:SwapBuffers~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (swap-hi :initarg :swap-hi :type xcb:CARD32)
+ (swap-lo :initarg :swap-lo :type xcb:CARD32)))
+
+(defclass xcb:dri2:GetMSC
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+(defclass xcb:dri2:GetMSC~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ust-hi :initarg :ust-hi :type xcb:CARD32)
+ (ust-lo :initarg :ust-lo :type xcb:CARD32)
+ (msc-hi :initarg :msc-hi :type xcb:CARD32)
+ (msc-lo :initarg :msc-lo :type xcb:CARD32)
+ (sbc-hi :initarg :sbc-hi :type xcb:CARD32)
+ (sbc-lo :initarg :sbc-lo :type xcb:CARD32)))
+
+(defclass xcb:dri2:WaitMSC
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (target-msc-hi :initarg :target-msc-hi :type xcb:CARD32)
+ (target-msc-lo :initarg :target-msc-lo :type xcb:CARD32)
+ (divisor-hi :initarg :divisor-hi :type xcb:CARD32)
+ (divisor-lo :initarg :divisor-lo :type xcb:CARD32)
+ (remainder-hi :initarg :remainder-hi :type xcb:CARD32)
+ (remainder-lo :initarg :remainder-lo :type xcb:CARD32)))
+(defclass xcb:dri2:WaitMSC~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ust-hi :initarg :ust-hi :type xcb:CARD32)
+ (ust-lo :initarg :ust-lo :type xcb:CARD32)
+ (msc-hi :initarg :msc-hi :type xcb:CARD32)
+ (msc-lo :initarg :msc-lo :type xcb:CARD32)
+ (sbc-hi :initarg :sbc-hi :type xcb:CARD32)
+ (sbc-lo :initarg :sbc-lo :type xcb:CARD32)))
+
+(defclass xcb:dri2:WaitSBC
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (target-sbc-hi :initarg :target-sbc-hi :type xcb:CARD32)
+ (target-sbc-lo :initarg :target-sbc-lo :type xcb:CARD32)))
+(defclass xcb:dri2:WaitSBC~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ust-hi :initarg :ust-hi :type xcb:CARD32)
+ (ust-lo :initarg :ust-lo :type xcb:CARD32)
+ (msc-hi :initarg :msc-hi :type xcb:CARD32)
+ (msc-lo :initarg :msc-lo :type xcb:CARD32)
+ (sbc-hi :initarg :sbc-hi :type xcb:CARD32)
+ (sbc-lo :initarg :sbc-lo :type xcb:CARD32)))
+
+(defclass xcb:dri2:SwapInterval
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (interval :initarg :interval :type xcb:CARD32)))
+
+(defclass xcb:dri2:GetParam
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (param :initarg :param :type xcb:CARD32)))
+(defclass xcb:dri2:GetParam~reply
+ (xcb:-reply)
+ ((is-param-recognized :initarg :is-param-recognized :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (value-hi :initarg :value-hi :type xcb:CARD32)
+ (value-lo :initarg :value-lo :type xcb:CARD32)))
+
+(defclass xcb:dri2:BufferSwapComplete
+ (xcb:-event)
+ ((~code :initform 0)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event-type :initarg :event-type :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (ust-hi :initarg :ust-hi :type xcb:CARD32)
+ (ust-lo :initarg :ust-lo :type xcb:CARD32)
+ (msc-hi :initarg :msc-hi :type xcb:CARD32)
+ (msc-lo :initarg :msc-lo :type xcb:CARD32)
+ (sbc :initarg :sbc :type xcb:CARD32)))
+
+(defclass xcb:dri2:InvalidateBuffers
+ (xcb:-event)
+ ((~code :initform 1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+
+(defconst xcb:dri2:event-number-class-alist
+ '((0 . xcb:dri2:BufferSwapComplete)
+ (1 . xcb:dri2:InvalidateBuffers))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-dri2)
+
+;;; xcb-dri2.el ends here
diff --git a/elpa/xelb-0.20/xcb-dri2.elc b/elpa/xelb-0.20/xcb-dri2.elc
new file mode 100644
index 0000000..9557ccb
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dri2.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-dri3.el b/elpa/xelb-0.20/xcb-dri3.el
new file mode 100644
index 0000000..218820f
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dri3.el
@@ -0,0 +1,228 @@
+;;; xcb-dri3.el --- X11 DRI3 extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'dri3.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:dri3:-extension-xname "DRI3")
+(defconst xcb:dri3:-extension-name "DRI3")
+(defconst xcb:dri3:-major-version 1)
+(defconst xcb:dri3:-minor-version 4)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:dri3:SYNCOBJ 'xcb:-u4)
+
+(defclass xcb:dri3:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+(defclass xcb:dri3:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+
+(defclass xcb:dri3:Open
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (provider :initarg :provider :type xcb:CARD32)))
+(defclass xcb:dri3:Open~reply
+ (xcb:-reply)
+ ((nfd :initarg :nfd :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (device-fd :type xcb:fd)
+ (pad~0 :initform 24 :type xcb:-pad)))
+
+(defclass xcb:dri3:PixmapFromBuffer
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (size :initarg :size :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (stride :initarg :stride :type xcb:CARD16)
+ (depth :initarg :depth :type xcb:CARD8)
+ (bpp :initarg :bpp :type xcb:CARD8)
+ (pixmap-fd :type xcb:fd)))
+
+(defclass xcb:dri3:BufferFromPixmap
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)))
+(defclass xcb:dri3:BufferFromPixmap~reply
+ (xcb:-reply)
+ ((nfd :initarg :nfd :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (size :initarg :size :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (stride :initarg :stride :type xcb:CARD16)
+ (depth :initarg :depth :type xcb:CARD8)
+ (bpp :initarg :bpp :type xcb:CARD8)
+ (pixmap-fd :type xcb:fd)
+ (pad~0 :initform 12 :type xcb:-pad)))
+
+(defclass xcb:dri3:FenceFromFD
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (fence :initarg :fence :type xcb:CARD32)
+ (initially-triggered :initarg :initially-triggered :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (fence-fd :type xcb:fd)))
+
+(defclass xcb:dri3:FDFromFence
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (fence :initarg :fence :type xcb:CARD32)))
+(defclass xcb:dri3:FDFromFence~reply
+ (xcb:-reply)
+ ((nfd :initarg :nfd :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (fence-fd :type xcb:fd)
+ (pad~0 :initform 24 :type xcb:-pad)))
+
+(defclass xcb:dri3:GetSupportedModifiers
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (window :initarg :window :type xcb:CARD32)
+ (depth :initarg :depth :type xcb:CARD8)
+ (bpp :initarg :bpp :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:dri3:GetSupportedModifiers~reply
+ (xcb:-reply)
+ ((pad~0 :initform 8 :type xcb:-pad-align)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (num-window-modifiers :initarg :num-window-modifiers :type xcb:CARD32)
+ (num-screen-modifiers :initarg :num-screen-modifiers :type xcb:CARD32)
+ (pad~2 :initform 16 :type xcb:-pad)
+ (window-modifiers~ :initform
+ '(name window-modifiers type xcb:CARD64 size
+ (xcb:-fieldref 'num-window-modifiers))
+ :type xcb:-list)
+ (window-modifiers :initarg :window-modifiers :type xcb:-ignore)
+ (screen-modifiers~ :initform
+ '(name screen-modifiers type xcb:CARD64 size
+ (xcb:-fieldref 'num-screen-modifiers))
+ :type xcb:-list)
+ (screen-modifiers :initarg :screen-modifiers :type xcb:-ignore)))
+
+(defclass xcb:dri3:PixmapFromBuffers
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (pad~0 :initform 8 :type xcb:-pad-align)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (window :initarg :window :type xcb:WINDOW)
+ (num-buffers :initarg :num-buffers :type xcb:CARD8)
+ (pad~1 :initform 3 :type xcb:-pad)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (stride0 :initarg :stride0 :type xcb:CARD32)
+ (offset0 :initarg :offset0 :type xcb:CARD32)
+ (stride1 :initarg :stride1 :type xcb:CARD32)
+ (offset1 :initarg :offset1 :type xcb:CARD32)
+ (stride2 :initarg :stride2 :type xcb:CARD32)
+ (offset2 :initarg :offset2 :type xcb:CARD32)
+ (stride3 :initarg :stride3 :type xcb:CARD32)
+ (offset3 :initarg :offset3 :type xcb:CARD32)
+ (depth :initarg :depth :type xcb:CARD8)
+ (bpp :initarg :bpp :type xcb:CARD8)
+ (pad~2 :initform 2 :type xcb:-pad)
+ (modifier :initarg :modifier :type xcb:CARD64)
+ (buffers~ :initform
+ '(name buffers type xcb:fd size
+ (xcb:-fieldref 'num-buffers))
+ :type xcb:-list)
+ (buffers :initarg :buffers :type xcb:-ignore)))
+
+(defclass xcb:dri3:BuffersFromPixmap
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)))
+(defclass xcb:dri3:BuffersFromPixmap~reply
+ (xcb:-reply)
+ ((pad~0 :initform 8 :type xcb:-pad-align)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (nfd :initarg :nfd :type xcb:CARD8)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (modifier :initarg :modifier :type xcb:CARD64)
+ (depth :initarg :depth :type xcb:CARD8)
+ (bpp :initarg :bpp :type xcb:CARD8)
+ (pad~2 :initform 6 :type xcb:-pad)
+ (strides~ :initform
+ '(name strides type xcb:CARD32 size
+ (xcb:-fieldref 'nfd))
+ :type xcb:-list)
+ (strides :initarg :strides :type xcb:-ignore)
+ (offsets~ :initform
+ '(name offsets type xcb:CARD32 size
+ (xcb:-fieldref 'nfd))
+ :type xcb:-list)
+ (offsets :initarg :offsets :type xcb:-ignore)
+ (buffers~ :initform
+ '(name buffers type xcb:fd size
+ (xcb:-fieldref 'nfd))
+ :type xcb:-list)
+ (buffers :initarg :buffers :type xcb:-ignore)))
+
+(defclass xcb:dri3:SetDRMDeviceInUse
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (drmMajor :initarg :drmMajor :type xcb:CARD32)
+ (drmMinor :initarg :drmMinor :type xcb:CARD32)))
+
+(defclass xcb:dri3:ImportSyncobj
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (syncobj :initarg :syncobj :type xcb:dri3:SYNCOBJ)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (syncobj-fd :type xcb:fd)))
+
+(defclass xcb:dri3:FreeSyncobj
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (syncobj :initarg :syncobj :type xcb:dri3:SYNCOBJ)))
+
+
+
+(provide 'xcb-dri3)
+
+;;; xcb-dri3.el ends here
diff --git a/elpa/xelb-0.20/xcb-dri3.elc b/elpa/xelb-0.20/xcb-dri3.elc
new file mode 100644
index 0000000..d145e13
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-dri3.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-ewmh.el b/elpa/xelb-0.20/xcb-ewmh.el
new file mode 100644
index 0000000..98bdd97
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-ewmh.el
@@ -0,0 +1,752 @@
+;;; xcb-ewmh.el --- Extended Window Manager Hints -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library implements EWMH the same way as xcb/util-wm.
+
+;; Usage tips:
+;; + Do not forget to call `xcb:ewmh:init' for _every_ connection using
+;; this library.
+;; + Use `xcb:ewmh:SendEvent' instead of `xcb:SendEvent' to send client
+;; messages defined in this library.
+;; + Initializing this library auto loads and initializes 'xcb-icccm'.
+
+;; References:
+;; + EWMH (http://standards.freedesktop.org/wm-spec/wm-spec-latest.html)
+;; + xcb/util-wm (git://anongit.freedesktop.org/xcb/util-wm)
+
+;;; Code:
+
+(require 'xcb)
+(require 'xcb-icccm)
+
+;;;; EWMH Atoms
+
+(eval-and-compile
+ (defconst xcb:ewmh:-atoms
+ '( ;; Root Window Properties (and Related Messages)
+ _NET_SUPPORTED
+ _NET_CLIENT_LIST
+ _NET_CLIENT_LIST_STACKING
+ _NET_NUMBER_OF_DESKTOPS
+ _NET_DESKTOP_GEOMETRY
+ _NET_DESKTOP_VIEWPORT
+ _NET_CURRENT_DESKTOP
+ _NET_DESKTOP_NAMES
+ _NET_ACTIVE_WINDOW
+ _NET_WORKAREA
+ _NET_SUPPORTING_WM_CHECK
+ _NET_VIRTUAL_ROOTS
+ _NET_DESKTOP_LAYOUT
+ _NET_SHOWING_DESKTOP
+ ;; Other Root Window Messages
+ _NET_CLOSE_WINDOW
+ _NET_MOVERESIZE_WINDOW
+ _NET_WM_MOVERESIZE
+ _NET_RESTACK_WINDOW
+ _NET_REQUEST_FRAME_EXTENTS
+ ;; Application Window Properties
+ _NET_WM_NAME
+ _NET_WM_VISIBLE_NAME
+ _NET_WM_ICON_NAME
+ _NET_WM_VISIBLE_ICON_NAME
+ _NET_WM_DESKTOP
+ _NET_WM_WINDOW_TYPE
+ _NET_WM_STATE
+ _NET_WM_ALLOWED_ACTIONS
+ _NET_WM_STRUT
+ _NET_WM_STRUT_PARTIAL
+ _NET_WM_ICON_GEOMETRY
+ _NET_WM_ICON
+ _NET_WM_PID
+ _NET_WM_HANDLED_ICONS
+ _NET_WM_USER_TIME
+ _NET_WM_USER_TIME_WINDOW
+ _NET_FRAME_EXTENTS
+ _NET_WM_OPAQUE_REGION
+ _NET_WM_BYPASS_COMPOSITOR
+ ;; Window Manager Protocols
+ _NET_WM_PING
+ _NET_WM_SYNC_REQUEST
+ _NET_WM_SYNC_REQUEST_COUNTER
+ _NET_WM_FULLSCREEN_MONITORS
+ ;; Other Properties
+ _NET_WM_FULL_PLACEMENT
+ _NET_WM_CM_S0 ;_NET_WM_CM_Sn (n = 1, 2, ...) are left out here.
+ ;; _NET_WM_WINDOW_TYPE hint
+ _NET_WM_WINDOW_TYPE_DESKTOP
+ _NET_WM_WINDOW_TYPE_DOCK
+ _NET_WM_WINDOW_TYPE_TOOLBAR
+ _NET_WM_WINDOW_TYPE_MENU
+ _NET_WM_WINDOW_TYPE_UTILITY
+ _NET_WM_WINDOW_TYPE_SPLASH
+ _NET_WM_WINDOW_TYPE_DIALOG
+ _NET_WM_WINDOW_TYPE_DROPDOWN_MENU
+ _NET_WM_WINDOW_TYPE_POPUP_MENU
+ _NET_WM_WINDOW_TYPE_TOOLTIP
+ _NET_WM_WINDOW_TYPE_NOTIFICATION
+ _NET_WM_WINDOW_TYPE_COMBO
+ _NET_WM_WINDOW_TYPE_DND
+ _NET_WM_WINDOW_TYPE_NORMAL
+ ;; _NET_WM_STATE hint
+ _NET_WM_STATE_MODAL
+ _NET_WM_STATE_STICKY
+ _NET_WM_STATE_MAXIMIZED_VERT
+ _NET_WM_STATE_MAXIMIZED_HORZ
+ _NET_WM_STATE_SHADED
+ _NET_WM_STATE_SKIP_TASKBAR
+ _NET_WM_STATE_SKIP_PAGER
+ _NET_WM_STATE_HIDDEN
+ _NET_WM_STATE_FULLSCREEN
+ _NET_WM_STATE_ABOVE
+ _NET_WM_STATE_BELOW
+ _NET_WM_STATE_DEMANDS_ATTENTION
+ _NET_WM_STATE_FOCUSED
+ ;; _NET_WM_ACTION hint
+ _NET_WM_ACTION_MOVE
+ _NET_WM_ACTION_RESIZE
+ _NET_WM_ACTION_MINIMIZE
+ _NET_WM_ACTION_SHADE
+ _NET_WM_ACTION_STICK
+ _NET_WM_ACTION_MAXIMIZE_HORZ
+ _NET_WM_ACTION_MAXIMIZE_VERT
+ _NET_WM_ACTION_FULLSCREEN
+ _NET_WM_ACTION_CHANGE_DESKTOP
+ _NET_WM_ACTION_CLOSE
+ _NET_WM_ACTION_ABOVE
+ _NET_WM_ACTION_BELOW)
+ "EWMH atoms.")
+
+ (dolist (atom xcb:ewmh:-atoms)
+ (eval `(defvar ,(intern (concat "xcb:Atom:" (symbol-name atom))) nil))))
+
+(cl-defmethod xcb:ewmh:init ((obj xcb:connection) &optional force)
+ "Initialize EWMH module.
+
+This method must be called before using any other method in this module.
+
+This method also initializes ICCCM module automatically."
+ (when (or force (not xcb:Atom:_NET_SUPPORTED))
+ (xcb:icccm:init obj) ;required
+ (let ((atoms xcb:ewmh:-atoms))
+ (dotimes (i (1- (x-display-screens)))
+ (push (intern (format "_NET_WM_CM_S%d" (1+ i))) atoms))
+ (xcb:icccm:intern-atoms obj atoms force))))
+
+;;;; Client message
+
+(defclass xcb:ewmh:SendEvent (xcb:SendEvent)
+ ((propagate :initform 0)
+ (event-mask :initform (logior xcb:EventMask:SubstructureNotify
+ xcb:EventMask:SubstructureRedirect)))
+ :documentation "A fork of `xcb:SendEvent' to send EWMH client message.
+
+Note that this only applies to \"sending a message to the root window\" in
+EWMH")
+
+(defclass xcb:ewmh:-ClientMessage (xcb:icccm:--ClientMessage xcb:ClientMessage)
+ ((format :initform 32)))
+
+;;;; Abstract classes for getting/changing (UTF-8) string properties
+
+(defclass xcb:ewmh:-GetProperty-utf8 (xcb:icccm:-GetProperty-text)
+ ((type :initform 'xcb:Atom:UTF8_STRING))
+ :documentation "Get an EWMH UTF-8 text property (request part).")
+(defclass xcb:ewmh:-GetProperty-utf8~reply (xcb:icccm:-GetProperty-text~reply)
+ nil
+ :documentation "Get an EWMH UTF-8 text property (reply part).")
+(defclass xcb:ewmh:-ChangeProperty-utf8 (xcb:icccm:-ChangeProperty-text)
+ ((type :initform 'xcb:Atom:UTF8_STRING))
+ :documentation "Change an EWMH UTF-8 text property.")
+
+;;;; Root Window Properties (and Related Messages)
+
+;; _NET_SUPPORTED
+(defclass xcb:ewmh:get-_NET_SUPPORTED (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_SUPPORTED)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:ewmh:get-_NET_SUPPORTED~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_SUPPORTED (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_SUPPORTED)
+ (type :initform 'xcb:Atom:ATOM)))
+
+;; _NET_CLIENT_LIST
+(defclass xcb:ewmh:get-_NET_CLIENT_LIST (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_CLIENT_LIST)
+ (type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:ewmh:get-_NET_CLIENT_LIST~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_CLIENT_LIST (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_CLIENT_LIST)
+ (type :initform 'xcb:Atom:WINDOW)))
+
+;; _NET_CLIENT_LIST_STACKING
+(defclass xcb:ewmh:get-_NET_CLIENT_LIST_STACKING (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_CLIENT_LIST_STACKING)
+ (type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:ewmh:get-_NET_CLIENT_LIST_STACKING~reply
+ (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_CLIENT_LIST_STACKING (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_CLIENT_LIST_STACKING)
+ (type :initform 'xcb:Atom:WINDOW)))
+
+;; _NET_NUMBER_OF_DESKTOPS
+(defclass xcb:ewmh:get-_NET_NUMBER_OF_DESKTOPS (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_NUMBER_OF_DESKTOPS)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_NUMBER_OF_DESKTOPS~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_NUMBER_OF_DESKTOPS
+ (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_NUMBER_OF_DESKTOPS)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_DESKTOP_GEOMETRY
+(defclass xcb:ewmh:-_NET_DESKTOP_GEOMETRY (xcb:--struct)
+ ((width :initarg :width :type xcb:-ignore)
+ (height :initarg :height :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_DESKTOP_GEOMETRY (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_GEOMETRY)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 2)))
+(defclass xcb:ewmh:get-_NET_DESKTOP_GEOMETRY~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_DESKTOP_GEOMETRY)
+ nil)
+(defclass xcb:ewmh:set-_NET_DESKTOP_GEOMETRY
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_DESKTOP_GEOMETRY)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_GEOMETRY)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:_NET_DESKTOP_GEOMETRY
+ (xcb:ewmh:-ClientMessage xcb:ewmh:-_NET_DESKTOP_GEOMETRY)
+ ((type :initform 'xcb:Atom:_NET_DESKTOP_GEOMETRY)))
+
+;; _NET_DESKTOP_VIEWPORT
+(defclass xcb:ewmh:get-_NET_DESKTOP_VIEWPORT (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_VIEWPORT)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_DESKTOP_VIEWPORT~reply
+ (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_DESKTOP_VIEWPORT (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_VIEWPORT)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:_NET_DESKTOP_VIEWPORT (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_DESKTOP_VIEWPORT)
+ (new-vx :initarg :new-vx :type xcb:CARD32)
+ (new-vy :initarg :new-vy :type xcb:CARD32)))
+
+;; _NET_CURRENT_DESKTOP
+(defclass xcb:ewmh:get-_NET_CURRENT_DESKTOP (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_CURRENT_DESKTOP)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_CURRENT_DESKTOP~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_CURRENT_DESKTOP (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_CURRENT_DESKTOP)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:_NET_CURRENT_DESKTOP (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_CURRENT_DESKTOP)
+ (new-index :initarg :new-index :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:CARD32)))
+
+;; _NET_DESKTOP_NAMES
+(defclass xcb:ewmh:get-_NET_DESKTOP_NAMES (xcb:ewmh:-GetProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_NAMES)))
+(defclass xcb:ewmh:get-_NET_DESKTOP_NAMES~reply
+ (xcb:ewmh:-GetProperty-utf8~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_DESKTOP_NAMES (xcb:ewmh:-ChangeProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_NAMES)))
+
+;; _NET_ACTIVE_WINDOW
+(defclass xcb:ewmh:get-_NET_ACTIVE_WINDOW (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_ACTIVE_WINDOW)
+ (type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:ewmh:get-_NET_ACTIVE_WINDOW~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_ACTIVE_WINDOW (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_ACTIVE_WINDOW)
+ (type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:ewmh:_NET_ACTIVE_WINDOW (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_ACTIVE_WINDOW)
+ (source-indication :initarg :source-indication :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:CARD32)
+ (current-active-window :initarg :current-active-window :type xcb:WINDOW)))
+
+;; _NET_WORKAREA
+(defclass xcb:ewmh:get-_NET_WORKAREA (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_WORKAREA)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WORKAREA~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WORKAREA (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_WORKAREA)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_SUPPORTING_WM_CHECK
+(defclass xcb:ewmh:get-_NET_SUPPORTING_WM_CHECK (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SUPPORTING_WM_CHECK)
+ (type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:ewmh:get-_NET_SUPPORTING_WM_CHECK~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_SUPPORTING_WM_CHECK
+ (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SUPPORTING_WM_CHECK)
+ (type :initform 'xcb:Atom:WINDOW)))
+
+;; _NET_VIRTUAL_ROOTS
+(defclass xcb:ewmh:get-_NET_VIRTUAL_ROOTS (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_VIRTUAL_ROOTS)
+ (type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:ewmh:get-_NET_VIRTUAL_ROOTS~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_VIRTUAL_ROOTS (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_VIRTUAL_ROOTS)
+ (type :initform 'xcb:Atom:WINDOW)))
+
+;; _NET_DESKTOP_LAYOUT
+;; Orientations
+(defconst xcb:ewmh:_NET_WM_ORIENTATION_HORZ 0)
+(defconst xcb:ewmh:_NET_WM_ORIENTATION_VERT 1)
+;; Starting corners
+(defconst xcb:ewmh:_NET_WM_TOPLEFT 0)
+(defconst xcb:ewmh:_NET_WM_TOPRIGHT 1)
+(defconst xcb:ewmh:_NET_WM_BOTTOMRIGHT 2)
+(defconst xcb:ewmh:_NET_WM_BOTTOMLEFT 3)
+;;
+(defclass xcb:ewmh:-_NET_DESKTOP_LAYOUT (xcb:--struct)
+ ((orientation :initarg :orientation :type xcb:-ignore)
+ (columns :initarg :columns :type xcb:-ignore)
+ (rows :initarg :rows :type xcb:-ignore)
+ (starting-corner :initarg :starting-corner :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_DESKTOP_LAYOUT (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_LAYOUT)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 4)))
+(defclass xcb:ewmh:get-_NET_DESKTOP_LAYOUT~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_DESKTOP_LAYOUT)
+ nil)
+(defclass xcb:ewmh:set-_NET_DESKTOP_LAYOUT
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_DESKTOP_LAYOUT)
+ ((property :initform 'xcb:Atom:_NET_DESKTOP_LAYOUT)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_SHOWING_DESKTOP
+(defclass xcb:ewmh:get-_NET_SHOWING_DESKTOP (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SHOWING_DESKTOP)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_SHOWING_DESKTOP~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_SHOWING_DESKTOP (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SHOWING_DESKTOP)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:_NET_SHOWING_DESKTOP (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_SHOWING_DESKTOP)
+ (show :initarg :show :type xcb:CARD32)))
+
+;;;; Other Root Window Messages
+
+;; _NET_CLOSE_WINDOW
+(defclass xcb:ewmh:_NET_CLOSE_WINDOW (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_CLOSE_WINDOW)
+ (timestamp :initarg :timestamp :type xcb:CARD32)
+ (source-indication :initarg :source-indication :type xcb:CARD32)))
+
+;; _NET_MOVERESIZE_WINDOW
+(defclass xcb:ewmh:_NET_MOVERESIZE_WINDOW (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_MOVERESIZE_WINDOW)
+ (gravity-and-flags :initarg :gravity-and-flags :type xcb:CARD32)
+ (x :initarg :x :type xcb:CARD32)
+ (y :initarg :y :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)))
+
+;; _NET_WM_MOVERESIZE
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_TOPLEFT 0)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_TOP 1)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_RIGHT 3)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_BOTTOM 5)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_LEFT 7)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_MOVE 8)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_KEYBOARD 9)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_MOVE_KEYBOARD 10)
+(defconst xcb:ewmh:_NET_WM_MOVERESIZE_CANCEL 11)
+;;
+(defclass xcb:ewmh:_NET_WM_MOVERESIZE (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_WM_MOVERESIZE)
+ (x-root :initarg :x-root :type xcb:CARD32)
+ (y-root :initarg :y-root :type xcb:CARD32)
+ (direction :initarg :direction :type xcb:CARD32)
+ (button :initarg :button :type xcb:CARD32)
+ (source-indication :initarg :source-indication :type xcb:CARD32)))
+
+;; _NET_RESTACK_WINDOW
+(defclass xcb:ewmh:_NET_RESTACK_WINDOW (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_RESTACK_WINDOW)
+ (source-indication :initarg :source-indication :type xcb:CARD32)
+ (sibling :initarg :sibling :type xcb:WINDOW)
+ (detail :initarg :detail :type xcb:CARD32)))
+
+;; _NET_REQUEST_FRAME_EXTENTS
+(defclass xcb:ewmh:_NET_REQUEST_FRAME_EXTENTS (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_REQUEST_FRAME_EXTENTS)))
+
+;;;; Application Window Properties
+
+;; _NET_WM_NAME
+(defclass xcb:ewmh:get-_NET_WM_NAME (xcb:ewmh:-GetProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_NAME)))
+(defclass xcb:ewmh:get-_NET_WM_NAME~reply (xcb:ewmh:-GetProperty-utf8~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_NAME (xcb:ewmh:-ChangeProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_NAME)))
+
+;; _NET_WM_VISIBLE_NAME
+(defclass xcb:ewmh:get-_NET_WM_VISIBLE_NAME (xcb:ewmh:-GetProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_VISIBLE_NAME)))
+(defclass xcb:ewmh:get-_NET_WM_VISIBLE_NAME~reply
+ (xcb:ewmh:-GetProperty-utf8~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_VISIBLE_NAME (xcb:ewmh:-ChangeProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_VISIBLE_NAME)))
+
+;; _NET_WM_ICON_NAME
+(defclass xcb:ewmh:get-_NET_WM_ICON_NAME (xcb:ewmh:-GetProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_ICON_NAME)))
+(defclass xcb:ewmh:get-_NET_WM_ICON_NAME~reply
+ (xcb:ewmh:-GetProperty-utf8~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_ICON_NAME (xcb:ewmh:-ChangeProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_ICON_NAME)))
+
+;; _NET_WM_VISIBLE_ICON_NAME
+(defclass xcb:ewmh:get-_NET_WM_VISIBLE_ICON_NAME (xcb:ewmh:-GetProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_VISIBLE_ICON_NAME)))
+(defclass xcb:ewmh:get-_NET_WM_VISIBLE_ICON_NAME~reply
+ (xcb:ewmh:-GetProperty-utf8~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_VISIBLE_ICON_NAME
+ (xcb:ewmh:-ChangeProperty-utf8)
+ ((property :initform 'xcb:Atom:_NET_WM_VISIBLE_ICON_NAME)))
+
+;; _NET_WM_DESKTOP
+(defclass xcb:ewmh:get-_NET_WM_DESKTOP (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_DESKTOP)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WM_DESKTOP~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_DESKTOP (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_DESKTOP)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:_NET_WM_DESKTOP (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_WM_DESKTOP)
+ (new-desktop :initarg :new-desktop :type xcb:CARD32)
+ (source-indication :initarg :source-indication :type xcb:CARD32)))
+
+;; _NET_WM_WINDOW_TYPE
+(defclass xcb:ewmh:get-_NET_WM_WINDOW_TYPE (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_WINDOW_TYPE)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:ewmh:get-_NET_WM_WINDOW_TYPE~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_WINDOW_TYPE (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_WINDOW_TYPE)
+ (type :initform 'xcb:Atom:ATOM)))
+
+;; _NET_WM_STATE
+(defconst xcb:ewmh:_NET_WM_STATE_REMOVE 0)
+(defconst xcb:ewmh:_NET_WM_STATE_ADD 1)
+(defconst xcb:ewmh:_NET_WM_STATE_TOGGLE 2)
+;;
+(defclass xcb:ewmh:get-_NET_WM_STATE (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_STATE)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:ewmh:get-_NET_WM_STATE~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_STATE (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_STATE)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:ewmh:_NET_WM_STATE (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:_NET_WM_STATE)
+ (action :initarg :action :type xcb:CARD32)
+ (first-property :initarg :first-property :type xcb:CARD32)
+ (second-property :initarg :second-property :type xcb:CARD32)
+ (source-indication :initarg :source-indication :type xcb:CARD32)))
+
+;; _NET_WM_ALLOWED_ACTIONS
+(defclass xcb:ewmh:get-_NET_WM_ALLOWED_ACTIONS (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_ALLOWED_ACTIONS)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:ewmh:get-_NET_WM_ALLOWED_ACTIONS~reply
+ (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_ALLOWED_ACTIONS (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_ALLOWED_ACTIONS)
+ (type :initform 'xcb:Atom:ATOM)))
+
+;; _NET_WM_STRUT
+(defclass xcb:ewmh:-_NET_WM_STRUT (xcb:--struct)
+ ((left :initarg :left :type xcb:-ignore)
+ (right :initarg :right :type xcb:-ignore)
+ (top :initarg :top :type xcb:-ignore)
+ (bottom :initarg :bottom :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_WM_STRUT (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_WM_STRUT)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 4)))
+(defclass xcb:ewmh:get-_NET_WM_STRUT~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_STRUT)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_STRUT
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_STRUT)
+ ((property :initform 'xcb:Atom:_NET_WM_STRUT)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_STRUT_PARTIAL
+(defclass xcb:ewmh:-_NET_WM_STRUT_PARTIAL (xcb:--struct)
+ ((left :initarg :left :type xcb:-ignore)
+ (right :initarg :right :type xcb:-ignore)
+ (top :initarg :top :type xcb:-ignore)
+ (bottom :initarg :bottom :type xcb:-ignore)
+ (left-start-y :initarg :left-start-y :type xcb:-ignore)
+ (left-end-y :initarg :left-end-y :type xcb:-ignore)
+ (right-start-y :initarg :right-start-y :type xcb:-ignore)
+ (right-end-y :initarg :right-end-y :type xcb:-ignore)
+ (top-start-x :initarg :top-start-x :type xcb:-ignore)
+ (top-end-x :initarg :top-end-x :type xcb:-ignore)
+ (bottom-start-x :initarg :bottom-start-x :type xcb:-ignore)
+ (bottom-end-x :initarg :bottom-end-x :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_WM_STRUT_PARTIAL (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_WM_STRUT_PARTIAL)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 12)))
+(defclass xcb:ewmh:get-_NET_WM_STRUT_PARTIAL~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_STRUT_PARTIAL)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_STRUT_PARTIAL
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_STRUT_PARTIAL)
+ ((property :initform 'xcb:Atom:_NET_WM_STRUT_PARTIAL)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_ICON_GEOMETRY
+(defclass xcb:ewmh:-_NET_WM_ICON_GEOMETRY (xcb:--struct)
+ ((x :initarg :x :type xcb:-ignore)
+ (y :initarg :y :type xcb:-ignore)
+ (width :initarg :width :type xcb:-ignore)
+ (height :initarg :height :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_WM_ICON_GEOMETRY (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_WM_ICON_GEOMETRY)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 4)))
+(defclass xcb:ewmh:get-_NET_WM_ICON_GEOMETRY~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_ICON_GEOMETRY)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_ICON_GEOMETRY
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_ICON_GEOMETRY)
+ ((property :initform 'xcb:Atom:_NET_WM_ICON_GEOMETRY)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_ICON
+(defclass xcb:ewmh:-get-_NET_WM_ICON (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_ICON)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:-get-_NET_WM_ICON~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:-set-_NET_WM_ICON (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_ICON)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_PID
+(defclass xcb:ewmh:get-_NET_WM_PID (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_PID)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WM_PID~reply (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_PID (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_PID)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_HANDLED_ICONS
+(defclass xcb:ewmh:get-_NET_WM_HANDLED_ICONS (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_HANDLED_ICONS)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WM_HANDLED_ICONS~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_HANDLED_ICONS (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_HANDLED_ICONS)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_USER_TIME
+(defclass xcb:ewmh:get-_NET_WM_USER_TIME (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_USER_TIME)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WM_USER_TIME~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_USER_TIME (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_USER_TIME)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_USER_TIME_WINDOW
+(defclass xcb:ewmh:get-_NET_WM_USER_TIME_WINDOW (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_USER_TIME_WINDOW)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WM_USER_TIME_WINDOW~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_USER_TIME_WINDOW
+ (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_USER_TIME_WINDOW)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_FRAME_EXTENTS
+(defclass xcb:ewmh:-_NET_FRAME_EXTENTS (xcb:--struct)
+ ((left :initarg :left :type xcb:-ignore)
+ (right :initarg :right :type xcb:-ignore)
+ (top :initarg :top :type xcb:-ignore)
+ (bottom :initarg :bottom :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_FRAME_EXTENTS (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_FRAME_EXTENTS)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 4)))
+(defclass xcb:ewmh:get-_NET_FRAME_EXTENTS~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_FRAME_EXTENTS)
+ nil)
+(defclass xcb:ewmh:set-_NET_FRAME_EXTENTS
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_FRAME_EXTENTS)
+ ((property :initform 'xcb:Atom:_NET_FRAME_EXTENTS)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_OPAQUE_REGION
+(defclass xcb:ewmh:get-_NET_WM_OPAQUE_REGION (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_OPAQUE_REGION)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:ewmh:get-_NET_WM_OPAQUE_REGION~reply
+ (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_OPAQUE_REGION (xcb:icccm:-ChangeProperty)
+ ((property :initform 'xcb:Atom:_NET_WM_OPAQUE_REGION)
+ (type :initform 'xcb:Atom:ATOM)))
+
+;; _NET_WM_BYPASS_COMPOSITOR
+(defclass xcb:ewmh:get-_NET_WM_BYPASS_COMPOSITOR
+ (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_BYPASS_COMPOSITOR)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:get-_NET_WM_BYPASS_COMPOSITOR~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_BYPASS_COMPOSITOR
+ (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_WM_BYPASS_COMPOSITOR)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;;;; Window Manager Protocols
+
+;; _NET_WM_PING
+(defclass xcb:ewmh:_NET_WM_PING (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:WM_PROTOCOLS)
+ (protocol :initform 'xcb:Atom:_NET_WM_PING :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:CARD32)
+ (client-window :initarg :client-window :type xcb:WINDOW)))
+
+;; _NET_WM_SYNC_REQUEST
+(defclass xcb:ewmh:_NET_WM_SYNC_REQUEST (xcb:ewmh:-ClientMessage)
+ ((type :initform 'xcb:Atom:WM_PROTOCOLS)
+ (protocol :initform 'xcb:Atom:_NET_WM_SYNC_REQUEST :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:CARD32)
+ (low :initarg :low :type xcb:CARD32)
+ (high :initarg :high :type xcb:CARD32)))
+
+;; _NET_WM_SYNC_REQUEST_COUNTER
+(defclass xcb:ewmh:-_NET_WM_SYNC_REQUEST_COUNTER (xcb:--struct)
+ ((low :initarg :low :type xcb:-ignore)
+ (high :initarg :hight :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_WM_SYNC_REQUEST_COUNTER
+ (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_WM_SYNC_REQUEST_COUNTER)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 2)))
+(defclass xcb:ewmh:get-_NET_WM_SYNC_REQUEST_COUNTER~reply
+ (xcb:icccm:-GetProperty-explicit~reply
+ xcb:ewmh:-_NET_WM_SYNC_REQUEST_COUNTER)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_SYNC_REQUEST_COUNTER
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_SYNC_REQUEST_COUNTER)
+ ((property :initform 'xcb:Atom:_NET_WM_SYNC_REQUEST_COUNTER)
+ (type :initform 'xcb:Atom:CARDINAL)))
+
+;; _NET_WM_FULLSCREEN_MONITORS
+(defclass xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS (xcb:--struct)
+ ((top :initarg :top :type xcb:-ignore)
+ (bottom :initarg :bottom :type xcb:-ignore)
+ (left :initarg :left :type xcb:-ignore)
+ (right :initarg :right :type xcb:-ignore)))
+;;
+(defclass xcb:ewmh:get-_NET_WM_FULLSCREEN_MONITORS
+ (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_NET_WM_FULLSCREEN_MONITORS)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (long-length :initform 4)))
+(defclass xcb:ewmh:get-_NET_WM_FULLSCREEN_MONITORS~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS)
+ nil)
+(defclass xcb:ewmh:set-_NET_WM_FULLSCREEN_MONITORS
+ (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS)
+ ((property :initform 'xcb:Atom:_NET_WM_FULLSCREEN_MONITORS)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:ewmh:_NET_WM_FULLSCREEN_MONITORS
+ (xcb:ewmh:-ClientMessage xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS)
+ ((type :initform 'xcb:Atom:_NET_WM_FULLSCREEN_MONITORS)))
+
+;;;; Other Properties
+
+;;;; Misc.
+
+(defconst xcb:ewmh:source-indication:none 0)
+(defconst xcb:ewmh:source-indication:normal 1)
+(defconst xcb:ewmh:source-indication:other 2)
+
+
+
+(provide 'xcb-ewmh)
+
+;;; xcb-ewmh.el ends here
diff --git a/elpa/xelb-0.20/xcb-ewmh.elc b/elpa/xelb-0.20/xcb-ewmh.elc
new file mode 100644
index 0000000..5e5c5d4
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-ewmh.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-ge.el b/elpa/xelb-0.20/xcb-ge.el
new file mode 100644
index 0000000..f18c8eb
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-ge.el
@@ -0,0 +1,52 @@
+;;; xcb-ge.el --- X11 GenericEvent extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'ge.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:ge:-extension-xname "Generic Event Extension")
+(defconst xcb:ge:-extension-name "GenericEvent")
+(defconst xcb:ge:-major-version 1)
+(defconst xcb:ge:-minor-version 0)
+
+(defclass xcb:ge:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD16)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD16)))
+(defclass xcb:ge:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+
+
+(provide 'xcb-ge)
+
+;;; xcb-ge.el ends here
diff --git a/elpa/xelb-0.20/xcb-ge.elc b/elpa/xelb-0.20/xcb-ge.elc
new file mode 100644
index 0000000..f25012e
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-ge.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-glx.el b/elpa/xelb-0.20/xcb-glx.el
new file mode 100644
index 0000000..fd1386a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-glx.el
@@ -0,0 +1,1861 @@
+;;; xcb-glx.el --- X11 Glx extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'glx.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:glx:-extension-xname "GLX")
+(defconst xcb:glx:-extension-name "Glx")
+(defconst xcb:glx:-major-version 1)
+(defconst xcb:glx:-minor-version 4)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:glx:PIXMAP 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:glx:CONTEXT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:glx:PBUFFER 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:glx:WINDOW 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:glx:FBCONFIG 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:glx:DRAWABLE 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:glx:FLOAT32 'xcb:float)
+
+(xcb:deftypealias 'xcb:glx:FLOAT64 'xcb:double)
+
+(xcb:deftypealias 'xcb:glx:BOOL32 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:glx:CONTEXT_TAG 'xcb:CARD32)
+
+(defclass xcb:glx:Generic
+ (xcb:-error)
+ ((~code :initform -1)
+ (bad-value :initarg :bad-value :type xcb:CARD32)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (pad~0 :initform 21 :type xcb:-pad)))
+
+(defclass xcb:glx:BadContext
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 0)))
+
+(defclass xcb:glx:BadContextState
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 1)))
+
+(defclass xcb:glx:BadDrawable
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 2)))
+
+(defclass xcb:glx:BadPixmap
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 3)))
+
+(defclass xcb:glx:BadContextTag
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 4)))
+
+(defclass xcb:glx:BadCurrentWindow
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 5)))
+
+(defclass xcb:glx:BadRenderRequest
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 6)))
+
+(defclass xcb:glx:BadLargeRequest
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 7)))
+
+(defclass xcb:glx:UnsupportedPrivateRequest
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 8)))
+
+(defclass xcb:glx:BadFBConfig
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 9)))
+
+(defclass xcb:glx:BadPbuffer
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 10)))
+
+(defclass xcb:glx:BadCurrentDrawable
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 11)))
+
+(defclass xcb:glx:BadWindow
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 12)))
+
+(defclass xcb:glx:GLXBadProfileARB
+ (xcb:-error xcb:glx:Generic)
+ ((~code :initform 13)))
+
+(defclass xcb:glx:PbufferClobber
+ (xcb:-event)
+ ((~code :initform 0)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event-type :initarg :event-type :type xcb:CARD16)
+ (draw-type :initarg :draw-type :type xcb:CARD16)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)
+ (b-mask :initarg :b-mask :type xcb:CARD32)
+ (aux-buffer :initarg :aux-buffer :type xcb:CARD16)
+ (x :initarg :x :type xcb:CARD16)
+ (y :initarg :y :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (count :initarg :count :type xcb:CARD16)
+ (pad~1 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:glx:BufferSwapComplete
+ (xcb:-event)
+ ((~code :initform 1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event-type :initarg :event-type :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)
+ (ust-hi :initarg :ust-hi :type xcb:CARD32)
+ (ust-lo :initarg :ust-lo :type xcb:CARD32)
+ (msc-hi :initarg :msc-hi :type xcb:CARD32)
+ (msc-lo :initarg :msc-lo :type xcb:CARD32)
+ (sbc :initarg :sbc :type xcb:CARD32)))
+
+(defconst xcb:glx:PBCET:Damaged 32791)
+(defconst xcb:glx:PBCET:Saved 32792)
+
+(defconst xcb:glx:PBCDT:Window 32793)
+(defconst xcb:glx:PBCDT:Pbuffer 32794)
+
+(defclass xcb:glx:Render
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (data~ :initform
+ '(name data type xcb:BYTE size nil)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:RenderLarge
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (request-num :initarg :request-num :type xcb:CARD16)
+ (request-total :initarg :request-total :type xcb:CARD16)
+ (data-len :initarg :data-len :type xcb:CARD32)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (xcb:-fieldref 'data-len))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:CreateContext
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (context :initarg :context :type xcb:glx:CONTEXT)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (screen :initarg :screen :type xcb:CARD32)
+ (share-list :initarg :share-list :type xcb:glx:CONTEXT)
+ (is-direct :initarg :is-direct :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:glx:DestroyContext
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (context :initarg :context :type xcb:glx:CONTEXT)))
+
+(defclass xcb:glx:MakeCurrent
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)
+ (context :initarg :context :type xcb:glx:CONTEXT)
+ (old-context-tag :initarg :old-context-tag :type xcb:glx:CONTEXT_TAG)))
+(defclass xcb:glx:MakeCurrent~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:glx:IsDirect
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (context :initarg :context :type xcb:glx:CONTEXT)))
+(defclass xcb:glx:IsDirect~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (is-direct :initarg :is-direct :type xcb:BOOL)
+ (pad~1 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:glx:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+(defclass xcb:glx:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:glx:WaitGL
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)))
+
+(defclass xcb:glx:WaitX
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)))
+
+(defclass xcb:glx:CopyContext
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (src :initarg :src :type xcb:glx:CONTEXT)
+ (dest :initarg :dest :type xcb:glx:CONTEXT)
+ (mask :initarg :mask :type xcb:CARD32)
+ (src-context-tag :initarg :src-context-tag :type xcb:glx:CONTEXT_TAG)))
+
+(defconst xcb:glx:GC:GL_CURRENT_BIT 1)
+(defconst xcb:glx:GC:GL_POINT_BIT 2)
+(defconst xcb:glx:GC:GL_LINE_BIT 4)
+(defconst xcb:glx:GC:GL_POLYGON_BIT 8)
+(defconst xcb:glx:GC:GL_POLYGON_STIPPLE_BIT 16)
+(defconst xcb:glx:GC:GL_PIXEL_MODE_BIT 32)
+(defconst xcb:glx:GC:GL_LIGHTING_BIT 64)
+(defconst xcb:glx:GC:GL_FOG_BIT 128)
+(defconst xcb:glx:GC:GL_DEPTH_BUFFER_BIT 256)
+(defconst xcb:glx:GC:GL_ACCUM_BUFFER_BIT 512)
+(defconst xcb:glx:GC:GL_STENCIL_BUFFER_BIT 1024)
+(defconst xcb:glx:GC:GL_VIEWPORT_BIT 2048)
+(defconst xcb:glx:GC:GL_TRANSFORM_BIT 4096)
+(defconst xcb:glx:GC:GL_ENABLE_BIT 8192)
+(defconst xcb:glx:GC:GL_COLOR_BUFFER_BIT 16384)
+(defconst xcb:glx:GC:GL_HINT_BIT 32768)
+(defconst xcb:glx:GC:GL_EVAL_BIT 65536)
+(defconst xcb:glx:GC:GL_LIST_BIT 131072)
+(defconst xcb:glx:GC:GL_TEXTURE_BIT 262144)
+(defconst xcb:glx:GC:GL_SCISSOR_BIT 524288)
+(defconst xcb:glx:GC:GL_ALL_ATTRIB_BITS 16777215)
+
+(defclass xcb:glx:SwapBuffers
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)))
+
+(defclass xcb:glx:UseXFont
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (font :initarg :font :type xcb:FONT)
+ (first :initarg :first :type xcb:CARD32)
+ (count :initarg :count :type xcb:CARD32)
+ (list-base :initarg :list-base :type xcb:CARD32)))
+
+(defclass xcb:glx:CreateGLXPixmap
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (glx-pixmap :initarg :glx-pixmap :type xcb:glx:PIXMAP)))
+
+(defclass xcb:glx:GetVisualConfigs
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:glx:GetVisualConfigs~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-visuals :initarg :num-visuals :type xcb:CARD32)
+ (num-properties :initarg :num-properties :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (property-list~ :initform
+ '(name property-list type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (property-list :initarg :property-list :type xcb:-ignore)))
+
+(defclass xcb:glx:DestroyGLXPixmap
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (glx-pixmap :initarg :glx-pixmap :type xcb:glx:PIXMAP)))
+
+(defclass xcb:glx:VendorPrivate
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (vendor-code :initarg :vendor-code :type xcb:CARD32)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (data~ :initform
+ '(name data type xcb:BYTE size nil)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:VendorPrivateWithReply
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (vendor-code :initarg :vendor-code :type xcb:CARD32)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (data~ :initform
+ '(name data type xcb:BYTE size nil)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+(defclass xcb:glx:VendorPrivateWithReply~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (retval :initarg :retval :type xcb:CARD32)
+ (data1~ :initform
+ '(name data1 type xcb:BYTE size 24)
+ :type xcb:-list)
+ (data1 :initarg :data1 :type xcb:-ignore)
+ (data2~ :initform
+ '(name data2 type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data2 :initarg :data2 :type xcb:-ignore)))
+
+(defclass xcb:glx:QueryExtensionsString
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:glx:QueryExtensionsString~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (pad~2 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:glx:QueryServerString
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (name :initarg :name :type xcb:CARD32)))
+(defclass xcb:glx:QueryServerString~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (str-len :initarg :str-len :type xcb:CARD32)
+ (pad~2 :initform 16 :type xcb:-pad)
+ (string~ :initform
+ '(name string type xcb:char size
+ (xcb:-fieldref 'str-len))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+
+(defclass xcb:glx:ClientInfo
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (str-len :initarg :str-len :type xcb:CARD32)
+ (string~ :initform
+ '(name string type xcb:char size
+ (xcb:-fieldref 'str-len))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+
+(defclass xcb:glx:GetFBConfigs
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:glx:GetFBConfigs~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-FB-configs :initarg :num-FB-configs :type xcb:CARD32)
+ (num-properties :initarg :num-properties :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (property-list~ :initform
+ '(name property-list type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (property-list :initarg :property-list :type xcb:-ignore)))
+
+(defclass xcb:glx:CreatePixmap
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (fbconfig :initarg :fbconfig :type xcb:glx:FBCONFIG)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (glx-pixmap :initarg :glx-pixmap :type xcb:glx:PIXMAP)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:DestroyPixmap
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (glx-pixmap :initarg :glx-pixmap :type xcb:glx:PIXMAP)))
+
+(defclass xcb:glx:CreateNewContext
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (context :initarg :context :type xcb:glx:CONTEXT)
+ (fbconfig :initarg :fbconfig :type xcb:glx:FBCONFIG)
+ (screen :initarg :screen :type xcb:CARD32)
+ (render-type :initarg :render-type :type xcb:CARD32)
+ (share-list :initarg :share-list :type xcb:glx:CONTEXT)
+ (is-direct :initarg :is-direct :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:glx:QueryContext
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)
+ (context :initarg :context :type xcb:glx:CONTEXT)))
+(defclass xcb:glx:QueryContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:MakeContextCurrent
+ (xcb:-request)
+ ((~opcode :initform 26 :type xcb:-u1)
+ (old-context-tag :initarg :old-context-tag :type xcb:glx:CONTEXT_TAG)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)
+ (read-drawable :initarg :read-drawable :type xcb:glx:DRAWABLE)
+ (context :initarg :context :type xcb:glx:CONTEXT)))
+(defclass xcb:glx:MakeContextCurrent~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:glx:CreatePbuffer
+ (xcb:-request)
+ ((~opcode :initform 27 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (fbconfig :initarg :fbconfig :type xcb:glx:FBCONFIG)
+ (pbuffer :initarg :pbuffer :type xcb:glx:PBUFFER)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:DestroyPbuffer
+ (xcb:-request)
+ ((~opcode :initform 28 :type xcb:-u1)
+ (pbuffer :initarg :pbuffer :type xcb:glx:PBUFFER)))
+
+(defclass xcb:glx:GetDrawableAttributes
+ (xcb:-request)
+ ((~opcode :initform 29 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)))
+(defclass xcb:glx:GetDrawableAttributes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:ChangeDrawableAttributes
+ (xcb:-request)
+ ((~opcode :initform 30 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:glx:DRAWABLE)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:CreateWindow
+ (xcb:-request)
+ ((~opcode :initform 31 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (fbconfig :initarg :fbconfig :type xcb:glx:FBCONFIG)
+ (window :initarg :window :type xcb:WINDOW)
+ (glx-window :initarg :glx-window :type xcb:glx:WINDOW)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:DeleteWindow
+ (xcb:-request)
+ ((~opcode :initform 32 :type xcb:-u1)
+ (glxwindow :initarg :glxwindow :type xcb:glx:WINDOW)))
+
+(defclass xcb:glx:SetClientInfoARB
+ (xcb:-request)
+ ((~opcode :initform 33 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (num-versions :initarg :num-versions :type xcb:CARD32)
+ (gl-str-len :initarg :gl-str-len :type xcb:CARD32)
+ (glx-str-len :initarg :glx-str-len :type xcb:CARD32)
+ (gl-versions~ :initform
+ '(name gl-versions type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-versions)
+ 2))
+ :type xcb:-list)
+ (gl-versions :initarg :gl-versions :type xcb:-ignore)
+ (gl-extension-string~ :initform
+ '(name gl-extension-string type xcb:char size
+ (xcb:-fieldref 'gl-str-len))
+ :type xcb:-list)
+ (gl-extension-string :initarg :gl-extension-string :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (glx-extension-string~ :initform
+ '(name glx-extension-string type xcb:char size
+ (xcb:-fieldref 'glx-str-len))
+ :type xcb:-list)
+ (glx-extension-string :initarg :glx-extension-string :type xcb:-ignore)))
+
+(defclass xcb:glx:CreateContextAttribsARB
+ (xcb:-request)
+ ((~opcode :initform 34 :type xcb:-u1)
+ (context :initarg :context :type xcb:glx:CONTEXT)
+ (fbconfig :initarg :fbconfig :type xcb:glx:FBCONFIG)
+ (screen :initarg :screen :type xcb:CARD32)
+ (share-list :initarg :share-list :type xcb:glx:CONTEXT)
+ (is-direct :initarg :is-direct :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (num-attribs :initarg :num-attribs :type xcb:CARD32)
+ (attribs~ :initform
+ '(name attribs type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-attribs)
+ 2))
+ :type xcb:-list)
+ (attribs :initarg :attribs :type xcb:-ignore)))
+
+(defclass xcb:glx:SetClientInfo2ARB
+ (xcb:-request)
+ ((~opcode :initform 35 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (num-versions :initarg :num-versions :type xcb:CARD32)
+ (gl-str-len :initarg :gl-str-len :type xcb:CARD32)
+ (glx-str-len :initarg :glx-str-len :type xcb:CARD32)
+ (gl-versions~ :initform
+ '(name gl-versions type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'num-versions)
+ 3))
+ :type xcb:-list)
+ (gl-versions :initarg :gl-versions :type xcb:-ignore)
+ (gl-extension-string~ :initform
+ '(name gl-extension-string type xcb:char size
+ (xcb:-fieldref 'gl-str-len))
+ :type xcb:-list)
+ (gl-extension-string :initarg :gl-extension-string :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (glx-extension-string~ :initform
+ '(name glx-extension-string type xcb:char size
+ (xcb:-fieldref 'glx-str-len))
+ :type xcb:-list)
+ (glx-extension-string :initarg :glx-extension-string :type xcb:-ignore)))
+
+(defclass xcb:glx:NewList
+ (xcb:-request)
+ ((~opcode :initform 101 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (list :initarg :list :type xcb:CARD32)
+ (mode :initarg :mode :type xcb:CARD32)))
+
+(defclass xcb:glx:EndList
+ (xcb:-request)
+ ((~opcode :initform 102 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)))
+
+(defclass xcb:glx:DeleteLists
+ (xcb:-request)
+ ((~opcode :initform 103 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (list :initarg :list :type xcb:CARD32)
+ (range :initarg :range :type xcb:INT32)))
+
+(defclass xcb:glx:GenLists
+ (xcb:-request)
+ ((~opcode :initform 104 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (range :initarg :range :type xcb:INT32)))
+(defclass xcb:glx:GenLists~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:CARD32)))
+
+(defclass xcb:glx:FeedbackBuffer
+ (xcb:-request)
+ ((~opcode :initform 105 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (size :initarg :size :type xcb:INT32)
+ (type :initarg :type :type xcb:INT32)))
+
+(defclass xcb:glx:SelectBuffer
+ (xcb:-request)
+ ((~opcode :initform 106 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (size :initarg :size :type xcb:INT32)))
+
+(defclass xcb:glx:RenderMode
+ (xcb:-request)
+ ((~opcode :initform 107 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (mode :initarg :mode :type xcb:CARD32)))
+(defclass xcb:glx:RenderMode~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:CARD32)
+ (n :initarg :n :type xcb:CARD32)
+ (new-mode :initarg :new-mode :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:CARD32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defconst xcb:glx:RM:GL_RENDER 7168)
+(defconst xcb:glx:RM:GL_FEEDBACK 7169)
+(defconst xcb:glx:RM:GL_SELECT 7170)
+
+(defclass xcb:glx:Finish
+ (xcb:-request)
+ ((~opcode :initform 108 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)))
+(defclass xcb:glx:Finish~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:glx:PixelStoref
+ (xcb:-request)
+ ((~opcode :initform 109 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pname :initarg :pname :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)))
+
+(defclass xcb:glx:PixelStorei
+ (xcb:-request)
+ ((~opcode :initform 110 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pname :initarg :pname :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)))
+
+(defclass xcb:glx:ReadPixels
+ (xcb:-request)
+ ((~opcode :initform 111 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (x :initarg :x :type xcb:INT32)
+ (y :initarg :y :type xcb:INT32)
+ (width :initarg :width :type xcb:INT32)
+ (height :initarg :height :type xcb:INT32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)
+ (lsb-first :initarg :lsb-first :type xcb:BOOL)))
+(defclass xcb:glx:ReadPixels~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetBooleanv
+ (xcb:-request)
+ ((~opcode :initform 112 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pname :initarg :pname :type xcb:INT32)))
+(defclass xcb:glx:GetBooleanv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:BOOL)
+ (pad~2 :initform 15 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BOOL size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetClipPlane
+ (xcb:-request)
+ ((~opcode :initform 113 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (plane :initarg :plane :type xcb:INT32)))
+(defclass xcb:glx:GetClipPlane~reply
+ (xcb:-reply)
+ ((pad~0 :initform 8 :type xcb:-pad-align)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (pad~2 :initform 24 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT64 size
+ (/
+ (xcb:-fieldref 'length)
+ 2))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetDoublev
+ (xcb:-request)
+ ((~opcode :initform 114 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetDoublev~reply
+ (xcb:-reply)
+ ((pad~0 :initform 8 :type xcb:-pad-align)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT64)
+ (pad~3 :initform 8 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT64 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetError
+ (xcb:-request)
+ ((~opcode :initform 115 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)))
+(defclass xcb:glx:GetError~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (error :initarg :error :type xcb:INT32)))
+
+(defclass xcb:glx:GetFloatv
+ (xcb:-request)
+ ((~opcode :initform 116 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetFloatv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetIntegerv
+ (xcb:-request)
+ ((~opcode :initform 117 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetIntegerv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetLightfv
+ (xcb:-request)
+ ((~opcode :initform 118 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (light :initarg :light :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetLightfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetLightiv
+ (xcb:-request)
+ ((~opcode :initform 119 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (light :initarg :light :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetLightiv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMapdv
+ (xcb:-request)
+ ((~opcode :initform 120 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (query :initarg :query :type xcb:CARD32)))
+(defclass xcb:glx:GetMapdv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 8 :type xcb:-pad-align)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT64)
+ (pad~3 :initform 8 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT64 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMapfv
+ (xcb:-request)
+ ((~opcode :initform 121 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (query :initarg :query :type xcb:CARD32)))
+(defclass xcb:glx:GetMapfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMapiv
+ (xcb:-request)
+ ((~opcode :initform 122 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (query :initarg :query :type xcb:CARD32)))
+(defclass xcb:glx:GetMapiv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMaterialfv
+ (xcb:-request)
+ ((~opcode :initform 123 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (face :initarg :face :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetMaterialfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMaterialiv
+ (xcb:-request)
+ ((~opcode :initform 124 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (face :initarg :face :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetMaterialiv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetPixelMapfv
+ (xcb:-request)
+ ((~opcode :initform 125 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (map :initarg :map :type xcb:CARD32)))
+(defclass xcb:glx:GetPixelMapfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetPixelMapuiv
+ (xcb:-request)
+ ((~opcode :initform 126 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (map :initarg :map :type xcb:CARD32)))
+(defclass xcb:glx:GetPixelMapuiv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:CARD32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:CARD32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetPixelMapusv
+ (xcb:-request)
+ ((~opcode :initform 127 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (map :initarg :map :type xcb:CARD32)))
+(defclass xcb:glx:GetPixelMapusv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:CARD16)
+ (pad~2 :initform 16 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:CARD16 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetPolygonStipple
+ (xcb:-request)
+ ((~opcode :initform 128 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (lsb-first :initarg :lsb-first :type xcb:BOOL)))
+(defclass xcb:glx:GetPolygonStipple~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetString
+ (xcb:-request)
+ ((~opcode :initform 129 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (name :initarg :name :type xcb:CARD32)))
+(defclass xcb:glx:GetString~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (pad~2 :initform 16 :type xcb:-pad)
+ (string~ :initform
+ '(name string type xcb:char size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexEnvfv
+ (xcb:-request)
+ ((~opcode :initform 130 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexEnvfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexEnviv
+ (xcb:-request)
+ ((~opcode :initform 131 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexEnviv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexGendv
+ (xcb:-request)
+ ((~opcode :initform 132 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (coord :initarg :coord :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexGendv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 8 :type xcb:-pad-align)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT64)
+ (pad~3 :initform 8 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT64 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexGenfv
+ (xcb:-request)
+ ((~opcode :initform 133 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (coord :initarg :coord :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexGenfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexGeniv
+ (xcb:-request)
+ ((~opcode :initform 134 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (coord :initarg :coord :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexGeniv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexImage
+ (xcb:-request)
+ ((~opcode :initform 135 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (level :initarg :level :type xcb:INT32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)))
+(defclass xcb:glx:GetTexImage~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (width :initarg :width :type xcb:INT32)
+ (height :initarg :height :type xcb:INT32)
+ (depth :initarg :depth :type xcb:INT32)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexParameterfv
+ (xcb:-request)
+ ((~opcode :initform 136 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexParameterfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexParameteriv
+ (xcb:-request)
+ ((~opcode :initform 137 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexParameteriv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexLevelParameterfv
+ (xcb:-request)
+ ((~opcode :initform 138 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (level :initarg :level :type xcb:INT32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexLevelParameterfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetTexLevelParameteriv
+ (xcb:-request)
+ ((~opcode :initform 139 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (level :initarg :level :type xcb:INT32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetTexLevelParameteriv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:IsEnabled
+ (xcb:-request)
+ ((~opcode :initform 140 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (capability :initarg :capability :type xcb:CARD32)))
+(defclass xcb:glx:IsEnabled~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:glx:BOOL32)))
+
+(defclass xcb:glx:IsList
+ (xcb:-request)
+ ((~opcode :initform 141 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (list :initarg :list :type xcb:CARD32)))
+(defclass xcb:glx:IsList~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:glx:BOOL32)))
+
+(defclass xcb:glx:Flush
+ (xcb:-request)
+ ((~opcode :initform 142 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)))
+
+(defclass xcb:glx:AreTexturesResident
+ (xcb:-request)
+ ((~opcode :initform 143 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (n :initarg :n :type xcb:INT32)
+ (textures~ :initform
+ '(name textures type xcb:CARD32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (textures :initarg :textures :type xcb:-ignore)))
+(defclass xcb:glx:AreTexturesResident~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:glx:BOOL32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BOOL size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:DeleteTextures
+ (xcb:-request)
+ ((~opcode :initform 144 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (n :initarg :n :type xcb:INT32)
+ (textures~ :initform
+ '(name textures type xcb:CARD32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (textures :initarg :textures :type xcb:-ignore)))
+
+(defclass xcb:glx:GenTextures
+ (xcb:-request)
+ ((~opcode :initform 145 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (n :initarg :n :type xcb:INT32)))
+(defclass xcb:glx:GenTextures~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:IsTexture
+ (xcb:-request)
+ ((~opcode :initform 146 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (texture :initarg :texture :type xcb:CARD32)))
+(defclass xcb:glx:IsTexture~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:glx:BOOL32)))
+
+(defclass xcb:glx:GetColorTable
+ (xcb:-request)
+ ((~opcode :initform 147 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)))
+(defclass xcb:glx:GetColorTable~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (width :initarg :width :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetColorTableParameterfv
+ (xcb:-request)
+ ((~opcode :initform 148 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetColorTableParameterfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetColorTableParameteriv
+ (xcb:-request)
+ ((~opcode :initform 149 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetColorTableParameteriv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetConvolutionFilter
+ (xcb:-request)
+ ((~opcode :initform 150 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)))
+(defclass xcb:glx:GetConvolutionFilter~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (width :initarg :width :type xcb:INT32)
+ (height :initarg :height :type xcb:INT32)
+ (pad~2 :initform 8 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetConvolutionParameterfv
+ (xcb:-request)
+ ((~opcode :initform 151 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetConvolutionParameterfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetConvolutionParameteriv
+ (xcb:-request)
+ ((~opcode :initform 152 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetConvolutionParameteriv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetSeparableFilter
+ (xcb:-request)
+ ((~opcode :initform 153 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)))
+(defclass xcb:glx:GetSeparableFilter~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (row-w :initarg :row-w :type xcb:INT32)
+ (col-h :initarg :col-h :type xcb:INT32)
+ (pad~2 :initform 8 :type xcb:-pad)
+ (rows-and-cols~ :initform
+ '(name rows-and-cols type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (rows-and-cols :initarg :rows-and-cols :type xcb:-ignore)))
+
+(defclass xcb:glx:GetHistogram
+ (xcb:-request)
+ ((~opcode :initform 154 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)
+ (reset :initarg :reset :type xcb:BOOL)))
+(defclass xcb:glx:GetHistogram~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (width :initarg :width :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetHistogramParameterfv
+ (xcb:-request)
+ ((~opcode :initform 155 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetHistogramParameterfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetHistogramParameteriv
+ (xcb:-request)
+ ((~opcode :initform 156 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetHistogramParameteriv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMinmax
+ (xcb:-request)
+ ((~opcode :initform 157 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)
+ (swap-bytes :initarg :swap-bytes :type xcb:BOOL)
+ (reset :initarg :reset :type xcb:BOOL)))
+(defclass xcb:glx:GetMinmax~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMinmaxParameterfv
+ (xcb:-request)
+ ((~opcode :initform 158 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetMinmaxParameterfv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:glx:FLOAT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:glx:FLOAT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetMinmaxParameteriv
+ (xcb:-request)
+ ((~opcode :initform 159 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetMinmaxParameteriv~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetCompressedTexImageARB
+ (xcb:-request)
+ ((~opcode :initform 160 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (level :initarg :level :type xcb:INT32)))
+(defclass xcb:glx:GetCompressedTexImageARB~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (size :initarg :size :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:DeleteQueriesARB
+ (xcb:-request)
+ ((~opcode :initform 161 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (n :initarg :n :type xcb:INT32)
+ (ids~ :initform
+ '(name ids type xcb:CARD32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (ids :initarg :ids :type xcb:-ignore)))
+
+(defclass xcb:glx:GenQueriesARB
+ (xcb:-request)
+ ((~opcode :initform 162 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (n :initarg :n :type xcb:INT32)))
+(defclass xcb:glx:GenQueriesARB~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:IsQueryARB
+ (xcb:-request)
+ ((~opcode :initform 163 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (id :initarg :id :type xcb:CARD32)))
+(defclass xcb:glx:IsQueryARB~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ret-val :initarg :ret-val :type xcb:glx:BOOL32)))
+
+(defclass xcb:glx:GetQueryivARB
+ (xcb:-request)
+ ((~opcode :initform 164 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (target :initarg :target :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetQueryivARB~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetQueryObjectivARB
+ (xcb:-request)
+ ((~opcode :initform 165 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (id :initarg :id :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetQueryObjectivARB~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:INT32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:INT32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:glx:GetQueryObjectuivARB
+ (xcb:-request)
+ ((~opcode :initform 166 :type xcb:-u1)
+ (context-tag :initarg :context-tag :type xcb:glx:CONTEXT_TAG)
+ (id :initarg :id :type xcb:CARD32)
+ (pname :initarg :pname :type xcb:CARD32)))
+(defclass xcb:glx:GetQueryObjectuivARB~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (n :initarg :n :type xcb:CARD32)
+ (datum :initarg :datum :type xcb:CARD32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:CARD32 size
+ (xcb:-fieldref 'n))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defconst xcb:glx:error-number-class-alist
+ '((-1 . xcb:glx:Generic)
+ (0 . xcb:glx:BadContext)
+ (1 . xcb:glx:BadContextState)
+ (2 . xcb:glx:BadDrawable)
+ (3 . xcb:glx:BadPixmap)
+ (4 . xcb:glx:BadContextTag)
+ (5 . xcb:glx:BadCurrentWindow)
+ (6 . xcb:glx:BadRenderRequest)
+ (7 . xcb:glx:BadLargeRequest)
+ (8 . xcb:glx:UnsupportedPrivateRequest)
+ (9 . xcb:glx:BadFBConfig)
+ (10 . xcb:glx:BadPbuffer)
+ (11 . xcb:glx:BadCurrentDrawable)
+ (12 . xcb:glx:BadWindow)
+ (13 . xcb:glx:GLXBadProfileARB))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:glx:event-number-class-alist
+ '((0 . xcb:glx:PbufferClobber)
+ (1 . xcb:glx:BufferSwapComplete))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-glx)
+
+;;; xcb-glx.el ends here
diff --git a/elpa/xelb-0.20/xcb-glx.elc b/elpa/xelb-0.20/xcb-glx.elc
new file mode 100644
index 0000000..df17428
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-glx.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-icccm.el b/elpa/xelb-0.20/xcb-icccm.el
new file mode 100644
index 0000000..44ea8a1
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-icccm.el
@@ -0,0 +1,563 @@
+;;; xcb-icccm.el --- Inter-Client Communication -*- lexical-binding: t -*-
+;;; Conventions Manual
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library implements ICCCM the same way as xcb/util-wm.
+
+;; Usage tips:
+;; + Do not forget to call `xcb:icccm:init' for _every_ connection using
+;; this library.
+;; + Use `xcb:icccm:SendEvent' instead of `xcb:SendEvent' to send client
+;; messages defined in this library.
+
+;; Todo:
+;; + Interned atoms are actually connection-dependent. Currently they are
+;; simply saved as global variables.
+
+;; References:
+;; + ICCCM (http://www.x.org/releases/X11R7.7/doc/xorg-docs/icccm/icccm.txt)
+;; + xcb/util-wm (git://anongit.freedesktop.org/xcb/util-wm)
+
+;;; Code:
+
+(eval-when-compile (require 'cl-lib))
+(require 'xcb)
+
+;;;; ICCCM atoms
+
+(eval-and-compile
+ (defconst xcb:icccm:-atoms
+ '(UTF8_STRING COMPOUND_TEXT TEXT C_STRING MANAGER
+ WM_PROTOCOLS WM_TAKE_FOCUS WM_DELETE_WINDOW
+ WM_STATE WM_CHANGE_STATE WM_S0)
+ "Atoms involved in ICCCM.")
+
+ (dolist (atom xcb:icccm:-atoms)
+ (eval `(defvar ,(intern (concat "xcb:Atom:" (symbol-name atom))) nil))))
+
+(cl-defmethod xcb:icccm:init ((obj xcb:connection) &optional force)
+ "Initialize ICCCM module.
+
+This method must be called before using any other method in this module."
+ (when (or force (not xcb:Atom:WM_PROTOCOLS))
+ (let ((atoms xcb:icccm:-atoms))
+ (dotimes (i (1- (x-display-screens)))
+ (push (intern (format "WM_S%d" (1+ i))) atoms))
+ (xcb:icccm:intern-atoms obj atoms force))))
+
+(cl-defmethod xcb:icccm:intern-atoms ((obj xcb:connection) atoms
+ &optional force)
+ "Intern the X atoms listed in the list ATOMS.
+
+The value of these atoms will be available in `xcb:Atom' namespace."
+ (dolist (atom atoms)
+ (let* ((name (symbol-name atom))
+ (var-name (intern (concat "xcb:Atom:" name))))
+ (when (or force (not (and (boundp var-name) (symbol-value var-name))))
+ (set var-name
+ (slot-value (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:InternAtom
+ :only-if-exists 0
+ :name-len (length name)
+ :name name))
+ 'atom))))))
+
+;;;; Client message
+
+(defclass xcb:icccm:SendEvent (xcb:SendEvent)
+ ((propagate :initform 0)
+ (event-mask :initform 'xcb:EventMask:NoEvent))
+ :documentation "A fork of `xcb:SendEvent' to send ICCCM client messages.")
+
+(defclass xcb:icccm:--ClientMessage (xcb:--struct)
+ ((data :type xcb:-ignore)) ;shadowed slot
+ :documentation "To shadow the data slot in `xcb:ClientMessage'.")
+;;
+(defclass xcb:icccm:-ClientMessage
+ (xcb:icccm:--ClientMessage xcb:ClientMessage)
+ ((format :initform 32)
+ (type :initform 'xcb:Atom:WM_PROTOCOLS)
+ (protocol :type xcb:ATOM) ;new slot
+ (time :initarg :time :type xcb:TIMESTAMP) ;new slot
+ (pad~0 :initform 12 :type xcb:-pad)) ;new slot
+ :documentation "An ICCCM client message with data slot replaced by
+protocol and time.")
+
+(defclass xcb:icccm:-ManagerSelection
+ (xcb:icccm:--ClientMessage xcb:ClientMessage)
+ ((format :initform 32)
+ (type :initform 'xcb:Atom:MANAGER)
+ (time :initarg :time :type xcb:TIMESTAMP) ;new slot
+ (selection :initarg :selection :type xcb:ATOM) ;new slot
+ (owner :initarg :owner :type xcb:WINDOW)) ;new slot
+ :documentation "Announce that selection was successfully acquired.")
+
+(defclass xcb:icccm:WM_DELETE_WINDOW (xcb:icccm:-ClientMessage)
+ ((protocol :initform 'xcb:Atom:WM_DELETE_WINDOW)
+ (time :initform 'xcb:Time:CurrentTime))
+ :documentation "Delete a window using the WM_DELETE_WINDOW client message.")
+
+(defclass xcb:icccm:WM_TAKE_FOCUS (xcb:icccm:-ClientMessage)
+ ((protocol :initform 'xcb:Atom:WM_TAKE_FOCUS))
+ :documentation "Set a focus using the WM_TAKE_FOCUS client message.
+
+A valid timestamp (rather than `xcb:Time:CurrentTime') must be supplied.")
+
+;;;; Abstract classes for getting/changing (plain) list properties
+
+(defclass xcb:icccm:-GetProperty (xcb:GetProperty)
+ ((delete :initform 0)
+ (long-offset :initform 0)
+ (long-length :initform 1000000000.)) ;as long as possible
+ :documentation "Get an ICCCM property (request part).")
+
+(defclass xcb:icccm:-GetProperty~reply (xcb:GetProperty~reply)
+ nil
+ :documentation "Get an ICCCM property (reply part).")
+;;
+(cl-defmethod xcb:unmarshal ((obj xcb:icccm:-GetProperty~reply) byte-array)
+ "Fill in the fields in the reply of ICCCM GetProperty request OBJ
+according to BYTE-ARRAY.
+
+This method automatically format the value as 8, 16 or 32 bits array."
+ (let ((retval (cl-call-next-method obj byte-array))
+ tmp)
+ (with-slots (~lsb length format value-len value) obj
+ (if (or (= 0 value-len) (= 0 length))
+ (setf value nil) ;no available value
+ (setq tmp value ;long-offset is always 0
+ value nil)
+ (pcase format
+ (8
+ (cl-assert (= value-len (length tmp)))
+ (setf value tmp))
+ (16
+ (cl-assert (= (* 2 value-len) (length tmp)))
+ (if ~lsb
+ (dotimes (_ value-len)
+ (setf value (vconcat value
+ (vector (xcb:-unpack-u2-lsb tmp 0))))
+ (setq tmp (substring tmp 2)))
+ (dotimes (_ value-len)
+ (setf value (vconcat value
+ (vector (xcb:-unpack-u2 tmp 0))))
+ (setq tmp (substring tmp 2)))))
+ (32
+ (cl-assert (= (* 4 value-len) (length tmp)))
+ (if ~lsb
+ (dotimes (_ value-len)
+ (setf value (vconcat value
+ (vector (xcb:-unpack-u4-lsb tmp 0))))
+ (setq tmp (substring tmp 4)))
+ (dotimes (_ value-len)
+ (setf value (vconcat value (vector (xcb:-unpack-u4 tmp 0))))
+ (setq tmp (substring tmp 4)))))
+ (_ (cl-assert nil)))))
+ retval))
+
+(defclass xcb:icccm:-ChangeProperty (xcb:ChangeProperty)
+ ((mode :initform 'xcb:PropMode:Replace)
+ (format :initform 32)
+ (data :initform nil))
+ :documentation "Change an ICCCM property.")
+;;
+(cl-defmethod xcb:marshal ((obj xcb:icccm:-ChangeProperty))
+ "Return the byte-array representation of an ICCCM ChangeProperty request.
+
+This method automatically sets the data length."
+ (with-slots (~lsb format data-len data) obj
+ (setf data-len (length data))
+ (setf data
+ (pcase format
+ (8 data)
+ (16 (mapconcat (lambda (i) (if ~lsb (xcb:-pack-u2-lsb i)
+ (xcb:-pack-u2 i)))
+ data []))
+ (32 (mapconcat (lambda (i) (if ~lsb (xcb:-pack-u4-lsb i)
+ (xcb:-pack-u4 i)))
+ data []))
+ (_ (cl-assert nil)))))
+ (cl-call-next-method obj))
+
+;;;; Abstract classes for getting/changing text properties
+
+(defclass xcb:icccm:-GetProperty-text (xcb:icccm:-GetProperty)
+ ((type :initform 'xcb:GetPropertyType:Any))
+ :documentation "Get an ICCCM text property (request part).")
+
+(defclass xcb:icccm:-GetProperty-text~reply (xcb:icccm:-GetProperty~reply)
+ nil
+ :documentation "Get an ICCCM text property (reply part).")
+;;
+(cl-defmethod xcb:unmarshal ((obj xcb:icccm:-GetProperty-text~reply)
+ byte-array)
+ "Fill in the fields in the reply of ICCCM GetProperty (text) request OBJ
+according to BYTE-ARRAY.
+
+This method automatically decodes the value (as string)."
+ (let* ((retval (cl-call-next-method obj byte-array)))
+ (with-slots (format type value) obj
+ (when (symbolp type) (setq type (symbol-value type)))
+ (when (and value (= format 8))
+ (setf value
+ (decode-coding-string
+ (apply #'unibyte-string (append value nil))
+ (cond ((= type xcb:Atom:UTF8_STRING) 'utf-8)
+ ((= type xcb:Atom:STRING) 'iso-latin-1)
+ ((= type xcb:Atom:COMPOUND_TEXT)
+ 'compound-text-with-extensions)
+ ((or (eq type xcb:Atom:TEXT) (eq type xcb:Atom:C_STRING))
+ 'no-conversion)
+ (t (error "[XELB:ICCCM] Unsupported encoding: %d"
+ type)))))))
+ retval))
+
+(defclass xcb:icccm:-ChangeProperty-text (xcb:icccm:-ChangeProperty)
+ ((type :initform 'xcb:Atom:STRING) ;may be changed
+ (format :initform 8))
+ :documentation "Change an ICCCM text property.")
+;;
+(cl-defmethod xcb:marshal ((obj xcb:icccm:-ChangeProperty-text))
+ "Return the byte-array representation of an ICCCM ChangeProperty (text)
+request OBJ.
+
+This method automatically encodes the data (which is a string)."
+ (with-slots (type data) obj
+ (when (symbolp type) (setq type (symbol-value type)))
+ (setf data
+ (vconcat
+ (encode-coding-string
+ data
+ (cond ((= type xcb:Atom:UTF8_STRING) 'utf-8)
+ ((= type xcb:Atom:STRING) 'iso-latin-1)
+ ((= type xcb:Atom:COMPOUND_TEXT)
+ 'compound-text-with-extensions)
+ ((or (eq type xcb:Atom:TEXT) (eq type xcb:Atom:C_STRING))
+ 'no-conversion)
+ (t (error "[XELB:ICCCM] Unsupported encoding: %d" type)))))))
+ (cl-call-next-method obj))
+
+;;;; Abstract classes for getting/changing single field properties
+
+(defclass xcb:icccm:-GetProperty-single (xcb:icccm:-GetProperty)
+ nil
+ :documentation "Get an ICCCM single-valued property (request part).")
+
+(defclass xcb:icccm:-GetProperty-single~reply (xcb:icccm:-GetProperty~reply)
+ nil
+ :documentation "Get a single-valued ICCCM property (reply part).")
+;;
+(cl-defmethod xcb:unmarshal ((obj xcb:icccm:-GetProperty-single~reply)
+ byte-array)
+ "Fill in the fields in the reply of an ICCCM GetProperty (single-valued)
+request OBJ according to BYTE-ARRAY."
+ (let ((retval (cl-call-next-method obj byte-array)))
+ (with-slots (value) obj
+ (when value
+ (cl-assert (= 1 (length value)))
+ (setf value (elt value 0))))
+ retval))
+
+(defclass xcb:icccm:-ChangeProperty-single (xcb:icccm:-ChangeProperty)
+ nil
+ :documentation "Change a single-valued ICCCM property.")
+;;
+(cl-defmethod xcb:marshal ((obj xcb:icccm:-ChangeProperty-single))
+ "Return the byte-array representation of a single-valued ICCCM ChangeProperty
+request OBJ."
+ (with-slots (data) obj
+ (setf data `[,data]))
+ (cl-call-next-method obj))
+
+;;;; Abstract classes for getting/changing property with explicit fields
+
+(defclass xcb:icccm:-GetProperty-explicit (xcb:icccm:-GetProperty)
+ nil
+ :documentation "Get an ICCCM property whose fields are explicitly listed out
+(request part).")
+
+(defclass xcb:icccm:-GetProperty-explicit~reply (xcb:icccm:-GetProperty~reply)
+ nil
+ :documentation "Get an ICCCM property whose fields are explicitly listed out
+(reply part).")
+;;
+(cl-defmethod xcb:unmarshal ((obj xcb:icccm:-GetProperty-explicit~reply)
+ byte-array)
+ "Fill in the reply of an ICCCM GetProperty request whose fields are
+explicitly listed out."
+ (let* ((retval (cl-call-next-method obj byte-array))
+ (slots-orig (eieio-class-slots 'xcb:icccm:-GetProperty~reply))
+ (slots (eieio-class-slots (eieio-object-class obj)))
+ (slots (nthcdr (length slots-orig) slots))
+ (value (slot-value obj 'value)))
+ (unless value (setq value (make-vector (length slots) nil))) ;fallback
+ ;; Set explicit fields from value field
+ (dotimes (i (length value))
+ (setf (slot-value obj (eieio-slot-descriptor-name (elt slots i)))
+ (elt value i)))
+ retval))
+
+(defclass xcb:icccm:-ChangeProperty-explicit (xcb:icccm:-ChangeProperty)
+ ((format :initform 32))
+ :documentation "Change an ICCCM property whose fields are explicitly listed
+out.")
+;;
+(cl-defmethod xcb:marshal ((obj xcb:icccm:-ChangeProperty-explicit))
+ "Return the byte-array representation of an ICCCM ChangeProperty request
+whose fields are explicitly listed out."
+ (let* ((slots-orig (eieio-class-slots 'xcb:icccm:-ChangeProperty))
+ (slots (eieio-class-slots (eieio-object-class obj)))
+ (slots (nthcdr (length slots-orig) slots)))
+ ;; Set data field from explicit fields
+ (setf (slot-value obj 'data)
+ (mapconcat (lambda (slot)
+ (list (slot-value obj
+ (eieio-slot-descriptor-name slot))))
+ slots []))
+ (cl-call-next-method obj)))
+
+;;;; Client Properties
+
+;; WM_NAME
+(defclass xcb:icccm:get-WM_NAME (xcb:icccm:-GetProperty-text)
+ ((property :initform 'xcb:Atom:WM_NAME)))
+(defclass xcb:icccm:get-WM_NAME~reply (xcb:icccm:-GetProperty-text~reply)
+ nil)
+(defclass xcb:icccm:set-WM_NAME (xcb:icccm:-ChangeProperty-text)
+ ((property :initform 'xcb:Atom:WM_NAME)))
+
+;; WM_ICON_NAME
+(defclass xcb:icccm:get-WM_ICON_NAME (xcb:icccm:-GetProperty-text)
+ ((property :initform 'xcb:Atom:WM_ICON_NAME)))
+(defclass xcb:icccm:get-WM_ICON_NAME~reply (xcb:icccm:-GetProperty-text~reply)
+ nil)
+(defclass xcb:icccm:set-WM_ICON_NAME (xcb:icccm:-ChangeProperty-text)
+ ((property :initform 'xcb:Atom:WM_ICON_NAME)))
+
+;; WM_SIZE_HINTS
+(defconst xcb:icccm:WM_SIZE_HINTS:USPosition 1)
+(defconst xcb:icccm:WM_SIZE_HINTS:USSize 2)
+(defconst xcb:icccm:WM_SIZE_HINTS:PPosition 4)
+(defconst xcb:icccm:WM_SIZE_HINTS:PSize 8)
+(defconst xcb:icccm:WM_SIZE_HINTS:PMinSize 16)
+(defconst xcb:icccm:WM_SIZE_HINTS:PMaxSize 32)
+(defconst xcb:icccm:WM_SIZE_HINTS:PResizeInc 64)
+(defconst xcb:icccm:WM_SIZE_HINTS:PAspect 128)
+(defconst xcb:icccm:WM_SIZE_HINTS:PBaseSize 256)
+(defconst xcb:icccm:WM_SIZE_HINTS:PWinGravity 512)
+;;
+(defclass xcb:icccm:-WM_SIZE_HINTS (xcb:--struct)
+ ((flags :initarg :flags :initform 0 :type xcb:-ignore)
+ (x :initarg :x :initform 0 :type xcb:-ignore)
+ (y :initarg :y :initform 0 :type xcb:-ignore)
+ (width :initarg :width :initform 0 :type xcb:-ignore)
+ (height :initarg :height :initform 0 :type xcb:-ignore)
+ (min-width :initarg :min-width :initform 0 :type xcb:-ignore)
+ (min-height :initarg :min-height :initform 0 :type xcb:-ignore)
+ (max-width :initarg :max-width :initform 0 :type xcb:-ignore)
+ (max-height :initarg :max-height :initform 0 :type xcb:-ignore)
+ (width-inc :initarg :width-inc :initform 0 :type xcb:-ignore)
+ (height-inc :initarg :height-inc :initform 0 :type xcb:-ignore)
+ (min-aspect-num :initarg :min-aspect-num :initform 0 :type xcb:-ignore)
+ (min-aspect-den :initarg :min-aspect-den :initform 0 :type xcb:-ignore)
+ (max-aspect-num :initarg :max-aspect-num :initform 0 :type xcb:-ignore)
+ (max-aspect-den :initarg :max-aspect-den :initform 0 :type xcb:-ignore)
+ (base-width :initarg :base-width :initform 0 :type xcb:-ignore)
+ (base-height :initarg :base-height :initform 0 :type xcb:-ignore)
+ (win-gravity :initarg :win-gravity :initform 0 :type xcb:-ignore)))
+;;
+(defclass xcb:icccm:get-WM_SIZE_HINTS (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:WM_SIZE_HINTS)
+ (type :initform 'xcb:Atom:WM_SIZE_HINTS)
+ (long-length :initform 18))) ;fixed
+(defclass xcb:icccm:get-WM_SIZE_HINTS~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:icccm:-WM_SIZE_HINTS)
+ nil)
+(defclass xcb:icccm:set-WM_SIZE_HINTS
+ (xcb:icccm:-ChangeProperty-explicit xcb:icccm:-WM_SIZE_HINTS)
+ ((property :initform 'xcb:Atom:WM_SIZE_HINTS)
+ (type :initform 'xcb:Atom:WM_SIZE_HINTS)))
+
+;; WM_NORMAL_HINTS
+(defclass xcb:icccm:get-WM_NORMAL_HINTS (xcb:icccm:get-WM_SIZE_HINTS)
+ ((property :initform 'xcb:Atom:WM_NORMAL_HINTS)))
+(defclass xcb:icccm:get-WM_NORMAL_HINTS~reply
+ (xcb:icccm:get-WM_SIZE_HINTS~reply)
+ nil)
+(defclass xcb:icccm:set-WM_NORMAL_HINTS (xcb:icccm:set-WM_SIZE_HINTS)
+ ((property :initform 'xcb:Atom:WM_NORMAL_HINTS)))
+
+;; WM_HINTS
+(defconst xcb:icccm:WM_HINTS:InputHint 1)
+(defconst xcb:icccm:WM_HINTS:StateHint 2)
+(defconst xcb:icccm:WM_HINTS:IconPixmapHint 4)
+(defconst xcb:icccm:WM_HINTS:IconWindowHint 8)
+(defconst xcb:icccm:WM_HINTS:IconPositionHint 16)
+(defconst xcb:icccm:WM_HINTS:IconMaskHint 32)
+(defconst xcb:icccm:WM_HINTS:WindowGroupHint 64)
+(defconst xcb:icccm:WM_HINTS:MessageHint 128)
+(defconst xcb:icccm:WM_HINTS:UrgencyHint 256)
+;;
+(defclass xcb:icccm:-WM_HINTS (xcb:--struct)
+ ((flags :initarg :flags :initform 0 :type xcb:-ignore)
+ (input :initarg :input :initform 0 :type xcb:-ignore)
+ (initial-state :initarg :initial-state :initform 0 :type xcb:-ignore)
+ (icon-pixmap :initarg :icon-pixmap :initform 0 :type xcb:-ignore)
+ (icon-window :initarg :icon-window :initform 0 :type xcb:-ignore)
+ (icon-x :initarg :icon-x :initform 0 :type xcb:-ignore)
+ (icon-y :initarg :icon-y :initform 0 :type xcb:-ignore)
+ (icon-mask :initarg :icon-mask :initform 0 :type xcb:-ignore)
+ (window-group :initarg :window-group :initform 0 :type xcb:-ignore)))
+;;
+(defclass xcb:icccm:get-WM_HINTS (xcb:icccm:-GetProperty-explicit)
+ ;; (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:WM_HINTS)
+ (type :initform 'xcb:Atom:WM_HINTS)
+ (long-length :initform 9))) ;fixed
+(defclass xcb:icccm:get-WM_HINTS~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:icccm:-WM_HINTS)
+ nil)
+(defclass xcb:icccm:set-WM_HINTS
+ (xcb:icccm:-ChangeProperty-explicit xcb:icccm:-WM_HINTS)
+ ((property :initform 'xcb:Atom:WM_HINTS)
+ (type :initform 'xcb:Atom:WM_HINTS)))
+
+;; WM_CLASS
+(defclass xcb:icccm:get-WM_CLASS (xcb:icccm:-GetProperty-text)
+ ((property :initform 'xcb:Atom:WM_CLASS)
+ (type :initform 'xcb:Atom:STRING)))
+(defclass xcb:icccm:get-WM_CLASS~reply (xcb:icccm:-GetProperty-text~reply)
+ ((instance-name :type xcb:-ignore)
+ (class-name :type xcb:-ignore)))
+;;
+(cl-defmethod xcb:unmarshal ((obj xcb:icccm:get-WM_CLASS~reply) byte-array)
+ ;; Split value into instance & class names
+ (let* ((retval (cl-call-next-method obj byte-array))
+ (tmp (slot-value obj 'value))
+ (tmp (if tmp (split-string tmp "\0" t) '(nil nil))))
+ (with-slots (instance-name class-name) obj
+ (setf instance-name (car tmp)
+ class-name (cadr tmp)))
+ retval))
+;;
+(defclass xcb:icccm:set-WM_CLASS (xcb:icccm:-ChangeProperty-text)
+ ((property :initform 'xcb:Atom:WM_CLASS)
+ (type :initform 'xcb:Atom:STRING)
+ (instance-name :initarg :instance-name :type xcb:-ignore)
+ (class-name :initarg :class-name :type xcb:-ignore)))
+;;
+(cl-defmethod xcb:marshal ((obj xcb:icccm:set-WM_CLASS))
+ (with-slots (data instance-name class-name) obj
+ (setf data (concat instance-name "\0" class-name "\0")))
+ (cl-call-next-method obj))
+
+;; WM_TRANSIENT_FOR
+(defclass xcb:icccm:get-WM_TRANSIENT_FOR (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:WM_TRANSIENT_FOR)
+ (type :initform 'xcb:Atom:WINDOW)
+ (long-length :initform 1)))
+(defclass xcb:icccm:get-WM_TRANSIENT_FOR~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:icccm:set-WM_TRANSIENT_FOR (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:WM_TRANSIENT_FOR)
+ (type :initform 'xcb:Atom:WINDOW)))
+
+;; WM_PROTOCOLS
+(defclass xcb:icccm:get-WM_PROTOCOLS (xcb:icccm:-GetProperty)
+ ((property :initform 'xcb:Atom:WM_PROTOCOLS)
+ (type :initform 'xcb:Atom:ATOM)))
+(defclass xcb:icccm:get-WM_PROTOCOLS~reply (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:icccm:set-WM_PROTOCOLS (xcb:icccm:-ChangeProperty)
+ ((type :initform 'xcb:Atom:ATOM)
+ (format :initform 32)))
+
+;; WM_COLORMAP_WINDOWS
+(defclass xcb:icccm:get-WM_COLORMAP_WINDOWS (xcb:icccm:-GetProperty)
+ ((type :initform 'xcb:Atom:WINDOW)))
+(defclass xcb:icccm:get-WM_COLORMAP_WINDOWS~reply
+ (xcb:icccm:-GetProperty~reply)
+ nil)
+(defclass xcb:icccm:set-WM_COLORMAP_WINDOWS (xcb:icccm:-ChangeProperty)
+ ((type :initform 'xcb:Atom:WINDOW)
+ (format :initform 32)))
+
+;; WM_CLIENT_MACHINE
+(defclass xcb:icccm:get-WM_CLIENT_MACHINE (xcb:icccm:-GetProperty-text)
+ ((property :initform 'xcb:Atom:WM_CLIENT_MACHINE)))
+(defclass xcb:icccm:get-WM_CLIENT_MACHINE~reply
+ (xcb:icccm:-GetProperty-text~reply)
+ nil)
+(defclass xcb:icccm:set-WM_CLIENT_MACHINE (xcb:icccm:-ChangeProperty-text)
+ ((property :initform 'xcb:Atom:WM_CLIENT_MACHINE)))
+
+;;;; Window Manager Properties
+
+;; WM_STATE
+(defconst xcb:icccm:WM_STATE:WithdrawnState 0)
+(defconst xcb:icccm:WM_STATE:NormalState 1)
+(defconst xcb:icccm:WM_STATE:IconicState 3)
+;;
+(defclass xcb:icccm:-WM_STATE (xcb:--struct)
+ ((state :initarg :state :type xcb:-ignore)
+ (icon :initarg :icon :type xcb:-ignore)))
+;;
+(defclass xcb:icccm:get-WM_STATE (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:WM_STATE)
+ (type :initform 'xcb:Atom:WM_STATE)
+ (long-length :initform 2)))
+(defclass xcb:icccm:get-WM_STATE~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:icccm:-WM_STATE)
+ nil)
+(defclass xcb:icccm:set-WM_STATE
+ (xcb:icccm:-ChangeProperty-explicit xcb:icccm:-WM_STATE)
+ ((property :initform 'xcb:Atom:WM_STATE)
+ (type :initform 'xcb:Atom:WM_STATE)))
+
+;; WM_ICON_SIZE
+(defclass xcb:icccm:-WM_ICON_SIZE (xcb:--struct)
+ ((min-width :initarg :min-width :type xcb:-ignore)
+ (min-height :initarg :min-height :type xcb:-ignore)
+ (max-width :initarg :max-width :type xcb:-ignore)
+ (max-height :initarg :max-height :type xcb:-ignore)
+ (width-inc :initarg :width-inc :type xcb:-ignore)
+ (height-inc :initarg :height-inc :type xcb:-ignore)))
+;;
+(defclass xcb:icccm:get-WM_ICON_SIZE (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:WM_ICON_SIZE)
+ (type :initform 'xcb:Atom:WM_ICON_SIZE)
+ (long-length :initform 6)))
+(defclass xcb:icccm:get-WM_ICON_SIZE~reply
+ (xcb:icccm:-GetProperty-explicit~reply xcb:icccm:-WM_ICON_SIZE)
+ nil)
+(defclass xcb:icccm:set-WM_ICON_SIZE
+ (xcb:icccm:-ChangeProperty-explicit xcb:icccm:-WM_ICON_SIZE)
+ ((property :initform 'xcb:Atom:WM_ICON_SIZE)
+ (type :initform 'xcb:Atom:WM_ICON_SIZE)))
+
+
+
+(provide 'xcb-icccm)
+
+;;; xcb-icccm.el ends here
diff --git a/elpa/xelb-0.20/xcb-icccm.elc b/elpa/xelb-0.20/xcb-icccm.elc
new file mode 100644
index 0000000..60b68b5
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-icccm.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-keysyms.el b/elpa/xelb-0.20/xcb-keysyms.el
new file mode 100644
index 0000000..8999d71
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-keysyms.el
@@ -0,0 +1,813 @@
+;;; xcb-keysyms.el --- Conversion between -*- lexical-binding: t -*-
+;;; X keysyms, X keycodes and Emacs key event.
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library mainly deals with the conversion between X keycodes, X keysyms
+;; and Emacs key events, roughly corresponding to the xcb/util-keysyms project.
+
+;; Usage tips:
+;; + Do not forget to call `xcb:keysyms:init' for _every_ connection using
+;; this library.
+;; + xcb:keysyms:*-mask correctly relate Emacs modifier keys to X ones,
+;; thus shall be used in preference to 'xcb:ModMask:*' or
+;; 'xcb:KeyButMask:Mod*'.
+
+;; References:
+;; + X protocol (http://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.txt)
+;; + XKB protocol (https://www.x.org/releases/X11R7.7/doc/kbproto/xkbproto.txt)
+;; + xcb/util-keysyms (git://anongit.freedesktop.org/xcb/util-keysyms)
+
+;;; Code:
+
+(require 'cl-lib)
+
+(require 'xcb)
+(require 'xcb-xkb)
+
+(defclass xcb:keysyms:-device (xcb:--struct)
+ ((keytypes :initform nil)
+ (keycodes :initform nil)
+ (min-keycode :initform 0)
+ (max-keycode :initform 0)
+ (updated :initform nil))
+ :documentation "Device (keyboard) properties.")
+
+;; These variables are shared by all connections.
+(defvar xcb:keysyms:meta-mask 0 "META key mask.")
+(defvar xcb:keysyms:control-mask xcb:ModMask:Control "CONTROL key mask.")
+(defvar xcb:keysyms:shift-mask xcb:ModMask:Shift "SHIFT key mask.")
+(defvar xcb:keysyms:hyper-mask 0 "HYPER key mask.")
+(defvar xcb:keysyms:super-mask 0 "SUPER key mask.")
+(defvar xcb:keysyms:alt-mask 0 "ALT key mask.")
+(defvar xcb:keysyms:lock-mask xcb:ModMask:Lock "LOCK key mask.")
+(defvar xcb:keysyms:shift-lock-mask 0 "SHIFT-LOCK key mask.")
+(defvar xcb:keysyms:num-lock-mask 0 "NUM-LOCK key mask.")
+
+(cl-defmethod xcb:keysyms:-get-current-device ((conn xcb:connection))
+ "Return the device currently used."
+ (or (xcb:-get-extra-plist conn 'keysyms
+ (xcb:-get-extra-plist conn 'keysyms 'device-id))
+ (make-instance 'xcb:keysyms:-device)))
+
+(cl-defmethod xcb:keysyms:init ((obj xcb:connection) &optional callback)
+ "Initialize keysyms module.
+
+CALLBACK specifies a function to call every time the keyboard is updated.
+
+This method must be called before using any other method in this module."
+ (cond
+ ;; Avoid duplicated initializations.
+ ((xcb:-get-extra-plist obj 'keysyms 'opcode))
+ ((= 0 (slot-value (xcb:get-extension-data obj 'xcb:xkb)
+ 'present))
+ (error "[XCB] XKB extension is not supported by the server"))
+ ((not (slot-value (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:xkb:UseExtension
+ :wantedMajor 1
+ :wantedMinor 0))
+ 'supported))
+ (error "[XCB] XKB extension version 1.0 is not supported by the server"))
+ (t
+ ;; Save the major opcode of XKB and callback function.
+ (xcb:-set-extra-plist obj 'keysyms 'opcode
+ (slot-value (xcb:get-extension-data obj 'xcb:xkb)
+ 'major-opcode))
+ (xcb:-set-extra-plist obj 'keysyms 'callback callback)
+ ;; Set per-client flags.
+ (xcb:keysyms:-set-per-client-flags obj xcb:xkb:ID:UseCoreKbd)
+ ;; Update data.
+ (xcb:keysyms:-update-keytypes obj xcb:xkb:ID:UseCoreKbd)
+ (xcb:-set-extra-plist obj 'keysyms 'device-id
+ (xcb:keysyms:-update-keycodes obj
+ xcb:xkb:ID:UseCoreKbd))
+ (xcb:keysyms:-update-modkeys obj xcb:xkb:ID:UseCoreKbd)
+ ;; Attach event listeners.
+ (xcb:+event obj 'xcb:xkb:NewKeyboardNotify
+ (lambda (data _)
+ (xcb:keysyms:-on-NewKeyboardNotify obj data)))
+ (xcb:+event obj 'xcb:xkb:MapNotify
+ (lambda (data _)
+ (xcb:keysyms:-on-MapNotify obj data)))
+ ;; Select XKB MapNotify and NewKeyboardNotify events.
+ (let ((map (logior xcb:xkb:MapPart:KeyTypes
+ xcb:xkb:MapPart:KeySyms
+ xcb:xkb:MapPart:ModifierMap))
+ (new-keyboard (logior xcb:xkb:NKNDetail:DeviceID
+ xcb:xkb:NKNDetail:Keycodes)))
+ (xcb:+request obj
+ (make-instance 'xcb:xkb:SelectEvents
+ :deviceSpec xcb:xkb:ID:UseCoreKbd
+ :affectWhich (logior
+ xcb:xkb:EventType:NewKeyboardNotify
+ xcb:xkb:EventType:MapNotify)
+ :clear 0
+ :selectAll 0
+ :affectMap map
+ :map map
+ :affectNewKeyboard new-keyboard
+ :newKeyboardDetails new-keyboard)))
+ (xcb:flush obj))))
+
+(cl-defmethod xcb:keysyms:-set-per-client-flags ((obj xcb:connection)
+ device-id)
+ "Set per-client flags."
+ (let ((per-client-flags (logior
+ ;; Instead of compatibility state.
+ xcb:xkb:PerClientFlag:GrabsUseXKBState
+ ;; Instead of grab state.
+ xcb:xkb:PerClientFlag:LookupStateWhenGrabbed
+ ;; Use XKB state in 'SendEvent'.
+ xcb:xkb:PerClientFlag:SendEventUsesXKBState)))
+ ;; The reply is not used.
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:xkb:PerClientFlags
+ :deviceSpec device-id
+ :change per-client-flags
+ :value per-client-flags
+ :ctrlsToChange 0
+ :autoCtrls 0
+ :autoCtrlsValues 0))))
+
+(cl-defmethod xcb:keysyms:-on-NewKeyboardNotify ((obj xcb:connection) data)
+ "Handle a \\='NewKeyboardNotify' event."
+ (let ((device-id (xcb:-get-extra-plist obj 'keysyms 'device-id))
+ (callback (xcb:-get-extra-plist obj 'keysyms 'callback))
+ (obj1 (make-instance 'xcb:xkb:NewKeyboardNotify))
+ device updated)
+ (xcb:unmarshal obj1 data)
+ (with-slots (deviceID oldDeviceID requestMajor requestMinor changed) obj1
+ (if (= 0 (logand changed xcb:xkb:NKNDetail:DeviceID))
+ (when (/= 0 (logand changed xcb:xkb:NKNDetail:Keycodes))
+ (setq device (xcb:-get-extra-plist obj 'keysyms deviceID))
+ (when (and device
+ (not (slot-value device 'updated)))
+ (xcb:keysyms:-update-keycodes obj deviceID)
+ (when (= deviceID device-id)
+ (setq updated t)
+ (xcb:keysyms:-update-modkeys obj deviceID))
+ (setf (slot-value device 'updated) t)))
+ (xcb:keysyms:-set-per-client-flags obj deviceID)
+ (xcb:keysyms:-update-keytypes obj deviceID)
+ (xcb:keysyms:-update-keycodes obj deviceID)
+ (when (or (= oldDeviceID device-id)
+ ;; 0 is a special value for servers not supporting
+ ;; the X Input Extension.
+ (= oldDeviceID 0))
+ ;; Device changed; update the per-client flags and local data.
+ (setq updated t)
+ (xcb:keysyms:-update-modkeys obj deviceID)
+ (xcb:-set-extra-plist obj 'keysyms 'device-id deviceID))))
+ (when (and callback updated)
+ (with-demoted-errors "[XELB ERROR] %S"
+ (funcall callback)))))
+
+(cl-defmethod xcb:keysyms:-on-MapNotify ((obj xcb:connection) data)
+ "Handle \\='MapNotify' event."
+ (let ((device-id (xcb:-get-extra-plist obj 'keysyms 'device-id))
+ (callback (xcb:-get-extra-plist obj 'keysyms 'callback))
+ (obj1 (make-instance 'xcb:xkb:MapNotify))
+ updated)
+ (xcb:unmarshal obj1 data)
+ (with-slots (deviceID changed firstType nTypes firstKeySym nKeySyms) obj1
+ ;; Ensure this event is for the current device.
+ (when (/= 0 (logand changed xcb:xkb:MapPart:KeyTypes))
+ (setq updated t)
+ (xcb:keysyms:-update-keytypes obj deviceID firstType nTypes))
+ (when (/= 0 (logand changed xcb:xkb:MapPart:KeySyms))
+ (setq updated t)
+ (xcb:keysyms:-update-keycodes obj deviceID firstKeySym nKeySyms))
+ (when (/= 0 (logand changed xcb:xkb:MapPart:ModifierMap))
+ (setq updated t)
+ (xcb:keysyms:-update-modkeys obj deviceID))
+ (when (and updated
+ callback
+ (= deviceID device-id))
+ (with-demoted-errors "[XELB ERROR] %S"
+ (funcall callback))))))
+
+(cl-defmethod xcb:keysyms:-update-keytypes ((obj xcb:connection) device-id
+ &optional first-keytype count)
+ "Update key types.
+
+FIRST-KEYTYPE and count specify the range of key types to update."
+ (let (device full partial)
+ (if (and first-keytype count)
+ (setq full 0
+ partial xcb:xkb:MapPart:KeyTypes)
+ (setq full xcb:xkb:MapPart:KeyTypes
+ partial 0
+ first-keytype 0
+ count 0))
+ (with-slots (deviceID present firstType nTypes totalTypes types-rtrn)
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:xkb:GetMap
+ :deviceSpec device-id
+ :full full
+ :partial partial
+ :firstType first-keytype
+ :nTypes count
+ :firstKeySym 0
+ :nKeySyms 0
+ :firstKeyAction 0
+ :nKeyActions 0
+ :firstKeyBehavior 0
+ :nKeyBehaviors 0
+ :virtualMods 0
+ :firstKeyExplicit 0
+ :nKeyExplicit 0
+ :firstModMapKey 0
+ :nModMapKeys 0
+ :firstVModMapKey 0
+ :nVModMapKeys 0))
+ (cl-assert (/= 0 (logand present xcb:xkb:MapPart:KeyTypes)))
+ (setq device (or (xcb:-get-extra-plist obj 'keysyms deviceID)
+ (make-instance 'xcb:keysyms:-device)))
+ (with-slots (keytypes) device
+ (when (or (/= 0 full)
+ (not keytypes))
+ (setf keytypes (make-vector totalTypes nil)))
+ (setf keytypes (vconcat (substring keytypes 0 firstType)
+ types-rtrn
+ (substring keytypes (min (+ firstType nTypes)
+ totalTypes)))))
+ (xcb:-set-extra-plist obj 'keysyms deviceID device)
+ deviceID)))
+
+(cl-defmethod xcb:keysyms:-update-keycodes ((obj xcb:connection) device-id
+ &optional first-keycode count)
+ "Update keycode-keysym mapping.
+
+FIRST-KEYCODE and COUNT specify the keycode range to update."
+ (let (device full partial)
+ (if (and first-keycode count)
+ (setq full 0
+ partial xcb:xkb:MapPart:KeySyms)
+ (setq full xcb:xkb:MapPart:KeySyms
+ partial 0
+ first-keycode 0
+ count 0))
+ (with-slots (deviceID minKeyCode maxKeyCode present
+ firstKeySym nKeySyms syms-rtrn)
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:xkb:GetMap
+ :deviceSpec device-id
+ :full full
+ :partial partial
+ :firstType 0
+ :nTypes 0
+ :firstKeySym first-keycode
+ :nKeySyms count
+ :firstKeyAction 0
+ :nKeyActions 0
+ :firstKeyBehavior 0
+ :nKeyBehaviors 0
+ :virtualMods 0
+ :firstKeyExplicit 0
+ :nKeyExplicit 0
+ :firstModMapKey 0
+ :nModMapKeys 0
+ :firstVModMapKey 0
+ :nVModMapKeys 0))
+ (cl-assert (/= 0 (logand present xcb:xkb:MapPart:KeySyms)))
+ (setq device (or (xcb:-get-extra-plist obj 'keysyms deviceID)
+ (make-instance 'xcb:keysyms:-device)))
+ (with-slots (keycodes min-keycode max-keycode) device
+ (when (or (/= 0 full)
+ ;; Unlikely?
+ (/= min-keycode minKeyCode)
+ (/= max-keycode maxKeyCode))
+ (setf keycodes (make-vector (- maxKeyCode minKeyCode -1) nil)
+ min-keycode minKeyCode
+ max-keycode maxKeyCode))
+ (setf keycodes
+ (vconcat
+ (substring keycodes 0 (- firstKeySym min-keycode))
+ syms-rtrn
+ (substring keycodes
+ (- (min (+ firstKeySym nKeySyms) max-keycode)
+ min-keycode)))))
+ (xcb:-set-extra-plist obj 'keysyms deviceID device)
+ deviceID)))
+
+(cl-defmethod xcb:keysyms:-update-modkeys ((obj xcb:connection) _device-id)
+ "Update modifier keys."
+ ;; Reference: 'x_find_modifier_meanings' in 'xterm.c'.
+ (with-slots (keycodes-per-modifier keycodes)
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:GetModifierMapping))
+ (setq xcb:keysyms:meta-mask 0
+ xcb:keysyms:hyper-mask 0
+ xcb:keysyms:super-mask 0
+ xcb:keysyms:alt-mask 0
+ xcb:keysyms:shift-lock-mask 0
+ xcb:keysyms:num-lock-mask 0)
+ (dolist (row (number-sequence 3 7))
+ (let ((mask (ash 1 row))
+ (col 0)
+ found-alt-or-meta keycode keysym)
+ (while (< col keycodes-per-modifier)
+ (setq keycode (elt keycodes (+ (* row keycodes-per-modifier) col)))
+ (when (/= keycode 0)
+ (setq keysym (car (xcb:keysyms:keycode->keysym obj keycode 0)))
+ (when (/= keysym 0)
+ (pcase (xcb:keysyms:keysym->event obj keysym nil t)
+ ((or `lmeta* `rmeta*)
+ (setq found-alt-or-meta t
+ xcb:keysyms:meta-mask (logior xcb:keysyms:meta-mask
+ mask)))
+ ((or `lalt* `ralt*)
+ (setq found-alt-or-meta t
+ xcb:keysyms:alt-mask (logior xcb:keysyms:alt-mask
+ mask)))
+ ((or `lhyper* `rhyper*)
+ (unless found-alt-or-meta
+ (setq xcb:keysyms:hyper-mask (logior xcb:keysyms:hyper-mask
+ mask)))
+ (setq col keycodes-per-modifier))
+ ((or `lsuper* `rsuper*)
+ (unless found-alt-or-meta
+ (setq xcb:keysyms:super-mask (logior xcb:keysyms:super-mask
+ mask)))
+ (setq col keycodes-per-modifier))
+ (`shift-lock*
+ (unless found-alt-or-meta
+ (setq xcb:keysyms:lock-mask (logior xcb:keysyms:lock-mask
+ mask)))
+ (setq col keycodes-per-modifier))
+ (`kp-numlock
+ (setq xcb:keysyms:num-lock-mask
+ (logior xcb:keysyms:num-lock-mask mask))))))
+ (cl-incf col)))))
+ ;; Meta fallbacks to Alt.
+ (unless (/= 0 xcb:keysyms:meta-mask)
+ (setq xcb:keysyms:meta-mask xcb:keysyms:alt-mask
+ xcb:keysyms:alt-mask 0))
+ ;; A key cannot be both Meta and Alt.
+ (when (and (/= 0 xcb:keysyms:meta-mask)
+ (/= 0 xcb:keysyms:alt-mask)
+ (/= 0 (logand xcb:keysyms:meta-mask xcb:keysyms:alt-mask)))
+ (setq xcb:keysyms:alt-mask (logand xcb:keysyms:alt-mask
+ (lognot xcb:keysyms:meta-mask)))))
+
+(cl-defmethod xcb:keysyms:keycode->keysym ((obj xcb:connection) keycode
+ modifiers)
+ "Convert KEYCODE to keysym or get possible modifier combinations for keycode.
+
+If MODIFIERS is non-nil, return (KEYSYM . CONSUMED-MODIFIERS) where
+CONSUMED-MODIFIERS should be lognot'ed with MODIFIERS so as to make further
+conversion correct. (0 . 0) is returned when conversion fails.
+
+If MODIFIERS is nil, return all possible modifier combinations for this
+keycode. The caller is responsible for checking which modifiers to use."
+ (let ((preserve 0)
+ group group-info group-number index keytype)
+ (with-slots (keytypes keycodes min-keycode max-keycode)
+ (xcb:keysyms:-get-current-device obj)
+ ;; Reference: `XkbTranslateKeyCode' in 'XKBBind.c'.
+ (catch 'return
+ ;; Check keycode range.
+ (unless (<= min-keycode keycode max-keycode)
+ (throw 'return '(0 . 0)))
+ ;; Retrieve KeySymMap and group info.
+ (setq keycode (aref keycodes (- keycode min-keycode))
+ group-info (slot-value keycode 'groupInfo)
+ group-number (logand group-info #xF)) ; See <XKBstr.h>.
+ ;; Check group number.
+ (when (= group-number 0)
+ (throw 'return '(0 . 0)))
+ (setq group (if (null modifiers)
+ 0
+ (logand (ash modifiers -13) #b11))) ;The 13, 14 bits.
+ ;; Wrap group.
+ (when (>= group group-number)
+ (pcase (logand group-info #xC0) ;See <XKBstr.h>.
+ (`xcb:xkb:GroupsWrap:RedirectIntoRange
+ (setq group (logand #xFF (ash group-info -4))) ;See <XKBstr.h>.
+ ;; Check if it's also out of range.
+ (when (>= group group-number)
+ (setq group 0)))
+ (`xcb:xkb:GroupsWrap:ClampIntoRange
+ (setq group (1- group-number)))
+ (_
+ (setq group (% group group-number)))))
+ ;; Calculate the index of keysym.
+ (setq index (* group (slot-value keycode 'width)))
+ ;; Get key type.
+ (setq keytype (aref keytypes
+ (elt (slot-value keycode 'kt-index) group)))
+ (with-slots (mods-mask hasPreserve map (preserve* preserve)) keytype
+ (if (null modifiers)
+ ;; Return all possible modifier combinations.
+ (delq nil
+ (mapcar (lambda (entry)
+ (when (= (slot-value entry 'active) 1)
+ (slot-value entry 'mods-mask)))
+ map))
+ ;; Find the shift level and preserved modifiers.
+ (catch 'break
+ (dolist (entry map)
+ (with-slots (active (mods-mask* mods-mask) level) entry
+ (when (and (= 1 active)
+ (= (logand modifiers mods-mask) mods-mask*))
+ (cl-incf index level)
+ (when (= 1 hasPreserve)
+ (setq preserve (slot-value (elt preserve*
+ (cl-position entry map))
+ 'mask)))
+ (throw 'break nil)))))
+ (cons (elt (slot-value keycode 'syms) index)
+ (logand mods-mask (lognot preserve)))))))))
+
+(cl-defmethod xcb:keysyms:keysym->keycode ((obj xcb:connection) keysym)
+ "Convert keysym to (the first matching) keycode.
+
+Return 0 if conversion fails."
+ (let ((index 0)
+ (continue t))
+ (with-slots (keycodes min-keycode max-keycode)
+ (xcb:keysyms:-get-current-device obj)
+ ;; Traverse all keycodes, column by column.
+ ;; Reference: `XKeysymToKeycode' in 'XKBBind.c'.
+ (catch 'break
+ (when (= 0 keysym)
+ (throw 'break 0))
+ (while continue
+ (setq continue nil)
+ (dotimes (i (- max-keycode min-keycode -1))
+ (with-slots (nSyms syms) (aref keycodes i)
+ (when (< index nSyms)
+ (setq continue t)
+ (when (= keysym (elt syms index))
+ (throw 'break (+ i min-keycode))))))
+ (cl-incf index))
+ 0))))
+
+;; This list is largely base on 'lispy_function_keys' in 'keyboard.c'.
+(defconst xcb:keysyms:-function-keys
+ `[ ;#xff00 - #xff0f
+ ,@(make-list 8 nil) backspace tab linefeed clear nil return nil nil
+ ;#xff10 - #xff1f
+ nil nil nil pause nil nil nil nil nil nil nil escape nil nil nil nil
+ ;#xff20 - #xff2f
+ nil kanji muhenkan henkan romaji hiragana katakana hiragana-katakana
+ zenkaku hankaku zenkaku-hankaku touroku massyo kana-lock kana-shift
+ eisu-shift
+ ;#xff30 - #xff3f
+ eisu-toggle ,@(make-list 15 nil)
+ ;#xff40 - #xff4f
+ ,@(make-list 16 nil)
+ ;#xff50 - #xff5f
+ home left up right down prior next end begin ,@(make-list 7 nil)
+ ;#xff60 - #xff6f
+ select print execute insert nil undo redo menu find cancel help break
+ nil nil nil nil
+ ;#xff70 - #xff7f
+ ;; nil nil nil nil backtab ,@(make-list 10 nil) kp-numlock
+ nil nil nil nil backtab ,@(make-list 9 nil) mode-switch* kp-numlock
+ ;#xff80 - #xff8f
+ kp-space ,@(make-list 8 nil) kp-tab nil nil nil kp-enter nil nil
+ ;#xff90 - #xff9f
+ nil kp-f1 kp-f2 kp-f3 kp-f4 kp-home kp-left kp-up kp-right kp-down
+ kp-prior kp-next kp-end kp-begin kp-insert kp-delete
+ ;#xffa0 - #xffaf
+ ,@(make-list 10 nil)
+ kp-multiply kp-add kp-separator kp-subtract kp-decimal kp-divide
+ ;#xffb0 - #xffbf
+ kp-0 kp-1 kp-2 kp-3 kp-4 kp-5 kp-6 kp-7 kp-8 kp-9 nil nil nil kp-equal
+ f1 f2
+ ;#xffc0 - #xffcf
+ f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18
+ ;#xffd0 - #xffdf
+ f19 f20 f21 f22 f23 f24 f25 f26 f27 f28 f29 f30 f31 f32 f33 f34
+ ;#xffe0 - #xffef
+ ;; f35 ,@(make-list 15 nil)
+ f35 lshift* rshift* lcontrol* rcontrol* caps-lock* shift-lock*
+ lmeta* rmeta* lalt* ralt* lsuper* rsuper* lhyper* rhyper* nil
+ ;#xff00 - #xffff
+ ,@(make-list 15 nil) delete]
+ "Emacs event representations of X function keys (keysym #xff00 to #xffff).")
+
+;; From 'iso_lispy_function_keys' in 'keyboard.c'
+(defconst xcb:keysyms:-iso-function-keys
+ `[
+ ;#xfe00 - #xfe0f
+ ,@(make-list 16 nil)
+ ;#xfe10 - #xfe1f
+ ,@(make-list 16 nil)
+ ;#xfe20 - #xfe2f
+ iso-lefttab iso-move-line-up iso-move-line-down iso-partial-line-up
+ iso-partial-line-down iso-partial-space-left iso-partial-space-right
+ iso-set-margin-left iso-set-margin-right iso-release-margin-left
+ iso-release-margin-right iso-release-both-margins iso-fast-cursor-left
+ iso-fast-cursor-right iso-fast-cursor-up iso-fast-cursor-down
+ ;#xfe30 - #xfe3f
+ iso-continuous-underline iso-discontinuous-underline iso-emphasize
+ iso-center-object iso-enter ,@(make-list 11 nil)
+ ;everything else
+ ,@(make-list 192 nil)]
+ "Emacs event representations of ISO function keys (#xfe00 to #xfeff).")
+
+;; This list is adapted from 'XF86keysym.h' in X source.
+;; FIXME: We've intentionally left out keysyms outside the range 0x1008FF00 ~
+;; 0x1008FFFF.
+;; REVIEW: Could anybody verify this list?
+(defconst xcb:keysyms:-xf86-keys
+ `[ ;#x1008ff00 - #x1008ff0f
+ nil XF86ModeLock XF86MonBrightnessUp XF86MonBrightnessDown
+ XF86KbdLightOnOff XF86KbdBrightnessUp XF86KbdBrightnessDown
+ ,@(make-list 9 nil)
+ ;#x1008ff10 - #x1008ff1f
+ XF86Standby XF86AudioLowerVolume XF86AudioMute XF86AudioRaiseVolume
+ XF86AudioPlay XF86AudioStop XF86AudioPrev XF86AudioNext XF86HomePage
+ XF86Mail XF86Start XF86Search XF86AudioRecord XF86Calculator XF86Memo
+ XF86ToDoList
+ ;#x1008ff20 - #x1008ff2f
+ XF86Calendar XF86PowerDown XF86ContrastAdjust XF86RockerUp
+ XF86RockerDown XF86RockerEnter XF86Back XF86Forward XF86Stop
+ XF86Refresh XF86PowerOff XF86WakeUp XF86Eject XF86ScreenSaver XF86WWW
+ XF86Sleep
+ ;#x1008ff30 - #x1008ff3f
+ XF86Favorites XF86AudioPause XF86AudioMedia XF86MyComputer
+ XF86VendorHome XF86LightBulb XF86Shop XF86History XF86OpenURL
+ XF86AddFavorite XF86HotLinks XF86BrightnessAdjust XF86Finance
+ XF86Community XF86AudioRewind XF86BackForward
+ ;#x1008ff40 - #x1008ff4f
+ XF86Launch0 XF86Launch1 XF86Launch2 XF86Launch3 XF86Launch4 XF86Launch5
+ XF86Launch6 XF86Launch7 XF86Launch8 XF86Launch9 XF86LaunchA XF86LaunchB
+ XF86LaunchC XF86LaunchD XF86LaunchE XF86LaunchF
+ ;#x1008ff50 - #x1008ff5f
+ XF86ApplicationLeft XF86ApplicationRight XF86Book XF86CD XF86Calculater
+ XF86Clear XF86Close XF86Copy XF86Cut XF86Display XF86DOS XF86Documents
+ XF86Excel XF86Explorer XF86Game XF86Go
+ ;#x1008ff60 - #x1008ff6f
+ XF86iTouch XF86LogOff XF86Market XF86Meeting nil XF86MenuKB XF86MenuPB
+ XF86MySites XF86New XF86News XF86OfficeHome XF86Open XF86Option
+ XF86Paste XF86Phone nil
+ ;#x1008ff70 - #x1008ff7f
+ XF86Q nil XF86Reply XF86Reload XF86RotateWindows XF86RotationPB
+ XF86RotationKB XF86Save XF86ScrollUp XF86ScrollDown XF86ScrollClick
+ XF86Send XF86Spell XF86SplitScreen XF86Support XF86TaskPane
+ ;#x1008ff80 - #x1008ff8f
+ XF86Terminal XF86Tools XF86Travel nil XF86UserPB XF86User1KB
+ XF86User2KB XF86Video XF86WheelButton XF86Word XF86Xfer XF86ZoomIn
+ XF86ZoomOut XF86Away XF86Messenger XF86WebCam
+ ;#x1008ff90 - #x1008ff9f
+ XF86MailForward XF86Pictures XF86Music XF86Battery XF86Bluetooth
+ XF86WLAN XF86UWB XF86AudioForward XF86AudioRepeat XF86AudioRandomPlay
+ XF86Subtitle XF86AudioCycleTrack XF86CycleAngle XF86FrameBack
+ XF86FrameForward XF86Time
+ ;#x1008ffa0 - #x1008ffaf
+ XF86Select XF86View XF86TopMenu XF86Red XF86Green XF86Yellow XF86Blue
+ XF86Suspend XF86Hibernate XF86TouchpadToggle ,@(make-list 6 nil)
+ ;#x1008ffb0 - #x1008ffbf
+ XF86TouchpadOn XF86TouchpadOff XF86AudioMicMute ,@(make-list 13 nil)
+ ;everything rest
+ ,@(make-list 64 nil)]
+ "Emacs event representations of XF86keysym (#x1008ff00 - #x1008ffff).")
+
+(cl-defmethod xcb:keysyms:event->keysyms ((obj xcb:connection) event)
+ "Translate Emacs key event EVENT to list of (keysym . mod-mask).
+
+Return ((0 . 0)) when conversion fails."
+ (let ((modifiers (event-modifiers event))
+ (event (event-basic-type event))
+ keysym)
+ (if (not (integerp event))
+ (setq keysym
+ (pcase event
+ (`mouse-1 xcb:ButtonIndex:1)
+ (`mouse-2 xcb:ButtonIndex:2)
+ (`mouse-3 xcb:ButtonIndex:3)
+ (`mouse-4 xcb:ButtonIndex:4)
+ (`mouse-5 xcb:ButtonIndex:5)
+ (_
+ (cond
+ ((setq keysym (cl-position event
+ xcb:keysyms:-function-keys))
+ ;; Function keys.
+ (logior keysym #xff00))
+ ((setq keysym (cl-position event xcb:keysyms:-xf86-keys))
+ ;; XF86 keys.
+ (logior keysym #x1008ff00))
+ ((setq keysym (cl-position event
+ xcb:keysyms:-iso-function-keys))
+ ;; ISO function keys.
+ (logior keysym #xfe00))
+ ((and (symbolp event)
+ (= 1 (length (symbol-name event))))
+ ;; Symbol representations of ASCII characters.
+ (aref (symbol-name event) 0))
+ (t
+ ;; Finally try system-specific keysyms.
+ (car (rassq event system-key-alist)))))))
+ (setq keysym
+ (cond
+ ((<= #x20 event #xff)
+ ;; Latin-1.
+ event)
+ ((<= #x100 event #x10ffff)
+ ;; Unicode.
+ (+ #x1000000 event))
+ (t (or
+ ;; Try system-specific keysyms.
+ (car (rassq event system-key-alist))
+ ;; Try legacy keysyms.
+ (catch 'break
+ (maphash (lambda (key val)
+ (when (= event val)
+ (throw 'break key)))
+ x-keysym-table)))))))
+ (if (not keysym)
+ '((0 . 0))
+ (when modifiers
+ ;; Do transforms: * -> x-*-keysym -> xcb:keysyms:*-mask.
+ (setq modifiers (mapcar (lambda (i)
+ (or (pcase i
+ (`alt x-alt-keysym)
+ (`meta x-meta-keysym)
+ (`hyper x-hyper-keysym)
+ (`super x-super-keysym))
+ i))
+ modifiers)
+ modifiers (mapcar (lambda (i)
+ (pcase i
+ ((and x (pred integerp)) x)
+ (`meta
+ (when (= 0 xcb:keysyms:meta-mask)
+ (setq keysym 0))
+ xcb:keysyms:meta-mask)
+ (`control
+ (when (= 0 xcb:keysyms:control-mask)
+ (setq keysym 0))
+ xcb:keysyms:control-mask)
+ (`shift
+ (when (= 0 xcb:keysyms:shift-mask)
+ (setq keysym 0))
+ xcb:keysyms:shift-mask)
+ (`hyper
+ (when (= 0 xcb:keysyms:hyper-mask)
+ (setq keysym 0))
+ xcb:keysyms:hyper-mask)
+ (`super
+ (when (= 0 xcb:keysyms:super-mask)
+ (setq keysym 0))
+ xcb:keysyms:super-mask)
+ (`alt
+ (when (= 0 xcb:keysyms:alt-mask)
+ (setq keysym 0))
+ xcb:keysyms:alt-mask)
+ (_
+ ;; Include but not limit to: down.
+ 0)))
+ modifiers)
+ modifiers (apply #'logior modifiers)))
+ (let ((keycode (xcb:keysyms:keysym->keycode obj keysym))
+ extra-modifiers)
+ (when (/= 0 keycode)
+ (setq extra-modifiers (xcb:keysyms:keycode->keysym obj keycode nil)
+ ;; Always try without other modifier.
+ extra-modifiers (append '(0) extra-modifiers)
+ ;; Keep all modifiers helping convert keycode to this keysym.
+ extra-modifiers
+ (delq nil
+ (mapcar (lambda (modifier)
+ (when (= (car (xcb:keysyms:keycode->keysym
+ obj keycode modifier))
+ keysym)
+ modifier))
+ extra-modifiers))))
+ (mapcar (lambda (extra-modifier)
+ (cons keysym (logior (or modifiers 0) extra-modifier)))
+ extra-modifiers)))))
+
+(cl-defmethod xcb:keysyms:keysym->event ((_obj xcb:connection) keysym
+ &optional mask allow-modifiers)
+ "Translate X Keysym KEYSYM into Emacs key event.
+
+One may use MASK to provide modifier keys. If ALLOW-MODIFIERS is non-nil,
+this function will also return symbols for pure modifiers keys."
+ ;; Convert nil to 0.
+ (unless mask
+ (setq mask 0))
+ (let ((event (cond ((<= #x20 keysym #xff)
+ keysym)
+ ((<= #xff00 keysym #xffff)
+ (aref xcb:keysyms:-function-keys (logand keysym #xff)))
+ ((<= #x1000100 keysym #x110ffff)
+ (- keysym #x1000000))
+ ((<= 1 keysym 5) ;ButtonPress assuemd
+ (intern-soft (format "down-mouse-%d" keysym)))
+ ((<= #x1008ff00 keysym #x1008ffff)
+ (aref xcb:keysyms:-xf86-keys (logand keysym #xff)))
+ ((<= #xfe00 keysym #xfeff)
+ (aref xcb:keysyms:-iso-function-keys
+ (logand keysym #xff)))
+ (t (or
+ ;; Search system-specific keysyms.
+ (car (assq keysym system-key-alist))
+ ;; Search `x-keysym-table' for legacy keysyms.
+ (gethash keysym x-keysym-table)))))
+ mod-alt mod-meta mod-hyper mod-super)
+ (when event
+ (if allow-modifiers
+ (when (/= 0 mask)
+ ;; Clear modifier bits for modifier keys.
+ (pcase event
+ ((or `lmeta* `rmeta*)
+ (setq mask (logand mask (lognot xcb:keysyms:meta-mask))))
+ ((or `lcontrol* `rcontrol*)
+ (setq mask (logand mask (lognot xcb:keysyms:control-mask))))
+ ((or `lshift* `rshift*)
+ (setq mask (logand mask (lognot xcb:keysyms:shift-mask))))
+ ((or `lhyper* `rhyper*)
+ (setq mask (logand mask (lognot xcb:keysyms:hyper-mask))))
+ ((or `lsuper* `rsuper*)
+ (setq mask (logand mask (lognot xcb:keysyms:super-mask))))
+ ((or `lalt* `ralt*)
+ (setq mask (logand mask (lognot xcb:keysyms:alt-mask))))))
+ (when (memq event
+ '(lshift*
+ rshift*
+ lcontrol*
+ rcontrol*
+ caps-lock*
+ shift-lock*
+ lmeta*
+ rmeta*
+ lalt*
+ ralt*
+ lsuper*
+ rsuper*
+ lhyper*
+ rhyper*
+ mode-switch*
+ kp-numlock))
+ (setq event nil))))
+ (when event
+ (if (= 0 mask)
+ event
+ ;; Set mod-* if possible.
+ (when x-alt-keysym
+ (pcase x-alt-keysym
+ (`meta (setq mod-meta 'alt))
+ (`hyper (setq mod-hyper 'alt))
+ (`super (setq mod-super 'alt))))
+ (when x-meta-keysym
+ (pcase x-meta-keysym
+ (`alt (setq mod-alt 'meta))
+ (`hyper (setq mod-hyper 'meta))
+ (`super (setq mod-super 'meta))))
+ (when x-hyper-keysym
+ (pcase x-hyper-keysym
+ (`alt (setq mod-alt 'hyper))
+ (`meta (setq mod-meta 'hyper))
+ (`super (setq mod-super 'hyper))))
+ (when x-super-keysym
+ (pcase x-super-keysym
+ (`alt (setq mod-alt 'super))
+ (`meta (setq mod-meta 'super))
+ (`hyper (setq mod-hyper 'super))))
+ ;; Convert modifiers.
+ (setq event (list event))
+ (when (/= 0 (logand mask xcb:keysyms:meta-mask))
+ (push (or mod-meta 'meta) event))
+ (when (/= 0 (logand mask xcb:keysyms:control-mask))
+ (push 'control event))
+ (when (and (/= 0 (logand mask (logior xcb:keysyms:shift-mask
+ xcb:keysyms:shift-lock-mask)))
+ (or (not (<= #x20 keysym #xff)) ;Not a Latin-1 character
+ (<= ?A keysym ?Z))) ;An uppercase letter
+ (push 'shift event))
+ (when (/= 0 (logand mask xcb:keysyms:hyper-mask))
+ (push (or mod-hyper 'hyper) event))
+ (when (/= 0 (logand mask xcb:keysyms:super-mask))
+ (push (or mod-super 'super) event))
+ (when (/= 0 (logand mask xcb:keysyms:alt-mask))
+ (push (or mod-alt 'alt) event))
+ (event-convert-list event)))))
+
+
+
+(provide 'xcb-keysyms)
+
+;;; xcb-keysyms.el ends here
diff --git a/elpa/xelb-0.20/xcb-keysyms.elc b/elpa/xelb-0.20/xcb-keysyms.elc
new file mode 100644
index 0000000..2ef95ac
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-keysyms.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-present.el b/elpa/xelb-0.20/xcb-present.el
new file mode 100644
index 0000000..ba44c84
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-present.el
@@ -0,0 +1,269 @@
+;;; xcb-present.el --- X11 Present extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'present.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:present:-extension-xname "Present")
+(defconst xcb:present:-extension-name "Present")
+(defconst xcb:present:-major-version 1)
+(defconst xcb:present:-minor-version 4)
+
+(require 'xcb-xproto)
+
+(require 'xcb-randr)
+
+(require 'xcb-xfixes)
+
+(require 'xcb-sync)
+
+(require 'xcb-dri3)
+
+(defconst xcb:present:Event:ConfigureNotify 0)
+(defconst xcb:present:Event:CompleteNotify 1)
+(defconst xcb:present:Event:IdleNotify 2)
+(defconst xcb:present:Event:RedirectNotify 3)
+
+(defconst xcb:present:EventMask:NoEvent 0)
+(defconst xcb:present:EventMask:ConfigureNotify 1)
+(defconst xcb:present:EventMask:CompleteNotify 2)
+(defconst xcb:present:EventMask:IdleNotify 4)
+(defconst xcb:present:EventMask:RedirectNotify 8)
+
+(defconst xcb:present:Option:None 0)
+(defconst xcb:present:Option:Async 1)
+(defconst xcb:present:Option:Copy 2)
+(defconst xcb:present:Option:UST 4)
+(defconst xcb:present:Option:Suboptimal 8)
+(defconst xcb:present:Option:AsyncMayTear 16)
+
+(defconst xcb:present:Capability:None 0)
+(defconst xcb:present:Capability:Async 1)
+(defconst xcb:present:Capability:Fence 2)
+(defconst xcb:present:Capability:UST 4)
+(defconst xcb:present:Capability:AsyncMayTear 8)
+(defconst xcb:present:Capability:Syncobj 16)
+
+(defconst xcb:present:CompleteKind:Pixmap 0)
+(defconst xcb:present:CompleteKind:NotifyMSC 1)
+
+(defconst xcb:present:CompleteMode:Copy 0)
+(defconst xcb:present:CompleteMode:Flip 1)
+(defconst xcb:present:CompleteMode:Skip 2)
+(defconst xcb:present:CompleteMode:SuboptimalCopy 3)
+
+(defclass xcb:present:Notify
+ (xcb:-struct)
+ ((window :initarg :window :type xcb:WINDOW)
+ (serial :initarg :serial :type xcb:CARD32)))
+
+(defclass xcb:present:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+(defclass xcb:present:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+
+(defclass xcb:present:Pixmap
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (pad~0 :initform 8 :type xcb:-pad-align)
+ (window :initarg :window :type xcb:WINDOW)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (serial :initarg :serial :type xcb:CARD32)
+ (valid :initarg :valid :type xcb:xfixes:REGION)
+ (update :initarg :update :type xcb:xfixes:REGION)
+ (x-off :initarg :x-off :type xcb:INT16)
+ (y-off :initarg :y-off :type xcb:INT16)
+ (target-crtc :initarg :target-crtc :type xcb:randr:CRTC)
+ (wait-fence :initarg :wait-fence :type xcb:sync:FENCE)
+ (idle-fence :initarg :idle-fence :type xcb:sync:FENCE)
+ (options :initarg :options :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (target-msc :initarg :target-msc :type xcb:CARD64)
+ (divisor :initarg :divisor :type xcb:CARD64)
+ (remainder :initarg :remainder :type xcb:CARD64)
+ (notifies~ :initform
+ '(name notifies type xcb:present:Notify size nil)
+ :type xcb:-list)
+ (notifies :initarg :notifies :type xcb:-ignore)))
+
+(defclass xcb:present:NotifyMSC
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (pad~0 :initform 8 :type xcb:-pad-align)
+ (window :initarg :window :type xcb:WINDOW)
+ (serial :initarg :serial :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (target-msc :initarg :target-msc :type xcb:CARD64)
+ (divisor :initarg :divisor :type xcb:CARD64)
+ (remainder :initarg :remainder :type xcb:CARD64)))
+
+(xcb:deftypealias 'xcb:present:EVENT 'xcb:-u4)
+
+(defclass xcb:present:SelectInput
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (eid :initarg :eid :type xcb:present:EVENT)
+ (window :initarg :window :type xcb:WINDOW)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+
+(defclass xcb:present:QueryCapabilities
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (target :initarg :target :type xcb:CARD32)))
+(defclass xcb:present:QueryCapabilities~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (capabilities :initarg :capabilities :type xcb:CARD32)))
+
+(defclass xcb:present:PixmapSynced
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (pad~0 :initform 8 :type xcb:-pad-align)
+ (window :initarg :window :type xcb:WINDOW)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (serial :initarg :serial :type xcb:CARD32)
+ (valid :initarg :valid :type xcb:xfixes:REGION)
+ (update :initarg :update :type xcb:xfixes:REGION)
+ (x-off :initarg :x-off :type xcb:INT16)
+ (y-off :initarg :y-off :type xcb:INT16)
+ (target-crtc :initarg :target-crtc :type xcb:randr:CRTC)
+ (acquire-syncobj :initarg :acquire-syncobj :type xcb:dri3:SYNCOBJ)
+ (release-syncobj :initarg :release-syncobj :type xcb:dri3:SYNCOBJ)
+ (acquire-point :initarg :acquire-point :type xcb:CARD64)
+ (release-point :initarg :release-point :type xcb:CARD64)
+ (options :initarg :options :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (target-msc :initarg :target-msc :type xcb:CARD64)
+ (divisor :initarg :divisor :type xcb:CARD64)
+ (remainder :initarg :remainder :type xcb:CARD64)
+ (notifies~ :initform
+ '(name notifies type xcb:present:Notify size nil)
+ :type xcb:-list)
+ (notifies :initarg :notifies :type xcb:-ignore)))
+
+(defclass xcb:present:Generic
+ (xcb:-event)
+ ((~code :initform 0)
+ (extension :initarg :extension :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :initarg :length :type xcb:CARD32)
+ (evtype :initarg :evtype :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (event :initarg :event :type xcb:present:EVENT)))
+
+(defclass xcb:present:ConfigureNotify
+ (xcb:-generic-event)
+ ((~evtype :initform 0)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (event :initarg :event :type xcb:present:EVENT)
+ (window :initarg :window :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (off-x :initarg :off-x :type xcb:INT16)
+ (off-y :initarg :off-y :type xcb:INT16)
+ (pixmap-width :initarg :pixmap-width :type xcb:CARD16)
+ (pixmap-height :initarg :pixmap-height :type xcb:CARD16)
+ (pixmap-flags :initarg :pixmap-flags :type xcb:CARD32)))
+
+(defclass xcb:present:CompleteNotify
+ (xcb:-generic-event)
+ ((~evtype :initform 1)
+ (pad~0 :initform 8 :type xcb:-pad-align)
+ (kind :initarg :kind :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (event :initarg :event :type xcb:present:EVENT)
+ (window :initarg :window :type xcb:WINDOW)
+ (serial :initarg :serial :type xcb:CARD32)
+ (ust :initarg :ust :type xcb:CARD64)
+ (msc :initarg :msc :type xcb:CARD64)))
+
+(defclass xcb:present:IdleNotify
+ (xcb:-generic-event)
+ ((~evtype :initform 2)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (event :initarg :event :type xcb:present:EVENT)
+ (window :initarg :window :type xcb:WINDOW)
+ (serial :initarg :serial :type xcb:CARD32)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (idle-fence :initarg :idle-fence :type xcb:sync:FENCE)))
+
+(defclass xcb:present:RedirectNotify
+ (xcb:-generic-event)
+ ((~evtype :initform 3)
+ (pad~0 :initform 8 :type xcb:-pad-align)
+ (update-window :initarg :update-window :type xcb:BOOL)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (event :initarg :event :type xcb:present:EVENT)
+ (event-window :initarg :event-window :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)
+ (serial :initarg :serial :type xcb:CARD32)
+ (valid-region :initarg :valid-region :type xcb:xfixes:REGION)
+ (update-region :initarg :update-region :type xcb:xfixes:REGION)
+ (valid-rect :initarg :valid-rect :type xcb:RECTANGLE)
+ (update-rect :initarg :update-rect :type xcb:RECTANGLE)
+ (x-off :initarg :x-off :type xcb:INT16)
+ (y-off :initarg :y-off :type xcb:INT16)
+ (target-crtc :initarg :target-crtc :type xcb:randr:CRTC)
+ (wait-fence :initarg :wait-fence :type xcb:sync:FENCE)
+ (idle-fence :initarg :idle-fence :type xcb:sync:FENCE)
+ (options :initarg :options :type xcb:CARD32)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (target-msc :initarg :target-msc :type xcb:CARD64)
+ (divisor :initarg :divisor :type xcb:CARD64)
+ (remainder :initarg :remainder :type xcb:CARD64)
+ (notifies~ :initform
+ '(name notifies type xcb:present:Notify size nil)
+ :type xcb:-list)
+ (notifies :initarg :notifies :type xcb:-ignore)))
+
+(defconst xcb:present:event-number-class-alist
+ '((0 . xcb:present:Generic))
+ "(event-number . event-class) alist.")
+
+(defconst xcb:present:xge-number-class-alist
+ '((0 . xcb:present:ConfigureNotify)
+ (1 . xcb:present:CompleteNotify)
+ (2 . xcb:present:IdleNotify)
+ (3 . xcb:present:RedirectNotify))
+ "(xge-number . event-class) alist.")
+
+
+
+(provide 'xcb-present)
+
+;;; xcb-present.el ends here
diff --git a/elpa/xelb-0.20/xcb-present.elc b/elpa/xelb-0.20/xcb-present.elc
new file mode 100644
index 0000000..034766a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-present.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-randr.el b/elpa/xelb-0.20/xcb-randr.el
new file mode 100644
index 0000000..cb0dc9b
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-randr.el
@@ -0,0 +1,1121 @@
+;;; xcb-randr.el --- X11 RandR extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'randr.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:randr:-extension-xname "RANDR")
+(defconst xcb:randr:-extension-name "RandR")
+(defconst xcb:randr:-major-version 1)
+(defconst xcb:randr:-minor-version 6)
+
+(require 'xcb-xproto)
+
+(require 'xcb-render)
+
+(xcb:deftypealias 'xcb:randr:MODE 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:randr:CRTC 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:randr:OUTPUT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:randr:PROVIDER 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:randr:LEASE 'xcb:-u4)
+
+(defclass xcb:randr:BadOutput
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:randr:BadCrtc
+ (xcb:-error)
+ ((~code :initform 1)))
+
+(defclass xcb:randr:BadMode
+ (xcb:-error)
+ ((~code :initform 2)))
+
+(defclass xcb:randr:BadProvider
+ (xcb:-error)
+ ((~code :initform 3)))
+
+(defconst xcb:randr:Rotation:Rotate_0 1)
+(defconst xcb:randr:Rotation:Rotate_90 2)
+(defconst xcb:randr:Rotation:Rotate_180 4)
+(defconst xcb:randr:Rotation:Rotate_270 8)
+(defconst xcb:randr:Rotation:Reflect_X 16)
+(defconst xcb:randr:Rotation:Reflect_Y 32)
+
+(defclass xcb:randr:ScreenSize
+ (xcb:-struct)
+ ((width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (mwidth :initarg :mwidth :type xcb:CARD16)
+ (mheight :initarg :mheight :type xcb:CARD16)))
+
+(defclass xcb:randr:RefreshRates
+ (xcb:-struct)
+ ((nRates :initarg :nRates :type xcb:CARD16)
+ (rates~ :initform
+ '(name rates type xcb:CARD16 size
+ (xcb:-fieldref 'nRates))
+ :type xcb:-list)
+ (rates :initarg :rates :type xcb:-ignore)))
+
+(defclass xcb:randr:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)))
+(defclass xcb:randr:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defconst xcb:randr:SetConfig:Success 0)
+(defconst xcb:randr:SetConfig:InvalidConfigTime 1)
+(defconst xcb:randr:SetConfig:InvalidTime 2)
+(defconst xcb:randr:SetConfig:Failed 3)
+
+(defclass xcb:randr:SetScreenConfig
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (sizeID :initarg :sizeID :type xcb:CARD16)
+ (rotation :initarg :rotation :type xcb:CARD16)
+ (rate :initarg :rate :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:randr:SetScreenConfig~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (new-timestamp :initarg :new-timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (subpixel-order :initarg :subpixel-order :type xcb:CARD16)
+ (pad~0 :initform 10 :type xcb:-pad)))
+
+(defconst xcb:randr:NotifyMask:ScreenChange 1)
+(defconst xcb:randr:NotifyMask:CrtcChange 2)
+(defconst xcb:randr:NotifyMask:OutputChange 4)
+(defconst xcb:randr:NotifyMask:OutputProperty 8)
+(defconst xcb:randr:NotifyMask:ProviderChange 16)
+(defconst xcb:randr:NotifyMask:ProviderProperty 32)
+(defconst xcb:randr:NotifyMask:ResourceChange 64)
+(defconst xcb:randr:NotifyMask:Lease 128)
+
+(defclass xcb:randr:SelectInput
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (enable :initarg :enable :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:randr:GetScreenInfo
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:randr:GetScreenInfo~reply
+ (xcb:-reply)
+ ((rotations :initarg :rotations :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (nSizes :initarg :nSizes :type xcb:CARD16)
+ (sizeID :initarg :sizeID :type xcb:CARD16)
+ (rotation :initarg :rotation :type xcb:CARD16)
+ (rate :initarg :rate :type xcb:CARD16)
+ (nInfo :initarg :nInfo :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (sizes~ :initform
+ '(name sizes type xcb:randr:ScreenSize size
+ (xcb:-fieldref 'nSizes))
+ :type xcb:-list)
+ (sizes :initarg :sizes :type xcb:-ignore)
+ (rates~ :initform
+ '(name rates type xcb:randr:RefreshRates size
+ (-
+ (xcb:-fieldref 'nInfo)
+ (xcb:-fieldref 'nSizes)))
+ :type xcb:-list)
+ (rates :initarg :rates :type xcb:-ignore)))
+
+(defclass xcb:randr:GetScreenSizeRange
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:randr:GetScreenSizeRange~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (min-width :initarg :min-width :type xcb:CARD16)
+ (min-height :initarg :min-height :type xcb:CARD16)
+ (max-width :initarg :max-width :type xcb:CARD16)
+ (max-height :initarg :max-height :type xcb:CARD16)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:randr:SetScreenSize
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (mm-width :initarg :mm-width :type xcb:CARD32)
+ (mm-height :initarg :mm-height :type xcb:CARD32)))
+
+(defconst xcb:randr:ModeFlag:HsyncPositive 1)
+(defconst xcb:randr:ModeFlag:HsyncNegative 2)
+(defconst xcb:randr:ModeFlag:VsyncPositive 4)
+(defconst xcb:randr:ModeFlag:VsyncNegative 8)
+(defconst xcb:randr:ModeFlag:Interlace 16)
+(defconst xcb:randr:ModeFlag:DoubleScan 32)
+(defconst xcb:randr:ModeFlag:Csync 64)
+(defconst xcb:randr:ModeFlag:CsyncPositive 128)
+(defconst xcb:randr:ModeFlag:CsyncNegative 256)
+(defconst xcb:randr:ModeFlag:HskewPresent 512)
+(defconst xcb:randr:ModeFlag:Bcast 1024)
+(defconst xcb:randr:ModeFlag:PixelMultiplex 2048)
+(defconst xcb:randr:ModeFlag:DoubleClock 4096)
+(defconst xcb:randr:ModeFlag:HalveClock 8192)
+
+(defclass xcb:randr:ModeInfo
+ (xcb:-struct)
+ ((id :initarg :id :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (dot-clock :initarg :dot-clock :type xcb:CARD32)
+ (hsync-start :initarg :hsync-start :type xcb:CARD16)
+ (hsync-end :initarg :hsync-end :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vsync-start :initarg :vsync-start :type xcb:CARD16)
+ (vsync-end :initarg :vsync-end :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (mode-flags :initarg :mode-flags :type xcb:CARD32)))
+
+(defclass xcb:randr:GetScreenResources
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:randr:GetScreenResources~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (num-crtcs :initarg :num-crtcs :type xcb:CARD16)
+ (num-outputs :initarg :num-outputs :type xcb:CARD16)
+ (num-modes :initarg :num-modes :type xcb:CARD16)
+ (names-len :initarg :names-len :type xcb:CARD16)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (crtcs~ :initform
+ '(name crtcs type xcb:randr:CRTC size
+ (xcb:-fieldref 'num-crtcs))
+ :type xcb:-list)
+ (crtcs :initarg :crtcs :type xcb:-ignore)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-outputs))
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)
+ (modes~ :initform
+ '(name modes type xcb:randr:ModeInfo size
+ (xcb:-fieldref 'num-modes))
+ :type xcb:-list)
+ (modes :initarg :modes :type xcb:-ignore)
+ (names~ :initform
+ '(name names type xcb:BYTE size
+ (xcb:-fieldref 'names-len))
+ :type xcb:-list)
+ (names :initarg :names :type xcb:-ignore)))
+
+(defconst xcb:randr:Connection:Connected 0)
+(defconst xcb:randr:Connection:Disconnected 1)
+(defconst xcb:randr:Connection:Unknown 2)
+
+(defclass xcb:randr:GetOutputInfo
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)))
+(defclass xcb:randr:GetOutputInfo~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (mm-width :initarg :mm-width :type xcb:CARD32)
+ (mm-height :initarg :mm-height :type xcb:CARD32)
+ (connection :initarg :connection :type xcb:CARD8)
+ (subpixel-order :initarg :subpixel-order :type xcb:CARD8)
+ (num-crtcs :initarg :num-crtcs :type xcb:CARD16)
+ (num-modes :initarg :num-modes :type xcb:CARD16)
+ (num-preferred :initarg :num-preferred :type xcb:CARD16)
+ (num-clones :initarg :num-clones :type xcb:CARD16)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (crtcs~ :initform
+ '(name crtcs type xcb:randr:CRTC size
+ (xcb:-fieldref 'num-crtcs))
+ :type xcb:-list)
+ (crtcs :initarg :crtcs :type xcb:-ignore)
+ (modes~ :initform
+ '(name modes type xcb:randr:MODE size
+ (xcb:-fieldref 'num-modes))
+ :type xcb:-list)
+ (modes :initarg :modes :type xcb:-ignore)
+ (clones~ :initform
+ '(name clones type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-clones))
+ :type xcb:-list)
+ (clones :initarg :clones :type xcb:-ignore)
+ (name~ :initform
+ '(name name type xcb:BYTE size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:randr:ListOutputProperties
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)))
+(defclass xcb:randr:ListOutputProperties~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-atoms :initarg :num-atoms :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (atoms~ :initform
+ '(name atoms type xcb:ATOM size
+ (xcb:-fieldref 'num-atoms))
+ :type xcb:-list)
+ (atoms :initarg :atoms :type xcb:-ignore)))
+
+(defclass xcb:randr:QueryOutputProperty
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (property :initarg :property :type xcb:ATOM)))
+(defclass xcb:randr:QueryOutputProperty~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pending :initarg :pending :type xcb:BOOL)
+ (range :initarg :range :type xcb:BOOL)
+ (immutable :initarg :immutable :type xcb:BOOL)
+ (pad~1 :initform 21 :type xcb:-pad)
+ (validValues~ :initform
+ '(name validValues type xcb:INT32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (validValues :initarg :validValues :type xcb:-ignore)))
+
+(defclass xcb:randr:ConfigureOutputProperty
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (property :initarg :property :type xcb:ATOM)
+ (pending :initarg :pending :type xcb:BOOL)
+ (range :initarg :range :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (values~ :initform
+ '(name values type xcb:INT32 size nil)
+ :type xcb:-list)
+ (values :initarg :values :type xcb:-ignore)))
+
+(defclass xcb:randr:ChangeOutputProperty
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (format :initarg :format :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num-units :initarg :num-units :type xcb:CARD32)
+ (data~ :initform
+ '(name data type xcb:void size
+ (/
+ (*
+ (xcb:-fieldref 'num-units)
+ (xcb:-fieldref 'format))
+ 8))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:randr:DeleteOutputProperty
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (property :initarg :property :type xcb:ATOM)))
+
+(defclass xcb:randr:GetOutputProperty
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (long-offset :initarg :long-offset :type xcb:CARD32)
+ (long-length :initarg :long-length :type xcb:CARD32)
+ (delete :initarg :delete :type xcb:BOOL)
+ (pending :initarg :pending :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:randr:GetOutputProperty~reply
+ (xcb:-reply)
+ ((format :initarg :format :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (type :initarg :type :type xcb:ATOM)
+ (bytes-after :initarg :bytes-after :type xcb:CARD32)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (pad~0 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'num-items)
+ (/
+ (xcb:-fieldref 'format)
+ 8)))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:randr:CreateMode
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (mode-info :initarg :mode-info :type xcb:randr:ModeInfo)
+ (name~ :initform
+ '(name name type xcb:char size nil)
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:randr:CreateMode~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (mode :initarg :mode :type xcb:randr:MODE)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:randr:DestroyMode
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:randr:MODE)))
+
+(defclass xcb:randr:AddOutputMode
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (mode :initarg :mode :type xcb:randr:MODE)))
+
+(defclass xcb:randr:DeleteOutputMode
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (mode :initarg :mode :type xcb:randr:MODE)))
+
+(defclass xcb:randr:GetCrtcInfo
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)))
+(defclass xcb:randr:GetCrtcInfo~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (mode :initarg :mode :type xcb:randr:MODE)
+ (rotation :initarg :rotation :type xcb:CARD16)
+ (rotations :initarg :rotations :type xcb:CARD16)
+ (num-outputs :initarg :num-outputs :type xcb:CARD16)
+ (num-possible-outputs :initarg :num-possible-outputs :type xcb:CARD16)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-outputs))
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)
+ (possible~ :initform
+ '(name possible type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-possible-outputs))
+ :type xcb:-list)
+ (possible :initarg :possible :type xcb:-ignore)))
+
+(defclass xcb:randr:SetCrtcConfig
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (mode :initarg :mode :type xcb:randr:MODE)
+ (rotation :initarg :rotation :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size nil)
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)))
+(defclass xcb:randr:SetCrtcConfig~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (pad~0 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:randr:GetCrtcGammaSize
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)))
+(defclass xcb:randr:GetCrtcGammaSize~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (size :initarg :size :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)))
+
+(defclass xcb:randr:GetCrtcGamma
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)))
+(defclass xcb:randr:GetCrtcGamma~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (size :initarg :size :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (red~ :initform
+ '(name red type xcb:CARD16 size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (red :initarg :red :type xcb:-ignore)
+ (green~ :initform
+ '(name green type xcb:CARD16 size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (green :initarg :green :type xcb:-ignore)
+ (blue~ :initform
+ '(name blue type xcb:CARD16 size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (blue :initarg :blue :type xcb:-ignore)))
+
+(defclass xcb:randr:SetCrtcGamma
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (size :initarg :size :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (red~ :initform
+ '(name red type xcb:CARD16 size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (red :initarg :red :type xcb:-ignore)
+ (green~ :initform
+ '(name green type xcb:CARD16 size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (green :initarg :green :type xcb:-ignore)
+ (blue~ :initform
+ '(name blue type xcb:CARD16 size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (blue :initarg :blue :type xcb:-ignore)))
+
+(defclass xcb:randr:GetScreenResourcesCurrent
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:randr:GetScreenResourcesCurrent~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (num-crtcs :initarg :num-crtcs :type xcb:CARD16)
+ (num-outputs :initarg :num-outputs :type xcb:CARD16)
+ (num-modes :initarg :num-modes :type xcb:CARD16)
+ (names-len :initarg :names-len :type xcb:CARD16)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (crtcs~ :initform
+ '(name crtcs type xcb:randr:CRTC size
+ (xcb:-fieldref 'num-crtcs))
+ :type xcb:-list)
+ (crtcs :initarg :crtcs :type xcb:-ignore)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-outputs))
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)
+ (modes~ :initform
+ '(name modes type xcb:randr:ModeInfo size
+ (xcb:-fieldref 'num-modes))
+ :type xcb:-list)
+ (modes :initarg :modes :type xcb:-ignore)
+ (names~ :initform
+ '(name names type xcb:BYTE size
+ (xcb:-fieldref 'names-len))
+ :type xcb:-list)
+ (names :initarg :names :type xcb:-ignore)))
+
+(defconst xcb:randr:Transform:Unit 1)
+(defconst xcb:randr:Transform:ScaleUp 2)
+(defconst xcb:randr:Transform:ScaleDown 4)
+(defconst xcb:randr:Transform:Projective 8)
+
+(defclass xcb:randr:SetCrtcTransform
+ (xcb:-request)
+ ((~opcode :initform 26 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (transform :initarg :transform :type xcb:render:TRANSFORM)
+ (filter-len :initarg :filter-len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (filter-name~ :initform
+ '(name filter-name type xcb:char size
+ (xcb:-fieldref 'filter-len))
+ :type xcb:-list)
+ (filter-name :initarg :filter-name :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (filter-params~ :initform
+ '(name filter-params type xcb:render:FIXED size nil)
+ :type xcb:-list)
+ (filter-params :initarg :filter-params :type xcb:-ignore)))
+
+(defclass xcb:randr:GetCrtcTransform
+ (xcb:-request)
+ ((~opcode :initform 27 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)))
+(defclass xcb:randr:GetCrtcTransform~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pending-transform :initarg :pending-transform :type xcb:render:TRANSFORM)
+ (has-transforms :initarg :has-transforms :type xcb:BOOL)
+ (pad~1 :initform 3 :type xcb:-pad)
+ (current-transform :initarg :current-transform :type xcb:render:TRANSFORM)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (pending-len :initarg :pending-len :type xcb:CARD16)
+ (pending-nparams :initarg :pending-nparams :type xcb:CARD16)
+ (current-len :initarg :current-len :type xcb:CARD16)
+ (current-nparams :initarg :current-nparams :type xcb:CARD16)
+ (pending-filter-name~ :initform
+ '(name pending-filter-name type xcb:char size
+ (xcb:-fieldref 'pending-len))
+ :type xcb:-list)
+ (pending-filter-name :initarg :pending-filter-name :type xcb:-ignore)
+ (pad~3 :initform 4 :type xcb:-pad-align)
+ (pending-params~ :initform
+ '(name pending-params type xcb:render:FIXED size
+ (xcb:-fieldref 'pending-nparams))
+ :type xcb:-list)
+ (pending-params :initarg :pending-params :type xcb:-ignore)
+ (current-filter-name~ :initform
+ '(name current-filter-name type xcb:char size
+ (xcb:-fieldref 'current-len))
+ :type xcb:-list)
+ (current-filter-name :initarg :current-filter-name :type xcb:-ignore)
+ (pad~4 :initform 4 :type xcb:-pad-align)
+ (current-params~ :initform
+ '(name current-params type xcb:render:FIXED size
+ (xcb:-fieldref 'current-nparams))
+ :type xcb:-list)
+ (current-params :initarg :current-params :type xcb:-ignore)))
+
+(defclass xcb:randr:GetPanning
+ (xcb:-request)
+ ((~opcode :initform 28 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)))
+(defclass xcb:randr:GetPanning~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (left :initarg :left :type xcb:CARD16)
+ (top :initarg :top :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (track-left :initarg :track-left :type xcb:CARD16)
+ (track-top :initarg :track-top :type xcb:CARD16)
+ (track-width :initarg :track-width :type xcb:CARD16)
+ (track-height :initarg :track-height :type xcb:CARD16)
+ (border-left :initarg :border-left :type xcb:INT16)
+ (border-top :initarg :border-top :type xcb:INT16)
+ (border-right :initarg :border-right :type xcb:INT16)
+ (border-bottom :initarg :border-bottom :type xcb:INT16)))
+
+(defclass xcb:randr:SetPanning
+ (xcb:-request)
+ ((~opcode :initform 29 :type xcb:-u1)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (left :initarg :left :type xcb:CARD16)
+ (top :initarg :top :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (track-left :initarg :track-left :type xcb:CARD16)
+ (track-top :initarg :track-top :type xcb:CARD16)
+ (track-width :initarg :track-width :type xcb:CARD16)
+ (track-height :initarg :track-height :type xcb:CARD16)
+ (border-left :initarg :border-left :type xcb:INT16)
+ (border-top :initarg :border-top :type xcb:INT16)
+ (border-right :initarg :border-right :type xcb:INT16)
+ (border-bottom :initarg :border-bottom :type xcb:INT16)))
+(defclass xcb:randr:SetPanning~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)))
+
+(defclass xcb:randr:SetOutputPrimary
+ (xcb:-request)
+ ((~opcode :initform 30 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (output :initarg :output :type xcb:randr:OUTPUT)))
+
+(defclass xcb:randr:GetOutputPrimary
+ (xcb:-request)
+ ((~opcode :initform 31 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:randr:GetOutputPrimary~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (output :initarg :output :type xcb:randr:OUTPUT)))
+
+(defclass xcb:randr:GetProviders
+ (xcb:-request)
+ ((~opcode :initform 32 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:randr:GetProviders~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (num-providers :initarg :num-providers :type xcb:CARD16)
+ (pad~1 :initform 18 :type xcb:-pad)
+ (providers~ :initform
+ '(name providers type xcb:randr:PROVIDER size
+ (xcb:-fieldref 'num-providers))
+ :type xcb:-list)
+ (providers :initarg :providers :type xcb:-ignore)))
+
+(defconst xcb:randr:ProviderCapability:SourceOutput 1)
+(defconst xcb:randr:ProviderCapability:SinkOutput 2)
+(defconst xcb:randr:ProviderCapability:SourceOffload 4)
+(defconst xcb:randr:ProviderCapability:SinkOffload 8)
+
+(defclass xcb:randr:GetProviderInfo
+ (xcb:-request)
+ ((~opcode :initform 33 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)))
+(defclass xcb:randr:GetProviderInfo~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (capabilities :initarg :capabilities :type xcb:CARD32)
+ (num-crtcs :initarg :num-crtcs :type xcb:CARD16)
+ (num-outputs :initarg :num-outputs :type xcb:CARD16)
+ (num-associated-providers :initarg :num-associated-providers :type xcb:CARD16)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~0 :initform 8 :type xcb:-pad)
+ (crtcs~ :initform
+ '(name crtcs type xcb:randr:CRTC size
+ (xcb:-fieldref 'num-crtcs))
+ :type xcb:-list)
+ (crtcs :initarg :crtcs :type xcb:-ignore)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-outputs))
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)
+ (associated-providers~ :initform
+ '(name associated-providers type xcb:randr:PROVIDER size
+ (xcb:-fieldref 'num-associated-providers))
+ :type xcb:-list)
+ (associated-providers :initarg :associated-providers :type xcb:-ignore)
+ (associated-capability~ :initform
+ '(name associated-capability type xcb:CARD32 size
+ (xcb:-fieldref 'num-associated-providers))
+ :type xcb:-list)
+ (associated-capability :initarg :associated-capability :type xcb:-ignore)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:randr:SetProviderOffloadSink
+ (xcb:-request)
+ ((~opcode :initform 34 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (sink-provider :initarg :sink-provider :type xcb:randr:PROVIDER)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)))
+
+(defclass xcb:randr:SetProviderOutputSource
+ (xcb:-request)
+ ((~opcode :initform 35 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (source-provider :initarg :source-provider :type xcb:randr:PROVIDER)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)))
+
+(defclass xcb:randr:ListProviderProperties
+ (xcb:-request)
+ ((~opcode :initform 36 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)))
+(defclass xcb:randr:ListProviderProperties~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-atoms :initarg :num-atoms :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (atoms~ :initform
+ '(name atoms type xcb:ATOM size
+ (xcb:-fieldref 'num-atoms))
+ :type xcb:-list)
+ (atoms :initarg :atoms :type xcb:-ignore)))
+
+(defclass xcb:randr:QueryProviderProperty
+ (xcb:-request)
+ ((~opcode :initform 37 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (property :initarg :property :type xcb:ATOM)))
+(defclass xcb:randr:QueryProviderProperty~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pending :initarg :pending :type xcb:BOOL)
+ (range :initarg :range :type xcb:BOOL)
+ (immutable :initarg :immutable :type xcb:BOOL)
+ (pad~1 :initform 21 :type xcb:-pad)
+ (valid-values~ :initform
+ '(name valid-values type xcb:INT32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (valid-values :initarg :valid-values :type xcb:-ignore)))
+
+(defclass xcb:randr:ConfigureProviderProperty
+ (xcb:-request)
+ ((~opcode :initform 38 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (property :initarg :property :type xcb:ATOM)
+ (pending :initarg :pending :type xcb:BOOL)
+ (range :initarg :range :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (values~ :initform
+ '(name values type xcb:INT32 size nil)
+ :type xcb:-list)
+ (values :initarg :values :type xcb:-ignore)))
+
+(defclass xcb:randr:ChangeProviderProperty
+ (xcb:-request)
+ ((~opcode :initform 39 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (format :initarg :format :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (data~ :initform
+ '(name data type xcb:void size
+ (*
+ (xcb:-fieldref 'num-items)
+ (/
+ (xcb:-fieldref 'format)
+ 8)))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:randr:DeleteProviderProperty
+ (xcb:-request)
+ ((~opcode :initform 40 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (property :initarg :property :type xcb:ATOM)))
+
+(defclass xcb:randr:GetProviderProperty
+ (xcb:-request)
+ ((~opcode :initform 41 :type xcb:-u1)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (long-offset :initarg :long-offset :type xcb:CARD32)
+ (long-length :initarg :long-length :type xcb:CARD32)
+ (delete :initarg :delete :type xcb:BOOL)
+ (pending :initarg :pending :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:randr:GetProviderProperty~reply
+ (xcb:-reply)
+ ((format :initarg :format :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (type :initarg :type :type xcb:ATOM)
+ (bytes-after :initarg :bytes-after :type xcb:CARD32)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (pad~0 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:void size
+ (*
+ (xcb:-fieldref 'num-items)
+ (/
+ (xcb:-fieldref 'format)
+ 8)))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:randr:ScreenChangeNotify
+ (xcb:-event)
+ ((~code :initform 0)
+ (rotation :initarg :rotation :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (request-window :initarg :request-window :type xcb:WINDOW)
+ (sizeID :initarg :sizeID :type xcb:CARD16)
+ (subpixel-order :initarg :subpixel-order :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (mwidth :initarg :mwidth :type xcb:CARD16)
+ (mheight :initarg :mheight :type xcb:CARD16)))
+
+(defconst xcb:randr:Notify:CrtcChange 0)
+(defconst xcb:randr:Notify:OutputChange 1)
+(defconst xcb:randr:Notify:OutputProperty 2)
+(defconst xcb:randr:Notify:ProviderChange 3)
+(defconst xcb:randr:Notify:ProviderProperty 4)
+(defconst xcb:randr:Notify:ResourceChange 5)
+(defconst xcb:randr:Notify:Lease 6)
+
+(defclass xcb:randr:CrtcChange
+ (xcb:-struct)
+ ((timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (window :initarg :window :type xcb:WINDOW)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (mode :initarg :mode :type xcb:randr:MODE)
+ (rotation :initarg :rotation :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:randr:OutputChange
+ (xcb:-struct)
+ ((timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (config-timestamp :initarg :config-timestamp :type xcb:TIMESTAMP)
+ (window :initarg :window :type xcb:WINDOW)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (crtc :initarg :crtc :type xcb:randr:CRTC)
+ (mode :initarg :mode :type xcb:randr:MODE)
+ (rotation :initarg :rotation :type xcb:CARD16)
+ (connection :initarg :connection :type xcb:CARD8)
+ (subpixel-order :initarg :subpixel-order :type xcb:CARD8)))
+
+(defclass xcb:randr:OutputProperty
+ (xcb:-struct)
+ ((window :initarg :window :type xcb:WINDOW)
+ (output :initarg :output :type xcb:randr:OUTPUT)
+ (atom :initarg :atom :type xcb:ATOM)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 11 :type xcb:-pad)))
+
+(defclass xcb:randr:ProviderChange
+ (xcb:-struct)
+ ((timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (window :initarg :window :type xcb:WINDOW)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (pad~0 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:randr:ProviderProperty
+ (xcb:-struct)
+ ((window :initarg :window :type xcb:WINDOW)
+ (provider :initarg :provider :type xcb:randr:PROVIDER)
+ (atom :initarg :atom :type xcb:ATOM)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (state :initarg :state :type xcb:CARD8)
+ (pad~0 :initform 11 :type xcb:-pad)))
+
+(defclass xcb:randr:ResourceChange
+ (xcb:-struct)
+ ((timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (window :initarg :window :type xcb:WINDOW)
+ (pad~0 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:randr:MonitorInfo
+ (xcb:-struct)
+ ((name :initarg :name :type xcb:ATOM)
+ (primary :initarg :primary :type xcb:BOOL)
+ (automatic :initarg :automatic :type xcb:BOOL)
+ (nOutput :initarg :nOutput :type xcb:CARD16)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (width-in-millimeters :initarg :width-in-millimeters :type xcb:CARD32)
+ (height-in-millimeters :initarg :height-in-millimeters :type xcb:CARD32)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'nOutput))
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)))
+
+(defclass xcb:randr:GetMonitors
+ (xcb:-request)
+ ((~opcode :initform 42 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (get-active :initarg :get-active :type xcb:BOOL)))
+(defclass xcb:randr:GetMonitors~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (nMonitors :initarg :nMonitors :type xcb:CARD32)
+ (nOutputs :initarg :nOutputs :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (monitors~ :initform
+ '(name monitors type xcb:randr:MonitorInfo size
+ (xcb:-fieldref 'nMonitors))
+ :type xcb:-list)
+ (monitors :initarg :monitors :type xcb:-ignore)))
+
+(defclass xcb:randr:SetMonitor
+ (xcb:-request)
+ ((~opcode :initform 43 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (monitorinfo :initarg :monitorinfo :type xcb:randr:MonitorInfo)))
+
+(defclass xcb:randr:DeleteMonitor
+ (xcb:-request)
+ ((~opcode :initform 44 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (name :initarg :name :type xcb:ATOM)))
+
+(defclass xcb:randr:CreateLease
+ (xcb:-request)
+ ((~opcode :initform 45 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (lid :initarg :lid :type xcb:randr:LEASE)
+ (num-crtcs :initarg :num-crtcs :type xcb:CARD16)
+ (num-outputs :initarg :num-outputs :type xcb:CARD16)
+ (crtcs~ :initform
+ '(name crtcs type xcb:randr:CRTC size
+ (xcb:-fieldref 'num-crtcs))
+ :type xcb:-list)
+ (crtcs :initarg :crtcs :type xcb:-ignore)
+ (outputs~ :initform
+ '(name outputs type xcb:randr:OUTPUT size
+ (xcb:-fieldref 'num-outputs))
+ :type xcb:-list)
+ (outputs :initarg :outputs :type xcb:-ignore)))
+(defclass xcb:randr:CreateLease~reply
+ (xcb:-reply)
+ ((nfd :initarg :nfd :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (master-fd :type xcb:fd)
+ (pad~0 :initform 24 :type xcb:-pad)))
+
+(defclass xcb:randr:FreeLease
+ (xcb:-request)
+ ((~opcode :initform 46 :type xcb:-u1)
+ (lid :initarg :lid :type xcb:randr:LEASE)
+ (terminate :initarg :terminate :type xcb:BYTE)))
+
+(defclass xcb:randr:LeaseNotify
+ (xcb:-struct)
+ ((timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (window :initarg :window :type xcb:WINDOW)
+ (lease :initarg :lease :type xcb:randr:LEASE)
+ (created :initarg :created :type xcb:CARD8)
+ (pad~0 :initform 15 :type xcb:-pad)))
+
+(defclass xcb:randr:NotifyData
+ (xcb:-union)
+ ((~size :initform 28)
+ (cc :initarg :cc :type xcb:randr:CrtcChange)
+ (oc :initarg :oc :type xcb:randr:OutputChange)
+ (op :initarg :op :type xcb:randr:OutputProperty)
+ (pc :initarg :pc :type xcb:randr:ProviderChange)
+ (pp :initarg :pp :type xcb:randr:ProviderProperty)
+ (rc :initarg :rc :type xcb:randr:ResourceChange)
+ (lc :initarg :lc :type xcb:randr:LeaseNotify)))
+
+(defclass xcb:randr:Notify
+ (xcb:-event)
+ ((~code :initform 1)
+ (subCode :initarg :subCode :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (u :initarg :u :type xcb:randr:NotifyData)))
+
+(defconst xcb:randr:error-number-class-alist
+ '((0 . xcb:randr:BadOutput)
+ (1 . xcb:randr:BadCrtc)
+ (2 . xcb:randr:BadMode)
+ (3 . xcb:randr:BadProvider))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:randr:event-number-class-alist
+ '((0 . xcb:randr:ScreenChangeNotify)
+ (1 . xcb:randr:Notify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-randr)
+
+;;; xcb-randr.el ends here
diff --git a/elpa/xelb-0.20/xcb-randr.elc b/elpa/xelb-0.20/xcb-randr.elc
new file mode 100644
index 0000000..23e2ca1
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-randr.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-record.el b/elpa/xelb-0.20/xcb-record.el
new file mode 100644
index 0000000..8afc5d4
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-record.el
@@ -0,0 +1,213 @@
+;;; xcb-record.el --- X11 Record extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'record.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:record:-extension-xname "RECORD")
+(defconst xcb:record:-extension-name "Record")
+(defconst xcb:record:-major-version 1)
+(defconst xcb:record:-minor-version 13)
+
+(xcb:deftypealias 'xcb:record:CONTEXT 'xcb:-u4)
+
+(defclass xcb:record:Range8
+ (xcb:-struct)
+ ((first :initarg :first :type xcb:CARD8)
+ (last :initarg :last :type xcb:CARD8)))
+
+(defclass xcb:record:Range16
+ (xcb:-struct)
+ ((first :initarg :first :type xcb:CARD16)
+ (last :initarg :last :type xcb:CARD16)))
+
+(defclass xcb:record:ExtRange
+ (xcb:-struct)
+ ((major :initarg :major :type xcb:record:Range8)
+ (minor :initarg :minor :type xcb:record:Range16)))
+
+(defclass xcb:record:Range
+ (xcb:-struct)
+ ((core-requests :initarg :core-requests :type xcb:record:Range8)
+ (core-replies :initarg :core-replies :type xcb:record:Range8)
+ (ext-requests :initarg :ext-requests :type xcb:record:ExtRange)
+ (ext-replies :initarg :ext-replies :type xcb:record:ExtRange)
+ (delivered-events :initarg :delivered-events :type xcb:record:Range8)
+ (device-events :initarg :device-events :type xcb:record:Range8)
+ (errors :initarg :errors :type xcb:record:Range8)
+ (client-started :initarg :client-started :type xcb:BOOL)
+ (client-died :initarg :client-died :type xcb:BOOL)))
+
+(xcb:deftypealias 'xcb:record:ElementHeader 'xcb:CARD8)
+
+(defconst xcb:record:HType:FromServerTime 1)
+(defconst xcb:record:HType:FromClientTime 2)
+(defconst xcb:record:HType:FromClientSequence 4)
+
+(xcb:deftypealias 'xcb:record:ClientSpec 'xcb:CARD32)
+
+(defconst xcb:record:CS:CurrentClients 1)
+(defconst xcb:record:CS:FutureClients 2)
+(defconst xcb:record:CS:AllClients 3)
+
+(defclass xcb:record:ClientInfo
+ (xcb:-struct)
+ ((client-resource :initarg :client-resource :type xcb:record:ClientSpec)
+ (num-ranges :initarg :num-ranges :type xcb:CARD32)
+ (ranges~ :initform
+ '(name ranges type xcb:record:Range size
+ (xcb:-fieldref 'num-ranges))
+ :type xcb:-list)
+ (ranges :initarg :ranges :type xcb:-ignore)))
+
+(defclass xcb:record:BadContext
+ (xcb:-error)
+ ((~code :initform 0)
+ (invalid-record :initarg :invalid-record :type xcb:CARD32)))
+
+(defclass xcb:record:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+(defclass xcb:record:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+
+(defclass xcb:record:CreateContext
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)
+ (element-header :initarg :element-header :type xcb:record:ElementHeader)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (num-client-specs :initarg :num-client-specs :type xcb:CARD32)
+ (num-ranges :initarg :num-ranges :type xcb:CARD32)
+ (client-specs~ :initform
+ '(name client-specs type xcb:record:ClientSpec size
+ (xcb:-fieldref 'num-client-specs))
+ :type xcb:-list)
+ (client-specs :initarg :client-specs :type xcb:-ignore)
+ (ranges~ :initform
+ '(name ranges type xcb:record:Range size
+ (xcb:-fieldref 'num-ranges))
+ :type xcb:-list)
+ (ranges :initarg :ranges :type xcb:-ignore)))
+
+(defclass xcb:record:RegisterClients
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)
+ (element-header :initarg :element-header :type xcb:record:ElementHeader)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (num-client-specs :initarg :num-client-specs :type xcb:CARD32)
+ (num-ranges :initarg :num-ranges :type xcb:CARD32)
+ (client-specs~ :initform
+ '(name client-specs type xcb:record:ClientSpec size
+ (xcb:-fieldref 'num-client-specs))
+ :type xcb:-list)
+ (client-specs :initarg :client-specs :type xcb:-ignore)
+ (ranges~ :initform
+ '(name ranges type xcb:record:Range size
+ (xcb:-fieldref 'num-ranges))
+ :type xcb:-list)
+ (ranges :initarg :ranges :type xcb:-ignore)))
+
+(defclass xcb:record:UnregisterClients
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)
+ (num-client-specs :initarg :num-client-specs :type xcb:CARD32)
+ (client-specs~ :initform
+ '(name client-specs type xcb:record:ClientSpec size
+ (xcb:-fieldref 'num-client-specs))
+ :type xcb:-list)
+ (client-specs :initarg :client-specs :type xcb:-ignore)))
+
+(defclass xcb:record:GetContext
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)))
+(defclass xcb:record:GetContext~reply
+ (xcb:-reply)
+ ((enabled :initarg :enabled :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (element-header :initarg :element-header :type xcb:record:ElementHeader)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (num-intercepted-clients :initarg :num-intercepted-clients :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (intercepted-clients~ :initform
+ '(name intercepted-clients type xcb:record:ClientInfo size
+ (xcb:-fieldref 'num-intercepted-clients))
+ :type xcb:-list)
+ (intercepted-clients :initarg :intercepted-clients :type xcb:-ignore)))
+
+(defclass xcb:record:EnableContext
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)))
+(defclass xcb:record:EnableContext~reply
+ (xcb:-reply)
+ ((category :initarg :category :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (element-header :initarg :element-header :type xcb:record:ElementHeader)
+ (client-swapped :initarg :client-swapped :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (xid-base :initarg :xid-base :type xcb:CARD32)
+ (server-time :initarg :server-time :type xcb:CARD32)
+ (rec-sequence-num :initarg :rec-sequence-num :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:record:DisableContext
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)))
+
+(defclass xcb:record:FreeContext
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (context :initarg :context :type xcb:record:CONTEXT)))
+
+(defconst xcb:record:error-number-class-alist
+ '((0 . xcb:record:BadContext))
+ "(error-number . error-class) alist.")
+
+
+
+(provide 'xcb-record)
+
+;;; xcb-record.el ends here
diff --git a/elpa/xelb-0.20/xcb-record.elc b/elpa/xelb-0.20/xcb-record.elc
new file mode 100644
index 0000000..8befa56
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-record.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-render.el b/elpa/xelb-0.20/xcb-render.el
new file mode 100644
index 0000000..690611c
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-render.el
@@ -0,0 +1,763 @@
+;;; xcb-render.el --- X11 Render extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'render.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:render:-extension-xname "RENDER")
+(defconst xcb:render:-extension-name "Render")
+(defconst xcb:render:-major-version 0)
+(defconst xcb:render:-minor-version 11)
+
+(require 'xcb-xproto)
+
+(defconst xcb:render:PictType:Indexed 0)
+(defconst xcb:render:PictType:Direct 1)
+
+(defconst xcb:render:Picture:None 0)
+
+(defconst xcb:render:PictOp:Clear 0)
+(defconst xcb:render:PictOp:Src 1)
+(defconst xcb:render:PictOp:Dst 2)
+(defconst xcb:render:PictOp:Over 3)
+(defconst xcb:render:PictOp:OverReverse 4)
+(defconst xcb:render:PictOp:In 5)
+(defconst xcb:render:PictOp:InReverse 6)
+(defconst xcb:render:PictOp:Out 7)
+(defconst xcb:render:PictOp:OutReverse 8)
+(defconst xcb:render:PictOp:Atop 9)
+(defconst xcb:render:PictOp:AtopReverse 10)
+(defconst xcb:render:PictOp:Xor 11)
+(defconst xcb:render:PictOp:Add 12)
+(defconst xcb:render:PictOp:Saturate 13)
+(defconst xcb:render:PictOp:DisjointClear 16)
+(defconst xcb:render:PictOp:DisjointSrc 17)
+(defconst xcb:render:PictOp:DisjointDst 18)
+(defconst xcb:render:PictOp:DisjointOver 19)
+(defconst xcb:render:PictOp:DisjointOverReverse 20)
+(defconst xcb:render:PictOp:DisjointIn 21)
+(defconst xcb:render:PictOp:DisjointInReverse 22)
+(defconst xcb:render:PictOp:DisjointOut 23)
+(defconst xcb:render:PictOp:DisjointOutReverse 24)
+(defconst xcb:render:PictOp:DisjointAtop 25)
+(defconst xcb:render:PictOp:DisjointAtopReverse 26)
+(defconst xcb:render:PictOp:DisjointXor 27)
+(defconst xcb:render:PictOp:ConjointClear 32)
+(defconst xcb:render:PictOp:ConjointSrc 33)
+(defconst xcb:render:PictOp:ConjointDst 34)
+(defconst xcb:render:PictOp:ConjointOver 35)
+(defconst xcb:render:PictOp:ConjointOverReverse 36)
+(defconst xcb:render:PictOp:ConjointIn 37)
+(defconst xcb:render:PictOp:ConjointInReverse 38)
+(defconst xcb:render:PictOp:ConjointOut 39)
+(defconst xcb:render:PictOp:ConjointOutReverse 40)
+(defconst xcb:render:PictOp:ConjointAtop 41)
+(defconst xcb:render:PictOp:ConjointAtopReverse 42)
+(defconst xcb:render:PictOp:ConjointXor 43)
+(defconst xcb:render:PictOp:Multiply 48)
+(defconst xcb:render:PictOp:Screen 49)
+(defconst xcb:render:PictOp:Overlay 50)
+(defconst xcb:render:PictOp:Darken 51)
+(defconst xcb:render:PictOp:Lighten 52)
+(defconst xcb:render:PictOp:ColorDodge 53)
+(defconst xcb:render:PictOp:ColorBurn 54)
+(defconst xcb:render:PictOp:HardLight 55)
+(defconst xcb:render:PictOp:SoftLight 56)
+(defconst xcb:render:PictOp:Difference 57)
+(defconst xcb:render:PictOp:Exclusion 58)
+(defconst xcb:render:PictOp:HSLHue 59)
+(defconst xcb:render:PictOp:HSLSaturation 60)
+(defconst xcb:render:PictOp:HSLColor 61)
+(defconst xcb:render:PictOp:HSLLuminosity 62)
+
+(defconst xcb:render:PolyEdge:Sharp 0)
+(defconst xcb:render:PolyEdge:Smooth 1)
+
+(defconst xcb:render:PolyMode:Precise 0)
+(defconst xcb:render:PolyMode:Imprecise 1)
+
+(defconst xcb:render:CP:Repeat 1)
+(defconst xcb:render:CP:AlphaMap 2)
+(defconst xcb:render:CP:AlphaXOrigin 4)
+(defconst xcb:render:CP:AlphaYOrigin 8)
+(defconst xcb:render:CP:ClipXOrigin 16)
+(defconst xcb:render:CP:ClipYOrigin 32)
+(defconst xcb:render:CP:ClipMask 64)
+(defconst xcb:render:CP:GraphicsExposure 128)
+(defconst xcb:render:CP:SubwindowMode 256)
+(defconst xcb:render:CP:PolyEdge 512)
+(defconst xcb:render:CP:PolyMode 1024)
+(defconst xcb:render:CP:Dither 2048)
+(defconst xcb:render:CP:ComponentAlpha 4096)
+
+(defconst xcb:render:SubPixel:Unknown 0)
+(defconst xcb:render:SubPixel:HorizontalRGB 1)
+(defconst xcb:render:SubPixel:HorizontalBGR 2)
+(defconst xcb:render:SubPixel:VerticalRGB 3)
+(defconst xcb:render:SubPixel:VerticalBGR 4)
+(defconst xcb:render:SubPixel:None 5)
+
+(defconst xcb:render:Repeat:None 0)
+(defconst xcb:render:Repeat:Normal 1)
+(defconst xcb:render:Repeat:Pad 2)
+(defconst xcb:render:Repeat:Reflect 3)
+
+(xcb:deftypealias 'xcb:render:GLYPH 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:render:GLYPHSET 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:render:PICTURE 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:render:PICTFORMAT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:render:FIXED 'xcb:INT32)
+
+(defclass xcb:render:PictFormat
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:render:Picture
+ (xcb:-error)
+ ((~code :initform 1)))
+
+(defclass xcb:render:PictOp
+ (xcb:-error)
+ ((~code :initform 2)))
+
+(defclass xcb:render:GlyphSet
+ (xcb:-error)
+ ((~code :initform 3)))
+
+(defclass xcb:render:Glyph
+ (xcb:-error)
+ ((~code :initform 4)))
+
+(defclass xcb:render:DIRECTFORMAT
+ (xcb:-struct)
+ ((red-shift :initarg :red-shift :type xcb:CARD16)
+ (red-mask :initarg :red-mask :type xcb:CARD16)
+ (green-shift :initarg :green-shift :type xcb:CARD16)
+ (green-mask :initarg :green-mask :type xcb:CARD16)
+ (blue-shift :initarg :blue-shift :type xcb:CARD16)
+ (blue-mask :initarg :blue-mask :type xcb:CARD16)
+ (alpha-shift :initarg :alpha-shift :type xcb:CARD16)
+ (alpha-mask :initarg :alpha-mask :type xcb:CARD16)))
+
+(defclass xcb:render:PICTFORMINFO
+ (xcb:-struct)
+ ((id :initarg :id :type xcb:render:PICTFORMAT)
+ (type :initarg :type :type xcb:CARD8)
+ (depth :initarg :depth :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (direct :initarg :direct :type xcb:render:DIRECTFORMAT)
+ (colormap :initarg :colormap :type xcb:COLORMAP)))
+
+(defclass xcb:render:PICTVISUAL
+ (xcb:-struct)
+ ((visual :initarg :visual :type xcb:VISUALID)
+ (format :initarg :format :type xcb:render:PICTFORMAT)))
+
+(defclass xcb:render:PICTDEPTH
+ (xcb:-struct)
+ ((depth :initarg :depth :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (num-visuals :initarg :num-visuals :type xcb:CARD16)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (visuals~ :initform
+ '(name visuals type xcb:render:PICTVISUAL size
+ (xcb:-fieldref 'num-visuals))
+ :type xcb:-list)
+ (visuals :initarg :visuals :type xcb:-ignore)))
+
+(defclass xcb:render:PICTSCREEN
+ (xcb:-struct)
+ ((num-depths :initarg :num-depths :type xcb:CARD32)
+ (fallback :initarg :fallback :type xcb:render:PICTFORMAT)
+ (depths~ :initform
+ '(name depths type xcb:render:PICTDEPTH size
+ (xcb:-fieldref 'num-depths))
+ :type xcb:-list)
+ (depths :initarg :depths :type xcb:-ignore)))
+
+(defclass xcb:render:INDEXVALUE
+ (xcb:-struct)
+ ((pixel :initarg :pixel :type xcb:CARD32)
+ (red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (alpha :initarg :alpha :type xcb:CARD16)))
+
+(defclass xcb:render:COLOR
+ (xcb:-struct)
+ ((red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (alpha :initarg :alpha :type xcb:CARD16)))
+
+(defclass xcb:render:POINTFIX
+ (xcb:-struct)
+ ((x :initarg :x :type xcb:render:FIXED)
+ (y :initarg :y :type xcb:render:FIXED)))
+
+(defclass xcb:render:LINEFIX
+ (xcb:-struct)
+ ((p1 :initarg :p1 :type xcb:render:POINTFIX)
+ (p2 :initarg :p2 :type xcb:render:POINTFIX)))
+
+(defclass xcb:render:TRIANGLE
+ (xcb:-struct)
+ ((p1 :initarg :p1 :type xcb:render:POINTFIX)
+ (p2 :initarg :p2 :type xcb:render:POINTFIX)
+ (p3 :initarg :p3 :type xcb:render:POINTFIX)))
+
+(defclass xcb:render:TRAPEZOID
+ (xcb:-struct)
+ ((top :initarg :top :type xcb:render:FIXED)
+ (bottom :initarg :bottom :type xcb:render:FIXED)
+ (left :initarg :left :type xcb:render:LINEFIX)
+ (right :initarg :right :type xcb:render:LINEFIX)))
+
+(defclass xcb:render:GLYPHINFO
+ (xcb:-struct)
+ ((width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (x-off :initarg :x-off :type xcb:INT16)
+ (y-off :initarg :y-off :type xcb:INT16)))
+
+(defclass xcb:render:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD32)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD32)))
+(defclass xcb:render:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:render:QueryPictFormats
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)))
+(defclass xcb:render:QueryPictFormats~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-formats :initarg :num-formats :type xcb:CARD32)
+ (num-screens :initarg :num-screens :type xcb:CARD32)
+ (num-depths :initarg :num-depths :type xcb:CARD32)
+ (num-visuals :initarg :num-visuals :type xcb:CARD32)
+ (num-subpixel :initarg :num-subpixel :type xcb:CARD32)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (formats~ :initform
+ '(name formats type xcb:render:PICTFORMINFO size
+ (xcb:-fieldref 'num-formats))
+ :type xcb:-list)
+ (formats :initarg :formats :type xcb:-ignore)
+ (screens~ :initform
+ '(name screens type xcb:render:PICTSCREEN size
+ (xcb:-fieldref 'num-screens))
+ :type xcb:-list)
+ (screens :initarg :screens :type xcb:-ignore)
+ (subpixels~ :initform
+ '(name subpixels type xcb:CARD32 size
+ (xcb:-fieldref 'num-subpixel))
+ :type xcb:-list)
+ (subpixels :initarg :subpixels :type xcb:-ignore)))
+
+(defclass xcb:render:QueryPictIndexValues
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (format :initarg :format :type xcb:render:PICTFORMAT)))
+(defclass xcb:render:QueryPictIndexValues~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-values :initarg :num-values :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (values~ :initform
+ '(name values type xcb:render:INDEXVALUE size
+ (xcb:-fieldref 'num-values))
+ :type xcb:-list)
+ (values :initarg :values :type xcb:-ignore)))
+
+(defclass xcb:render:CreatePicture
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (pid :initarg :pid :type xcb:render:PICTURE)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (format :initarg :format :type xcb:render:PICTFORMAT)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 repeat)
+ (2 alphamap)
+ (4 alphaxorigin)
+ (8 alphayorigin)
+ (16 clipxorigin)
+ (32 clipyorigin)
+ (64 clipmask)
+ (128 graphicsexposure)
+ (256 subwindowmode)
+ (512 polyedge)
+ (1024 polymode)
+ (2048 dither)
+ (4096 componentalpha)))
+ :type xcb:-switch)
+ (repeat :initarg :repeat :type xcb:CARD32)
+ (alphamap :initarg :alphamap :type xcb:render:PICTURE)
+ (alphaxorigin :initarg :alphaxorigin :type xcb:INT32)
+ (alphayorigin :initarg :alphayorigin :type xcb:INT32)
+ (clipxorigin :initarg :clipxorigin :type xcb:INT32)
+ (clipyorigin :initarg :clipyorigin :type xcb:INT32)
+ (clipmask :initarg :clipmask :type xcb:PIXMAP)
+ (graphicsexposure :initarg :graphicsexposure :type xcb:CARD32)
+ (subwindowmode :initarg :subwindowmode :type xcb:CARD32)
+ (polyedge :initarg :polyedge :type xcb:CARD32)
+ (polymode :initarg :polymode :type xcb:CARD32)
+ (dither :initarg :dither :type xcb:ATOM)
+ (componentalpha :initarg :componentalpha :type xcb:CARD32)))
+
+(defclass xcb:render:ChangePicture
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 repeat)
+ (2 alphamap)
+ (4 alphaxorigin)
+ (8 alphayorigin)
+ (16 clipxorigin)
+ (32 clipyorigin)
+ (64 clipmask)
+ (128 graphicsexposure)
+ (256 subwindowmode)
+ (512 polyedge)
+ (1024 polymode)
+ (2048 dither)
+ (4096 componentalpha)))
+ :type xcb:-switch)
+ (repeat :initarg :repeat :type xcb:CARD32)
+ (alphamap :initarg :alphamap :type xcb:render:PICTURE)
+ (alphaxorigin :initarg :alphaxorigin :type xcb:INT32)
+ (alphayorigin :initarg :alphayorigin :type xcb:INT32)
+ (clipxorigin :initarg :clipxorigin :type xcb:INT32)
+ (clipyorigin :initarg :clipyorigin :type xcb:INT32)
+ (clipmask :initarg :clipmask :type xcb:PIXMAP)
+ (graphicsexposure :initarg :graphicsexposure :type xcb:CARD32)
+ (subwindowmode :initarg :subwindowmode :type xcb:CARD32)
+ (polyedge :initarg :polyedge :type xcb:CARD32)
+ (polymode :initarg :polymode :type xcb:CARD32)
+ (dither :initarg :dither :type xcb:ATOM)
+ (componentalpha :initarg :componentalpha :type xcb:CARD32)))
+
+(defclass xcb:render:SetPictureClipRectangles
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (clip-x-origin :initarg :clip-x-origin :type xcb:INT16)
+ (clip-y-origin :initarg :clip-y-origin :type xcb:INT16)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:render:FreePicture
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)))
+
+(defclass xcb:render:Composite
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (mask :initarg :mask :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (mask-x :initarg :mask-x :type xcb:INT16)
+ (mask-y :initarg :mask-y :type xcb:INT16)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:render:Trapezoids
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (traps~ :initform
+ '(name traps type xcb:render:TRAPEZOID size nil)
+ :type xcb:-list)
+ (traps :initarg :traps :type xcb:-ignore)))
+
+(defclass xcb:render:Triangles
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (triangles~ :initform
+ '(name triangles type xcb:render:TRIANGLE size nil)
+ :type xcb:-list)
+ (triangles :initarg :triangles :type xcb:-ignore)))
+
+(defclass xcb:render:TriStrip
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (points~ :initform
+ '(name points type xcb:render:POINTFIX size nil)
+ :type xcb:-list)
+ (points :initarg :points :type xcb:-ignore)))
+
+(defclass xcb:render:TriFan
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (points~ :initform
+ '(name points type xcb:render:POINTFIX size nil)
+ :type xcb:-list)
+ (points :initarg :points :type xcb:-ignore)))
+
+(defclass xcb:render:CreateGlyphSet
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (gsid :initarg :gsid :type xcb:render:GLYPHSET)
+ (format :initarg :format :type xcb:render:PICTFORMAT)))
+
+(defclass xcb:render:ReferenceGlyphSet
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (gsid :initarg :gsid :type xcb:render:GLYPHSET)
+ (existing :initarg :existing :type xcb:render:GLYPHSET)))
+
+(defclass xcb:render:FreeGlyphSet
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (glyphset :initarg :glyphset :type xcb:render:GLYPHSET)))
+
+(defclass xcb:render:AddGlyphs
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (glyphset :initarg :glyphset :type xcb:render:GLYPHSET)
+ (glyphs-len :initarg :glyphs-len :type xcb:CARD32)
+ (glyphids~ :initform
+ '(name glyphids type xcb:CARD32 size
+ (xcb:-fieldref 'glyphs-len))
+ :type xcb:-list)
+ (glyphids :initarg :glyphids :type xcb:-ignore)
+ (glyphs~ :initform
+ '(name glyphs type xcb:render:GLYPHINFO size
+ (xcb:-fieldref 'glyphs-len))
+ :type xcb:-list)
+ (glyphs :initarg :glyphs :type xcb:-ignore)
+ (data~ :initform
+ '(name data type xcb:BYTE size nil)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:render:FreeGlyphs
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (glyphset :initarg :glyphset :type xcb:render:GLYPHSET)
+ (glyphs~ :initform
+ '(name glyphs type xcb:render:GLYPH size nil)
+ :type xcb:-list)
+ (glyphs :initarg :glyphs :type xcb:-ignore)))
+
+(defclass xcb:render:CompositeGlyphs8
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (glyphset :initarg :glyphset :type xcb:render:GLYPHSET)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (glyphcmds~ :initform
+ '(name glyphcmds type xcb:BYTE size nil)
+ :type xcb:-list)
+ (glyphcmds :initarg :glyphcmds :type xcb:-ignore)))
+
+(defclass xcb:render:CompositeGlyphs16
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (glyphset :initarg :glyphset :type xcb:render:GLYPHSET)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (glyphcmds~ :initform
+ '(name glyphcmds type xcb:BYTE size nil)
+ :type xcb:-list)
+ (glyphcmds :initarg :glyphcmds :type xcb:-ignore)))
+
+(defclass xcb:render:CompositeGlyphs32
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (src :initarg :src :type xcb:render:PICTURE)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (mask-format :initarg :mask-format :type xcb:render:PICTFORMAT)
+ (glyphset :initarg :glyphset :type xcb:render:GLYPHSET)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (glyphcmds~ :initform
+ '(name glyphcmds type xcb:BYTE size nil)
+ :type xcb:-list)
+ (glyphcmds :initarg :glyphcmds :type xcb:-ignore)))
+
+(defclass xcb:render:FillRectangles
+ (xcb:-request)
+ ((~opcode :initform 26 :type xcb:-u1)
+ (op :initarg :op :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (dst :initarg :dst :type xcb:render:PICTURE)
+ (color :initarg :color :type xcb:render:COLOR)
+ (rects~ :initform
+ '(name rects type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rects :initarg :rects :type xcb:-ignore)))
+
+(defclass xcb:render:CreateCursor
+ (xcb:-request)
+ ((~opcode :initform 27 :type xcb:-u1)
+ (cid :initarg :cid :type xcb:CURSOR)
+ (source :initarg :source :type xcb:render:PICTURE)
+ (x :initarg :x :type xcb:CARD16)
+ (y :initarg :y :type xcb:CARD16)))
+
+(defclass xcb:render:TRANSFORM
+ (xcb:-struct)
+ ((matrix11 :initarg :matrix11 :type xcb:render:FIXED)
+ (matrix12 :initarg :matrix12 :type xcb:render:FIXED)
+ (matrix13 :initarg :matrix13 :type xcb:render:FIXED)
+ (matrix21 :initarg :matrix21 :type xcb:render:FIXED)
+ (matrix22 :initarg :matrix22 :type xcb:render:FIXED)
+ (matrix23 :initarg :matrix23 :type xcb:render:FIXED)
+ (matrix31 :initarg :matrix31 :type xcb:render:FIXED)
+ (matrix32 :initarg :matrix32 :type xcb:render:FIXED)
+ (matrix33 :initarg :matrix33 :type xcb:render:FIXED)))
+
+(defclass xcb:render:SetPictureTransform
+ (xcb:-request)
+ ((~opcode :initform 28 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (transform :initarg :transform :type xcb:render:TRANSFORM)))
+
+(defclass xcb:render:QueryFilters
+ (xcb:-request)
+ ((~opcode :initform 29 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+(defclass xcb:render:QueryFilters~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-aliases :initarg :num-aliases :type xcb:CARD32)
+ (num-filters :initarg :num-filters :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (aliases~ :initform
+ '(name aliases type xcb:CARD16 size
+ (xcb:-fieldref 'num-aliases))
+ :type xcb:-list)
+ (aliases :initarg :aliases :type xcb:-ignore)
+ (filters~ :initform
+ '(name filters type xcb:STR size
+ (xcb:-fieldref 'num-filters))
+ :type xcb:-list)
+ (filters :initarg :filters :type xcb:-ignore)))
+
+(defclass xcb:render:SetPictureFilter
+ (xcb:-request)
+ ((~opcode :initform 30 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (filter-len :initarg :filter-len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (filter~ :initform
+ '(name filter type xcb:char size
+ (xcb:-fieldref 'filter-len))
+ :type xcb:-list)
+ (filter :initarg :filter :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (values~ :initform
+ '(name values type xcb:render:FIXED size nil)
+ :type xcb:-list)
+ (values :initarg :values :type xcb:-ignore)))
+
+(defclass xcb:render:ANIMCURSORELT
+ (xcb:-struct)
+ ((cursor :initarg :cursor :type xcb:CURSOR)
+ (delay :initarg :delay :type xcb:CARD32)))
+
+(defclass xcb:render:CreateAnimCursor
+ (xcb:-request)
+ ((~opcode :initform 31 :type xcb:-u1)
+ (cid :initarg :cid :type xcb:CURSOR)
+ (cursors~ :initform
+ '(name cursors type xcb:render:ANIMCURSORELT size nil)
+ :type xcb:-list)
+ (cursors :initarg :cursors :type xcb:-ignore)))
+
+(defclass xcb:render:SPANFIX
+ (xcb:-struct)
+ ((l :initarg :l :type xcb:render:FIXED)
+ (r :initarg :r :type xcb:render:FIXED)
+ (y :initarg :y :type xcb:render:FIXED)))
+
+(defclass xcb:render:TRAP
+ (xcb:-struct)
+ ((top :initarg :top :type xcb:render:SPANFIX)
+ (bot :initarg :bot :type xcb:render:SPANFIX)))
+
+(defclass xcb:render:AddTraps
+ (xcb:-request)
+ ((~opcode :initform 32 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (x-off :initarg :x-off :type xcb:INT16)
+ (y-off :initarg :y-off :type xcb:INT16)
+ (traps~ :initform
+ '(name traps type xcb:render:TRAP size nil)
+ :type xcb:-list)
+ (traps :initarg :traps :type xcb:-ignore)))
+
+(defclass xcb:render:CreateSolidFill
+ (xcb:-request)
+ ((~opcode :initform 33 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (color :initarg :color :type xcb:render:COLOR)))
+
+(defclass xcb:render:CreateLinearGradient
+ (xcb:-request)
+ ((~opcode :initform 34 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (p1 :initarg :p1 :type xcb:render:POINTFIX)
+ (p2 :initarg :p2 :type xcb:render:POINTFIX)
+ (num-stops :initarg :num-stops :type xcb:CARD32)
+ (stops~ :initform
+ '(name stops type xcb:render:FIXED size
+ (xcb:-fieldref 'num-stops))
+ :type xcb:-list)
+ (stops :initarg :stops :type xcb:-ignore)
+ (colors~ :initform
+ '(name colors type xcb:render:COLOR size
+ (xcb:-fieldref 'num-stops))
+ :type xcb:-list)
+ (colors :initarg :colors :type xcb:-ignore)))
+
+(defclass xcb:render:CreateRadialGradient
+ (xcb:-request)
+ ((~opcode :initform 35 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (inner :initarg :inner :type xcb:render:POINTFIX)
+ (outer :initarg :outer :type xcb:render:POINTFIX)
+ (inner-radius :initarg :inner-radius :type xcb:render:FIXED)
+ (outer-radius :initarg :outer-radius :type xcb:render:FIXED)
+ (num-stops :initarg :num-stops :type xcb:CARD32)
+ (stops~ :initform
+ '(name stops type xcb:render:FIXED size
+ (xcb:-fieldref 'num-stops))
+ :type xcb:-list)
+ (stops :initarg :stops :type xcb:-ignore)
+ (colors~ :initform
+ '(name colors type xcb:render:COLOR size
+ (xcb:-fieldref 'num-stops))
+ :type xcb:-list)
+ (colors :initarg :colors :type xcb:-ignore)))
+
+(defclass xcb:render:CreateConicalGradient
+ (xcb:-request)
+ ((~opcode :initform 36 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (center :initarg :center :type xcb:render:POINTFIX)
+ (angle :initarg :angle :type xcb:render:FIXED)
+ (num-stops :initarg :num-stops :type xcb:CARD32)
+ (stops~ :initform
+ '(name stops type xcb:render:FIXED size
+ (xcb:-fieldref 'num-stops))
+ :type xcb:-list)
+ (stops :initarg :stops :type xcb:-ignore)
+ (colors~ :initform
+ '(name colors type xcb:render:COLOR size
+ (xcb:-fieldref 'num-stops))
+ :type xcb:-list)
+ (colors :initarg :colors :type xcb:-ignore)))
+
+(defconst xcb:render:error-number-class-alist
+ '((0 . xcb:render:PictFormat)
+ (1 . xcb:render:Picture)
+ (2 . xcb:render:PictOp)
+ (3 . xcb:render:GlyphSet)
+ (4 . xcb:render:Glyph))
+ "(error-number . error-class) alist.")
+
+
+
+(provide 'xcb-render)
+
+;;; xcb-render.el ends here
diff --git a/elpa/xelb-0.20/xcb-render.elc b/elpa/xelb-0.20/xcb-render.elc
new file mode 100644
index 0000000..c4d3f8d
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-render.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-renderutil.el b/elpa/xelb-0.20/xcb-renderutil.el
new file mode 100644
index 0000000..6e7f9f3
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-renderutil.el
@@ -0,0 +1,296 @@
+;;; xcb-renderutil.el --- Utility functions for -*- lexical-binding: t -*-
+;;; the Render extension
+
+;; Copyright (C) 2016-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library provides utility functions for the Render extension.
+
+;; Todo
+;; + Glyph-related functions are not implemented.
+
+;; References:
+;; + xcb/util-renderutil (git://anongit.freedesktop.org/xcb/util-renderutil)
+
+;;; Code:
+
+(require 'xcb)
+(require 'xcb-render)
+
+;; Protocol version.
+(defconst xcb:renderutil:-MAJOR_VERSION 0)
+(defconst xcb:renderutil:-MINOR_VERSION 11)
+
+;; PICTFORMINFO masks.
+(defconst xcb:renderutil:PICT_FORMAT:ID 1)
+(defconst xcb:renderutil:PICT_FORMAT:TYPE 2)
+(defconst xcb:renderutil:PICT_FORMAT:DEPTH 4)
+(defconst xcb:renderutil:PICT_FORMAT:RED 8)
+(defconst xcb:renderutil:PICT_FORMAT:RED_MASK 16)
+(defconst xcb:renderutil:PICT_FORMAT:GREEN 32)
+(defconst xcb:renderutil:PICT_FORMAT:GREEN_MASK 64)
+(defconst xcb:renderutil:PICT_FORMAT:BLUE 128)
+(defconst xcb:renderutil:PICT_FORMAT:BLUE_MASK 256)
+(defconst xcb:renderutil:PICT_FORMAT:ALPHA 512)
+(defconst xcb:renderutil:PICT_FORMAT:ALPHA_MASK 1024)
+(defconst xcb:renderutil:PICT_FORMAT:COLORMAP 2048)
+
+;; Indices of standard PictFormats.
+(defconst xcb:renderutil:PICT_STANDARD:ARGB_32 0)
+(defconst xcb:renderutil:PICT_STANDARD:RGB_24 1)
+(defconst xcb:renderutil:PICT_STANDARD:A_8 2)
+(defconst xcb:renderutil:PICT_STANDARD:A_4 3)
+(defconst xcb:renderutil:PICT_STANDARD:A_1 4)
+
+(defconst xcb:renderutil:STANDARD-TEMPLATES
+ (list
+ ;; xcb:renderutil:PICT_STANDARD:ARGB_32
+ (vector (make-instance 'xcb:render:PICTFORMINFO
+ :id 0
+ :type xcb:render:PictType:Direct
+ :depth 32
+ :direct (make-instance 'xcb:render:DIRECTFORMAT
+ :red-shift 16
+ :red-mask #xFF
+ :green-shift 8
+ :green-mask #xFF
+ :blue-shift 0
+ :blue-mask #xFF
+ :alpha-shift 24
+ :alpha-mask #xFF)
+ :colormap 0)
+ (logior xcb:renderutil:PICT_FORMAT:TYPE
+ xcb:renderutil:PICT_FORMAT:DEPTH
+ xcb:renderutil:PICT_FORMAT:RED
+ xcb:renderutil:PICT_FORMAT:RED_MASK
+ xcb:renderutil:PICT_FORMAT:GREEN
+ xcb:renderutil:PICT_FORMAT:GREEN_MASK
+ xcb:renderutil:PICT_FORMAT:BLUE
+ xcb:renderutil:PICT_FORMAT:BLUE_MASK
+ xcb:renderutil:PICT_FORMAT:ALPHA
+ xcb:renderutil:PICT_FORMAT:ALPHA_MASK))
+ ;; xcb:renderutil:PICT_STANDARD:RGB_24
+ (vector (make-instance 'xcb:render:PICTFORMINFO
+ :id 0
+ :type xcb:render:PictType:Direct
+ :depth 24
+ :direct (make-instance 'xcb:render:DIRECTFORMAT
+ :red-shift 16
+ :red-mask #xFF
+ :green-shift 8
+ :green-mask #xFF
+ :blue-shift 0
+ :blue-mask #xFF
+ :alpha-shift 0
+ :alpha-mask #x00)
+ :colormap 0)
+ (logior xcb:renderutil:PICT_FORMAT:TYPE
+ xcb:renderutil:PICT_FORMAT:DEPTH
+ xcb:renderutil:PICT_FORMAT:RED
+ xcb:renderutil:PICT_FORMAT:RED_MASK
+ xcb:renderutil:PICT_FORMAT:GREEN
+ xcb:renderutil:PICT_FORMAT:GREEN_MASK
+ xcb:renderutil:PICT_FORMAT:BLUE
+ xcb:renderutil:PICT_FORMAT:BLUE_MASK
+ xcb:renderutil:PICT_FORMAT:ALPHA_MASK))
+ ;; xcb:renderutil:PICT_STANDARD:A_8
+ (vector (make-instance 'xcb:render:PICTFORMINFO
+ :id 0
+ :type xcb:render:PictType:Direct
+ :depth 8
+ :direct (make-instance 'xcb:render:DIRECTFORMAT
+ :red-shift 0
+ :red-mask #x00
+ :green-shift 0
+ :green-mask #x00
+ :blue-shift 0
+ :blue-mask #x00
+ :alpha-shift 0
+ :alpha-mask #xFF)
+ :colormap 0)
+ (logior xcb:renderutil:PICT_FORMAT:TYPE
+ xcb:renderutil:PICT_FORMAT:DEPTH
+ xcb:renderutil:PICT_FORMAT:RED_MASK
+ xcb:renderutil:PICT_FORMAT:GREEN_MASK
+ xcb:renderutil:PICT_FORMAT:BLUE_MASK
+ xcb:renderutil:PICT_FORMAT:ALPHA
+ xcb:renderutil:PICT_FORMAT:ALPHA_MASK))
+ ;; xcb:renderutil:PICT_STANDARD:A_4
+ (vector (make-instance 'xcb:render:PICTFORMINFO
+ :id 0
+ :type xcb:render:PictType:Direct
+ :depth 4
+ :direct (make-instance 'xcb:render:DIRECTFORMAT
+ :red-shift 0
+ :red-mask #x00
+ :green-shift 0
+ :green-mask #x00
+ :blue-shift 0
+ :blue-mask #x00
+ :alpha-shift 0
+ :alpha-mask #x0F)
+ :colormap 0)
+ (logior xcb:renderutil:PICT_FORMAT:TYPE
+ xcb:renderutil:PICT_FORMAT:DEPTH
+ xcb:renderutil:PICT_FORMAT:RED_MASK
+ xcb:renderutil:PICT_FORMAT:GREEN_MASK
+ xcb:renderutil:PICT_FORMAT:BLUE_MASK
+ xcb:renderutil:PICT_FORMAT:ALPHA
+ xcb:renderutil:PICT_FORMAT:ALPHA_MASK))
+ ;; xcb:renderutil:PICT_STANDARD:A_1
+ (vector (make-instance 'xcb:render:PICTFORMINFO
+ :id 0
+ :type xcb:render:PictType:Direct
+ :depth 1
+ :direct (make-instance 'xcb:render:DIRECTFORMAT
+ :red-shift 0
+ :red-mask #x00
+ :green-shift 0
+ :green-mask #x00
+ :blue-shift 0
+ :blue-mask #x00
+ :alpha-shift 0
+ :alpha-mask #x01)
+ :colormap 0)
+ (logior xcb:renderutil:PICT_FORMAT:TYPE
+ xcb:renderutil:PICT_FORMAT:DEPTH
+ xcb:renderutil:PICT_FORMAT:RED_MASK
+ xcb:renderutil:PICT_FORMAT:GREEN_MASK
+ xcb:renderutil:PICT_FORMAT:BLUE_MASK
+ xcb:renderutil:PICT_FORMAT:ALPHA
+ xcb:renderutil:PICT_FORMAT:ALPHA_MASK)))
+ "Standard PictFormats.")
+
+(cl-defmethod xcb:renderutil:-get-cache ((obj xcb:connection))
+ "Return the cache and initialize the extension when first called."
+ (let ((result (plist-get (slot-value obj 'extra-plist) 'renderutil))
+ required-depths)
+ (unless (or result
+ (= 0 (slot-value
+ (xcb:get-extension-data obj 'xcb:render)
+ 'present)))
+ (setq result
+ (vector (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:render:QueryVersion
+ :client-major-version
+ xcb:renderutil:-MAJOR_VERSION
+ :client-minor-version
+ xcb:renderutil:-MINOR_VERSION))
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:render:QueryPictFormats))))
+ (setq required-depths '(1 4 8 24 32))
+ (catch 'break
+ (dolist (s (slot-value (aref result 1) 'screens))
+ (dolist (d (slot-value s 'depths))
+ (setq required-depths
+ (delq (slot-value d 'depth) required-depths))
+ (unless required-depths
+ (throw 'break nil)))))
+ (if required-depths
+ (setq result nil)
+ (setf (slot-value obj 'extra-plist)
+ (plist-put (slot-value obj 'extra-plist) 'renderutil result))))
+ result))
+
+(defun xcb:renderutil:find-visual-format (formats visual)
+ "Search FORMATS for a format matching visual VISUAL."
+ (catch 'return
+ (dolist (s (slot-value formats 'screens))
+ (dolist (d (slot-value s 'depths))
+ (dolist (v (slot-value d 'visuals))
+ (when (= (slot-value v 'visual) visual)
+ (throw 'return (slot-value v 'format))))))))
+
+(defun xcb:renderutil:find-format (formats mask template count)
+ "Search FORMATS for a format matching mask MASK and template TEMPLATE.
+
+Return COUNT-th match."
+ (catch 'return
+ (unless formats
+ (throw 'return nil))
+ (dolist (f (slot-value formats 'formats))
+ (when (and (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:ID))
+ (eq (slot-value template 'id) (slot-value f 'id))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:TYPE))
+ (eq (slot-value template 'type) (slot-value f 'type))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:DEPTH))
+ (eq (slot-value template 'depth) (slot-value f 'depth))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:RED))
+ (eq (slot-value (slot-value template 'direct) 'red-shift)
+ (slot-value (slot-value f 'direct) 'red-shift))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:RED_MASK))
+ (eq (slot-value (slot-value template 'direct) 'red-mask)
+ (slot-value (slot-value f 'direct) 'red-mask))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:GREEN))
+ (eq (slot-value (slot-value template 'direct) 'red-shift)
+ (slot-value (slot-value f 'direct) 'red-shift))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:GREEN_MASK))
+ (eq (slot-value (slot-value template 'direct) 'red-mask)
+ (slot-value (slot-value f 'direct) 'red-mask))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:BLUE))
+ (eq (slot-value (slot-value template 'direct) 'red-shift)
+ (slot-value (slot-value f 'direct) 'red-shift))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:BLUE_MASK))
+ (eq (slot-value (slot-value template 'direct) 'red-mask)
+ (slot-value (slot-value f 'direct) 'red-mask))
+ t)
+ (if (/= 0 (logand mask xcb:renderutil:PICT_FORMAT:COLORMAP))
+ (eq (slot-value template 'colormap)
+ (slot-value f 'colormap))
+ t))
+ (when (= count 0)
+ (throw 'return (slot-value f 'id))
+ (cl-decf count))))))
+
+(defun xcb:renderutil:find-standard (formats format)
+ "Search FORMATS for a standard format matching format ID FORMAT."
+ (when (and (<= 0 format (1- (length xcb:renderutil:STANDARD-TEMPLATES))))
+ (let ((standard-format (elt xcb:renderutil:STANDARD-TEMPLATES format)))
+ (xcb:renderutil:find-format formats
+ (aref standard-format 1)
+ (aref standard-format 0)
+ 0))))
+
+(cl-defmethod xcb:renderutil:query-version ((obj xcb:connection))
+ "Return the version of Render extension."
+ (let ((cache (xcb:renderutil:-get-cache obj)))
+ (when cache
+ (aref cache 0))))
+
+(cl-defmethod xcb:renderutil:query-formats ((obj xcb:connection))
+ "Return supported formats of this X server."
+ (let ((cache (xcb:renderutil:-get-cache obj)))
+ (when cache
+ (aref cache 1))))
+
+
+
+(provide 'xcb-renderutil)
+
+;;; xcb-renderutil.el ends here
diff --git a/elpa/xelb-0.20/xcb-renderutil.elc b/elpa/xelb-0.20/xcb-renderutil.elc
new file mode 100644
index 0000000..b54a7be
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-renderutil.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-res.el b/elpa/xelb-0.20/xcb-res.el
new file mode 100644
index 0000000..509f62c
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-res.el
@@ -0,0 +1,195 @@
+;;; xcb-res.el --- X11 Res extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'res.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:res:-extension-xname "X-Resource")
+(defconst xcb:res:-extension-name "Res")
+(defconst xcb:res:-major-version 1)
+(defconst xcb:res:-minor-version 2)
+
+(require 'xcb-xproto)
+
+(defclass xcb:res:Client
+ (xcb:-struct)
+ ((resource-base :initarg :resource-base :type xcb:CARD32)
+ (resource-mask :initarg :resource-mask :type xcb:CARD32)))
+
+(defclass xcb:res:Type
+ (xcb:-struct)
+ ((resource-type :initarg :resource-type :type xcb:ATOM)
+ (count :initarg :count :type xcb:CARD32)))
+
+(defconst xcb:res:ClientIdMask:ClientXID 1)
+(defconst xcb:res:ClientIdMask:LocalClientPID 2)
+
+(defclass xcb:res:ClientIdSpec
+ (xcb:-struct)
+ ((client :initarg :client :type xcb:CARD32)
+ (mask :initarg :mask :type xcb:CARD32)))
+
+(defclass xcb:res:ClientIdValue
+ (xcb:-struct)
+ ((spec :initarg :spec :type xcb:res:ClientIdSpec)
+ (length :initarg :length :type xcb:CARD32)
+ (value~ :initform
+ '(name value type xcb:CARD32 size
+ (/
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (value :initarg :value :type xcb:-ignore)))
+
+(defclass xcb:res:ResourceIdSpec
+ (xcb:-struct)
+ ((resource :initarg :resource :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD32)))
+
+(defclass xcb:res:ResourceSizeSpec
+ (xcb:-struct)
+ ((spec :initarg :spec :type xcb:res:ResourceIdSpec)
+ (bytes :initarg :bytes :type xcb:CARD32)
+ (ref-count :initarg :ref-count :type xcb:CARD32)
+ (use-count :initarg :use-count :type xcb:CARD32)))
+
+(defclass xcb:res:ResourceSizeValue
+ (xcb:-struct)
+ ((size :initarg :size :type xcb:res:ResourceSizeSpec)
+ (num-cross-references :initarg :num-cross-references :type xcb:CARD32)
+ (cross-references~ :initform
+ '(name cross-references type xcb:res:ResourceSizeSpec size
+ (xcb:-fieldref 'num-cross-references))
+ :type xcb:-list)
+ (cross-references :initarg :cross-references :type xcb:-ignore)))
+
+(defclass xcb:res:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major :initarg :client-major :type xcb:CARD8)
+ (client-minor :initarg :client-minor :type xcb:CARD8)))
+(defclass xcb:res:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major :initarg :server-major :type xcb:CARD16)
+ (server-minor :initarg :server-minor :type xcb:CARD16)))
+
+(defclass xcb:res:QueryClients
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)))
+(defclass xcb:res:QueryClients~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-clients :initarg :num-clients :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (clients~ :initform
+ '(name clients type xcb:res:Client size
+ (xcb:-fieldref 'num-clients))
+ :type xcb:-list)
+ (clients :initarg :clients :type xcb:-ignore)))
+
+(defclass xcb:res:QueryClientResources
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (xid :initarg :xid :type xcb:CARD32)))
+(defclass xcb:res:QueryClientResources~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-types :initarg :num-types :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (types~ :initform
+ '(name types type xcb:res:Type size
+ (xcb:-fieldref 'num-types))
+ :type xcb:-list)
+ (types :initarg :types :type xcb:-ignore)))
+
+(defclass xcb:res:QueryClientPixmapBytes
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (xid :initarg :xid :type xcb:CARD32)))
+(defclass xcb:res:QueryClientPixmapBytes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (bytes :initarg :bytes :type xcb:CARD32)
+ (bytes-overflow :initarg :bytes-overflow :type xcb:CARD32)))
+
+(defclass xcb:res:QueryClientIds
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (num-specs :initarg :num-specs :type xcb:CARD32)
+ (specs~ :initform
+ '(name specs type xcb:res:ClientIdSpec size
+ (xcb:-fieldref 'num-specs))
+ :type xcb:-list)
+ (specs :initarg :specs :type xcb:-ignore)))
+(defclass xcb:res:QueryClientIds~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-ids :initarg :num-ids :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (ids~ :initform
+ '(name ids type xcb:res:ClientIdValue size
+ (xcb:-fieldref 'num-ids))
+ :type xcb:-list)
+ (ids :initarg :ids :type xcb:-ignore)))
+
+(defclass xcb:res:QueryResourceBytes
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (client :initarg :client :type xcb:CARD32)
+ (num-specs :initarg :num-specs :type xcb:CARD32)
+ (specs~ :initform
+ '(name specs type xcb:res:ResourceIdSpec size
+ (xcb:-fieldref 'num-specs))
+ :type xcb:-list)
+ (specs :initarg :specs :type xcb:-ignore)))
+(defclass xcb:res:QueryResourceBytes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-sizes :initarg :num-sizes :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (sizes~ :initform
+ '(name sizes type xcb:res:ResourceSizeValue size
+ (xcb:-fieldref 'num-sizes))
+ :type xcb:-list)
+ (sizes :initarg :sizes :type xcb:-ignore)))
+
+
+
+(provide 'xcb-res)
+
+;;; xcb-res.el ends here
diff --git a/elpa/xelb-0.20/xcb-res.elc b/elpa/xelb-0.20/xcb-res.elc
new file mode 100644
index 0000000..2845d63
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-res.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-screensaver.el b/elpa/xelb-0.20/xcb-screensaver.el
new file mode 100644
index 0000000..478f747
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-screensaver.el
@@ -0,0 +1,164 @@
+;;; xcb-screensaver.el --- X11 ScreenSaver extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'screensaver.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:screensaver:-extension-xname "MIT-SCREEN-SAVER")
+(defconst xcb:screensaver:-extension-name "ScreenSaver")
+(defconst xcb:screensaver:-major-version 1)
+(defconst xcb:screensaver:-minor-version 1)
+
+(require 'xcb-xproto)
+
+(defconst xcb:screensaver:Kind:Blanked 0)
+(defconst xcb:screensaver:Kind:Internal 1)
+(defconst xcb:screensaver:Kind:External 2)
+
+(defconst xcb:screensaver:Event:NotifyMask 1)
+(defconst xcb:screensaver:Event:CycleMask 2)
+
+(defconst xcb:screensaver:State:Off 0)
+(defconst xcb:screensaver:State:On 1)
+(defconst xcb:screensaver:State:Cycle 2)
+(defconst xcb:screensaver:State:Disabled 3)
+
+(defclass xcb:screensaver:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD8)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:screensaver:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major-version :initarg :server-major-version :type xcb:CARD16)
+ (server-minor-version :initarg :server-minor-version :type xcb:CARD16)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:screensaver:QueryInfo
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+(defclass xcb:screensaver:QueryInfo~reply
+ (xcb:-reply)
+ ((state :initarg :state :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (saver-window :initarg :saver-window :type xcb:WINDOW)
+ (ms-until-server :initarg :ms-until-server :type xcb:CARD32)
+ (ms-since-user-input :initarg :ms-since-user-input :type xcb:CARD32)
+ (event-mask :initarg :event-mask :type xcb:CARD32)
+ (kind :initarg :kind :type xcb:BYTE)
+ (pad~0 :initform 7 :type xcb:-pad)))
+
+(defclass xcb:screensaver:SelectInput
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+
+(defclass xcb:screensaver:SetAttributes
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (border-width :initarg :border-width :type xcb:CARD16)
+ (class :initarg :class :type xcb:BYTE)
+ (depth :initarg :depth :type xcb:CARD8)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 background-pixmap)
+ (2 background-pixel)
+ (4 border-pixmap)
+ (8 border-pixel)
+ (16 bit-gravity)
+ (32 win-gravity)
+ (64 backing-store)
+ (128 backing-planes)
+ (256 backing-pixel)
+ (512 override-redirect)
+ (1024 save-under)
+ (2048 event-mask)
+ (4096 do-not-propogate-mask)
+ (8192 colormap)
+ (16384 cursor)))
+ :type xcb:-switch)
+ (background-pixmap :initarg :background-pixmap :type xcb:PIXMAP)
+ (background-pixel :initarg :background-pixel :type xcb:CARD32)
+ (border-pixmap :initarg :border-pixmap :type xcb:PIXMAP)
+ (border-pixel :initarg :border-pixel :type xcb:CARD32)
+ (bit-gravity :initarg :bit-gravity :type xcb:CARD32)
+ (win-gravity :initarg :win-gravity :type xcb:CARD32)
+ (backing-store :initarg :backing-store :type xcb:CARD32)
+ (backing-planes :initarg :backing-planes :type xcb:CARD32)
+ (backing-pixel :initarg :backing-pixel :type xcb:CARD32)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL32)
+ (save-under :initarg :save-under :type xcb:BOOL32)
+ (event-mask :initarg :event-mask :type xcb:CARD32)
+ (do-not-propogate-mask :initarg :do-not-propogate-mask :type xcb:CARD32)
+ (colormap :initarg :colormap :type xcb:COLORMAP)
+ (cursor :initarg :cursor :type xcb:CURSOR)))
+
+(defclass xcb:screensaver:UnsetAttributes
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+
+(defclass xcb:screensaver:Suspend
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (suspend :initarg :suspend :type xcb:CARD32)))
+
+(defclass xcb:screensaver:Notify
+ (xcb:-event)
+ ((~code :initform 0)
+ (state :initarg :state :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (kind :initarg :kind :type xcb:BYTE)
+ (forced :initarg :forced :type xcb:BOOL)
+ (pad~0 :initform 14 :type xcb:-pad)))
+
+(defconst xcb:screensaver:event-number-class-alist
+ '((0 . xcb:screensaver:Notify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-screensaver)
+
+;;; xcb-screensaver.el ends here
diff --git a/elpa/xelb-0.20/xcb-screensaver.elc b/elpa/xelb-0.20/xcb-screensaver.elc
new file mode 100644
index 0000000..62ee476
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-screensaver.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-shape.el b/elpa/xelb-0.20/xcb-shape.el
new file mode 100644
index 0000000..17b4a19
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-shape.el
@@ -0,0 +1,187 @@
+;;; xcb-shape.el --- X11 Shape extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'shape.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:shape:-extension-xname "SHAPE")
+(defconst xcb:shape:-extension-name "Shape")
+(defconst xcb:shape:-major-version 1)
+(defconst xcb:shape:-minor-version 1)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:shape:OP 'xcb:CARD8)
+
+(xcb:deftypealias 'xcb:shape:KIND 'xcb:CARD8)
+
+(defconst xcb:shape:SO:Set 0)
+(defconst xcb:shape:SO:Union 1)
+(defconst xcb:shape:SO:Intersect 2)
+(defconst xcb:shape:SO:Subtract 3)
+(defconst xcb:shape:SO:Invert 4)
+
+(defconst xcb:shape:SK:Bounding 0)
+(defconst xcb:shape:SK:Clip 1)
+(defconst xcb:shape:SK:Input 2)
+
+(defclass xcb:shape:Notify
+ (xcb:-event)
+ ((~code :initform 0)
+ (shape-kind :initarg :shape-kind :type xcb:shape:KIND)
+ (~sequence :type xcb:CARD16)
+ (affected-window :initarg :affected-window :type xcb:WINDOW)
+ (extents-x :initarg :extents-x :type xcb:INT16)
+ (extents-y :initarg :extents-y :type xcb:INT16)
+ (extents-width :initarg :extents-width :type xcb:CARD16)
+ (extents-height :initarg :extents-height :type xcb:CARD16)
+ (server-time :initarg :server-time :type xcb:TIMESTAMP)
+ (shaped :initarg :shaped :type xcb:BOOL)
+ (pad~0 :initform 11 :type xcb:-pad)))
+
+(defclass xcb:shape:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:shape:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+
+(defclass xcb:shape:Rectangles
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (operation :initarg :operation :type xcb:shape:OP)
+ (destination-kind :initarg :destination-kind :type xcb:shape:KIND)
+ (ordering :initarg :ordering :type xcb:BYTE)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)
+ (x-offset :initarg :x-offset :type xcb:INT16)
+ (y-offset :initarg :y-offset :type xcb:INT16)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:shape:Mask
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (operation :initarg :operation :type xcb:shape:OP)
+ (destination-kind :initarg :destination-kind :type xcb:shape:KIND)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)
+ (x-offset :initarg :x-offset :type xcb:INT16)
+ (y-offset :initarg :y-offset :type xcb:INT16)
+ (source-bitmap :initarg :source-bitmap :type xcb:PIXMAP)))
+
+(defclass xcb:shape:Combine
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (operation :initarg :operation :type xcb:shape:OP)
+ (destination-kind :initarg :destination-kind :type xcb:shape:KIND)
+ (source-kind :initarg :source-kind :type xcb:shape:KIND)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)
+ (x-offset :initarg :x-offset :type xcb:INT16)
+ (y-offset :initarg :y-offset :type xcb:INT16)
+ (source-window :initarg :source-window :type xcb:WINDOW)))
+
+(defclass xcb:shape:Offset
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (destination-kind :initarg :destination-kind :type xcb:shape:KIND)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)
+ (x-offset :initarg :x-offset :type xcb:INT16)
+ (y-offset :initarg :y-offset :type xcb:INT16)))
+
+(defclass xcb:shape:QueryExtents
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)))
+(defclass xcb:shape:QueryExtents~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (bounding-shaped :initarg :bounding-shaped :type xcb:BOOL)
+ (clip-shaped :initarg :clip-shaped :type xcb:BOOL)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (bounding-shape-extents-x :initarg :bounding-shape-extents-x :type xcb:INT16)
+ (bounding-shape-extents-y :initarg :bounding-shape-extents-y :type xcb:INT16)
+ (bounding-shape-extents-width :initarg :bounding-shape-extents-width :type xcb:CARD16)
+ (bounding-shape-extents-height :initarg :bounding-shape-extents-height :type xcb:CARD16)
+ (clip-shape-extents-x :initarg :clip-shape-extents-x :type xcb:INT16)
+ (clip-shape-extents-y :initarg :clip-shape-extents-y :type xcb:INT16)
+ (clip-shape-extents-width :initarg :clip-shape-extents-width :type xcb:CARD16)
+ (clip-shape-extents-height :initarg :clip-shape-extents-height :type xcb:CARD16)))
+
+(defclass xcb:shape:SelectInput
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)
+ (enable :initarg :enable :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:shape:InputSelected
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (destination-window :initarg :destination-window :type xcb:WINDOW)))
+(defclass xcb:shape:InputSelected~reply
+ (xcb:-reply)
+ ((enabled :initarg :enabled :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:shape:GetRectangles
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (source-kind :initarg :source-kind :type xcb:shape:KIND)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:shape:GetRectangles~reply
+ (xcb:-reply)
+ ((ordering :initarg :ordering :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (rectangles-len :initarg :rectangles-len :type xcb:CARD32)
+ (pad~0 :initform 20 :type xcb:-pad)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size
+ (xcb:-fieldref 'rectangles-len))
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defconst xcb:shape:event-number-class-alist
+ '((0 . xcb:shape:Notify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-shape)
+
+;;; xcb-shape.el ends here
diff --git a/elpa/xelb-0.20/xcb-shape.elc b/elpa/xelb-0.20/xcb-shape.elc
new file mode 100644
index 0000000..9beb44f
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-shape.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-shm.el b/elpa/xelb-0.20/xcb-shm.el
new file mode 100644
index 0000000..5b04e4e
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-shm.el
@@ -0,0 +1,170 @@
+;;; xcb-shm.el --- X11 Shm extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'shm.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:shm:-extension-xname "MIT-SHM")
+(defconst xcb:shm:-extension-name "Shm")
+(defconst xcb:shm:-major-version 1)
+(defconst xcb:shm:-minor-version 2)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:shm:SEG 'xcb:-u4)
+
+(defclass xcb:shm:Completion
+ (xcb:-event)
+ ((~code :initform 0)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (minor-event :initarg :minor-event :type xcb:CARD16)
+ (major-event :initarg :major-event :type xcb:BYTE)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (offset :initarg :offset :type xcb:CARD32)))
+
+(defclass xcb:shm:BadSeg
+ (xcb:-error xcb:Value)
+ ((~code :initform 0)))
+
+(defclass xcb:shm:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:shm:QueryVersion~reply
+ (xcb:-reply)
+ ((shared-pixmaps :initarg :shared-pixmaps :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)
+ (uid :initarg :uid :type xcb:CARD16)
+ (gid :initarg :gid :type xcb:CARD16)
+ (pixmap-format :initarg :pixmap-format :type xcb:CARD8)
+ (pad~0 :initform 15 :type xcb:-pad)))
+
+(defclass xcb:shm:Attach
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (shmid :initarg :shmid :type xcb:CARD32)
+ (read-only :initarg :read-only :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:shm:Detach
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)))
+
+(defclass xcb:shm:PutImage
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (total-width :initarg :total-width :type xcb:CARD16)
+ (total-height :initarg :total-height :type xcb:CARD16)
+ (src-x :initarg :src-x :type xcb:CARD16)
+ (src-y :initarg :src-y :type xcb:CARD16)
+ (src-width :initarg :src-width :type xcb:CARD16)
+ (src-height :initarg :src-height :type xcb:CARD16)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)
+ (depth :initarg :depth :type xcb:CARD8)
+ (format :initarg :format :type xcb:CARD8)
+ (send-event :initarg :send-event :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (offset :initarg :offset :type xcb:CARD32)))
+
+(defclass xcb:shm:GetImage
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (plane-mask :initarg :plane-mask :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (offset :initarg :offset :type xcb:CARD32)))
+(defclass xcb:shm:GetImage~reply
+ (xcb:-reply)
+ ((depth :initarg :depth :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (size :initarg :size :type xcb:CARD32)))
+
+(defclass xcb:shm:CreatePixmap
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (pid :initarg :pid :type xcb:PIXMAP)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (depth :initarg :depth :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (offset :initarg :offset :type xcb:CARD32)))
+
+(defclass xcb:shm:AttachFd
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (shm-fd :type xcb:fd)
+ (read-only :initarg :read-only :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:shm:CreateSegment
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (size :initarg :size :type xcb:CARD32)
+ (read-only :initarg :read-only :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:shm:CreateSegment~reply
+ (xcb:-reply)
+ ((nfd :initarg :nfd :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (shm-fd :type xcb:fd)
+ (pad~0 :initform 24 :type xcb:-pad)))
+
+(defconst xcb:shm:error-number-class-alist
+ '((0 . xcb:shm:BadSeg))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:shm:event-number-class-alist
+ '((0 . xcb:shm:Completion))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-shm)
+
+;;; xcb-shm.el ends here
diff --git a/elpa/xelb-0.20/xcb-shm.elc b/elpa/xelb-0.20/xcb-shm.elc
new file mode 100644
index 0000000..40f570d
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-shm.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-sync.el b/elpa/xelb-0.20/xcb-sync.el
new file mode 100644
index 0000000..698ee59
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-sync.el
@@ -0,0 +1,340 @@
+;;; xcb-sync.el --- X11 Sync extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'sync.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:sync:-extension-xname "SYNC")
+(defconst xcb:sync:-extension-name "Sync")
+(defconst xcb:sync:-major-version 3)
+(defconst xcb:sync:-minor-version 1)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:sync:ALARM 'xcb:-u4)
+
+(defconst xcb:sync:ALARMSTATE:Active 0)
+(defconst xcb:sync:ALARMSTATE:Inactive 1)
+(defconst xcb:sync:ALARMSTATE:Destroyed 2)
+
+(xcb:deftypealias 'xcb:sync:COUNTER 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:sync:FENCE 'xcb:-u4)
+
+(defconst xcb:sync:TESTTYPE:PositiveTransition 0)
+(defconst xcb:sync:TESTTYPE:NegativeTransition 1)
+(defconst xcb:sync:TESTTYPE:PositiveComparison 2)
+(defconst xcb:sync:TESTTYPE:NegativeComparison 3)
+
+(defconst xcb:sync:VALUETYPE:Absolute 0)
+(defconst xcb:sync:VALUETYPE:Relative 1)
+
+(defconst xcb:sync:CA:Counter 1)
+(defconst xcb:sync:CA:ValueType 2)
+(defconst xcb:sync:CA:Value 4)
+(defconst xcb:sync:CA:TestType 8)
+(defconst xcb:sync:CA:Delta 16)
+(defconst xcb:sync:CA:Events 32)
+
+(defclass xcb:sync:INT64
+ (xcb:-struct)
+ ((hi :initarg :hi :type xcb:INT32)
+ (lo :initarg :lo :type xcb:CARD32)))
+
+(defclass xcb:sync:SYSTEMCOUNTER
+ (xcb:-struct)
+ ((counter :initarg :counter :type xcb:sync:COUNTER)
+ (resolution :initarg :resolution :type xcb:sync:INT64)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:sync:TRIGGER
+ (xcb:-struct)
+ ((counter :initarg :counter :type xcb:sync:COUNTER)
+ (wait-type :initarg :wait-type :type xcb:CARD32)
+ (wait-value :initarg :wait-value :type xcb:sync:INT64)
+ (test-type :initarg :test-type :type xcb:CARD32)))
+
+(defclass xcb:sync:WAITCONDITION
+ (xcb:-struct)
+ ((trigger :initarg :trigger :type xcb:sync:TRIGGER)
+ (event-threshold :initarg :event-threshold :type xcb:sync:INT64)))
+
+(defclass xcb:sync:Counter
+ (xcb:-error)
+ ((~code :initform 0)
+ (bad-counter :initarg :bad-counter :type xcb:CARD32)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)))
+
+(defclass xcb:sync:Alarm
+ (xcb:-error)
+ ((~code :initform 1)
+ (bad-alarm :initarg :bad-alarm :type xcb:CARD32)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)))
+
+(defclass xcb:sync:Initialize
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (desired-major-version :initarg :desired-major-version :type xcb:CARD8)
+ (desired-minor-version :initarg :desired-minor-version :type xcb:CARD8)))
+(defclass xcb:sync:Initialize~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD8)
+ (minor-version :initarg :minor-version :type xcb:CARD8)
+ (pad~1 :initform 22 :type xcb:-pad)))
+
+(defclass xcb:sync:ListSystemCounters
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)))
+(defclass xcb:sync:ListSystemCounters~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (counters-len :initarg :counters-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (counters~ :initform
+ '(name counters type xcb:sync:SYSTEMCOUNTER size
+ (xcb:-fieldref 'counters-len))
+ :type xcb:-list)
+ (counters :initarg :counters :type xcb:-ignore)))
+
+(defclass xcb:sync:CreateCounter
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (id :initarg :id :type xcb:sync:COUNTER)
+ (initial-value :initarg :initial-value :type xcb:sync:INT64)))
+
+(defclass xcb:sync:DestroyCounter
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (counter :initarg :counter :type xcb:sync:COUNTER)))
+
+(defclass xcb:sync:QueryCounter
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (counter :initarg :counter :type xcb:sync:COUNTER)))
+(defclass xcb:sync:QueryCounter~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (counter-value :initarg :counter-value :type xcb:sync:INT64)))
+
+(defclass xcb:sync:Await
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (wait-list~ :initform
+ '(name wait-list type xcb:sync:WAITCONDITION size nil)
+ :type xcb:-list)
+ (wait-list :initarg :wait-list :type xcb:-ignore)))
+
+(defclass xcb:sync:ChangeCounter
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (counter :initarg :counter :type xcb:sync:COUNTER)
+ (amount :initarg :amount :type xcb:sync:INT64)))
+
+(defclass xcb:sync:SetCounter
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (counter :initarg :counter :type xcb:sync:COUNTER)
+ (value :initarg :value :type xcb:sync:INT64)))
+
+(defclass xcb:sync:CreateAlarm
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (id :initarg :id :type xcb:sync:ALARM)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 counter)
+ (2 valueType)
+ (4 value)
+ (8 testType)
+ (16 delta)
+ (32 events)))
+ :type xcb:-switch)
+ (counter :initarg :counter :type xcb:sync:COUNTER)
+ (valueType :initarg :valueType :type xcb:CARD32)
+ (value :initarg :value :type xcb:sync:INT64)
+ (testType :initarg :testType :type xcb:CARD32)
+ (delta :initarg :delta :type xcb:sync:INT64)
+ (events :initarg :events :type xcb:CARD32)))
+
+(defclass xcb:sync:ChangeAlarm
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (id :initarg :id :type xcb:sync:ALARM)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 counter)
+ (2 valueType)
+ (4 value)
+ (8 testType)
+ (16 delta)
+ (32 events)))
+ :type xcb:-switch)
+ (counter :initarg :counter :type xcb:sync:COUNTER)
+ (valueType :initarg :valueType :type xcb:CARD32)
+ (value :initarg :value :type xcb:sync:INT64)
+ (testType :initarg :testType :type xcb:CARD32)
+ (delta :initarg :delta :type xcb:sync:INT64)
+ (events :initarg :events :type xcb:CARD32)))
+
+(defclass xcb:sync:DestroyAlarm
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (alarm :initarg :alarm :type xcb:sync:ALARM)))
+
+(defclass xcb:sync:QueryAlarm
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (alarm :initarg :alarm :type xcb:sync:ALARM)))
+(defclass xcb:sync:QueryAlarm~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (trigger :initarg :trigger :type xcb:sync:TRIGGER)
+ (delta :initarg :delta :type xcb:sync:INT64)
+ (events :initarg :events :type xcb:BOOL)
+ (state :initarg :state :type xcb:CARD8)
+ (pad~1 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:sync:SetPriority
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (id :initarg :id :type xcb:CARD32)
+ (priority :initarg :priority :type xcb:INT32)))
+
+(defclass xcb:sync:GetPriority
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (id :initarg :id :type xcb:CARD32)))
+(defclass xcb:sync:GetPriority~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (priority :initarg :priority :type xcb:INT32)))
+
+(defclass xcb:sync:CreateFence
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (fence :initarg :fence :type xcb:sync:FENCE)
+ (initially-triggered :initarg :initially-triggered :type xcb:BOOL)))
+
+(defclass xcb:sync:TriggerFence
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (fence :initarg :fence :type xcb:sync:FENCE)))
+
+(defclass xcb:sync:ResetFence
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (fence :initarg :fence :type xcb:sync:FENCE)))
+
+(defclass xcb:sync:DestroyFence
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (fence :initarg :fence :type xcb:sync:FENCE)))
+
+(defclass xcb:sync:QueryFence
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (fence :initarg :fence :type xcb:sync:FENCE)))
+(defclass xcb:sync:QueryFence~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (triggered :initarg :triggered :type xcb:BOOL)
+ (pad~1 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:sync:AwaitFence
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (fence-list~ :initform
+ '(name fence-list type xcb:sync:FENCE size nil)
+ :type xcb:-list)
+ (fence-list :initarg :fence-list :type xcb:-ignore)))
+
+(defclass xcb:sync:CounterNotify
+ (xcb:-event)
+ ((~code :initform 0)
+ (kind :initarg :kind :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (counter :initarg :counter :type xcb:sync:COUNTER)
+ (wait-value :initarg :wait-value :type xcb:sync:INT64)
+ (counter-value :initarg :counter-value :type xcb:sync:INT64)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (count :initarg :count :type xcb:CARD16)
+ (destroyed :initarg :destroyed :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:sync:AlarmNotify
+ (xcb:-event)
+ ((~code :initform 1)
+ (kind :initarg :kind :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (alarm :initarg :alarm :type xcb:sync:ALARM)
+ (counter-value :initarg :counter-value :type xcb:sync:INT64)
+ (alarm-value :initarg :alarm-value :type xcb:sync:INT64)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (state :initarg :state :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defconst xcb:sync:error-number-class-alist
+ '((0 . xcb:sync:Counter)
+ (1 . xcb:sync:Alarm))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:sync:event-number-class-alist
+ '((0 . xcb:sync:CounterNotify)
+ (1 . xcb:sync:AlarmNotify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-sync)
+
+;;; xcb-sync.el ends here
diff --git a/elpa/xelb-0.20/xcb-sync.elc b/elpa/xelb-0.20/xcb-sync.elc
new file mode 100644
index 0000000..0859729
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-sync.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-systemtray.el b/elpa/xelb-0.20/xcb-systemtray.el
new file mode 100644
index 0000000..03d47df
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-systemtray.el
@@ -0,0 +1,142 @@
+;;; xcb-systemtray.el --- System tray protocol -*- lexical-binding: t -*-
+
+;; Copyright (C) 2016-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library implements the system tray protocol.
+
+;; Usage tips:
+;; + Do not forget to call `xcb:systemtray:init' for _every_ connection using
+;; this library.
+;; + Use `xcb:systemtray:SendEvent' instead of `xcb:SendEvent' to send opcode
+;; messages defined in this library.
+;; + Initializing this library auto loads and initializes 'xcb-ewmh'.
+
+;; References:
+;; + System Tray Protocol (https://specifications.freedesktop.org/
+;; systemtray-spec/systemtray-spec-0.3.html)
+
+;;; Code:
+
+(require 'xcb-ewmh)
+
+;; System tray atoms.
+(eval-and-compile
+ (defconst xcb:systemtray:-atoms ;_NET_SYSTEM_TRAY_Sn are left out.
+ '(_NET_SYSTEM_TRAY_OPCODE
+ _NET_SYSTEM_TRAY_ORIENTATION
+ _NET_SYSTEM_TRAY_VISUAL
+ _NET_SYSTEM_TRAY_MESSAGE_DATA)
+ "Atoms involved in the system tray protocol.")
+
+ (dolist (atom xcb:systemtray:-atoms)
+ (eval `(defvar ,(intern (concat "xcb:Atom:" (symbol-name atom))) nil))))
+
+;; Opcodes.
+(defconst xcb:systemtray:opcode:REQUEST-DOCK 0)
+(defconst xcb:systemtray:opcode:BEGIN-MESSAGE 1)
+(defconst xcb:systemtray:opcode:CANCEL-MESSAGE 2)
+
+(cl-defmethod xcb:systemtray:init ((obj xcb:connection) &optional force)
+ "Initialize the system tray module.
+
+This method must be called before using any other method in this module."
+ (when (or force (not xcb:Atom:_NET_SYSTEM_TRAY_OPCODE))
+ (xcb:ewmh:init obj) ;required.
+ (let ((atoms xcb:systemtray:-atoms))
+ (dotimes (i (x-display-screens))
+ (push (intern (format "_NET_SYSTEM_TRAY_S%d" i)) atoms))
+ (xcb:icccm:intern-atoms obj atoms force))))
+
+(defclass xcb:systemtray:SendEvent (xcb:SendEvent)
+ ((propagate :initform 0)
+ (event-mask :initform 'xcb:EventMask:NoEvent))
+ :documentation "Send system tray opcode message.")
+
+(defclass xcb:systemtray:-ClientMessage
+ (xcb:icccm:--ClientMessage xcb:ClientMessage)
+ ((format :initform 32)
+ (type :initform 'xcb:Atom:_NET_SYSTEM_TRAY_OPCODE)
+ (time :initarg :time :type xcb:TIMESTAMP) ;new slot
+ (opcode :initarg :opcode :type xcb:CARD32)) ;new slot
+ :documentation "An system tray opcode message.")
+
+(defclass xcb:systemtray:REQUEST-DOCK (xcb:systemtray:-ClientMessage)
+ ((opcode :initform 'xcb:systemtray:opcode:REQUEST-DOCK)
+ (id :initarg :id :type xcb:CARD32)
+ (pad~0 :initform 8 :type xcb:-pad))
+ :documentation "Dock a tray icon.")
+
+(defclass xcb:systemtray:BEGIN-MESSAGE (xcb:systemtray:-ClientMessage)
+ ((opcode :initform 'xcb:systemtray:opcode:BEGIN-MESSAGE)
+ (timeout :initarg :timeout :type xcb:TIMESTAMP)
+ (length :initarg :length :type xcb:CARD32)
+ (id :initarg :id :type xcb:CARD32))
+ :documentation "Begin balloon message.")
+
+(defclass xcb:systemtray:MESSAGE-DATA
+ (xcb:icccm:--ClientMessage xcb:ClientMessage)
+ ((format :initform 8)
+ (type :initform 'xcb:Atom:_NET_SYSTEM_TRAY_MESSAGE_DATA)
+ (data~ :initform '(name data type xcb:CARD8 size 20) :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:systemtray:CANCEL-MESSAGE (xcb:systemtray:-ClientMessage)
+ ((opcode :initform 'xcb:systemtray:opcode:CANCEL-MESSAGE)
+ (id :initarg :id :type xcb:CARD32)
+ (pad~0 :initform 8 :type xcb:-pad))
+ :documentation "Cancel balloon message.")
+
+;; Value of _NET_SYSTEM_TRAY_ORIENTATION.
+(defconst xcb:systemtray:ORIENTATION:HORZ 0)
+(defconst xcb:systemtray:ORIENTATION:VERT 1)
+
+(defclass xcb:xembed:get-_NET_SYSTEM_TRAY_ORIENTATION
+ (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SYSTEM_TRAY_ORIENTATION)
+ (type :initform 'xcb:Atom:CARDINAL)))
+(defclass xcb:xembed:get-_NET_SYSTEM_TRAY_ORIENTATION~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:xembed:set-_NET_SYSTEM_TRAY_ORIENTATION
+ (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SYSTEM_TRAY_ORIENTATION)
+ (type :initform 'xcb:Atom:CARDINAL)
+ (format :initform 32)))
+
+(defclass xcb:xembed:get-_NET_SYSTEM_TRAY_VISUAL
+ (xcb:icccm:-GetProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SYSTEM_TRAY_VISUAL)
+ (type :initform 'xcb:Atom:VISUALID)))
+(defclass xcb:xembed:get-_NET_SYSTEM_TRAY_VISUAL~reply
+ (xcb:icccm:-GetProperty-single~reply)
+ nil)
+(defclass xcb:xembed:set-_NET_SYSTEM_TRAY_VISUAL
+ (xcb:icccm:-ChangeProperty-single)
+ ((property :initform 'xcb:Atom:_NET_SYSTEM_TRAY_VISUAL)
+ (type :initform 'xcb:Atom:VISUALID)
+ (format :initform 32)))
+
+
+
+(provide 'xcb-systemtray)
+
+;;; xcb-systemtray.el ends here
diff --git a/elpa/xelb-0.20/xcb-systemtray.elc b/elpa/xelb-0.20/xcb-systemtray.elc
new file mode 100644
index 0000000..a2d7cdf
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-systemtray.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-types.el b/elpa/xelb-0.20/xcb-types.el
new file mode 100644
index 0000000..5a078aa
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-types.el
@@ -0,0 +1,912 @@
+;;; xcb-types.el --- Type definitions for XCB -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library defines various data types frequently used in XELB. Simple
+;; types are defined with `cl-deftype' while others are defined as classes.
+;; Basically, data types are used for converting objects to/from byte arrays
+;; rather than for validation purpose. Classes defined elsewhere should also
+;; support `xcb:marshal' and `xcb:unmarshal' methods in order to be considered
+;; a type. Most classes defined here are direct or indirect subclasses of
+;; `xcb:-struct', which has implemented the fundamental marshalling and
+;; unmarshalling methods. These classes again act as the superclasses for more
+;; concrete ones. You may use `eieio-browse' to easily get an overview of the
+;; inheritance hierarchies of all classes defined.
+
+;; Please pay special attention to the byte order adopted in your application.
+;; The global variable `xcb:lsb' specifies the byte order at the time of
+;; instantiating a class (e.g. via `make-instance'). You may let-bind it to
+;; temporarily change the byte order locally.
+
+;; Todo:
+;; + The current implementation of `eieio-default-eval-maybe' only `eval's a
+;; certain type of forms. If this is changed in the future, we will have to
+;; adapt our codes accordingly.
+;; + <paramref> for `xcb:-marshal-field'?
+
+;; References:
+;; + X protocol (http://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.txt)
+
+;;; Code:
+
+(require 'compat)
+(require 'cl-lib) ; cl-coerce
+(require 'cl-generic)
+(require 'eieio)
+(require 'xcb-debug)
+
+(define-minor-mode xcb:debug
+ "Debug-logging enabled if non-nil."
+ :group 'debug
+ :global t)
+
+(defmacro xcb:-log (&optional format-string &rest objects)
+ "Emit a message prepending the name of the function being executed.
+
+FORMAT-STRING is a string specifying the message to output, as in
+`format'. The OBJECTS arguments specify the substitutions."
+ (unless format-string (setq format-string ""))
+ `(when xcb:debug
+ (xcb-debug:message ,(concat "%s%s:\t" format-string "\n")
+ (if xcb-debug:log-time-function
+ (funcall xcb-debug:log-time-function)
+ "")
+ (xcb-debug:compile-time-function-name)
+ ,@objects)
+ nil))
+
+;;;; Utility functions
+
+(defsubst xcb:-pack-u1 (value)
+ "1 byte unsigned integer => byte array."
+ (vector value))
+
+(defsubst xcb:-pack-i1 (value)
+ "1 byte signed integer => byte array."
+ (xcb:-pack-u1 (if (>= value 0) value
+ (1+ (logand #xFF (lognot (- value)))))))
+
+(defsubst xcb:-pack-u2 (value)
+ "2 bytes unsigned integer => byte array (MSB first)."
+ (vector (logand (ash value -8) #xFF) (logand value #xFF)))
+
+(defsubst xcb:-pack-u2-lsb (value)
+ "2 bytes unsigned integer => byte array (LSB first)."
+ (vector (logand value #xFF) (logand (ash value -8) #xFF)))
+
+(defsubst xcb:-pack-i2 (value)
+ "2 bytes signed integer => byte array (MSB first)."
+ (xcb:-pack-u2 (if (>= value 0) value
+ (1+ (logand #xFFFF (lognot (- value)))))))
+
+(defsubst xcb:-pack-i2-lsb (value)
+ "2 bytes signed integer => byte array (LSB first)."
+ (xcb:-pack-u2-lsb (if (>= value 0) value
+ (1+ (logand #xFFFF (lognot (- value)))))))
+
+;; Due to loss of significance of floating-point numbers, `xcb:-pack-u8' and
+;; `xcb:-pack-u8-lsb' may return approximate results.
+(eval-and-compile
+ (if (/= 0 (ash 1 32))
+ ;; 64 bit
+ (progn
+ (defsubst xcb:-pack-u4 (value)
+ "4 bytes unsigned integer => byte array (MSB first, 64-bit)."
+ (vector (logand (ash value -24) #xFF) (logand (ash value -16) #xFF)
+ (logand (ash value -8) #xFF) (logand value #xFF)))
+ (defsubst xcb:-pack-u4-lsb (value)
+ "4 byte unsigned integer => byte array (LSB first, 64-bit)."
+ (vector (logand value #xFF)
+ (logand (ash value -8) #xFF)
+ (logand (ash value -16) #xFF)
+ (logand (ash value -24) #xFF)))
+ (defsubst xcb:-pack-u8 (value)
+ "8 bytes unsigned integer => byte array (MSB first)."
+ (if (integerp value)
+ (vector (logand (ash value -56) #xFF)
+ (logand (ash value -48) #xFF)
+ (logand (ash value -40) #xFF)
+ (logand (ash value -32) #xFF)
+ (logand (ash value -24) #xFF)
+ (logand (ash value -16) #xFF)
+ (logand (ash value -8) #xFF)
+ (logand value #xFF))
+ (let* ((msdw (min 4294967295. (truncate value 4294967296.)))
+ (lsdw (min 4294967295.
+ (truncate (- value (* msdw 4294967296.0))))))
+ (vector (logand (ash msdw -24) #xFF) (logand (ash msdw -16) #xFF)
+ (logand (ash msdw -8) #xFF) (logand msdw #xFF)
+ (logand (ash lsdw -24) #xFF) (logand (ash lsdw -16) #xFF)
+ (logand (ash lsdw -8) #xFF) (logand lsdw #xFF)))))
+ (defsubst xcb:-pack-u8-lsb (value)
+ "8 bytes unsigned integer => byte array (LSB first)."
+ (if (integerp value)
+ (vector (logand value #xFF)
+ (logand (ash value -8) #xFF)
+ (logand (ash value -16) #xFF)
+ (logand (ash value -24) #xFF)
+ (logand (ash value -32) #xFF)
+ (logand (ash value -40) #xFF)
+ (logand (ash value -48) #xFF)
+ (logand (ash value -56) #xFF))
+ (let* ((msdw (min 4294967295. (truncate value 4294967296.)))
+ (lsdw (min 4294967295.
+ (truncate (- value (* msdw 4294967296.0))))))
+ (vector (logand lsdw #xFF) (logand (ash lsdw -8) #xFF)
+ (logand (ash lsdw -16) #xFF) (logand (ash lsdw -24) #xFF)
+ (logand msdw #xFF)
+ (logand (ash msdw -8) #xFF)
+ (logand (ash msdw -16) #xFF)
+ (logand (ash msdw -24) #xFF))))))
+ ;; 32 bit (30-bit actually; large numbers are represented as float type)
+ (defsubst xcb:-pack-u4 (value)
+ "4 bytes unsigned integer => byte array (MSB first, 32-bit)."
+ (if (integerp value)
+ (vector (logand (ash value -24) #xFF) (logand (ash value -16) #xFF)
+ (logand (ash value -8) #xFF) (logand value #xFF))
+ (let* ((msw (truncate value #x10000))
+ (lsw (truncate (- value (* msw 65536.0)))))
+ (vector (logand (ash msw -8) #xFF) (logand msw #xFF)
+ (logand (ash lsw -8) #xFF) (logand lsw #xFF)))))
+ (defsubst xcb:-pack-u4-lsb (value)
+ "4 bytes unsigned integer => byte array (LSB first, 32-bit)."
+ (if (integerp value)
+ (vector (logand value #xFF) (logand (ash value -8) #xFF)
+ (logand (ash value -16) #xFF) (logand (ash value -24) #xFF))
+ (let* ((msw (truncate value #x10000))
+ (lsw (truncate (- value (* msw 65536.0)))))
+ (vector (logand lsw #xFF) (logand (ash lsw -8) #xFF)
+ (logand msw #xFF) (logand (ash msw -8) #xFF)))))
+ (defsubst xcb:-pack-u8 (value)
+ "8 bytes unsigned integer => byte array (MSB first, 32-bit)."
+ (if (integerp value)
+ (vector 0 0 0 0
+ (logand (ash value -24) #xFF) (logand (ash value -16) #xFF)
+ (logand (ash value -8) #xFF) (logand value #xFF))
+ (let* ((msw (min #xFFFF (truncate value 281474976710656.)))
+ (w1 (min #xFFFF
+ (truncate (setq value
+ (- value (* msw 281474976710656.0)))
+ 4294967296.)))
+ (w2 (min #xFFFF
+ (truncate (setq value (- value (* w1 4294967296.0)))
+ #x10000)))
+ (lsw (min #xFFFF (truncate (- value (* w2 65536.0))))))
+ (vector (logand (ash msw -8) #xFF) (logand msw #xFF)
+ (logand (ash w1 -8) #xFF) (logand w1 #xFF)
+ (logand (ash w2 -8) #xFF) (logand w2 #xFF)
+ (logand (ash lsw -8) #xFF) (logand lsw #xFF)))))
+ (defsubst xcb:-pack-u8-lsb (value)
+ "8 bytes unsigned integer => byte array (LSB first, 32-bit)."
+ (if (integerp value)
+ (vector (logand value #xFF) (logand (ash value -8) #xFF)
+ (logand (ash value -16) #xFF) (logand (ash value -24) #xFF)
+ 0 0 0 0)
+ (let* ((msw (min #xFFFF (truncate value 281474976710656.)))
+ (w1 (min #xFFFF
+ (truncate (setq value
+ (- value (* msw 281474976710656.0)))
+ 4294967296.)))
+ (w2 (min #xFFFF
+ (truncate (setq value (- value (* w1 4294967296.0)))
+ #x10000)))
+ (lsw (min #xFFFF (truncate (- value (* w2 65536.0))))))
+ (vector (logand lsw #xFF) (logand (ash lsw -8) #xFF)
+ (logand w2 #xFF) (logand (ash w2 -8) #xFF)
+ (logand w1 #xFF) (logand (ash w1 -8) #xFF)
+ (logand msw #xFF) (logand (ash msw -8) #xFF)))))))
+
+(defsubst xcb:-pack-i4 (value)
+ "4 bytes signed integer => byte array (MSB first)."
+ (xcb:-pack-u4 (if (>= value 0)
+ value
+ (+ value 4294967296.)))) ;treated as float for 32-bit
+
+(defsubst xcb:-pack-i4-lsb (value)
+ "4 bytes signed integer => byte array (LSB first)."
+ (xcb:-pack-u4-lsb (if (>= value 0)
+ value
+ (+ value 4294967296.)))) ;treated as float for 32-bit
+
+(defsubst xcb:-unpack-u1 (data offset)
+ "Byte array => 1 byte unsigned integer."
+ (aref data offset))
+
+(defsubst xcb:-unpack-i1 (data offset)
+ "Byte array => 1 byte signed integer."
+ (let ((value (xcb:-unpack-u1 data offset)))
+ (if (= 0 (logand #x80 value))
+ value
+ (- (logand #xFF (lognot (1- value)))))))
+
+(defsubst xcb:-unpack-u2 (data offset)
+ "Byte array => 2 bytes unsigned integer (MSB first)."
+ (logior (ash (aref data offset) 8) (aref data (1+ offset))))
+
+(defsubst xcb:-unpack-u2-lsb (data offset)
+ "Byte array => 2 bytes unsigned integer (LSB first)."
+ (logior (aref data offset) (ash (aref data (1+ offset)) 8)))
+
+(defsubst xcb:-unpack-i2 (data offset)
+ "Byte array => 2 bytes signed integer (MSB first)."
+ (let ((value (xcb:-unpack-u2 data offset)))
+ (if (= 0 (logand #x8000 value))
+ value
+ (- (logand #xFFFF (lognot (1- value)))))))
+
+(defsubst xcb:-unpack-i2-lsb (data offset)
+ "Byte array => 2 bytes signed integer (LSB first)."
+ (let ((value (xcb:-unpack-u2-lsb data offset)))
+ (if (= 0 (logand #x8000 value))
+ value
+ (- (logand #xFFFF (lognot (1- value)))))))
+
+;; Due to loss of significance of floating-point numbers, `xcb:-unpack-u8' and
+;; `xcb:-unpack-u8-lsb' may return approximate results.
+(eval-and-compile
+ (if (/= 0 (ash 1 32))
+ ;; 64-bit
+ (progn
+ (defsubst xcb:-unpack-u4 (data offset)
+ "Byte array => 4 bytes unsigned integer (MSB first, 64-bit)."
+ (logior (ash (aref data offset) 24) (ash (aref data (1+ offset)) 16)
+ (ash (aref data (+ offset 2)) 8) (aref data (+ offset 3))))
+ (defsubst xcb:-unpack-u4-lsb (data offset)
+ "Byte array => 4 bytes unsigned integer (LSB first, 64-bit)."
+ (logior (aref data offset) (ash (aref data (1+ offset)) 8)
+ (ash (aref data (+ offset 2)) 16)
+ (ash (aref data (+ offset 3)) 24)))
+ (defsubst xcb:-unpack-u8 (data offset)
+ "Byte array => 8 bytes unsigned integer (MSB first)."
+ (let ((msb (aref data offset)))
+ (+ (if (> msb 31) (* msb 72057594037927936.0) (ash msb 56))
+ (logior (ash (aref data (1+ offset)) 48)
+ (ash (aref data (+ offset 2)) 40)
+ (ash (aref data (+ offset 3)) 32)
+ (ash (aref data (+ offset 4)) 24)
+ (ash (aref data (+ offset 5)) 16)
+ (ash (aref data (+ offset 6)) 8)
+ (aref data (+ offset 7))))))
+ (defsubst xcb:-unpack-u8-lsb (data offset)
+ "Byte array => 8 bytes unsigned integer (LSB first)."
+ (let ((msb (aref data (+ offset 7))))
+ (+ (if (> msb 31) (* msb 72057594037927936.0) (ash msb 56))
+ (logior (ash (aref data (+ offset 6)) 48)
+ (ash (aref data (+ offset 5)) 40)
+ (ash (aref data (+ offset 4)) 32)
+ (ash (aref data (+ offset 3)) 24)
+ (ash (aref data (+ offset 2)) 16)
+ (ash (aref data (1+ offset)) 8)
+ (aref data offset))))))
+ ;; 32-bit (30-bit actually; large numbers are represented as float type)
+ (defsubst xcb:-unpack-u4 (data offset)
+ "Byte array => 4 bytes unsigned integer (MSB first, 32-bit)."
+ (let ((msb (aref data offset)))
+ (+ (if (> msb 31) (* msb 16777216.0) (ash msb 24))
+ (logior (ash (aref data (1+ offset)) 16)
+ (ash (aref data (+ offset 2)) 8)
+ (aref data (+ offset 3))))))
+ (defsubst xcb:-unpack-u4-lsb (data offset)
+ "Byte array => 4 bytes unsigned integer (LSB first, 32-bit)."
+ (let ((msb (aref data (+ offset 3))))
+ (+ (if (> msb 31) (* msb 16777216.0) (ash msb 24))
+ (logior (aref data offset)
+ (ash (aref data (1+ offset)) 8)
+ (ash (aref data (+ offset 2)) 16)))))
+ (defsubst xcb:-unpack-u8 (data offset)
+ "Byte array => 8 bytes unsigned integer (MSB first, 32-bit)."
+ (+ (* (aref data offset) 72057594037927936.0)
+ (* (aref data (1+ offset)) 281474976710656.0)
+ (* (aref data (+ offset 2)) 1099511627776.0)
+ (* (aref data (+ offset 3)) 4294967296.0)
+ (* (aref data (+ offset 4)) 16777216.0)
+ (logior (ash (aref data (+ offset 5)) 16)
+ (ash (aref data (+ offset 6)) 8)
+ (aref data (+ offset 7)))))
+ (defsubst xcb:-unpack-u8-lsb (data offset)
+ "Byte array => 8 bytes unsigned integer (LSB first, 32-bit)."
+ (+ (* (aref data (+ offset 7)) 72057594037927936.0)
+ (* (aref data (+ offset 6)) 281474976710656.0)
+ (* (aref data (+ offset 5)) 1099511627776.0)
+ (* (aref data (+ offset 4)) 4294967296.0)
+ (* (aref data (+ offset 3)) 16777216.0)
+ (logior (ash (aref data (+ offset 2)) 16)
+ (ash (aref data (1+ offset)) 8)
+ (aref data offset))))))
+
+(defsubst xcb:-unpack-i4 (data offset)
+ "Byte array => 4 bytes signed integer (MSB first)."
+ (let ((value (xcb:-unpack-u4 data offset)))
+ (if (< value 2147483648.) ;treated as float for 32-bit
+ value
+ (- value 4294967296.)))) ;treated as float for 32-bit
+
+(defsubst xcb:-unpack-i4-lsb (data offset)
+ "Byte array => 4 bytes signed integer (LSB first)."
+ (let ((value (xcb:-unpack-u4-lsb data offset)))
+ (if (< value 2147483648.) ;treated as float for 32-bit
+ value
+ (- value 4294967296.)))) ;treated as float for 32-bit
+
+(defsubst xcb:-f64-to-binary64 (value)
+ "Encode a 64-bit float VALUE as a binary64 (IEEE 754)."
+ (let* ((sigexp (frexp value))
+ (exp (+ (cdr sigexp) 1022))
+ (frac (abs (car sigexp)))
+ (isneg (< (copysign 1.0 (car sigexp)) 0)) ; use `copysign' to detect -0.0
+ (signmask (if isneg #x8000000000000000 0)))
+ (+ (cond ((zerop frac) 0) ; 0
+ ((isnan frac) #xff0000000000001) ; NaN
+ ((or (>= exp 2047) (= frac 1e+INF)) #x7ff0000000000000) ; Inf
+ ((<= exp 0) (ash (round (ldexp frac 52)) exp)) ; Subnormal
+ (t (+ (ash exp 52) (logand #xfffffffffffff
+ (round (ldexp frac 53)))))) ; Normal
+ signmask)))
+
+(defsubst xcb:-f32-to-binary32 (value)
+ "Encode a 32-bit float VALUE as a binary32 (IEEE 754)."
+ (let* ((sigexp (frexp value))
+ (exp (+ (cdr sigexp) 126))
+ (frac (abs (car sigexp)))
+ (isneg (< (copysign 1.0 (car sigexp)) 0)) ; use `copysign' to detect -0.0
+ (signmask (if isneg #x80000000 0)))
+ (+ (cond ((zerop frac) 0) ; 0
+ ((isnan frac) #x7f800001) ; NaN
+ ((or (>= exp 255) (= frac 1e+INF)) #x7f800000) ; Inf
+ ((<= exp 0) (ash (round (ldexp frac 23)) exp)) ; Subnormal
+ (t (+ (ash exp 23) (logand #x7fffff (round (ldexp frac 24)))))) ; Normal
+ signmask)))
+
+(defsubst xcb:-binary64-to-f64 (value)
+ "Decode binary64 VALUE into a float."
+ (let ((sign (pcase (ash value -63)
+ (0 +0.0)
+ (1 -0.0)
+ (_ (error "[XCB] Value too large for a float64: %d" value))))
+ (exp (logand 2047 (ash value -52)))
+ (frac (logand #xfffffffffffff value)))
+ (copysign ; Use copysign, not multiplication, to deal with +/- NAN.
+ (pcase exp
+ (2047 (if (zerop frac) 1e+INF 1e+NaN)) ; INF/NAN
+ (0 (ldexp frac -1074)) ; Subnormal
+ (_ (ldexp (+ #x10000000000000 frac) (- exp 1075)))) ; Normal
+ sign)))
+
+(defsubst xcb:-binary32-to-f32 (value)
+ "Decode binary32 VALUE into a float."
+ (let ((sign (pcase (ash value -31)
+ (0 +0.0)
+ (1 -0.0)
+ (_ (error "[XCB] Value too large for a float32: %d" value))))
+ (exp (logand 255 (ash value -23)))
+ (frac (logand #x7fffff value)))
+ (copysign ; Use copysign, not multiplication, to deal with +/- NAN.
+ (pcase exp
+ (255 (if (zerop frac) 1e+INF 1e+NaN)) ; INF/NAN
+ (0 (ldexp frac -149)) ; Subnormal
+ (_ (ldexp (+ #x800000 frac) (- exp 150)))) ; Normal
+ sign)))
+
+(defmacro xcb:-fieldref (field)
+ "Evaluate a <fieldref> field."
+ `(slot-value obj ,field))
+
+(defmacro xcb:-paramref (field)
+ "Evaluate a <paramref> field."
+ `(slot-value ctx ,field))
+
+(defsubst xcb:-request-class->reply-class (request)
+ "Return the reply class corresponding to the request class REQUEST."
+ (intern-soft (concat (symbol-name request) "~reply")))
+
+;;;; Basic types
+
+;; typedef in C
+(defmacro xcb:deftypealias (new-type old-type)
+ "Define NEW-TYPE as an alias of type OLD-TYPE.
+
+Also the fundamental type is stored in the `xcb--typealias'
+variable property (for internal use only)."
+ `(progn
+ ;; FIXME: `new-type' should probably just not be eval'd at all,
+ ;; but that requires changing all callers not to quote their arg.
+ (cl-deftype ,(eval new-type t) nil ,old-type)
+ (put ,new-type 'xcb--typealias
+ (or (get ,old-type 'xcb--typealias) ,old-type))))
+
+;; 1/2/4 B signed/unsigned integer
+(cl-deftype xcb:-i1 () t)
+(cl-deftype xcb:-i2 () t)
+(cl-deftype xcb:-i4 () t)
+(cl-deftype xcb:-u1 () t)
+(cl-deftype xcb:-u2 () t)
+(cl-deftype xcb:-u4 () t)
+;; 8 B unsigned integer
+(cl-deftype xcb:-u8 () t)
+;; floats & doubles
+(cl-deftype xcb:-f32 () t)
+(cl-deftype xcb:-f64 () t)
+;; <pad>
+(cl-deftype xcb:-pad () t)
+;; <pad> with align attribute
+(cl-deftype xcb:-pad-align () t)
+;; <fd>
+(xcb:deftypealias 'xcb:fd 'xcb:-i4)
+;; <list>
+(cl-deftype xcb:-list () t)
+;; <switch>
+(cl-deftype xcb:-switch () t)
+;; This type of data is not involved in marshalling/unmarshalling
+(cl-deftype xcb:-ignore () t)
+;; C types and types missing in XCB
+(cl-deftype xcb:void () t)
+(xcb:deftypealias 'xcb:char 'xcb:-u1)
+(xcb:deftypealias 'xcb:BYTE 'xcb:-u1)
+(xcb:deftypealias 'xcb:INT8 'xcb:-i1)
+(xcb:deftypealias 'xcb:INT16 'xcb:-i2)
+(xcb:deftypealias 'xcb:INT32 'xcb:-i4)
+(xcb:deftypealias 'xcb:CARD8 'xcb:-u1)
+(xcb:deftypealias 'xcb:CARD16 'xcb:-u2)
+(xcb:deftypealias 'xcb:CARD32 'xcb:-u4)
+(xcb:deftypealias 'xcb:CARD64 'xcb:-u8)
+(xcb:deftypealias 'xcb:BOOL 'xcb:-u1)
+(xcb:deftypealias 'xcb:float 'xcb:-f32)
+(xcb:deftypealias 'xcb:double 'xcb:-f64)
+
+;;;; Struct type
+
+(eval-and-compile
+ (defvar xcb:lsb t
+ "Non-nil for LSB first (i.e., little-endian), nil otherwise.
+
+Consider let-bind it rather than change its global value."))
+
+(defclass xcb:--struct ()
+ nil)
+
+(cl-defmethod slot-unbound ((object xcb:--struct) class slot-name fn)
+ (unless (eq fn #'oref-default)
+ (xcb:-log "unbound-slot: %s" (list (eieio-class-name class)
+ (eieio-object-name object)
+ slot-name fn))))
+
+(defclass xcb:-struct (xcb:--struct)
+ ((~lsb :initarg :~lsb
+ :initform (symbol-value 'xcb:lsb) ;see `eieio-default-eval-maybe'
+ :type xcb:-ignore)
+ (~size :initform nil :type xcb:-ignore))
+ :documentation "Struct type.")
+
+(cl-defmethod xcb:marshal ((obj xcb:-struct))
+ "Return the byte-array representation of struct OBJ."
+ (let ((slots (eieio-class-slots (eieio-object-class obj)))
+ result name type value)
+ (catch 'break
+ (dolist (slot slots)
+ (setq type (cl--slot-descriptor-type slot))
+ (unless (eq type 'xcb:-ignore)
+ (setq name (eieio-slot-descriptor-name slot))
+ (setq value (slot-value obj name))
+ (when (symbolp value) ;see `eieio-default-eval-maybe'
+ (setq value (symbol-value value)))
+ (setq result
+ (vconcat result (xcb:-marshal-field obj type value
+ (length result))))
+ (when (eq type 'xcb:-switch) ;xcb:-switch always finishes a struct
+ (throw 'break 'nil)))))
+ ;; If we specify a size, verify that it matches the actual size.
+ (when-let* ((size-exp (slot-value obj '~size))
+ (size (eval size-exp `((obj . ,obj)))))
+ (unless (length= result size)
+ (error "[XCB] Unexpected size for type %s: got %d, expected %d"
+ (type-of obj)
+ (length result)
+ size)))
+ result))
+
+(cl-defmethod xcb:-marshal-field ((obj xcb:-struct) type value &optional pos)
+ "Return the byte-array representation of a field in struct OBJ of type TYPE
+and value VALUE.
+
+The optional POS argument indicates current byte index of the field (used by
+`xcb:-pad-align' type)."
+ (pcase (or (get type 'xcb--typealias) type)
+ (`xcb:-u1 (xcb:-pack-u1 value))
+ (`xcb:-i1 (xcb:-pack-i1 value))
+ (`xcb:-u2
+ (if (slot-value obj '~lsb) (xcb:-pack-u2-lsb value) (xcb:-pack-u2 value)))
+ (`xcb:-i2
+ (if (slot-value obj '~lsb) (xcb:-pack-i2-lsb value) (xcb:-pack-i2 value)))
+ (`xcb:-u4
+ (if (slot-value obj '~lsb) (xcb:-pack-u4-lsb value) (xcb:-pack-u4 value)))
+ (`xcb:-i4
+ (if (slot-value obj '~lsb) (xcb:-pack-i4-lsb value) (xcb:-pack-i4 value)))
+ (`xcb:-u8
+ (if (slot-value obj '~lsb) (xcb:-pack-u8-lsb value) (xcb:-pack-u8 value)))
+ (`xcb:-f32
+ (let ((value (xcb:-f32-to-binary32 value)))
+ (if (slot-value obj '~lsb) (xcb:-pack-u4-lsb value) (xcb:-pack-u4 value))))
+ (`xcb:-f64
+ (let ((value (xcb:-f64-to-binary64 value)))
+ (if (slot-value obj '~lsb) (xcb:-pack-u8-lsb value) (xcb:-pack-u8 value))))
+ (`xcb:void (vector value))
+ (`xcb:-pad
+ (unless (integerp value)
+ (setq value (eval value `((obj . ,obj)))))
+ (make-vector value 0))
+ (`xcb:-pad-align
+ ;; The length slot in xcb:-request is left out
+ (let ((len (if (object-of-class-p obj 'xcb:-request) (+ pos 2) pos)))
+ (when (vectorp value)
+ ;; Alignment with offset.
+ (setq len (- len (aref value 1))
+ value (aref value 0)))
+ (unless (integerp value)
+ (setq value (eval value `((obj . ,obj)))))
+ (make-vector (% (- value (% len value)) value) 0)))
+ (`xcb:-list
+ (let* ((list-name (plist-get value 'name))
+ (list-type (plist-get value 'type))
+ (list-size (plist-get value 'size))
+ (data (slot-value obj list-name)))
+ (unless (integerp list-size)
+ (setq list-size (eval list-size `((obj . ,obj))))
+ (unless list-size
+ (setq list-size (length data)))) ;list-size can be nil
+ (cl-assert (= list-size (length data)))
+ ;; The data may be large, and if it's a string that's supposed
+ ;; to be converted to a vector of bytes, then the transform can
+ ;; be done trivially and much faster by just coercing.
+ (if (and (eq list-type 'xcb:BYTE)
+ (eq (type-of data) 'string))
+ (cl-coerce data 'vector)
+ (mapconcat (lambda (i) (xcb:-marshal-field obj list-type i))
+ data []))))
+ (`xcb:-switch
+ (let ((slots (eieio-class-slots (eieio-object-class obj)))
+ (expression (plist-get value 'expression))
+ (cases (plist-get value 'cases))
+ result condition name-list flag slot-type)
+ (unless (integerp expression)
+ (setq expression (eval expression `((obj . ,obj)))))
+ (cl-assert (integerp expression))
+ (dolist (i cases)
+ (setq condition (car i))
+ (setq name-list (cdr i))
+ (setq flag nil)
+ (cl-assert (or (integerp condition) (listp condition)))
+ (if (integerp condition)
+ (setq flag (/= 0 (logand expression condition)))
+ (if (eq 'logior (car condition))
+ (setq flag (/= 0 (logand expression
+ (apply #'logior (cdr condition)))))
+ (setq flag (memq expression condition))))
+ (when flag
+ (dolist (name name-list)
+ (catch 'break
+ (dolist (slot slots) ;better way to find the slot type?
+ (when (eq name (eieio-slot-descriptor-name slot))
+ (setq slot-type (cl--slot-descriptor-type slot))
+ (throw 'break nil))))
+ (unless (eq slot-type 'xcb:-ignore)
+ (setq result
+ (vconcat result
+ (xcb:-marshal-field obj slot-type
+ (slot-value obj name)
+ (+ pos
+ (length result)))))))))
+ result))
+ ((guard (child-of-class-p type 'xcb:-struct))
+ (xcb:marshal value))
+ (x (error "[XCB] Unsupported type for marshalling: %s" x))))
+
+(cl-defmethod xcb:unmarshal ((obj xcb:-struct) byte-array &optional ctx
+ total-length)
+ "Fill in fields of struct OBJ according to its byte-array representation.
+
+The optional argument CTX is for <paramref>."
+ (unless total-length
+ (setq total-length (length byte-array)))
+ (let ((slots (eieio-class-slots (eieio-object-class obj)))
+ (result 0)
+ slot-name tmp type)
+ (catch 'break
+ (dolist (slot slots)
+ (setq type (cl--slot-descriptor-type slot))
+ (unless (eq type 'xcb:-ignore)
+ (setq slot-name (eieio-slot-descriptor-name slot)
+ tmp (xcb:-unmarshal-field obj type byte-array result
+ (eieio-oref-default obj slot-name)
+ ctx total-length))
+ (setf (slot-value obj slot-name) (car tmp))
+ (setq result (+ result (cadr tmp)))
+ (when (eq type 'xcb:-switch) ;xcb:-switch always finishes a struct
+ (throw 'break 'nil)))))
+ ;; Let the struct compute it's size if a length field is specified. This lets us skip unknown
+ ;; fields.
+ (when-let* ((size-exp (slot-value obj '~size))
+ (size (eval size-exp `((obj . ,obj)))))
+ ;; Make sure the stated size is reasonable.
+ (cond
+ ((< size result)
+ (error "[XCB] Object of type `%s' specified a size (%d) less than the number of bytes read (%d)"
+ (type-of obj) size result))
+ ((length< byte-array (- size result))
+ (error "[XCB] Object of type `%s' specified a size (%d) greater than the size of the input (%d)"
+ (type-of obj) size (+ result (length byte-array)))))
+ ;; Skip any additional bytes.
+ (setq result size))
+ result))
+
+(cl-defmethod xcb:-unmarshal-field ((obj xcb:-struct) type data offset
+ initform &optional ctx total-length)
+ "Return the value of a field in struct OBJ of type TYPE, byte-array
+representation DATA, and default value INITFORM.
+
+The optional argument CTX is for <paramref>.
+
+This method returns a list of two components, with the first being the result
+and the second the consumed length."
+ (pcase (or (get type 'xcb--typealias) type)
+ (`xcb:-u1 (list (aref data offset) 1))
+ (`xcb:-i1 (let ((result (aref data offset)))
+ (list (if (< result 128) result (- result 255)) 1)))
+ (`xcb:-u2 (list (if (slot-value obj '~lsb)
+ (xcb:-unpack-u2-lsb data offset)
+ (xcb:-unpack-u2 data offset))
+ 2))
+ (`xcb:-i2 (list (if (slot-value obj '~lsb)
+ (xcb:-unpack-i2-lsb data offset)
+ (xcb:-unpack-i2 data offset))
+ 2))
+ (`xcb:-u4 (list (if (slot-value obj '~lsb)
+ (xcb:-unpack-u4-lsb data offset)
+ (xcb:-unpack-u4 data offset))
+ 4))
+ (`xcb:-i4 (list (if (slot-value obj '~lsb)
+ (xcb:-unpack-i4-lsb data offset)
+ (xcb:-unpack-i4 data offset))
+ 4))
+ (`xcb:-u8 (list (if (slot-value obj '~lsb)
+ (xcb:-unpack-u8-lsb data offset)
+ (xcb:-unpack-u8 data offset))
+ 8))
+ (`xcb:-f32 (list (xcb:-binary32-to-f32
+ (if (slot-value obj '~lsb)
+ (xcb:-unpack-u4-lsb data offset)
+ (xcb:-unpack-u4 data offset)))
+ 4))
+ (`xcb:-f64 (list (xcb:-binary64-to-f64
+ (if (slot-value obj '~lsb)
+ (xcb:-unpack-u8-lsb data offset)
+ (xcb:-unpack-u8 data offset)))
+ 8))
+ (`xcb:void (list (aref data offset) 1))
+ (`xcb:-pad
+ (unless (integerp initform)
+ (when (eq 'quote (car initform))
+ (setq initform (cadr initform)))
+ (setq initform (eval initform `((obj . ,obj) (ctx . ,ctx)))))
+ (list initform initform))
+ (`xcb:-pad-align
+ (let ((len (- total-length (- (length data) offset))))
+ (if (vectorp initform)
+ ;; Alignment with offset.
+ (setq len (- len (aref initform 1))
+ initform (aref initform 0))
+ (unless (integerp initform)
+ (when (eq 'quote (car initform))
+ (setq initform (cadr initform)))
+ (setq initform (eval initform `((obj . ,obj) (ctx . ,ctx))))))
+ (list initform (% (- initform (% len initform)) initform))))
+ (`xcb:-list
+ (when (eq 'quote (car initform)) ;unquote the form
+ (setq initform (cadr initform)))
+ (let ((list-name (plist-get initform 'name))
+ (list-type (plist-get initform 'type))
+ (list-size (plist-get initform 'size)))
+ (unless (integerp list-size)
+ (setq list-size (eval list-size `((obj . ,obj) (ctx . ,ctx)))))
+ (cl-assert (integerp list-size))
+ (pcase list-type
+ (`xcb:char ;as Latin-1 encoded string
+ (setf (slot-value obj list-name)
+ (decode-coding-string
+ (apply #'unibyte-string
+ (append (substring data offset
+ (+ offset list-size))
+ nil))
+ 'iso-latin-1)))
+ (`xcb:void ;for further unmarshalling
+ (setf (slot-value obj list-name)
+ (substring data offset (+ offset list-size))))
+ (x
+ (let ((count 0)
+ result tmp)
+ (dotimes (_ list-size)
+ (setq tmp (xcb:-unmarshal-field obj x data (+ offset count) nil
+ nil total-length))
+ (setq result (nconc result (list (car tmp))))
+ (setq count (+ count (cadr tmp))))
+ (setf (slot-value obj list-name) result)
+ (setq list-size count)))) ;to byte length
+ (list initform list-size)))
+ (`xcb:-switch
+ (let ((slots (eieio-class-slots (eieio-object-class obj)))
+ (expression (plist-get initform 'expression))
+ (cases (plist-get initform 'cases))
+ (count 0)
+ condition name-list flag slot-type tmp)
+ (unless (integerp expression)
+ (setq expression (eval expression `((obj . ,obj) (ctx . ,ctx)))))
+ (cl-assert (integerp expression))
+ (dolist (i cases)
+ (setq condition (car i))
+ (setq name-list (cdr i))
+ (setq flag nil)
+ (cl-assert (or (integerp condition) (listp condition)))
+ (if (integerp condition)
+ (setq flag (/= 0 (logand expression condition)))
+ (if (eq 'logior (car condition))
+ (setq flag (/= 0 (logand expression
+ (apply #'logior (cdr condition)))))
+ (setq flag (memq expression condition))))
+ (when flag
+ (dolist (name name-list)
+ (catch 'break
+ (dolist (slot slots) ;better way to find the slot type?
+ (when (eq name (eieio-slot-descriptor-name slot))
+ (setq slot-type (cl--slot-descriptor-type slot))
+ (throw 'break nil))))
+ (unless (eq slot-type 'xcb:-ignore)
+ (setq tmp (xcb:-unmarshal-field obj slot-type data (+ offset count)
+ (eieio-oref-default obj name)
+ nil total-length))
+ (setf (slot-value obj name) (car tmp))
+ (setq count (+ count (cadr tmp)))))))
+ (list initform count)))
+ ((and x (guard (child-of-class-p x 'xcb:-struct)))
+ (let* ((struct-obj (make-instance x))
+ (tmp (xcb:unmarshal struct-obj (substring data offset) obj
+ total-length)))
+ (list struct-obj tmp)))
+ (x (error "[XCB] Unsupported type for unmarshalling: %s" x))))
+
+;;;; Types derived directly from `xcb:-struct'
+
+(defclass xcb:-request (xcb:-struct)
+ nil
+ :documentation "X request type.")
+
+(defclass xcb:-reply (xcb:-struct)
+ ((~reply :initform 1 :type xcb:-u1))
+ :documentation "X reply type.")
+
+(defclass xcb:-event (xcb:-struct)
+ ((~code :type xcb:-u1))
+ :documentation "Event type.")
+;; Implemented in 'xcb.el'
+(cl-defgeneric xcb:-error-or-event-class->number (obj class))
+;;
+(cl-defmethod xcb:marshal ((obj xcb:-event) connection &optional sequence)
+ "Return the byte-array representation of event OBJ.
+
+This method is mainly designed for `xcb:SendEvent', where it's used to
+generate synthetic events. The CONNECTION argument is used to retrieve
+the event number of extensions. If SEQUENCE is non-nil, it is used as
+the sequence number of the synthetic event (if the event uses sequence
+number); otherwise, 0 is assumed.
+
+This method auto-pads short results to 32 bytes."
+ (let ((event-number
+ (xcb:-error-or-event-class->number connection
+ (eieio-object-class obj)))
+ result)
+ (when (consp event-number)
+ (setq event-number (cdr event-number))
+ (if (= 1 (length event-number))
+ ;; XKB event.
+ (setf (slot-value obj 'xkbType) (aref event-number 0))
+ ;; Generic event.
+ (setf (slot-value obj 'extensions) (aref event-number 0)
+ (slot-value obj 'evtype) (aref event-number 1))))
+ (when (slot-exists-p obj '~sequence)
+ (setf (slot-value obj '~sequence) (or sequence 0)))
+ (setq result (cl-call-next-method obj))
+ (when (> 32 (length result))
+ (setq result (vconcat result (make-vector (- 32 (length result)) 0))))
+ result))
+
+(defclass xcb:-generic-event (xcb:-event)
+ ((~code :initform 35)
+ (~extension :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (~length :type xcb:CARD32)
+ (~evtype :type xcb:CARD16))
+ :documentation "Generic event type.")
+
+(defclass xcb:-error (xcb:-struct)
+ ((~error :initform 0 :type xcb:-u1)
+ (~code :type xcb:-u1)
+ (~sequence :type xcb:CARD16))
+ :documentation "X error type.")
+
+(defclass xcb:-union (xcb:-struct)
+ ((~size :initarg :~size :type xcb:-ignore)) ;Size of the largest member.
+ :documentation "Union type.")
+;;
+(cl-defmethod slot-unbound ((_object xcb:-union) _class _slot-name _fn)
+ nil)
+;;
+(cl-defmethod xcb:marshal ((obj xcb:-union))
+ "Return the byte-array representation of union OBJ.
+
+This result is converted from the first bounded slot."
+ (let ((slots (eieio-class-slots (eieio-object-class obj)))
+ (size (slot-value obj '~size))
+ result slot type name tmp)
+ (while (and (not result) slots (> size (length result)))
+ (setq slot (pop slots))
+ (setq type (cl--slot-descriptor-type slot)
+ name (eieio-slot-descriptor-name slot))
+ (unless (or (not (slot-value obj name))
+ (eq type 'xcb:-ignore)
+ ;; Dealing with `xcb:-list' type
+ (and (eq type 'xcb:-list)
+ (not (slot-value obj (plist-get (slot-value obj name)
+ 'name)))))
+ (setq tmp (xcb:-marshal-field obj (cl--slot-descriptor-type slot)
+ (slot-value obj name)))
+ (when (> (length tmp) (length result))
+ (setq result tmp))))
+ (cond
+ ((length< result size)
+ (setq result (vconcat result (make-vector (- size (length result)) 0))))
+ ((length> result size)
+ (error "[XCB] Marshaled enum `%s' is larger than its declared size (%d > %d)"
+ (type-of obj) (length result) size)))
+ result))
+;;
+(cl-defmethod xcb:unmarshal ((obj xcb:-union) byte-array &optional ctx
+ total-length)
+ "Fill in every field in union OBJ, according to BYTE-ARRAY.
+
+The optional argument CTX is for <paramref>."
+ (unless total-length
+ (setq total-length (length byte-array)))
+ (let ((slots (eieio-class-slots (eieio-object-class obj)))
+ slot-name tmp type)
+ (dolist (slot slots)
+ (setq type (cl--slot-descriptor-type slot))
+ (unless (eq type 'xcb:-ignore)
+ (setq slot-name (eieio-slot-descriptor-name slot)
+ tmp (xcb:-unmarshal-field obj type byte-array 0
+ (eieio-oref-default obj slot-name)
+ ctx total-length))
+ (setf (slot-value obj (eieio-slot-descriptor-name slot)) (car tmp))))
+ (slot-value obj '~size)))
+
+
+
+(provide 'xcb-types)
+
+;;; xcb-types.el ends here
diff --git a/elpa/xelb-0.20/xcb-types.elc b/elpa/xelb-0.20/xcb-types.elc
new file mode 100644
index 0000000..2d5cba8
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-types.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xc_misc.el b/elpa/xelb-0.20/xcb-xc_misc.el
new file mode 100644
index 0000000..af15d34
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xc_misc.el
@@ -0,0 +1,79 @@
+;;; xcb-xc_misc.el --- X11 XCMisc extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xc_misc.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xc_misc:-extension-xname "XC-MISC")
+(defconst xcb:xc_misc:-extension-name "XCMisc")
+(defconst xcb:xc_misc:-major-version 1)
+(defconst xcb:xc_misc:-minor-version 1)
+
+(defclass xcb:xc_misc:GetVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD16)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD16)))
+(defclass xcb:xc_misc:GetVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major-version :initarg :server-major-version :type xcb:CARD16)
+ (server-minor-version :initarg :server-minor-version :type xcb:CARD16)))
+
+(defclass xcb:xc_misc:GetXIDRange
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)))
+(defclass xcb:xc_misc:GetXIDRange~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (start-id :initarg :start-id :type xcb:CARD32)
+ (count :initarg :count :type xcb:CARD32)))
+
+(defclass xcb:xc_misc:GetXIDList
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (count :initarg :count :type xcb:CARD32)))
+(defclass xcb:xc_misc:GetXIDList~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (ids-len :initarg :ids-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (ids~ :initform
+ '(name ids type xcb:CARD32 size
+ (xcb:-fieldref 'ids-len))
+ :type xcb:-list)
+ (ids :initarg :ids :type xcb:-ignore)))
+
+
+
+(provide 'xcb-xc_misc)
+
+;;; xcb-xc_misc.el ends here
diff --git a/elpa/xelb-0.20/xcb-xc_misc.elc b/elpa/xelb-0.20/xcb-xc_misc.elc
new file mode 100644
index 0000000..2847e98
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xc_misc.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xembed.el b/elpa/xelb-0.20/xcb-xembed.el
new file mode 100644
index 0000000..c5273e8
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xembed.el
@@ -0,0 +1,184 @@
+;;; xcb-xembed.el --- XEmbed protocol -*- lexical-binding: t -*-
+
+;; Copyright (C) 2016-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library implements the XEmbed protocol.
+
+;; Usage tips:
+;; + Do not forget to call `xcb:xembed:init' for _every_ connection using this
+;; library.
+;; + Use `xcb:xembed:SendEvent' instead of `xcb:SendEvent' to send XEmbed
+;; messages defined in this library.
+
+;; References:
+;; + Xembed protocol (https://specifications.freedesktop.org/
+;; xembed-spec/xembed-spec-0.5.html)
+
+;;; Code:
+
+(require 'xcb-icccm)
+
+;; XEmbed atoms
+(eval-and-compile
+ (defconst xcb:xembed:-atoms
+ '(_XEMBED_INFO _XEMBED)
+ "XEmbed atoms.")
+
+ (dolist (atom xcb:xembed:-atoms)
+ (eval `(defvar ,(intern (concat "xcb:Atom:" (symbol-name atom))) nil))))
+
+;; XEMBED message opcodes.
+(defconst xcb:xembed:opcode:EMBEDDED-NOTIFY 0)
+(defconst xcb:xembed:opcode:WINDOW-ACTIVATE 1)
+(defconst xcb:xembed:opcode:WINDOW-DEACTIVATE 2)
+(defconst xcb:xembed:opcode:REQUEST-FOCUS 3)
+(defconst xcb:xembed:opcode:FOCUS-IN 4)
+(defconst xcb:xembed:opcode:FOCUS-OUT 5)
+(defconst xcb:xembed:opcode:FOCUS-NEXT 6)
+(defconst xcb:xembed:opcode:FOCUS-PREV 7)
+(defconst xcb:xembed:opcode:MODALITY-ON 10)
+(defconst xcb:xembed:opcode:MODALITY-OFF 11)
+(defconst xcb:xembed:opcode:REGISTER-ACCELERATOR 12)
+(defconst xcb:xembed:opcode:UNREGISTER-ACCELERATOR 13)
+(defconst xcb:xembed:opcode:ACTIVATE-ACCELERATOR 14)
+
+(cl-defmethod xcb:xembed:init ((obj xcb:connection) &optional force)
+ "Initialize the XEmbed module.
+
+This method must be called before using any other method in this module."
+ (when (or force (not xcb:Atom:_XEMBED_INFO))
+ (xcb:icccm:intern-atoms obj xcb:xembed:-atoms force)))
+
+;; Flags for _XEMBED_INFO.
+(defconst xcb:xembed:MAPPED 1)
+
+(defclass xcb:xembed:get-_XEMBED_INFO (xcb:icccm:-GetProperty-explicit)
+ ((property :initform 'xcb:Atom:_XEMBED_INFO)
+ (type :initform 'xcb:Atom:_XEMBED_INFO)))
+(defclass xcb:xembed:get-_XEMBED_INFO~reply
+ (xcb:icccm:-GetProperty-explicit~reply)
+ ((version :type xcb:-ignore)
+ (flags :type xcb:-ignore)))
+(defclass xcb:xembed:set-_XEMBED_INFO (xcb:icccm:-ChangeProperty-explicit)
+ ((property :initform 'xcb:Atom:_XEMBED_INFO)
+ (type :initform 'xcb:Atom:_XEMBED_INFO)
+ (format :initform 32)
+ (version :initarg :version :type xcb:-ignore)
+ (flags :initarg :flags :type xcb:-ignore)))
+
+(defclass xcb:xembed:SendEvent (xcb:SendEvent)
+ ((propagate :initform 0)
+ (event-mask :initform 'xcb:EventMask:NoEvent))
+ :documentation "Send XEmbed message.")
+
+(defclass xcb:xembed:-ClientMessage
+ (xcb:icccm:--ClientMessage xcb:ClientMessage)
+ ((format :initform 32)
+ (type :initform 'xcb:Atom:_XEMBED)
+ (time :initarg :time :type xcb:TIMESTAMP) ;new slot
+ (opcode :initarg :opcode :type xcb:CARD32) ;new slot
+ (detail :initarg :detail :initform 0 :type xcb:CARD32)) ;new slot
+ :documentation "An XEmbed client message.")
+
+(defclass xcb:xembed:EMBEDDED-NOTIFY (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:EMBEDDED-NOTIFY)
+ (embedder :initarg :embedder :type xcb:WINDOW)
+ (version :initarg :version :type xcb:CARD32)))
+
+(defclass xcb:xembed:WINDOW-ACTIVATE (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:WINDOW-ACTIVATE)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xembed:WINDOW-DEACTIVATE (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:WINDOW-DEACTIVATE)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xembed:REQUEST-FOCUS (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:REQUEST-FOCUS)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+;; Details for xcb:xembed:FOCUS-IN.
+(defconst xcb:xembed:FOCUS:CURRENT 0)
+(defconst xcb:xembed:FOCUS:FIRST 1)
+(defconst xcb:xembed:FOCUS:LAST 2)
+
+;; Directions for focusing.
+(defconst xcb:xembed:DIRECTION:DEFAULT 0)
+(defconst xcb:xembed:DIRECTION:UP-DOWN 1)
+(defconst xcb:xembed:DIRECTION:LEFT-RIGHT 2)
+
+(defclass xcb:xembed:FOCUS-IN (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:FOCUS-IN)
+ (direction :initarg :direction :initform 0 :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:xembed:FOCUS-OUT (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:FOCUS-OUT)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xembed:FOCUS-NEXT (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:FOCUS-NEXT)
+ (direction :initarg :direction :initform 0 :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:xembed:FOCUS-PREV (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:FOCUS-PREV)
+ (direction :initarg :direction :initform 0 :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+;; Modifiers field for xcb:xembed:REGISTER-ACCELERATOR.
+(defconst xcb:xembed:MODIFIER:SHIFT 1)
+(defconst xcb:xembed:MODIFIER:CONTROL 2)
+(defconst xcb:xembed:MODIFIER:ALT 4)
+(defconst xcb:xembed:MODIFIER:SUPER 8)
+(defconst xcb:xembed:MODIFIER:HYPER 16)
+
+(defclass xcb:xembed:REGISTER-ACCELERATOR (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:REGISTER-ACCELERATOR)
+ (keysym :initarg :keysym :type xcb:KEYSYM)
+ (modifier :initarg :modifier :type xcb:CARD32)))
+
+(defclass xcb:xembed:UNREGISTER-ACCELERATOR (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:UNREGISTER-ACCELERATOR)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+;; Flags for XEMBED-ACTIVATE-ACCELERATOR.
+(defconst xcb:xembed:ACCELERATOR:OVERLOADED 1)
+
+(defclass xcb:xembed:ACTIVATE-ACCELERATOR (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:ACTIVATE-ACCELERATOR)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:xembed:MODALITY-ON (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:MODALITY-ON)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xembed:MODALITY-OFF (xcb:xembed:-ClientMessage)
+ ((opcode :initform 'xcb:xembed:opcode:MODALITY-OFF)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+
+
+(provide 'xcb-xembed)
+
+;;; xcb-xembed.el ends here
diff --git a/elpa/xelb-0.20/xcb-xembed.elc b/elpa/xelb-0.20/xcb-xembed.elc
new file mode 100644
index 0000000..e7ad71a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xembed.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xevie.el b/elpa/xelb-0.20/xcb-xevie.el
new file mode 100644
index 0000000..33dff7e
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xevie.el
@@ -0,0 +1,105 @@
+;;; xcb-xevie.el --- X11 Xevie extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xevie.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xevie:-extension-xname "XEVIE")
+(defconst xcb:xevie:-extension-name "Xevie")
+(defconst xcb:xevie:-major-version 1)
+(defconst xcb:xevie:-minor-version 0)
+
+(defclass xcb:xevie:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD16)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD16)))
+(defclass xcb:xevie:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major-version :initarg :server-major-version :type xcb:CARD16)
+ (server-minor-version :initarg :server-minor-version :type xcb:CARD16)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:xevie:Start
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:xevie:Start~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)))
+
+(defclass xcb:xevie:End
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (cmap :initarg :cmap :type xcb:CARD32)))
+(defclass xcb:xevie:End~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)))
+
+(defconst xcb:xevie:Datatype:Unmodified 0)
+(defconst xcb:xevie:Datatype:Modified 1)
+
+(defclass xcb:xevie:Event
+ (xcb:-struct)
+ ((pad~0 :initform 32 :type xcb:-pad)))
+
+(defclass xcb:xevie:Send
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (event :initarg :event :type xcb:xevie:Event)
+ (data-type :initarg :data-type :type xcb:CARD32)
+ (pad~0 :initform 64 :type xcb:-pad)))
+(defclass xcb:xevie:Send~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)))
+
+(defclass xcb:xevie:SelectInput
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+(defclass xcb:xevie:SelectInput~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)))
+
+
+
+(provide 'xcb-xevie)
+
+;;; xcb-xevie.el ends here
diff --git a/elpa/xelb-0.20/xcb-xevie.elc b/elpa/xelb-0.20/xcb-xevie.elc
new file mode 100644
index 0000000..6ebfc43
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xevie.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xf86dri.el b/elpa/xelb-0.20/xcb-xf86dri.el
new file mode 100644
index 0000000..c1e40c6
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xf86dri.el
@@ -0,0 +1,213 @@
+;;; xcb-xf86dri.el --- X11 XF86Dri extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xf86dri.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xf86dri:-extension-xname "XFree86-DRI")
+(defconst xcb:xf86dri:-extension-name "XF86Dri")
+(defconst xcb:xf86dri:-major-version 4)
+(defconst xcb:xf86dri:-minor-version 1)
+
+(defclass xcb:xf86dri:DrmClipRect
+ (xcb:-struct)
+ ((x1 :initarg :x1 :type xcb:INT16)
+ (y1 :initarg :y1 :type xcb:INT16)
+ (x2 :initarg :x2 :type xcb:INT16)
+ (x3 :initarg :x3 :type xcb:INT16)))
+
+(defclass xcb:xf86dri:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:xf86dri:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (dri-major-version :initarg :dri-major-version :type xcb:CARD16)
+ (dri-minor-version :initarg :dri-minor-version :type xcb:CARD16)
+ (dri-minor-patch :initarg :dri-minor-patch :type xcb:CARD32)))
+
+(defclass xcb:xf86dri:QueryDirectRenderingCapable
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:xf86dri:QueryDirectRenderingCapable~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (is-capable :initarg :is-capable :type xcb:BOOL)))
+
+(defclass xcb:xf86dri:OpenConnection
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:xf86dri:OpenConnection~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (sarea-handle-low :initarg :sarea-handle-low :type xcb:CARD32)
+ (sarea-handle-high :initarg :sarea-handle-high :type xcb:CARD32)
+ (bus-id-len :initarg :bus-id-len :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (bus-id~ :initform
+ '(name bus-id type xcb:char size
+ (xcb:-fieldref 'bus-id-len))
+ :type xcb:-list)
+ (bus-id :initarg :bus-id :type xcb:-ignore)))
+
+(defclass xcb:xf86dri:CloseConnection
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+
+(defclass xcb:xf86dri:GetClientDriverName
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:xf86dri:GetClientDriverName~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (client-driver-major-version :initarg :client-driver-major-version :type xcb:CARD32)
+ (client-driver-minor-version :initarg :client-driver-minor-version :type xcb:CARD32)
+ (client-driver-patch-version :initarg :client-driver-patch-version :type xcb:CARD32)
+ (client-driver-name-len :initarg :client-driver-name-len :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (client-driver-name~ :initform
+ '(name client-driver-name type xcb:char size
+ (xcb:-fieldref 'client-driver-name-len))
+ :type xcb:-list)
+ (client-driver-name :initarg :client-driver-name :type xcb:-ignore)))
+
+(defclass xcb:xf86dri:CreateContext
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (visual :initarg :visual :type xcb:CARD32)
+ (context :initarg :context :type xcb:CARD32)))
+(defclass xcb:xf86dri:CreateContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (hw-context :initarg :hw-context :type xcb:CARD32)))
+
+(defclass xcb:xf86dri:DestroyContext
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (context :initarg :context :type xcb:CARD32)))
+
+(defclass xcb:xf86dri:CreateDrawable
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (drawable :initarg :drawable :type xcb:CARD32)))
+(defclass xcb:xf86dri:CreateDrawable~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (hw-drawable-handle :initarg :hw-drawable-handle :type xcb:CARD32)))
+
+(defclass xcb:xf86dri:DestroyDrawable
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (drawable :initarg :drawable :type xcb:CARD32)))
+
+(defclass xcb:xf86dri:GetDrawableInfo
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (drawable :initarg :drawable :type xcb:CARD32)))
+(defclass xcb:xf86dri:GetDrawableInfo~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (drawable-table-index :initarg :drawable-table-index :type xcb:CARD32)
+ (drawable-table-stamp :initarg :drawable-table-stamp :type xcb:CARD32)
+ (drawable-origin-X :initarg :drawable-origin-X :type xcb:INT16)
+ (drawable-origin-Y :initarg :drawable-origin-Y :type xcb:INT16)
+ (drawable-size-W :initarg :drawable-size-W :type xcb:INT16)
+ (drawable-size-H :initarg :drawable-size-H :type xcb:INT16)
+ (num-clip-rects :initarg :num-clip-rects :type xcb:CARD32)
+ (back-x :initarg :back-x :type xcb:INT16)
+ (back-y :initarg :back-y :type xcb:INT16)
+ (num-back-clip-rects :initarg :num-back-clip-rects :type xcb:CARD32)
+ (clip-rects~ :initform
+ '(name clip-rects type xcb:xf86dri:DrmClipRect size
+ (xcb:-fieldref 'num-clip-rects))
+ :type xcb:-list)
+ (clip-rects :initarg :clip-rects :type xcb:-ignore)
+ (back-clip-rects~ :initform
+ '(name back-clip-rects type xcb:xf86dri:DrmClipRect size
+ (xcb:-fieldref 'num-back-clip-rects))
+ :type xcb:-list)
+ (back-clip-rects :initarg :back-clip-rects :type xcb:-ignore)))
+
+(defclass xcb:xf86dri:GetDeviceInfo
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:xf86dri:GetDeviceInfo~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (framebuffer-handle-low :initarg :framebuffer-handle-low :type xcb:CARD32)
+ (framebuffer-handle-high :initarg :framebuffer-handle-high :type xcb:CARD32)
+ (framebuffer-origin-offset :initarg :framebuffer-origin-offset :type xcb:CARD32)
+ (framebuffer-size :initarg :framebuffer-size :type xcb:CARD32)
+ (framebuffer-stride :initarg :framebuffer-stride :type xcb:CARD32)
+ (device-private-size :initarg :device-private-size :type xcb:CARD32)
+ (device-private~ :initform
+ '(name device-private type xcb:CARD32 size
+ (xcb:-fieldref 'device-private-size))
+ :type xcb:-list)
+ (device-private :initarg :device-private :type xcb:-ignore)))
+
+(defclass xcb:xf86dri:AuthConnection
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (magic :initarg :magic :type xcb:CARD32)))
+(defclass xcb:xf86dri:AuthConnection~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (authenticated :initarg :authenticated :type xcb:CARD32)))
+
+
+
+(provide 'xcb-xf86dri)
+
+;;; xcb-xf86dri.el ends here
diff --git a/elpa/xelb-0.20/xcb-xf86dri.elc b/elpa/xelb-0.20/xcb-xf86dri.elc
new file mode 100644
index 0000000..096c081
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xf86dri.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xf86vidmode.el b/elpa/xelb-0.20/xcb-xf86vidmode.el
new file mode 100644
index 0000000..30faa8a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xf86vidmode.el
@@ -0,0 +1,550 @@
+;;; xcb-xf86vidmode.el --- X11 XF86VidMode extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xf86vidmode.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xf86vidmode:-extension-xname "XFree86-VidModeExtension")
+(defconst xcb:xf86vidmode:-extension-name "XF86VidMode")
+(defconst xcb:xf86vidmode:-major-version 2)
+(defconst xcb:xf86vidmode:-minor-version 2)
+
+(xcb:deftypealias 'xcb:xf86vidmode:SYNCRANGE 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:xf86vidmode:DOTCLOCK 'xcb:CARD32)
+
+(defconst xcb:xf86vidmode:ModeFlag:Positive_HSync 1)
+(defconst xcb:xf86vidmode:ModeFlag:Negative_HSync 2)
+(defconst xcb:xf86vidmode:ModeFlag:Positive_VSync 4)
+(defconst xcb:xf86vidmode:ModeFlag:Negative_VSync 8)
+(defconst xcb:xf86vidmode:ModeFlag:Interlace 16)
+(defconst xcb:xf86vidmode:ModeFlag:Composite_Sync 32)
+(defconst xcb:xf86vidmode:ModeFlag:Positive_CSync 64)
+(defconst xcb:xf86vidmode:ModeFlag:Negative_CSync 128)
+(defconst xcb:xf86vidmode:ModeFlag:HSkew 256)
+(defconst xcb:xf86vidmode:ModeFlag:Broadcast 512)
+(defconst xcb:xf86vidmode:ModeFlag:Pixmux 1024)
+(defconst xcb:xf86vidmode:ModeFlag:Double_Clock 2048)
+(defconst xcb:xf86vidmode:ModeFlag:Half_Clock 4096)
+
+(defconst xcb:xf86vidmode:ClockFlag:Programable 1)
+
+(defconst xcb:xf86vidmode:Permission:Read 1)
+(defconst xcb:xf86vidmode:Permission:Write 2)
+
+(defclass xcb:xf86vidmode:ModeInfo
+ (xcb:-struct)
+ ((dotclock :initarg :dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD32)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~0 :initform 4 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)))
+
+(defclass xcb:xf86vidmode:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:xf86vidmode:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+
+(defclass xcb:xf86vidmode:GetModeLine
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetModeLine~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (dotclock :initarg :dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~2 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)
+ (private~ :initform
+ '(name private type xcb:CARD8 size
+ (xcb:-fieldref 'privsize))
+ :type xcb:-list)
+ (private :initarg :private :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:ModModeLine
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)
+ (private~ :initform
+ '(name private type xcb:CARD8 size
+ (xcb:-fieldref 'privsize))
+ :type xcb:-list)
+ (private :initarg :private :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:SwitchMode
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (zoom :initarg :zoom :type xcb:CARD16)))
+
+(defclass xcb:xf86vidmode:GetMonitor
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetMonitor~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (vendor-length :initarg :vendor-length :type xcb:CARD8)
+ (model-length :initarg :model-length :type xcb:CARD8)
+ (num-hsync :initarg :num-hsync :type xcb:CARD8)
+ (num-vsync :initarg :num-vsync :type xcb:CARD8)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (hsync~ :initform
+ '(name hsync type xcb:xf86vidmode:SYNCRANGE size
+ (xcb:-fieldref 'num-hsync))
+ :type xcb:-list)
+ (hsync :initarg :hsync :type xcb:-ignore)
+ (vsync~ :initform
+ '(name vsync type xcb:xf86vidmode:SYNCRANGE size
+ (xcb:-fieldref 'num-vsync))
+ :type xcb:-list)
+ (vsync :initarg :vsync :type xcb:-ignore)
+ (vendor~ :initform
+ '(name vendor type xcb:char size
+ (xcb:-fieldref 'vendor-length))
+ :type xcb:-list)
+ (vendor :initarg :vendor :type xcb:-ignore)
+ (alignment-pad~ :initform
+ '(name alignment-pad type xcb:void size
+ (-
+ (logand
+ (+
+ (xcb:-fieldref 'vendor-length)
+ 3)
+ (lognot 3))
+ (xcb:-fieldref 'vendor-length)))
+ :type xcb:-list)
+ (alignment-pad :initarg :alignment-pad :type xcb:-ignore)
+ (model~ :initform
+ '(name model type xcb:char size
+ (xcb:-fieldref 'model-length))
+ :type xcb:-list)
+ (model :initarg :model :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:LockModeSwitch
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (lock :initarg :lock :type xcb:CARD16)))
+
+(defclass xcb:xf86vidmode:GetAllModeLines
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetAllModeLines~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (modecount :initarg :modecount :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (modeinfo~ :initform
+ '(name modeinfo type xcb:xf86vidmode:ModeInfo size
+ (xcb:-fieldref 'modecount))
+ :type xcb:-list)
+ (modeinfo :initarg :modeinfo :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:AddModeLine
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (dotclock :initarg :dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)
+ (after-dotclock :initarg :after-dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (after-hdisplay :initarg :after-hdisplay :type xcb:CARD16)
+ (after-hsyncstart :initarg :after-hsyncstart :type xcb:CARD16)
+ (after-hsyncend :initarg :after-hsyncend :type xcb:CARD16)
+ (after-htotal :initarg :after-htotal :type xcb:CARD16)
+ (after-hskew :initarg :after-hskew :type xcb:CARD16)
+ (after-vdisplay :initarg :after-vdisplay :type xcb:CARD16)
+ (after-vsyncstart :initarg :after-vsyncstart :type xcb:CARD16)
+ (after-vsyncend :initarg :after-vsyncend :type xcb:CARD16)
+ (after-vtotal :initarg :after-vtotal :type xcb:CARD16)
+ (pad~2 :initform 2 :type xcb:-pad)
+ (after-flags :initarg :after-flags :type xcb:CARD32)
+ (pad~3 :initform 12 :type xcb:-pad)
+ (private~ :initform
+ '(name private type xcb:CARD8 size
+ (xcb:-fieldref 'privsize))
+ :type xcb:-list)
+ (private :initarg :private :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:DeleteModeLine
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (dotclock :initarg :dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)
+ (private~ :initform
+ '(name private type xcb:CARD8 size
+ (xcb:-fieldref 'privsize))
+ :type xcb:-list)
+ (private :initarg :private :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:ValidateModeLine
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (dotclock :initarg :dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)
+ (private~ :initform
+ '(name private type xcb:CARD8 size
+ (xcb:-fieldref 'privsize))
+ :type xcb:-list)
+ (private :initarg :private :type xcb:-ignore)))
+(defclass xcb:xf86vidmode:ValidateModeLine~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:xf86vidmode:SwitchToMode
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD32)
+ (dotclock :initarg :dotclock :type xcb:xf86vidmode:DOTCLOCK)
+ (hdisplay :initarg :hdisplay :type xcb:CARD16)
+ (hsyncstart :initarg :hsyncstart :type xcb:CARD16)
+ (hsyncend :initarg :hsyncend :type xcb:CARD16)
+ (htotal :initarg :htotal :type xcb:CARD16)
+ (hskew :initarg :hskew :type xcb:CARD16)
+ (vdisplay :initarg :vdisplay :type xcb:CARD16)
+ (vsyncstart :initarg :vsyncstart :type xcb:CARD16)
+ (vsyncend :initarg :vsyncend :type xcb:CARD16)
+ (vtotal :initarg :vtotal :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (privsize :initarg :privsize :type xcb:CARD32)
+ (private~ :initform
+ '(name private type xcb:CARD8 size
+ (xcb:-fieldref 'privsize))
+ :type xcb:-list)
+ (private :initarg :private :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:GetViewPort
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetViewPort~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (x :initarg :x :type xcb:CARD32)
+ (y :initarg :y :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:xf86vidmode:SetViewPort
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (x :initarg :x :type xcb:CARD32)
+ (y :initarg :y :type xcb:CARD32)))
+
+(defclass xcb:xf86vidmode:GetDotClocks
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetDotClocks~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (flags :initarg :flags :type xcb:CARD32)
+ (clocks :initarg :clocks :type xcb:CARD32)
+ (maxclocks :initarg :maxclocks :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (clock~ :initform
+ '(name clock type xcb:CARD32 size
+ (*
+ (- 1
+ (logand
+ (xcb:-fieldref 'flags)
+ 1))
+ (xcb:-fieldref 'clocks)))
+ :type xcb:-list)
+ (clock :initarg :clock :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:SetClientVersion
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (major :initarg :major :type xcb:CARD16)
+ (minor :initarg :minor :type xcb:CARD16)))
+
+(defclass xcb:xf86vidmode:SetGamma
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (red :initarg :red :type xcb:CARD32)
+ (green :initarg :green :type xcb:CARD32)
+ (blue :initarg :blue :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)))
+
+(defclass xcb:xf86vidmode:GetGamma
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 26 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetGamma~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (red :initarg :red :type xcb:CARD32)
+ (green :initarg :green :type xcb:CARD32)
+ (blue :initarg :blue :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)))
+
+(defclass xcb:xf86vidmode:GetGammaRamp
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (size :initarg :size :type xcb:CARD16)))
+(defclass xcb:xf86vidmode:GetGammaRamp~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (size :initarg :size :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (red~ :initform
+ '(name red type xcb:CARD16 size
+ (logand
+ (+
+ (xcb:-fieldref 'size)
+ 1)
+ (lognot 1)))
+ :type xcb:-list)
+ (red :initarg :red :type xcb:-ignore)
+ (green~ :initform
+ '(name green type xcb:CARD16 size
+ (logand
+ (+
+ (xcb:-fieldref 'size)
+ 1)
+ (lognot 1)))
+ :type xcb:-list)
+ (green :initarg :green :type xcb:-ignore)
+ (blue~ :initform
+ '(name blue type xcb:CARD16 size
+ (logand
+ (+
+ (xcb:-fieldref 'size)
+ 1)
+ (lognot 1)))
+ :type xcb:-list)
+ (blue :initarg :blue :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:SetGammaRamp
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (size :initarg :size :type xcb:CARD16)
+ (red~ :initform
+ '(name red type xcb:CARD16 size
+ (logand
+ (+
+ (xcb:-fieldref 'size)
+ 1)
+ (lognot 1)))
+ :type xcb:-list)
+ (red :initarg :red :type xcb:-ignore)
+ (green~ :initform
+ '(name green type xcb:CARD16 size
+ (logand
+ (+
+ (xcb:-fieldref 'size)
+ 1)
+ (lognot 1)))
+ :type xcb:-list)
+ (green :initarg :green :type xcb:-ignore)
+ (blue~ :initform
+ '(name blue type xcb:CARD16 size
+ (logand
+ (+
+ (xcb:-fieldref 'size)
+ 1)
+ (lognot 1)))
+ :type xcb:-list)
+ (blue :initarg :blue :type xcb:-ignore)))
+
+(defclass xcb:xf86vidmode:GetGammaRampSize
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetGammaRampSize~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (size :initarg :size :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)))
+
+(defclass xcb:xf86vidmode:GetPermissions
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (screen :initarg :screen :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xf86vidmode:GetPermissions~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (permissions :initarg :permissions :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:xf86vidmode:BadClock
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:xf86vidmode:BadHTimings
+ (xcb:-error)
+ ((~code :initform 1)))
+
+(defclass xcb:xf86vidmode:BadVTimings
+ (xcb:-error)
+ ((~code :initform 2)))
+
+(defclass xcb:xf86vidmode:ModeUnsuitable
+ (xcb:-error)
+ ((~code :initform 3)))
+
+(defclass xcb:xf86vidmode:ExtensionDisabled
+ (xcb:-error)
+ ((~code :initform 4)))
+
+(defclass xcb:xf86vidmode:ClientNotLocal
+ (xcb:-error)
+ ((~code :initform 5)))
+
+(defclass xcb:xf86vidmode:ZoomLocked
+ (xcb:-error)
+ ((~code :initform 6)))
+
+(defconst xcb:xf86vidmode:error-number-class-alist
+ '((0 . xcb:xf86vidmode:BadClock)
+ (1 . xcb:xf86vidmode:BadHTimings)
+ (2 . xcb:xf86vidmode:BadVTimings)
+ (3 . xcb:xf86vidmode:ModeUnsuitable)
+ (4 . xcb:xf86vidmode:ExtensionDisabled)
+ (5 . xcb:xf86vidmode:ClientNotLocal)
+ (6 . xcb:xf86vidmode:ZoomLocked))
+ "(error-number . error-class) alist.")
+
+
+
+(provide 'xcb-xf86vidmode)
+
+;;; xcb-xf86vidmode.el ends here
diff --git a/elpa/xelb-0.20/xcb-xf86vidmode.elc b/elpa/xelb-0.20/xcb-xf86vidmode.elc
new file mode 100644
index 0000000..0bf403a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xf86vidmode.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xfixes.el b/elpa/xelb-0.20/xcb-xfixes.el
new file mode 100644
index 0000000..da9c0c4
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xfixes.el
@@ -0,0 +1,454 @@
+;;; xcb-xfixes.el --- X11 XFixes extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xfixes.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xfixes:-extension-xname "XFIXES")
+(defconst xcb:xfixes:-extension-name "XFixes")
+(defconst xcb:xfixes:-major-version 6)
+(defconst xcb:xfixes:-minor-version 0)
+
+(require 'xcb-xproto)
+
+(require 'xcb-render)
+
+(require 'xcb-shape)
+
+(defclass xcb:xfixes:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major-version :initarg :client-major-version :type xcb:CARD32)
+ (client-minor-version :initarg :client-minor-version :type xcb:CARD32)))
+(defclass xcb:xfixes:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)))
+
+(defconst xcb:xfixes:SaveSetMode:Insert 0)
+(defconst xcb:xfixes:SaveSetMode:Delete 1)
+
+(defconst xcb:xfixes:SaveSetTarget:Nearest 0)
+(defconst xcb:xfixes:SaveSetTarget:Root 1)
+
+(defconst xcb:xfixes:SaveSetMapping:Map 0)
+(defconst xcb:xfixes:SaveSetMapping:Unmap 1)
+
+(defclass xcb:xfixes:ChangeSaveSet
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:BYTE)
+ (target :initarg :target :type xcb:BYTE)
+ (map :initarg :map :type xcb:BYTE)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defconst xcb:xfixes:SelectionEvent:SetSelectionOwner 0)
+(defconst xcb:xfixes:SelectionEvent:SelectionWindowDestroy 1)
+(defconst xcb:xfixes:SelectionEvent:SelectionClientClose 2)
+
+(defconst xcb:xfixes:SelectionEventMask:SetSelectionOwner 1)
+(defconst xcb:xfixes:SelectionEventMask:SelectionWindowDestroy 2)
+(defconst xcb:xfixes:SelectionEventMask:SelectionClientClose 4)
+
+(defclass xcb:xfixes:SelectionNotify
+ (xcb:-event)
+ ((~code :initform 0)
+ (subtype :initarg :subtype :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (owner :initarg :owner :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (selection-timestamp :initarg :selection-timestamp :type xcb:TIMESTAMP)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xfixes:SelectSelectionInput
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+
+(defconst xcb:xfixes:CursorNotify:DisplayCursor 0)
+
+(defconst xcb:xfixes:CursorNotifyMask:DisplayCursor 1)
+
+(defclass xcb:xfixes:CursorNotify
+ (xcb:-event)
+ ((~code :initform 1)
+ (subtype :initarg :subtype :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (cursor-serial :initarg :cursor-serial :type xcb:CARD32)
+ (timestamp :initarg :timestamp :type xcb:TIMESTAMP)
+ (name :initarg :name :type xcb:ATOM)
+ (pad~0 :initform 12 :type xcb:-pad)))
+
+(defclass xcb:xfixes:SelectCursorInput
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+
+(defclass xcb:xfixes:GetCursorImage
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)))
+(defclass xcb:xfixes:GetCursorImage~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (xhot :initarg :xhot :type xcb:CARD16)
+ (yhot :initarg :yhot :type xcb:CARD16)
+ (cursor-serial :initarg :cursor-serial :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (cursor-image~ :initform
+ '(name cursor-image type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'width)
+ (xcb:-fieldref 'height)))
+ :type xcb:-list)
+ (cursor-image :initarg :cursor-image :type xcb:-ignore)))
+
+(xcb:deftypealias 'xcb:xfixes:REGION 'xcb:-u4)
+
+(defclass xcb:xfixes:BadRegion
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defconst xcb:xfixes:Region:None 0)
+
+(defclass xcb:xfixes:CreateRegion
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:xfixes:CreateRegionFromBitmap
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (bitmap :initarg :bitmap :type xcb:PIXMAP)))
+
+(defclass xcb:xfixes:CreateRegionFromWindow
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (window :initarg :window :type xcb:WINDOW)
+ (kind :initarg :kind :type xcb:shape:KIND)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xfixes:CreateRegionFromGC
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (gc :initarg :gc :type xcb:GCONTEXT)))
+
+(defclass xcb:xfixes:CreateRegionFromPicture
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (picture :initarg :picture :type xcb:render:PICTURE)))
+
+(defclass xcb:xfixes:DestroyRegion
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:SetRegion
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:xfixes:CopyRegion
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (source :initarg :source :type xcb:xfixes:REGION)
+ (destination :initarg :destination :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:UnionRegion
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (source1 :initarg :source1 :type xcb:xfixes:REGION)
+ (source2 :initarg :source2 :type xcb:xfixes:REGION)
+ (destination :initarg :destination :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:IntersectRegion
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (source1 :initarg :source1 :type xcb:xfixes:REGION)
+ (source2 :initarg :source2 :type xcb:xfixes:REGION)
+ (destination :initarg :destination :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:SubtractRegion
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (source1 :initarg :source1 :type xcb:xfixes:REGION)
+ (source2 :initarg :source2 :type xcb:xfixes:REGION)
+ (destination :initarg :destination :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:InvertRegion
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (source :initarg :source :type xcb:xfixes:REGION)
+ (bounds :initarg :bounds :type xcb:RECTANGLE)
+ (destination :initarg :destination :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:TranslateRegion
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (dx :initarg :dx :type xcb:INT16)
+ (dy :initarg :dy :type xcb:INT16)))
+
+(defclass xcb:xfixes:RegionExtents
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (source :initarg :source :type xcb:xfixes:REGION)
+ (destination :initarg :destination :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:FetchRegion
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (region :initarg :region :type xcb:xfixes:REGION)))
+(defclass xcb:xfixes:FetchRegion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (extents :initarg :extents :type xcb:RECTANGLE)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size
+ (/
+ (xcb:-fieldref 'length)
+ 2))
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:xfixes:SetGCClipRegion
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (x-origin :initarg :x-origin :type xcb:INT16)
+ (y-origin :initarg :y-origin :type xcb:INT16)))
+
+(defclass xcb:xfixes:SetWindowShapeRegion
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (dest :initarg :dest :type xcb:WINDOW)
+ (dest-kind :initarg :dest-kind :type xcb:shape:KIND)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (x-offset :initarg :x-offset :type xcb:INT16)
+ (y-offset :initarg :y-offset :type xcb:INT16)
+ (region :initarg :region :type xcb:xfixes:REGION)))
+
+(defclass xcb:xfixes:SetPictureClipRegion
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (picture :initarg :picture :type xcb:render:PICTURE)
+ (region :initarg :region :type xcb:xfixes:REGION)
+ (x-origin :initarg :x-origin :type xcb:INT16)
+ (y-origin :initarg :y-origin :type xcb:INT16)))
+
+(defclass xcb:xfixes:SetCursorName
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (nbytes :initarg :nbytes :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'nbytes))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:xfixes:GetCursorName
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (cursor :initarg :cursor :type xcb:CURSOR)))
+(defclass xcb:xfixes:GetCursorName~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (atom :initarg :atom :type xcb:ATOM)
+ (nbytes :initarg :nbytes :type xcb:CARD16)
+ (pad~1 :initform 18 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'nbytes))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:xfixes:GetCursorImageAndName
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)))
+(defclass xcb:xfixes:GetCursorImageAndName~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (xhot :initarg :xhot :type xcb:CARD16)
+ (yhot :initarg :yhot :type xcb:CARD16)
+ (cursor-serial :initarg :cursor-serial :type xcb:CARD32)
+ (cursor-atom :initarg :cursor-atom :type xcb:ATOM)
+ (nbytes :initarg :nbytes :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (cursor-image~ :initform
+ '(name cursor-image type xcb:CARD32 size
+ (*
+ (xcb:-fieldref 'width)
+ (xcb:-fieldref 'height)))
+ :type xcb:-list)
+ (cursor-image :initarg :cursor-image :type xcb:-ignore)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'nbytes))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:xfixes:ChangeCursor
+ (xcb:-request)
+ ((~opcode :initform 26 :type xcb:-u1)
+ (source :initarg :source :type xcb:CURSOR)
+ (destination :initarg :destination :type xcb:CURSOR)))
+
+(defclass xcb:xfixes:ChangeCursorByName
+ (xcb:-request)
+ ((~opcode :initform 27 :type xcb:-u1)
+ (src :initarg :src :type xcb:CURSOR)
+ (nbytes :initarg :nbytes :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'nbytes))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:xfixes:ExpandRegion
+ (xcb:-request)
+ ((~opcode :initform 28 :type xcb:-u1)
+ (source :initarg :source :type xcb:xfixes:REGION)
+ (destination :initarg :destination :type xcb:xfixes:REGION)
+ (left :initarg :left :type xcb:CARD16)
+ (right :initarg :right :type xcb:CARD16)
+ (top :initarg :top :type xcb:CARD16)
+ (bottom :initarg :bottom :type xcb:CARD16)))
+
+(defclass xcb:xfixes:HideCursor
+ (xcb:-request)
+ ((~opcode :initform 29 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:xfixes:ShowCursor
+ (xcb:-request)
+ ((~opcode :initform 30 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(xcb:deftypealias 'xcb:xfixes:BARRIER 'xcb:-u4)
+
+(defconst xcb:xfixes:BarrierDirections:PositiveX 1)
+(defconst xcb:xfixes:BarrierDirections:PositiveY 2)
+(defconst xcb:xfixes:BarrierDirections:NegativeX 4)
+(defconst xcb:xfixes:BarrierDirections:NegativeY 8)
+
+(defclass xcb:xfixes:CreatePointerBarrier
+ (xcb:-request)
+ ((~opcode :initform 31 :type xcb:-u1)
+ (barrier :initarg :barrier :type xcb:xfixes:BARRIER)
+ (window :initarg :window :type xcb:WINDOW)
+ (x1 :initarg :x1 :type xcb:CARD16)
+ (y1 :initarg :y1 :type xcb:CARD16)
+ (x2 :initarg :x2 :type xcb:CARD16)
+ (y2 :initarg :y2 :type xcb:CARD16)
+ (directions :initarg :directions :type xcb:CARD32)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num-devices :initarg :num-devices :type xcb:CARD16)
+ (devices~ :initform
+ '(name devices type xcb:CARD16 size
+ (xcb:-fieldref 'num-devices))
+ :type xcb:-list)
+ (devices :initarg :devices :type xcb:-ignore)))
+
+(defclass xcb:xfixes:DeletePointerBarrier
+ (xcb:-request)
+ ((~opcode :initform 32 :type xcb:-u1)
+ (barrier :initarg :barrier :type xcb:xfixes:BARRIER)))
+
+(defconst xcb:xfixes:ClientDisconnectFlags:Default 0)
+(defconst xcb:xfixes:ClientDisconnectFlags:Terminate 1)
+
+(defclass xcb:xfixes:SetClientDisconnectMode
+ (xcb:-request)
+ ((~opcode :initform 33 :type xcb:-u1)
+ (disconnect-mode :initarg :disconnect-mode :type xcb:CARD32)))
+
+(defclass xcb:xfixes:GetClientDisconnectMode
+ (xcb:-request)
+ ((~opcode :initform 34 :type xcb:-u1)))
+(defclass xcb:xfixes:GetClientDisconnectMode~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (disconnect-mode :initarg :disconnect-mode :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defconst xcb:xfixes:error-number-class-alist
+ '((0 . xcb:xfixes:BadRegion))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:xfixes:event-number-class-alist
+ '((0 . xcb:xfixes:SelectionNotify)
+ (1 . xcb:xfixes:CursorNotify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-xfixes)
+
+;;; xcb-xfixes.el ends here
diff --git a/elpa/xelb-0.20/xcb-xfixes.elc b/elpa/xelb-0.20/xcb-xfixes.elc
new file mode 100644
index 0000000..93b03b8
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xfixes.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xim.el b/elpa/xelb-0.20/xcb-xim.el
new file mode 100644
index 0000000..be71f5b
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xim.el
@@ -0,0 +1,1022 @@
+;;; xcb-xim.el --- XIM Protocol -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library implements the X Input Method Protocol.
+
+;; Please note that the byte order of an XIM packet can be different from that
+;; of X packets. Moreover, if you are writing an XIM server, the byte order is
+;; actually specified by the client. Therefore we provide a different global
+;; variable `xim:lsb' to indicate the byte order of classes in this library.
+;; You should let-bind it whenever creating new objects.
+
+;; Todo:
+;; + Add extension support.
+
+;; References:
+;; + XIM (http://www.x.org/releases/X11R7.7/doc/libX11/XIM/xim.txt)
+
+;;; Code:
+
+(require 'xcb-types)
+(require 'xcb-xlib)
+
+;;;; Protocol number
+
+(defconst xim:opcode:connect 1)
+(defconst xim:opcode:connect-reply 2)
+(defconst xim:opcode:disconnect 3)
+(defconst xim:opcode:disconnect-reply 4)
+
+(defconst xim:opcode:auth-required 10)
+(defconst xim:opcode:auth-reply 11)
+(defconst xim:opcode:auth-next 12)
+(defconst xim:opcode:auth-setup 13)
+(defconst xim:opcode:auth-ng 14)
+
+(defconst xim:opcode:error 20)
+
+(defconst xim:opcode:open 30)
+(defconst xim:opcode:open-reply 31)
+(defconst xim:opcode:close 32)
+(defconst xim:opcode:close-reply 33)
+(defconst xim:opcode:register-triggerkeys 34)
+(defconst xim:opcode:trigger-notify 35)
+(defconst xim:opcode:trigger-notify-reply 36)
+(defconst xim:opcode:set-event-mask 37)
+(defconst xim:opcode:encoding-negotiation 38)
+(defconst xim:opcode:encoding-negotiation-reply 39)
+(defconst xim:opcode:query-extension 40)
+(defconst xim:opcode:query-extension-reply 41)
+(defconst xim:opcode:set-im-values 42)
+(defconst xim:opcode:set-im-values-reply 43)
+(defconst xim:opcode:get-im-values 44)
+(defconst xim:opcode:get-im-values-reply 45)
+
+(defconst xim:opcode:create-ic 50)
+(defconst xim:opcode:create-ic-reply 51)
+(defconst xim:opcode:destroy-ic 52)
+(defconst xim:opcode:destroy-ic-reply 53)
+(defconst xim:opcode:set-ic-values 54)
+(defconst xim:opcode:set-ic-values-reply 55)
+(defconst xim:opcode:get-ic-values 56)
+(defconst xim:opcode:get-ic-values-reply 57)
+(defconst xim:opcode:set-ic-focus 58)
+(defconst xim:opcode:unset-ic-focus 59)
+(defconst xim:opcode:forward-event 60)
+(defconst xim:opcode:sync 61)
+(defconst xim:opcode:sync-reply 62)
+(defconst xim:opcode:commit 63)
+(defconst xim:opcode:reset-ic 64)
+(defconst xim:opcode:reset-ic-reply 65)
+
+(defconst xim:opcode:geometry 70)
+(defconst xim:opcode:str-conversion 71)
+(defconst xim:opcode:str-conversion-reply 72)
+(defconst xim:opcode:preedit-start 73)
+(defconst xim:opcode:preedit-start-reply 74)
+(defconst xim:opcode:preedit-draw 75)
+(defconst xim:opcode:preedit-caret 76)
+(defconst xim:opcode:preedit-caret-reply 77)
+(defconst xim:opcode:preedit-done 78)
+(defconst xim:opcode:status-start 79)
+(defconst xim:opcode:status-draw 80)
+(defconst xim:opcode:status-done 81)
+(defconst xim:opcode:preeditstate 82)
+
+;;;; Basic requests packet format
+
+(eval-and-compile
+ (defvar xim:lsb xcb:lsb "Non-nil for LSB first, nil otherwise.
+
+Consider let-bind it rather than change its global value."))
+
+(defclass xim:-struct (xcb:-struct)
+ ((~lsb :initform (symbol-value 'xim:lsb)))
+ :documentation "Struct type for XIM.")
+
+(defclass xim:-request (xim:-struct)
+ ((~major-opcode :type xcb:CARD8)
+ (~minor-opcode :initform 0 :type xcb:CARD8)
+ (~length :initform 0 :type xcb:CARD16))
+ :documentation "XIM request type.")
+
+(cl-defmethod xcb:marshal ((obj xim:-request))
+ "Return the byte-array representation of XIM request OBJ."
+ (let ((result (cl-call-next-method obj)))
+ (vconcat (substring result 0 2)
+ (funcall (if (slot-value obj '~lsb)
+ #'xcb:-pack-u2-lsb
+ #'xcb:-pack-u2)
+ (1- (/ (length result) 4)))
+ (substring result 4))))
+
+;;;; Data types
+
+(xcb:deftypealias 'xim:BITMASK16 'xcb:CARD16)
+
+(xcb:deftypealias 'xim:BITMASK32 'xcb:CARD32)
+
+(defsubst xim:PADDING (N)
+ "Pad N to 4 bytes."
+ (% (- 4 (% N 4)) 4))
+
+(xcb:deftypealias 'xim:LPCE 'xcb:char)
+
+(defclass xim:STRING (xim:-struct)
+ ((length :initarg :length :type xcb:-u2)
+ (string :initarg :string :type xcb:-ignore)
+ (string~ :initform '(name string type xim:LPCE size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+(defclass xim:STR (xim:-struct)
+ ((length :initarg :length :type xcb:-u1)
+ (name :initarg :name :type xcb:-ignore)
+ (name~ :initform '(name name type xcb:char size (xcb:-fieldref 'length))
+ :type xcb:-list)))
+
+(defclass xim:XIMATTR (xim:-struct)
+ ((id :initarg :id :type xcb:CARD16)
+ (type :initarg :type :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (attribute :initarg :attribute :type xcb:-ignore)
+ (attribute~ :initform '(name attribute type xcb:char
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+(defclass xim:XICATTR (xim:XIMATTR)
+ nil)
+
+(defconst xim:ATTRIBUTE-VALUE-TYPE:separator-of-nestedlist 0)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:byte-data 1)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:word-data 2)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:long-data 3)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:char-data 4)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:window 5)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:xim-styles 10)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:x-rectangle 11)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:x-point 12)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:x-font-set 13)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:xim-hot-key-triggers 15)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:xim-string-conversion 17)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:xim-preedit-state 18)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:xim-reset-state 19)
+(defconst xim:ATTRIBUTE-VALUE-TYPE:xim-nested-list #x7FFF)
+
+(defclass xim:XIMStyles (xim:-struct)
+ ((number :initarg :number :type xcb:-u2)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (styles :initarg :styles :type xcb:-ignore)
+ (styles~ :initform '(name styles type xcb:CARD32
+ size (/ (xcb:-fieldref 'number) 4))
+ :type xcb:-list)))
+
+;; Auto set the number slot
+(cl-defmethod xcb:marshal ((obj xim:XIMStyles))
+ (setf (slot-value obj 'number) (* 4 (length (slot-value obj 'styles))))
+ (cl-call-next-method obj))
+
+(defclass xim:XFontSet (xim:-struct)
+ ((length :initarg :length :type xcb:-u2)
+ (base-font-name :initarg :base-font-name :type xcb:-ignore)
+ (base-font-name~ :initform '(name base-font-name type xim:LPCE
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+(defclass xim:XIMHotKeyTriggers (xim:-struct)
+ ((number :type xcb:-u4)
+ (triggers :type xcb:-ignore)
+ (triggers~ :initform '(name triggers type xim:XIMTRIGGERKEY
+ size (xcb:-fieldref 'number))
+ :type xcb:-list)
+ (states :type xcb:-ignore)
+ (states~ :initform '(name states type xim:XIMHOTKEYSTATE
+ size (xcb:-fieldref 'number))
+ :type xcb:-list)))
+
+(defclass xim:XIMTRIGGERKEY (xim:-struct)
+ ((keysym :initarg :keysym :type xcb:CARD32)
+ (modifier :initarg :modifier :type xcb:CARD32)
+ (modifier-mask :initarg :modifier-mask :type xcb:CARD32)))
+
+(defclass xim:ENCODINGINFO (xim:-struct)
+ ((length :initarg :length :type xcb:-u2)
+ (encoding-info :initarg :encoding-info :type xcb:-ignore)
+ (encoding-info~ :initform '(name encoding-info type xcb:char
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+(defclass xim:EXT (xim:-struct)
+ ((major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD8)
+ (length :initarg :length :type xcb:-u2)
+ (name :initarg :name :type xcb:-ignore)
+ (name~ :initform '(name name type xcb:char size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(defclass xim:XIMATTRIBUTE (xim:-struct)
+ ((id :initarg :id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (value :initarg :value :type xcb:-ignore)
+ (value~ :initform '(name value type xcb:void size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(cl-defmethod xcb:marshal ((obj xim:XIMATTRIBUTE))
+ (let ((value (slot-value obj 'value)))
+ (when (eieio-object-p value)
+ (setq value (xcb:marshal value))
+ (setf (slot-value obj 'length) (length value)
+ (slot-value obj 'value) value))
+ (cl-call-next-method obj)))
+
+(defclass xim:XICATTRIBUTE (xim:XIMATTRIBUTE)
+ nil)
+
+(defclass xim:XIMSTRCONVTEXT (xim:-struct)
+ ((feedback :initarg :feedback :type xcb:CARD16)
+ (string-length :initarg :string-length :type xcb:-u2)
+ (string :initarg :string :type xcb:-ignore)
+ (string~ :initform '(name string type xcb:char
+ size (xcb:-fieldref 'string-length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (xcb:-fieldref 'string-length))
+ :type xcb:-pad)
+ (feedbacks-length :initarg :feedbacks-length :type xcb:-u2)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (feedbacks :initarg :feedbacks :type xcb:-ignore)
+ (feedbacks~ :initform '(name feedbacks type xcb:void
+ size (xcb:-fieldref 'feedbacks-length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:XIMSTRCONVTEXT))
+ (let ((feedbacks (mapconcat 'xcb:marshal (slot-value obj 'feedbacks) [])))
+ (setf (slot-value obj 'feedbacks-length) (length feedbacks)
+ (slot-value obj 'feedbacks) feedbacks)
+ (cl-call-next-method obj)))
+
+(cl-defmethod xcb:unmarshal ((obj xim:XIMSTRCONVTEXT) byte-array)
+ (let ((retval (cl-call-next-method obj byte-array))
+ (data (slot-value obj 'feedbacks))
+ feedback feedbacks)
+ (while (< 0 (length data))
+ (setq feedback (make-instance 'xim:XIMSTRCONVFEEDBACK)
+ data (substring data (xcb:unmarshal feedback data))
+ feedbacks (nconc feedbacks (list feedback))))
+ (setf (slot-value obj 'feedbacks) feedbacks)
+ retval))
+
+(defconst xim:string-conversion:left-edge #x0000001)
+(defconst xim:string-conversion:right-edge #x0000002)
+(defconst xim:string-conversion:top-edge #x0000004)
+(defconst xim:string-conversion:bottom-edge #x0000008)
+(defconst xim:string-conversion:convealed #x0000010)
+(defconst xim:string-conversion:wrapped #x0000020)
+
+(xcb:deftypealias 'xim:XIMFEEDBACK 'xcb:CARD32)
+
+;; FIXME: different from Xlib:XIM*
+(defconst xim:reverse #x000001)
+(defconst xim:underline #x000002)
+(defconst xim:highlight #x000004)
+(defconst xim:primary #x000008)
+(defconst xim:secondary #x000010)
+(defconst xim:tertiary #x000020)
+(defconst xim:visible-to-forward #x000040)
+(defconst xim:visible-to-backward #x000080)
+(defconst xim:visible-center #x000100)
+
+(xcb:deftypealias 'xim:XIMHOTKEYSTATE 'xcb:CARD32)
+
+(defconst xim:hot-key-state:on #x0000001)
+(defconst xim:hot-key-state:off #x0000002)
+
+(xcb:deftypealias 'xim:XIMPREEDITSTATE 'xcb:CARD32)
+
+(defconst xim:preedit:enable #x0000001)
+(defconst xim:preedit:disable #x0000002)
+
+(xcb:deftypealias 'xim:XIMRESETSTATE 'xcb:CARD32)
+
+(defconst xim:initial-state #x0000001)
+(defconst xim:preserve-state #x0000002)
+
+;;;; Error notification
+
+(defclass xim:error (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:error)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (flag :initarg :flag :type xim:BITMASK16)
+ (error-code :initarg :error-code :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (type :initarg :type :type xcb:CARD16)
+ (detail :initarg :detail :type xcb:-ignore)
+ (detail~ :initform '(name detail type xcb:char
+ size (xcb:-fieldref 'length)) :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(defconst xim:error-flag:invalid-both 0)
+(defconst xim:error-flag:invalid-im-id 1)
+(defconst xim:error-flag:invalid-ic-id 2)
+
+(defconst xim:error-code:bad-alloc 1)
+(defconst xim:error-code:bad-style 2)
+(defconst xim:error-code:bad-client-window 3)
+(defconst xim:error-code:bad-focus-window 4)
+(defconst xim:error-code:bad-area 5)
+(defconst xim:error-code:bad-spot-location 6)
+(defconst xim:error-code:bad-colormap 7)
+(defconst xim:error-code:bad-atom 8)
+(defconst xim:error-code:bad-pixel 9)
+(defconst xim:error-code:bad-pixmap 10)
+(defconst xim:error-code:bad-name 11)
+(defconst xim:error-code:bad-cursor 12)
+(defconst xim:error-code:bad-protocol 13)
+(defconst xim:error-code:bad-foreground 14)
+(defconst xim:error-code:bad-background 15)
+(defconst xim:error-code:locale-not-supported 16)
+(defconst xim:error-code:bad-something 999)
+
+;;;; Connection establishment
+
+(defclass xim:connect (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:connect)
+ (byte-order :initarg :byte-order :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)
+ (number :initarg :number :type xcb:CARD16)
+ (auth-names :initarg :auth-names :type xcb:-ignore)
+ (auth-names~ :initform '(name auth-names type xim:STRING
+ size (xcb:-fieldref 'number))
+ :type xcb:-list)))
+
+(defconst xim:connect-byte-order:msb-first #x42)
+(defconst xim:connect-byte-order:lsb-first #x6c)
+
+(defclass xim:auth-required (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:auth-required)
+ (index :initarg :index :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (length :initarg :length :type xcb:-u2)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (data :initarg :data :type xcb:-ignore)
+ (data~ :initform '(name data type xcb:void size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~1 :initform '(xim:PADDING (slot-value length)) :type xcb:-pad)))
+
+(defclass xim:auth-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:auth-reply)
+ (length :initarg :length :type xcb:-u2)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (data :initarg :data :type xcb:-ignore)
+ (data~ :initform '(name data type xcb:void size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~1 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(defclass xim:auth-next (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:auth-next)
+ (length :initarg :length :type xcb:-u2)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (data :initarg :data :type xcb:-ignore)
+ (data~ :initform '(name data type xcb:void size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~1 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(defclass xim:auth-setup (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:auth-setup)
+ (number :initarg :number :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (names :initarg :names :type xcb:-ignore)
+ (names~ :initform '(name names type xim:STRING size (xcb:-fieldref 'number))
+ :type xcb:-list)))
+
+(defclass xim:auth-ng (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:auth-ng)))
+
+(defclass xim:connect-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:connect-reply)
+ ;; Default to version 1.0
+ (major-version :initarg :major-version :initform 1 :type xcb:CARD16)
+ (minor-version :initarg :minor-version :initform 0 :type xcb:CARD16)))
+
+(defclass xim:disconnect (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:disconnect)))
+
+(defclass xim:disconnect-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:disconnect-reply)))
+
+(defclass xim:open (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:open)
+ (locale-name :initarg :locale-name :type xim:STR)
+ (pad~0 :initform '(xim:PADDING (1+ (slot-value (xcb:-fieldref 'locale-name)
+ 'length)))
+ :type xcb:-pad)))
+
+(defclass xim:open-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:open-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (im-attrs-length :initarg :im-attrs-length :type xcb:-u2)
+ (im-attrs :initarg :im-attrs :type xcb:-ignore)
+ (im-attrs~ :initform '(name im-attrs type xcb:void
+ size (xcb:-fieldref 'im-attrs-length))
+ :type xcb:-list)
+ (ic-attrs-length :initarg :ic-attrs-length :type xcb:-u2)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (ic-attrs :initarg :ic-attrs :type xcb:-ignore)
+ (ic-attrs~ :initform '(name ic-attrs type xcb:void
+ size (xcb:-fieldref 'ic-attrs-length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:open-reply))
+ (let ((im-attrs (mapconcat #'xcb:marshal (slot-value obj 'im-attrs) []))
+ (ic-attrs (mapconcat #'xcb:marshal (slot-value obj 'ic-attrs) [])))
+ (setf (slot-value obj 'im-attrs-length) (length im-attrs)
+ (slot-value obj 'im-attrs) im-attrs
+ (slot-value obj 'ic-attrs-length) (length ic-attrs)
+ (slot-value obj 'ic-attrs) ic-attrs)
+ (cl-call-next-method obj)))
+
+(cl-defmethod xcb:unmarshal ((obj xim:open-reply) byte-array)
+ (let ((retval (cl-call-next-method obj byte-array))
+ (im-data (slot-value obj 'im-attrs))
+ (ic-data (slot-value obj 'ic-attrs))
+ im-attr im-attrs ic-attr ic-attrs)
+ (while (< 0 (length im-data))
+ (setq im-attr (make-instance 'xim:XIMATTR)
+ im-data (substring im-data (xcb:unmarshal im-attr im-data))
+ im-attrs (nconc im-attrs (list im-attr))))
+ (while (< 0 (length ic-data))
+ (setq ic-attr (make-instance 'xim:XICATTR)
+ ic-data (substring ic-data (xcb:unmarshal ic-attr ic-data))
+ ic-attrs (nconc ic-attrs (list ic-attr))))
+ (setf (slot-value obj 'im-attrs) im-attrs
+ (slot-value obj 'ic-attrs) ic-attrs)
+ retval))
+
+(defclass xim:close (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:close)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xim:close-reply (xim:close)
+ ((~major-opcode :initform 'xim:opcode:close-reply)))
+
+;;;; Event flow control
+
+(defclass xim:set-event-mask (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:set-event-mask)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (forward-event-mask :initarg :forward-event-mask :type xcb:-u4)
+ (synchronous-event-mask :initarg :synchronous-event-mask :type xcb:-u4)))
+
+(defclass xim:register-triggerkeys (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:register-triggerkeys)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (on-keys-length :initarg :on-keys-length :type xcb:-u4)
+ (on-keys :initarg :on-keys :type xcb:-ignore)
+ (on-keys~ :initform '(name on-keys type xim:XIMTRIGGERKEY
+ size (/ (xcb:-fieldref 'on-keys-length) 12))
+ :type xcb:-list)
+ (off-keys-length :initarg :off-keys-length :type xcb:-u4)
+ (off-keys :initarg :off-keys :type xcb:-ignore)
+ (off-keys~ :initform '(name off-keys type xim:XIMTRIGGERKEY
+ size (/ (xcb:-fieldref 'off-keys-length) 12))
+ :type xcb:-list)))
+
+(defclass xim:trigger-nofity (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:trigger-notify)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (flag :initarg :flag :type xcb:CARD32)
+ (index :initarg :index :type xcb:CARD32)
+ (client-select-event-mask :initarg :client-select-event-mask
+ :type xcb:-u4)))
+
+(defconst xim:trigger-nofity-flag:on-keys 0)
+(defconst xim:trigger-nofity-flag:off-keys 1)
+
+(defclass xim:trigger-nofity-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:trigger-notify-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Encoding negotiation
+
+(defclass xim:encoding-negotiation (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:encoding-negotiation)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (names-length :initarg :names-length :type xcb:-u2)
+ (names :initarg :names :type xcb:-ignore)
+ (names~ :initform '(name names type xcb:void
+ size (xcb:-fieldref 'names-length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (xcb:-fieldref 'names-length))
+ :type xcb:-pad)
+ (encodings-length :initarg :encoding-length :type xcb:-u2)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (encodings :initarg :encodings :type xcb:-ignore)
+ (encodings~ :initform '(name encodings type xcb:void
+ size (xcb:-fieldref 'encodings-length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:encoding-negotiation))
+ (let ((names (mapconcat #'xcb:marshal (slot-value obj 'names) []))
+ (encodings (mapconcat #'xcb:marshal (slot-value obj 'encodings) [])))
+ (setf (slot-value obj 'names-length) (length names)
+ (slot-value obj 'names) names
+ (slot-value obj 'encodings-length) (length encodings)
+ (slot-value obj 'encodings) encodings)
+ (cl-call-next-method obj)))
+
+(cl-defmethod xcb:unmarshal ((obj xim:encoding-negotiation) byte-array)
+ (let ((retval (cl-call-next-method obj byte-array))
+ (names-data (slot-value obj 'names))
+ (encodings-data (slot-value obj 'encodings))
+ name names encoding encodings)
+ (while (< 0 (length names-data))
+ (setq name (make-instance 'xim:STR)
+ names-data (substring names-data (xcb:unmarshal name names-data))
+ names (nconc names (list name))))
+ (while (< 0 (length encodings-data))
+ (setq encoding (make-instance 'xim:ENCODINGINFO)
+ encodings-data
+ (substring encodings-data (xcb:unmarshal encoding encodings-data))
+ encodings (nconc encodings (list encoding))))
+ (setf (slot-value obj 'names) names
+ (slot-value obj 'encodings) encodings)
+ retval))
+
+(defclass xim:encoding-negotiation-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:encoding-negotiation-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (category :initarg :category :type xcb:CARD16)
+ (index :initarg :index :type xcb:INT16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defconst xim:encoding-negotiation-reply-category:name 0)
+(defconst xim:encoding-negotiation-reply-category:data 1)
+
+;;;; Query the supported extension protocol list
+
+(defclass xim:query-extension (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:query-extension)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (extensions :initarg :extensions :type xcb:-ignore)
+ (extensions~ :initform '(name extensions type xcb:void
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(cl-defmethod xcb:marshal ((obj xim:query-extension))
+ (let ((extensions (mapconcat #'xcb:marshal (slot-value obj 'extensions) [])))
+ (setf (slot-value obj 'length) (length extensions)
+ (slot-value obj 'extensions) extensions)
+ (cl-call-next-method obj)))
+
+(cl-defmethod xcb:unmarshal ((obj xim:query-extension) byte-array)
+ (let ((retval (cl-call-next-method obj byte-array))
+ (data (slot-value obj 'extensions))
+ extension extensions)
+ (while (< 0 (length data))
+ (setq extension (make-instance 'xim:STR)
+ data (substring data (xcb:unmarshal extension data))
+ extensions (nconc extensions (list extension))))
+ (setf (slot-value obj 'extensions) extensions)
+ retval))
+
+(defclass xim:query-extension-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:query-extension-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (extensions :initarg :extensions :type xcb:-ignore)
+ (extensions~ :initform '(name extensions type xcb:void
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:query-extension-reply))
+ (let ((extensions (mapconcat 'xcb:marshal (slot-value obj 'extensions) [])))
+ (setf (slot-value obj 'length) (length extensions)
+ (slot-value obj 'extensions) extensions)
+ (cl-call-next-method obj)))
+
+(cl-defmethod xcb:unmarshal ((obj xim:query-extension-reply) byte-array)
+ (let ((retval (cl-call-next-method obj byte-array))
+ (data (slot-value obj 'extensions))
+ extension extensions)
+ (while (< 0 (length data))
+ (setq extension (make-instance 'xim:EXT)
+ data (substring data (xcb:unmarshal extension data))
+ extensions (nconc extensions (list extension))))
+ (setf (slot-value obj 'extensions) extensions)
+ retval))
+
+;;;; Setting IM values
+
+(defclass xim:set-im-values (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:set-im-values)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (im-attributes :initarg :im-attributes :type xcb:-ignore)
+ (im-attributes~ :initform '(name im-attributes type xcb:void
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:set-im-values))
+ (let ((im-attributes (mapconcat #'xcb:marshal
+ (slot-value obj 'im-attributes) [])))
+ (setf (slot-value obj 'length) (length im-attributes)
+ (slot-value obj 'im-attributes) im-attributes)
+ (cl-call-next-method obj)))
+
+(defclass xim:set-im-values-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:set-im-values-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+;;;; Getting IM values
+
+(defclass xim:get-im-values (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:get-im-values)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (im-attributes-id :initarg :im-attributes-id :type xcb:-ignore)
+ (im-attributes-id~ :initform '(name im-attributes-id type xcb:CARD16
+ size (/ (xcb:-fieldref 'length) 2))
+ :type xcb:-list)))
+
+(defclass xim:get-im-values-reply (xim:set-im-values)
+ ((~major-opcode :initform 'xim:opcode:get-im-values-reply)))
+
+;;;; Creating an IC
+
+(defclass xim:create-ic (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:create-ic)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (ic-attributes :initarg :ic-attributes :type xcb:-ignore)
+ (ic-attributes~ :initform '(name ic-attributes type xcb:void
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:create-ic))
+ (let ((ic-attributes (mapconcat #'xcb:marshal
+ (slot-value obj 'ic-attributes) [])))
+ (setf (slot-value obj 'length) (length ic-attributes)
+ (slot-value obj 'ic-attributes) ic-attributes)
+ (cl-call-next-method obj)))
+
+(cl-defmethod xcb:unmarshal ((obj xim:create-ic) byte-array)
+ (let ((retval (cl-call-next-method obj byte-array))
+ (data (slot-value obj 'ic-attributes))
+ ic-attribute ic-attributes)
+ (while (< 0 (length data))
+ (setq ic-attribute (make-instance 'xim:XICATTRIBUTE)
+ data (substring data (xcb:unmarshal ic-attribute data))
+ ic-attributes (nconc ic-attributes (list ic-attribute))))
+ (setf (slot-value obj 'ic-attributes) ic-attributes)
+ retval))
+
+(defclass xim:create-ic-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:create-ic-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Destroy the IC
+
+(defclass xim:destroy-ic (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:destroy-ic)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+(defclass xim:destroy-ic-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:destroy-ic-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Setting IC values
+
+(defclass xim:set-ic-values (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:set-ic-values)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (ic-attributes :initarg :ic-attributes :type xcb:-ignore)
+ (ic-attributes~ :initform '(name ic-attributes type xcb:void
+ size (xcb:-fieldref 'length))
+ :type xcb:-list)))
+
+(cl-defmethod xcb:marshal ((obj xim:set-ic-values))
+ (let ((ic-attributes (mapconcat 'xcb:marshal
+ (slot-value obj 'ic-attributes) [])))
+ (setf (slot-value obj 'length) (length ic-attributes)
+ (slot-value obj 'ic-attributes) ic-attributes)
+ (cl-call-next-method obj)))
+
+(defclass xim:set-ic-values-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:set-ic-values-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Getting IC values
+
+(defclass xim:get-ic-values (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:get-ic-values)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (ic-attributes-id :initarg :ic-attributes-id :type xcb:-ignore)
+ (ic-attributes-id~ :initform '(name ic-attributes-id type xcb:CARD16
+ size (/ (xcb:-fieldref 'length) 2))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+(defclass xim:get-ic-values-reply (xim:set-ic-values)
+ ((~major-opcode :initform 'xim:opcode:get-ic-values-reply)))
+
+;;;; Setting IC focus
+
+(defclass xim:set-ic-focus (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:set-ic-focus)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Unsetting IC focus
+
+(defclass xim:unset-ic-focus (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:unset-ic-focus)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Filtering events
+
+(defclass xim:forward-event (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:forward-event)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (flag :initarg :flag :type xim:BITMASK16)
+ (serial-number :initarg :serial-number :type xcb:CARD16)
+ (event :initarg :event :type xcb:-ignore)
+ (event~ :initform '(name event type xcb:void size 32) :type xcb:-list)))
+
+(defconst xim:forward-event-flag:synchronous 1)
+(defconst xim:forward-event-flag:request-filtering 2)
+(defconst xim:forward-event-flag:request-lookupstring 4)
+
+;;;; Synchronizing with the IM server
+
+(defclass xim:sync (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:sync)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+(defclass xim:sync-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:sync-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;;;; Sending a committed string
+
+(defclass xim:commit (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:commit)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (flag :initarg :flag :type xim:BITMASK16)))
+
+(defconst xim:commit-flag:synchronous 1)
+;; FIXME: different from Xlib:XLookup*
+(defconst xim:commit-flag:x-lookup-chars 2)
+(defconst xim:commit-flag:x-lookup-key-sym 4)
+(defconst xim:commit-flag:x-lookup-both 6)
+
+(defclass xim:commit-x-lookup-key-sym (xim:commit)
+ ((flag :initform 'xim:commit-flag:x-lookup-key-sym)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (key-sym :initarg :key-sym :type xcb:KEYSYM)))
+
+(defclass xim:commit-x-lookup-chars (xim:commit)
+ ((flag :initform 'xim:commit-flag:x-lookup-chars)
+ (length :initarg :length :type xcb:-u2)
+ (string :initarg :string :type xcb:-ignore)
+ (string~ :initform '(name string type xcb:BYTE size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~1 :initform '(xim:PADDING (xcb:-fieldref 'length)) :type xcb:-pad)))
+
+(defclass xim:commit-x-lookup-both (xim:commit-x-lookup-key-sym
+ xim:commit-x-lookup-chars)
+ ((flag :initform 'xim:commit-flag:x-lookup-both)
+ (pad~1 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+;;;; Reset IC
+
+(defclass xim:reset-ic (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:reset-ic)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+(defclass xim:reset-ic-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:reset-ic-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (length :initarg :length :type xcb:-u2)
+ (string :initarg :string :type xcb:-ignore)
+ (string~ :initform '(name string type xcb:BYTE size (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'length)))
+ :type xcb:-pad)))
+
+;;;; Callbacks
+
+;; Negotiating geometry
+(defclass xim:geometry (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:geometry)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;; Converting a string
+(defclass xim:str-conversion (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:str-conversion)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (position :initarg :position :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (direction :initarg :direction :type xcb:CARD32)
+ (factor :initarg :factor :type xcb:CARD16)
+ (operation :initarg :operation :type xcb:CARD16)
+ (length :initarg :length :type xcb:INT16)))
+
+(defconst xim:caret-direction:forward-char 0)
+(defconst xim:caret-direction:backward-char 1)
+(defconst xim:caret-direction:forward-word 2)
+(defconst xim:caret-direction:backward-word 3)
+(defconst xim:caret-direction:caret-up 4)
+(defconst xim:caret-direction:caret-down 5)
+(defconst xim:caret-direction:next-line 6)
+(defconst xim:caret-direction:previous-line 7)
+(defconst xim:caret-direction:line-start 8)
+(defconst xim:caret-direction:line-end 9)
+(defconst xim:caret-direction:absolute-position 10)
+(defconst xim:caret-direction:dont-change 11)
+
+(defconst xim:string-conversion-operation:substitution 1)
+(defconst xim:string-conversion-operation:retrieval 2)
+
+(defclass xim:str-conversion-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:str-conversion-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (feedback :initarg :feedback :type xcb:CARD32)
+ (text :initarg :text :type xim:XIMSTRCONVTEXT)))
+
+;; Preedit callbacks
+(defclass xim:preedit-start (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preedit-start)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+(defclass xim:preedit-start-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preedit-start-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (return-value :initarg :return-value :type xcb:INT32)))
+
+(defclass xim:preedit-draw (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preedit-draw)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (caret :initarg :caret :type xcb:INT32)
+ (chg-first :initarg :chg-first :type xcb:INT32)
+ (chg-length :initarg :chg-length :type xcb:INT32)
+ (status :initarg :status :type xim:BITMASK32)
+ (string-length :initarg :string-length :type xcb:-u2)
+ (string :initarg :string :type xcb:-ignore)
+ (string~ :initform '(name string type xcb:char
+ size (xcb:-fieldref 'string-length))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'string-length)))
+ :type xcb:-pad)
+ (feedback-length :initarg :feedback-length :type xcb:-u2)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (feedback :initarg :feedback :type xcb:-ignore)
+ (feedback~ :initform '(name feedback type xim:XIMFEEDBACK
+ size (/ (xcb:-fieldref 'feedback-length) 4))
+ :type xcb:-list)))
+
+(defconst xim:preedit-draw-status:no-string 1)
+(defconst xim:preedit-draw-status:no-feedback 2)
+
+(defclass xim:preedit-caret (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preedit-caret)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (position :initarg :position :type xcb:INT32)
+ (direction :initarg :direction :type xcb:CARD32)
+ (style :initarg :style :type xcb:CARD32)))
+
+(defconst xim:preedit-caret-style:invisible 0)
+(defconst xim:preedit-caret-style:primary 1)
+(defconst xim:preedit-caret-style:secondary 2)
+
+(defclass xim:preedit-caret-reply (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preedit-caret-reply)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (position :initarg :position :type xcb:CARD32)))
+
+(defclass xim:preedit-done (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preedit-done)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+;; Preedit state notify
+(defclass xim:preeditstate (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:preeditstate)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (state :initarg :state :type xim:BITMASK32)))
+
+(defconst xim:preeditstate:unknown 0)
+(defconst xim:preeditstate:enable 1)
+(defconst xim:preeditstate:disable 2)
+
+;; Status callbacks
+(defclass xim:status-start (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:status-start)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+(defclass xim:status-draw (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:status-draw)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)
+ (type :initarg :type :type xcb:CARD32)))
+
+(defconst xim:status-draw-type:text 0)
+(defconst xim:status-draw-type:bitmap 1)
+
+(defclass xim:status-draw-text (xim:status-draw)
+ ((type :initarg :type :initform 'xim:status-draw-type:text)
+ (status :initarg :status :type xim:BITMASK32)
+ (string-length :initarg :string-length :type xcb:-u2)
+ (string :initarg :string :type xcb:-ignore)
+ (string~ :initform '(name string type xcb:char
+ size (xcb:-fieldref 'string-lessp))
+ :type xcb:-list)
+ (pad~0 :initform '(xim:PADDING (+ 2 (xcb:-fieldref 'string-length)))
+ :type xcb:-pad)
+ (feedback-length :initarg :feedback-length :type xcb:-u2)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (feedback :initarg :feedback :type xcb:-ignore)
+ (feedback~ :initform '(name feedback type xim:XIMFEEDBACK
+ size (/ (xcb:-fieldref 'feedback-length) 4))
+ :type xcb:-list)))
+
+(defclass xim:status-draw-bitmap (xim:status-draw)
+ ((type :initarg :type :initform 'xim:status-draw-type:bitmap)
+ (pixmap-data :initarg :pixmap-data :type xcb:PIXMAP)))
+
+(defclass xim:status-done (xim:-request)
+ ((~major-opcode :initform 'xim:opcode:status-done)
+ (im-id :initarg :im-id :type xcb:CARD16)
+ (ic-id :initarg :ic-id :type xcb:CARD16)))
+
+
+
+(provide 'xcb-xim)
+
+;;; xcb-xim.el ends here
diff --git a/elpa/xelb-0.20/xcb-xim.elc b/elpa/xelb-0.20/xcb-xim.elc
new file mode 100644
index 0000000..a83dd64
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xim.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xinerama.el b/elpa/xelb-0.20/xcb-xinerama.el
new file mode 100644
index 0000000..f8ebc23
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xinerama.el
@@ -0,0 +1,123 @@
+;;; xcb-xinerama.el --- X11 Xinerama extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xinerama.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xinerama:-extension-xname "XINERAMA")
+(defconst xcb:xinerama:-extension-name "Xinerama")
+(defconst xcb:xinerama:-major-version 1)
+(defconst xcb:xinerama:-minor-version 1)
+
+(require 'xcb-xproto)
+
+(defclass xcb:xinerama:ScreenInfo
+ (xcb:-struct)
+ ((x-org :initarg :x-org :type xcb:INT16)
+ (y-org :initarg :y-org :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:xinerama:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major :initarg :major :type xcb:CARD8)
+ (minor :initarg :minor :type xcb:CARD8)))
+(defclass xcb:xinerama:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major :initarg :major :type xcb:CARD16)
+ (minor :initarg :minor :type xcb:CARD16)))
+
+(defclass xcb:xinerama:GetState
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xinerama:GetState~reply
+ (xcb:-reply)
+ ((state :initarg :state :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:xinerama:GetScreenCount
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xinerama:GetScreenCount~reply
+ (xcb:-reply)
+ ((screen-count :initarg :screen-count :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:xinerama:GetScreenSize
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (screen :initarg :screen :type xcb:CARD32)))
+(defclass xcb:xinerama:GetScreenSize~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)
+ (window :initarg :window :type xcb:WINDOW)
+ (screen :initarg :screen :type xcb:CARD32)))
+
+(defclass xcb:xinerama:IsActive
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)))
+(defclass xcb:xinerama:IsActive~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (state :initarg :state :type xcb:CARD32)))
+
+(defclass xcb:xinerama:QueryScreens
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)))
+(defclass xcb:xinerama:QueryScreens~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (number :initarg :number :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (screen-info~ :initform
+ '(name screen-info type xcb:xinerama:ScreenInfo size
+ (xcb:-fieldref 'number))
+ :type xcb:-list)
+ (screen-info :initarg :screen-info :type xcb:-ignore)))
+
+
+
+(provide 'xcb-xinerama)
+
+;;; xcb-xinerama.el ends here
diff --git a/elpa/xelb-0.20/xcb-xinerama.elc b/elpa/xelb-0.20/xcb-xinerama.elc
new file mode 100644
index 0000000..42f6b31
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xinerama.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xinput.el b/elpa/xelb-0.20/xcb-xinput.el
new file mode 100644
index 0000000..a0904a9
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xinput.el
@@ -0,0 +1,2976 @@
+;;; xcb-xinput.el --- X11 Input extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xinput.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xinput:-extension-xname "XInputExtension")
+(defconst xcb:xinput:-extension-name "Input")
+(defconst xcb:xinput:-major-version 2)
+(defconst xcb:xinput:-minor-version 4)
+
+(require 'xcb-xfixes)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:xinput:EventClass 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:xinput:KeyCode 'xcb:CARD8)
+
+(xcb:deftypealias 'xcb:xinput:DeviceId 'xcb:CARD16)
+
+(xcb:deftypealias 'xcb:xinput:FP1616 'xcb:INT32)
+
+(defclass xcb:xinput:FP3232
+ (xcb:-struct)
+ ((integral :initarg :integral :type xcb:INT32)
+ (frac :initarg :frac :type xcb:CARD32)))
+
+(defclass xcb:xinput:GetExtensionVersion
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:xinput:GetExtensionVersion~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major :initarg :server-major :type xcb:CARD16)
+ (server-minor :initarg :server-minor :type xcb:CARD16)
+ (present :initarg :present :type xcb:BOOL)
+ (pad~0 :initform 19 :type xcb:-pad)))
+
+(defconst xcb:xinput:DeviceUse:IsXPointer 0)
+(defconst xcb:xinput:DeviceUse:IsXKeyboard 1)
+(defconst xcb:xinput:DeviceUse:IsXExtensionDevice 2)
+(defconst xcb:xinput:DeviceUse:IsXExtensionKeyboard 3)
+(defconst xcb:xinput:DeviceUse:IsXExtensionPointer 4)
+
+(defconst xcb:xinput:InputClass:Key 0)
+(defconst xcb:xinput:InputClass:Button 1)
+(defconst xcb:xinput:InputClass:Valuator 2)
+(defconst xcb:xinput:InputClass:Feedback 3)
+(defconst xcb:xinput:InputClass:Proximity 4)
+(defconst xcb:xinput:InputClass:Focus 5)
+(defconst xcb:xinput:InputClass:Other 6)
+
+(defconst xcb:xinput:ValuatorMode:Relative 0)
+(defconst xcb:xinput:ValuatorMode:Absolute 1)
+
+(defclass xcb:xinput:DeviceInfo
+ (xcb:-struct)
+ ((device-type :initarg :device-type :type xcb:ATOM)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (num-class-info :initarg :num-class-info :type xcb:CARD8)
+ (device-use :initarg :device-use :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:xinput:KeyInfo
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (min-keycode :initarg :min-keycode :type xcb:xinput:KeyCode)
+ (max-keycode :initarg :max-keycode :type xcb:xinput:KeyCode)
+ (num-keys :initarg :num-keys :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:ButtonInfo
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (num-buttons :initarg :num-buttons :type xcb:CARD16)))
+
+(defclass xcb:xinput:AxisInfo
+ (xcb:-struct)
+ ((resolution :initarg :resolution :type xcb:CARD32)
+ (minimum :initarg :minimum :type xcb:INT32)
+ (maximum :initarg :maximum :type xcb:INT32)))
+
+(defclass xcb:xinput:ValuatorInfo
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (axes-len :initarg :axes-len :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (motion-size :initarg :motion-size :type xcb:CARD32)
+ (axes~ :initform
+ '(name axes type xcb:xinput:AxisInfo size
+ (xcb:-fieldref 'axes-len))
+ :type xcb:-list)
+ (axes :initarg :axes :type xcb:-ignore)))
+
+(defclass xcb:xinput:InputInfo
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (info :initform
+ '(expression
+ (xcb:-fieldref 'class-id)
+ cases
+ (((0)
+ min-keycode max-keycode num-keys pad~0)
+ ((1)
+ num-buttons)
+ ((2)
+ pad~1 axes-len mode motion-size axes~)))
+ :type xcb:-switch)
+ (min-keycode :initarg :min-keycode :type xcb:xinput:KeyCode)
+ (max-keycode :initarg :max-keycode :type xcb:xinput:KeyCode)
+ (num-keys :initarg :num-keys :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num-buttons :initarg :num-buttons :type xcb:CARD16)
+ (pad~1 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (axes-len :initarg :axes-len :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (motion-size :initarg :motion-size :type xcb:CARD32)
+ (axes~ :initform
+ '(name axes type xcb:xinput:AxisInfo size
+ (xcb:-fieldref 'axes-len))
+ :type xcb:-list)
+ (axes :initarg :axes :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceName
+ (xcb:-struct)
+ ((len :initarg :len :type xcb:CARD8)
+ (string~ :initform
+ '(name string type xcb:char size
+ (xcb:-fieldref 'len))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+
+(defclass xcb:xinput:ListInputDevices
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)))
+(defclass xcb:xinput:ListInputDevices~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (devices-len :initarg :devices-len :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (devices~ :initform
+ '(name devices type xcb:xinput:DeviceInfo size
+ (xcb:-fieldref 'devices-len))
+ :type xcb:-list)
+ (devices :initarg :devices :type xcb:-ignore)
+ (infos~ :initform
+ '(name infos type xcb:xinput:InputInfo size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(xcb:-fieldref 'num-class-info)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'devices))))
+ :type xcb:-list)
+ (infos :initarg :infos :type xcb:-ignore)
+ (names~ :initform
+ '(name names type xcb:STR size
+ (xcb:-fieldref 'devices-len))
+ :type xcb:-list)
+ (names :initarg :names :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(xcb:deftypealias 'xcb:xinput:EventTypeBase 'xcb:CARD8)
+
+(defclass xcb:xinput:InputClassInfo
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (event-type-base :initarg :event-type-base :type xcb:xinput:EventTypeBase)))
+
+(defclass xcb:xinput:OpenDevice
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:OpenDevice~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-classes :initarg :num-classes :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (class-info~ :initform
+ '(name class-info type xcb:xinput:InputClassInfo size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (class-info :initarg :class-info :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xinput:CloseDevice
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:SetDeviceMode
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xinput:SetDeviceMode~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:SelectExtensionEvent
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:GetSelectedExtensionEvents
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xinput:GetSelectedExtensionEvents~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-this-classes :initarg :num-this-classes :type xcb:CARD16)
+ (num-all-classes :initarg :num-all-classes :type xcb:CARD16)
+ (pad~0 :initform 20 :type xcb:-pad)
+ (this-classes~ :initform
+ '(name this-classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-this-classes))
+ :type xcb:-list)
+ (this-classes :initarg :this-classes :type xcb:-ignore)
+ (all-classes~ :initform
+ '(name all-classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-all-classes))
+ :type xcb:-list)
+ (all-classes :initarg :all-classes :type xcb:-ignore)))
+
+(defconst xcb:xinput:PropagateMode:AddToList 0)
+(defconst xcb:xinput:PropagateMode:DeleteFromList 1)
+
+(defclass xcb:xinput:ChangeDeviceDontPropagateList
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:GetDeviceDontPropagateList
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xinput:GetDeviceDontPropagateList~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (pad~0 :initform 22 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceTimeCoord
+ (xcb:-struct)
+ ((time :initarg :time :type xcb:TIMESTAMP)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:INT32 size
+ (xcb:-paramref 'num-axes))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)))
+
+(defclass xcb:xinput:GetDeviceMotionEvents
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (start :initarg :start :type xcb:TIMESTAMP)
+ (stop :initarg :stop :type xcb:TIMESTAMP)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceMotionEvents~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-events :initarg :num-events :type xcb:CARD32)
+ (num-axes :initarg :num-axes :type xcb:CARD8)
+ (device-mode :initarg :device-mode :type xcb:CARD8)
+ (pad~0 :initform 18 :type xcb:-pad)
+ (events~ :initform
+ '(name events type xcb:xinput:DeviceTimeCoord size
+ (xcb:-fieldref 'num-events))
+ :type xcb:-list)
+ (events :initarg :events :type xcb:-ignore)))
+
+(defclass xcb:xinput:ChangeKeyboardDevice
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:ChangeKeyboardDevice~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:ChangePointerDevice
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (x-axis :initarg :x-axis :type xcb:CARD8)
+ (y-axis :initarg :y-axis :type xcb:CARD8)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+(defclass xcb:xinput:ChangePointerDevice~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:GrabDevice
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (this-device-mode :initarg :this-device-mode :type xcb:CARD8)
+ (other-device-mode :initarg :other-device-mode :type xcb:CARD8)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+(defclass xcb:xinput:GrabDevice~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:UngrabDevice
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defconst xcb:xinput:ModifierDevice:UseXKeyboard 255)
+
+(defclass xcb:xinput:GrabDeviceKey
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (modifier-device :initarg :modifier-device :type xcb:CARD8)
+ (grabbed-device :initarg :grabbed-device :type xcb:CARD8)
+ (key :initarg :key :type xcb:CARD8)
+ (this-device-mode :initarg :this-device-mode :type xcb:CARD8)
+ (other-device-mode :initarg :other-device-mode :type xcb:CARD8)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:UngrabDeviceKey
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (grabWindow :initarg :grabWindow :type xcb:WINDOW)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (modifier-device :initarg :modifier-device :type xcb:CARD8)
+ (key :initarg :key :type xcb:CARD8)
+ (grabbed-device :initarg :grabbed-device :type xcb:CARD8)))
+
+(defclass xcb:xinput:GrabDeviceButton
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (grabbed-device :initarg :grabbed-device :type xcb:CARD8)
+ (modifier-device :initarg :modifier-device :type xcb:CARD8)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (this-device-mode :initarg :this-device-mode :type xcb:CARD8)
+ (other-device-mode :initarg :other-device-mode :type xcb:CARD8)
+ (button :initarg :button :type xcb:CARD8)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:UngrabDeviceButton
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (modifier-device :initarg :modifier-device :type xcb:CARD8)
+ (button :initarg :button :type xcb:CARD8)
+ (grabbed-device :initarg :grabbed-device :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defconst xcb:xinput:DeviceInputMode:AsyncThisDevice 0)
+(defconst xcb:xinput:DeviceInputMode:SyncThisDevice 1)
+(defconst xcb:xinput:DeviceInputMode:ReplayThisDevice 2)
+(defconst xcb:xinput:DeviceInputMode:AsyncOtherDevices 3)
+(defconst xcb:xinput:DeviceInputMode:AsyncAll 4)
+(defconst xcb:xinput:DeviceInputMode:SyncAll 5)
+
+(defclass xcb:xinput:AllowDeviceEvents
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (mode :initarg :mode :type xcb:CARD8)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:GetDeviceFocus
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceFocus~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (focus :initarg :focus :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (revert-to :initarg :revert-to :type xcb:CARD8)
+ (pad~0 :initform 15 :type xcb:-pad)))
+
+(defclass xcb:xinput:SetDeviceFocus
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (focus :initarg :focus :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (revert-to :initarg :revert-to :type xcb:CARD8)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defconst xcb:xinput:FeedbackClass:Keyboard 0)
+(defconst xcb:xinput:FeedbackClass:Pointer 1)
+(defconst xcb:xinput:FeedbackClass:String 2)
+(defconst xcb:xinput:FeedbackClass:Integer 3)
+(defconst xcb:xinput:FeedbackClass:Led 4)
+(defconst xcb:xinput:FeedbackClass:Bell 5)
+
+(defclass xcb:xinput:KbdFeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (pitch :initarg :pitch :type xcb:CARD16)
+ (duration :initarg :duration :type xcb:CARD16)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (led-values :initarg :led-values :type xcb:CARD32)
+ (global-auto-repeat :initarg :global-auto-repeat :type xcb:BOOL)
+ (click :initarg :click :type xcb:CARD8)
+ (percent :initarg :percent :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (auto-repeats~ :initform
+ '(name auto-repeats type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (auto-repeats :initarg :auto-repeats :type xcb:-ignore)))
+
+(defclass xcb:xinput:PtrFeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (accel-num :initarg :accel-num :type xcb:CARD16)
+ (accel-denom :initarg :accel-denom :type xcb:CARD16)
+ (threshold :initarg :threshold :type xcb:CARD16)))
+
+(defclass xcb:xinput:IntegerFeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (resolution :initarg :resolution :type xcb:CARD32)
+ (min-value :initarg :min-value :type xcb:INT32)
+ (max-value :initarg :max-value :type xcb:INT32)))
+
+(defclass xcb:xinput:StringFeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (max-symbols :initarg :max-symbols :type xcb:CARD16)
+ (num-keysyms :initarg :num-keysyms :type xcb:CARD16)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (xcb:-fieldref 'num-keysyms))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)))
+
+(defclass xcb:xinput:BellFeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (percent :initarg :percent :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (pitch :initarg :pitch :type xcb:CARD16)
+ (duration :initarg :duration :type xcb:CARD16)))
+
+(defclass xcb:xinput:LedFeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (led-values :initarg :led-values :type xcb:CARD32)))
+
+(defclass xcb:xinput:FeedbackState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'class-id)
+ cases
+ (((0)
+ pitch duration led-mask led-values global-auto-repeat click percent pad~0 auto-repeats~)
+ ((1)
+ pad~1 accel-num accel-denom threshold)
+ ((2)
+ max-symbols num-keysyms keysyms~)
+ ((3)
+ resolution min-value max-value)
+ ((4)
+ led-mask* led-values*)
+ ((5)
+ percent* pad~2 pitch* duration*)))
+ :type xcb:-switch)
+ (pitch :initarg :pitch :type xcb:CARD16)
+ (duration :initarg :duration :type xcb:CARD16)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (led-values :initarg :led-values :type xcb:CARD32)
+ (global-auto-repeat :initarg :global-auto-repeat :type xcb:BOOL)
+ (click :initarg :click :type xcb:CARD8)
+ (percent :initarg :percent :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (auto-repeats~ :initform
+ '(name auto-repeats type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (auto-repeats :initarg :auto-repeats :type xcb:-ignore)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (accel-num :initarg :accel-num :type xcb:CARD16)
+ (accel-denom :initarg :accel-denom :type xcb:CARD16)
+ (threshold :initarg :threshold :type xcb:CARD16)
+ (max-symbols :initarg :max-symbols :type xcb:CARD16)
+ (num-keysyms :initarg :num-keysyms :type xcb:CARD16)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (xcb:-fieldref 'num-keysyms))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)
+ (resolution :initarg :resolution :type xcb:CARD32)
+ (min-value :initarg :min-value :type xcb:INT32)
+ (max-value :initarg :max-value :type xcb:INT32)
+ (led-mask* :initarg :led-mask* :type xcb:CARD32)
+ (led-values* :initarg :led-values* :type xcb:CARD32)
+ (percent* :initarg :percent* :type xcb:CARD8)
+ (pad~2 :initform 3 :type xcb:-pad)
+ (pitch* :initarg :pitch* :type xcb:CARD16)
+ (duration* :initarg :duration* :type xcb:CARD16)))
+
+(defclass xcb:xinput:GetFeedbackControl
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:GetFeedbackControl~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-feedbacks :initarg :num-feedbacks :type xcb:CARD16)
+ (pad~0 :initform 22 :type xcb:-pad)
+ (feedbacks~ :initform
+ '(name feedbacks type xcb:xinput:FeedbackState size
+ (xcb:-fieldref 'num-feedbacks))
+ :type xcb:-list)
+ (feedbacks :initarg :feedbacks :type xcb:-ignore)))
+
+(defclass xcb:xinput:KbdFeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (key :initarg :key :type xcb:xinput:KeyCode)
+ (auto-repeat-mode :initarg :auto-repeat-mode :type xcb:CARD8)
+ (key-click-percent :initarg :key-click-percent :type xcb:INT8)
+ (bell-percent :initarg :bell-percent :type xcb:INT8)
+ (bell-pitch :initarg :bell-pitch :type xcb:INT16)
+ (bell-duration :initarg :bell-duration :type xcb:INT16)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (led-values :initarg :led-values :type xcb:CARD32)))
+
+(defclass xcb:xinput:PtrFeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num :initarg :num :type xcb:INT16)
+ (denom :initarg :denom :type xcb:INT16)
+ (threshold :initarg :threshold :type xcb:INT16)))
+
+(defclass xcb:xinput:IntegerFeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (int-to-display :initarg :int-to-display :type xcb:INT32)))
+
+(defclass xcb:xinput:StringFeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num-keysyms :initarg :num-keysyms :type xcb:CARD16)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (xcb:-fieldref 'num-keysyms))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)))
+
+(defclass xcb:xinput:BellFeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (percent :initarg :percent :type xcb:INT8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (pitch :initarg :pitch :type xcb:INT16)
+ (duration :initarg :duration :type xcb:INT16)))
+
+(defclass xcb:xinput:LedFeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (led-values :initarg :led-values :type xcb:CARD32)))
+
+(defclass xcb:xinput:FeedbackCtl
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD16)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'class-id)
+ cases
+ (((0)
+ key auto-repeat-mode key-click-percent bell-percent bell-pitch bell-duration led-mask led-values)
+ ((1)
+ pad~0 num denom threshold)
+ ((2)
+ pad~1 num-keysyms keysyms~)
+ ((3)
+ int-to-display)
+ ((4)
+ led-mask* led-values*)
+ ((5)
+ percent pad~2 pitch duration)))
+ :type xcb:-switch)
+ (key :initarg :key :type xcb:xinput:KeyCode)
+ (auto-repeat-mode :initarg :auto-repeat-mode :type xcb:CARD8)
+ (key-click-percent :initarg :key-click-percent :type xcb:INT8)
+ (bell-percent :initarg :bell-percent :type xcb:INT8)
+ (bell-pitch :initarg :bell-pitch :type xcb:INT16)
+ (bell-duration :initarg :bell-duration :type xcb:INT16)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (led-values :initarg :led-values :type xcb:CARD32)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (num :initarg :num :type xcb:INT16)
+ (denom :initarg :denom :type xcb:INT16)
+ (threshold :initarg :threshold :type xcb:INT16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (num-keysyms :initarg :num-keysyms :type xcb:CARD16)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (xcb:-fieldref 'num-keysyms))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)
+ (int-to-display :initarg :int-to-display :type xcb:INT32)
+ (led-mask* :initarg :led-mask* :type xcb:CARD32)
+ (led-values* :initarg :led-values* :type xcb:CARD32)
+ (percent :initarg :percent :type xcb:INT8)
+ (pad~2 :initform 3 :type xcb:-pad)
+ (pitch :initarg :pitch :type xcb:INT16)
+ (duration :initarg :duration :type xcb:INT16)))
+
+(defconst xcb:xinput:ChangeFeedbackControlMask:KeyClickPercent 1)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Percent 2)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Pitch 4)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Duration 8)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Led 16)
+(defconst xcb:xinput:ChangeFeedbackControlMask:LedMode 32)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Key 64)
+(defconst xcb:xinput:ChangeFeedbackControlMask:AutoRepeatMode 128)
+(defconst xcb:xinput:ChangeFeedbackControlMask:String 1)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Integer 1)
+(defconst xcb:xinput:ChangeFeedbackControlMask:AccelNum 1)
+(defconst xcb:xinput:ChangeFeedbackControlMask:AccelDenom 2)
+(defconst xcb:xinput:ChangeFeedbackControlMask:Threshold 4)
+
+(defclass xcb:xinput:ChangeFeedbackControl
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (mask :initarg :mask :type xcb:CARD32)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (feedback :initarg :feedback :type xcb:xinput:FeedbackCtl)))
+
+(defclass xcb:xinput:GetDeviceKeyMapping
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (first-keycode :initarg :first-keycode :type xcb:xinput:KeyCode)
+ (count :initarg :count :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceKeyMapping~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (keysyms-per-keycode :initarg :keysyms-per-keycode :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)))
+
+(defclass xcb:xinput:ChangeDeviceKeyMapping
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (first-keycode :initarg :first-keycode :type xcb:xinput:KeyCode)
+ (keysyms-per-keycode :initarg :keysyms-per-keycode :type xcb:CARD8)
+ (keycode-count :initarg :keycode-count :type xcb:CARD8)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (*
+ (xcb:-fieldref 'keycode-count)
+ (xcb:-fieldref 'keysyms-per-keycode)))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)))
+
+(defclass xcb:xinput:GetDeviceModifierMapping
+ (xcb:-request)
+ ((~opcode :initform 26 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceModifierMapping~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (keycodes-per-modifier :initarg :keycodes-per-modifier :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (keymaps~ :initform
+ '(name keymaps type xcb:CARD8 size
+ (*
+ (xcb:-fieldref 'keycodes-per-modifier)
+ 8))
+ :type xcb:-list)
+ (keymaps :initarg :keymaps :type xcb:-ignore)))
+
+(defclass xcb:xinput:SetDeviceModifierMapping
+ (xcb:-request)
+ ((~opcode :initform 27 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (keycodes-per-modifier :initarg :keycodes-per-modifier :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (keymaps~ :initform
+ '(name keymaps type xcb:CARD8 size
+ (*
+ (xcb:-fieldref 'keycodes-per-modifier)
+ 8))
+ :type xcb:-list)
+ (keymaps :initarg :keymaps :type xcb:-ignore)))
+(defclass xcb:xinput:SetDeviceModifierMapping~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:GetDeviceButtonMapping
+ (xcb:-request)
+ ((~opcode :initform 28 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceButtonMapping~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (map-size :initarg :map-size :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (map~ :initform
+ '(name map type xcb:CARD8 size
+ (xcb:-fieldref 'map-size))
+ :type xcb:-list)
+ (map :initarg :map :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xinput:SetDeviceButtonMapping
+ (xcb:-request)
+ ((~opcode :initform 29 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (map-size :initarg :map-size :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (map~ :initform
+ '(name map type xcb:CARD8 size
+ (xcb:-fieldref 'map-size))
+ :type xcb:-list)
+ (map :initarg :map :type xcb:-ignore)))
+(defclass xcb:xinput:SetDeviceButtonMapping~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:KeyState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (num-keys :initarg :num-keys :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (keys~ :initform
+ '(name keys type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defclass xcb:xinput:ButtonState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (num-buttons :initarg :num-buttons :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (buttons~ :initform
+ '(name buttons type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (buttons :initarg :buttons :type xcb:-ignore)))
+
+(defconst xcb:xinput:ValuatorStateModeMask:DeviceModeAbsolute 1)
+(defconst xcb:xinput:ValuatorStateModeMask:OutOfProximity 2)
+
+(defclass xcb:xinput:ValuatorState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (valuators~ :initform
+ '(name valuators type xcb:INT32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (valuators :initarg :valuators :type xcb:-ignore)))
+
+(defclass xcb:xinput:InputState
+ (xcb:-struct)
+ ((class-id :initarg :class-id :type xcb:CARD8)
+ (len :initarg :len :type xcb:CARD8)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'class-id)
+ cases
+ (((0)
+ pad~0 num-keys pad~1 keys~)
+ ((1)
+ num-buttons pad~2 buttons~)
+ ((2)
+ pad~3 num-valuators mode valuators~)))
+ :type xcb:-switch)
+ (pad~0 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (num-keys :initarg :num-keys :type xcb:CARD8)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (keys~ :initform
+ '(name keys type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)
+ (num-buttons :initarg :num-buttons :type xcb:CARD8)
+ (pad~2 :initform 1 :type xcb:-pad)
+ (buttons~ :initform
+ '(name buttons type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (buttons :initarg :buttons :type xcb:-ignore)
+ (pad~3 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (valuators~ :initform
+ '(name valuators type xcb:INT32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (valuators :initarg :valuators :type xcb:-ignore)))
+
+(defclass xcb:xinput:QueryDeviceState
+ (xcb:-request)
+ ((~opcode :initform 30 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:QueryDeviceState~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-classes :initarg :num-classes :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:InputState size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceBell
+ (xcb:-request)
+ ((~opcode :initform 32 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (feedback-id :initarg :feedback-id :type xcb:CARD8)
+ (feedback-class :initarg :feedback-class :type xcb:CARD8)
+ (percent :initarg :percent :type xcb:INT8)))
+
+(defclass xcb:xinput:SetDeviceValuators
+ (xcb:-request)
+ ((~opcode :initform 33 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (first-valuator :initarg :first-valuator :type xcb:CARD8)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (valuators~ :initform
+ '(name valuators type xcb:INT32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (valuators :initarg :valuators :type xcb:-ignore)))
+(defclass xcb:xinput:SetDeviceValuators~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defconst xcb:xinput:DeviceControl:resolution 1)
+(defconst xcb:xinput:DeviceControl:abs_calib 2)
+(defconst xcb:xinput:DeviceControl:core 3)
+(defconst xcb:xinput:DeviceControl:enable 4)
+(defconst xcb:xinput:DeviceControl:abs_area 5)
+
+(defclass xcb:xinput:DeviceResolutionState
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (num-valuators :initarg :num-valuators :type xcb:CARD32)
+ (resolution-values~ :initform
+ '(name resolution-values type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-values :initarg :resolution-values :type xcb:-ignore)
+ (resolution-min~ :initform
+ '(name resolution-min type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-min :initarg :resolution-min :type xcb:-ignore)
+ (resolution-max~ :initform
+ '(name resolution-max type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-max :initarg :resolution-max :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceAbsCalibState
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (min-x :initarg :min-x :type xcb:INT32)
+ (max-x :initarg :max-x :type xcb:INT32)
+ (min-y :initarg :min-y :type xcb:INT32)
+ (max-y :initarg :max-y :type xcb:INT32)
+ (flip-x :initarg :flip-x :type xcb:CARD32)
+ (flip-y :initarg :flip-y :type xcb:CARD32)
+ (rotation :initarg :rotation :type xcb:CARD32)
+ (button-threshold :initarg :button-threshold :type xcb:CARD32)))
+
+(defclass xcb:xinput:DeviceAbsAreaState
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (offset-x :initarg :offset-x :type xcb:CARD32)
+ (offset-y :initarg :offset-y :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)
+ (screen :initarg :screen :type xcb:CARD32)
+ (following :initarg :following :type xcb:CARD32)))
+
+(defclass xcb:xinput:DeviceCoreState
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (status :initarg :status :type xcb:CARD8)
+ (iscore :initarg :iscore :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceEnableState
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (enable :initarg :enable :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceState
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'control-id)
+ cases
+ (((1)
+ num-valuators resolution-values~ resolution-min~ resolution-max~)
+ ((2)
+ min-x max-x min-y max-y flip-x flip-y rotation button-threshold)
+ ((3)
+ status iscore pad~0)
+ ((4)
+ enable pad~1)
+ ((5)
+ offset-x offset-y width height screen following)))
+ :type xcb:-switch)
+ (num-valuators :initarg :num-valuators :type xcb:CARD32)
+ (resolution-values~ :initform
+ '(name resolution-values type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-values :initarg :resolution-values :type xcb:-ignore)
+ (resolution-min~ :initform
+ '(name resolution-min type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-min :initarg :resolution-min :type xcb:-ignore)
+ (resolution-max~ :initform
+ '(name resolution-max type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-max :initarg :resolution-max :type xcb:-ignore)
+ (min-x :initarg :min-x :type xcb:INT32)
+ (max-x :initarg :max-x :type xcb:INT32)
+ (min-y :initarg :min-y :type xcb:INT32)
+ (max-y :initarg :max-y :type xcb:INT32)
+ (flip-x :initarg :flip-x :type xcb:CARD32)
+ (flip-y :initarg :flip-y :type xcb:CARD32)
+ (rotation :initarg :rotation :type xcb:CARD32)
+ (button-threshold :initarg :button-threshold :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (iscore :initarg :iscore :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (enable :initarg :enable :type xcb:CARD8)
+ (pad~1 :initform 3 :type xcb:-pad)
+ (offset-x :initarg :offset-x :type xcb:CARD32)
+ (offset-y :initarg :offset-y :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)
+ (screen :initarg :screen :type xcb:CARD32)
+ (following :initarg :following :type xcb:CARD32)))
+
+(defclass xcb:xinput:GetDeviceControl
+ (xcb:-request)
+ ((~opcode :initform 34 :type xcb:-u1)
+ (control-id :initarg :control-id :type xcb:CARD16)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceControl~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)
+ (control :initarg :control :type xcb:xinput:DeviceState)))
+
+(defclass xcb:xinput:DeviceResolutionCtl
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (first-valuator :initarg :first-valuator :type xcb:CARD8)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (resolution-values~ :initform
+ '(name resolution-values type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-values :initarg :resolution-values :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceAbsCalibCtl
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (min-x :initarg :min-x :type xcb:INT32)
+ (max-x :initarg :max-x :type xcb:INT32)
+ (min-y :initarg :min-y :type xcb:INT32)
+ (max-y :initarg :max-y :type xcb:INT32)
+ (flip-x :initarg :flip-x :type xcb:CARD32)
+ (flip-y :initarg :flip-y :type xcb:CARD32)
+ (rotation :initarg :rotation :type xcb:CARD32)
+ (button-threshold :initarg :button-threshold :type xcb:CARD32)))
+
+(defclass xcb:xinput:DeviceAbsAreaCtrl
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (offset-x :initarg :offset-x :type xcb:CARD32)
+ (offset-y :initarg :offset-y :type xcb:CARD32)
+ (width :initarg :width :type xcb:INT32)
+ (height :initarg :height :type xcb:INT32)
+ (screen :initarg :screen :type xcb:INT32)
+ (following :initarg :following :type xcb:CARD32)))
+
+(defclass xcb:xinput:DeviceCoreCtrl
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceEnableCtrl
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (enable :initarg :enable :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceCtl
+ (xcb:-struct)
+ ((control-id :initarg :control-id :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'control-id)
+ cases
+ (((1)
+ first-valuator num-valuators pad~0 resolution-values~)
+ ((2)
+ min-x max-x min-y max-y flip-x flip-y rotation button-threshold)
+ ((3)
+ status pad~1)
+ ((4)
+ enable pad~2)
+ ((5)
+ offset-x offset-y width height screen following)))
+ :type xcb:-switch)
+ (first-valuator :initarg :first-valuator :type xcb:CARD8)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (resolution-values~ :initform
+ '(name resolution-values type xcb:CARD32 size
+ (xcb:-fieldref 'num-valuators))
+ :type xcb:-list)
+ (resolution-values :initarg :resolution-values :type xcb:-ignore)
+ (min-x :initarg :min-x :type xcb:INT32)
+ (max-x :initarg :max-x :type xcb:INT32)
+ (min-y :initarg :min-y :type xcb:INT32)
+ (max-y :initarg :max-y :type xcb:INT32)
+ (flip-x :initarg :flip-x :type xcb:CARD32)
+ (flip-y :initarg :flip-y :type xcb:CARD32)
+ (rotation :initarg :rotation :type xcb:CARD32)
+ (button-threshold :initarg :button-threshold :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~1 :initform 3 :type xcb:-pad)
+ (enable :initarg :enable :type xcb:CARD8)
+ (pad~2 :initform 3 :type xcb:-pad)
+ (offset-x :initarg :offset-x :type xcb:CARD32)
+ (offset-y :initarg :offset-y :type xcb:CARD32)
+ (width :initarg :width :type xcb:INT32)
+ (height :initarg :height :type xcb:INT32)
+ (screen :initarg :screen :type xcb:INT32)
+ (following :initarg :following :type xcb:CARD32)))
+
+(defclass xcb:xinput:ChangeDeviceControl
+ (xcb:-request)
+ ((~opcode :initform 35 :type xcb:-u1)
+ (control-id :initarg :control-id :type xcb:CARD16)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (control :initarg :control :type xcb:xinput:DeviceCtl)))
+(defclass xcb:xinput:ChangeDeviceControl~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:ListDeviceProperties
+ (xcb:-request)
+ ((~opcode :initform 36 :type xcb:-u1)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xinput:ListDeviceProperties~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-atoms :initarg :num-atoms :type xcb:CARD16)
+ (pad~0 :initform 22 :type xcb:-pad)
+ (atoms~ :initform
+ '(name atoms type xcb:ATOM size
+ (xcb:-fieldref 'num-atoms))
+ :type xcb:-list)
+ (atoms :initarg :atoms :type xcb:-ignore)))
+
+(defconst xcb:xinput:PropertyFormat:8Bits 8)
+(defconst xcb:xinput:PropertyFormat:16Bits 16)
+(defconst xcb:xinput:PropertyFormat:32Bits 32)
+
+(defclass xcb:xinput:ChangeDeviceProperty
+ (xcb:-request)
+ ((~opcode :initform 37 :type xcb:-u1)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (format :initarg :format :type xcb:CARD8)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (items :initform
+ '(expression
+ (xcb:-fieldref 'format)
+ cases
+ (((8)
+ data8~ pad~1)
+ ((16)
+ data16~ pad~2)
+ ((32)
+ data32~)))
+ :type xcb:-switch)
+ (data8~ :initform
+ '(name data8 type xcb:CARD8 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data8 :initarg :data8 :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (data16~ :initform
+ '(name data16 type xcb:CARD16 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data16 :initarg :data16 :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)
+ (data32~ :initform
+ '(name data32 type xcb:CARD32 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data32 :initarg :data32 :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeleteDeviceProperty
+ (xcb:-request)
+ ((~opcode :initform 38 :type xcb:-u1)
+ (property :initarg :property :type xcb:ATOM)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:GetDeviceProperty
+ (xcb:-request)
+ ((~opcode :initform 39 :type xcb:-u1)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (offset :initarg :offset :type xcb:CARD32)
+ (len :initarg :len :type xcb:CARD32)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (delete :initarg :delete :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xinput:GetDeviceProperty~reply
+ (xcb:-reply)
+ ((xi-reply-type :initarg :xi-reply-type :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (type :initarg :type :type xcb:ATOM)
+ (bytes-after :initarg :bytes-after :type xcb:CARD32)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD8)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 10 :type xcb:-pad)
+ (items :initform
+ '(expression
+ (xcb:-fieldref 'format)
+ cases
+ (((8)
+ data8~ pad~1)
+ ((16)
+ data16~ pad~2)
+ ((32)
+ data32~)))
+ :type xcb:-switch)
+ (data8~ :initform
+ '(name data8 type xcb:CARD8 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data8 :initarg :data8 :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (data16~ :initform
+ '(name data16 type xcb:CARD16 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data16 :initarg :data16 :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)
+ (data32~ :initform
+ '(name data32 type xcb:CARD32 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data32 :initarg :data32 :type xcb:-ignore)))
+
+(defconst xcb:xinput:Device:All 0)
+(defconst xcb:xinput:Device:AllMaster 1)
+
+(defclass xcb:xinput:GroupInfo
+ (xcb:-struct)
+ ((base :initarg :base :type xcb:CARD8)
+ (latched :initarg :latched :type xcb:CARD8)
+ (locked :initarg :locked :type xcb:CARD8)
+ (effective :initarg :effective :type xcb:CARD8)))
+
+(defclass xcb:xinput:ModifierInfo
+ (xcb:-struct)
+ ((base :initarg :base :type xcb:CARD32)
+ (latched :initarg :latched :type xcb:CARD32)
+ (locked :initarg :locked :type xcb:CARD32)
+ (effective :initarg :effective :type xcb:CARD32)))
+
+(defclass xcb:xinput:XIQueryPointer
+ (xcb:-request)
+ ((~opcode :initform 40 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xinput:XIQueryPointer~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (win-x :initarg :win-x :type xcb:xinput:FP1616)
+ (win-y :initarg :win-y :type xcb:xinput:FP1616)
+ (same-screen :initarg :same-screen :type xcb:BOOL)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (buttons-len :initarg :buttons-len :type xcb:CARD16)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (buttons~ :initform
+ '(name buttons type xcb:CARD32 size
+ (xcb:-fieldref 'buttons-len))
+ :type xcb:-list)
+ (buttons :initarg :buttons :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIWarpPointer
+ (xcb:-request)
+ ((~opcode :initform 41 :type xcb:-u1)
+ (src-win :initarg :src-win :type xcb:WINDOW)
+ (dst-win :initarg :dst-win :type xcb:WINDOW)
+ (src-x :initarg :src-x :type xcb:xinput:FP1616)
+ (src-y :initarg :src-y :type xcb:xinput:FP1616)
+ (src-width :initarg :src-width :type xcb:CARD16)
+ (src-height :initarg :src-height :type xcb:CARD16)
+ (dst-x :initarg :dst-x :type xcb:xinput:FP1616)
+ (dst-y :initarg :dst-y :type xcb:xinput:FP1616)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIChangeCursor
+ (xcb:-request)
+ ((~opcode :initform 42 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defconst xcb:xinput:HierarchyChangeType:AddMaster 1)
+(defconst xcb:xinput:HierarchyChangeType:RemoveMaster 2)
+(defconst xcb:xinput:HierarchyChangeType:AttachSlave 3)
+(defconst xcb:xinput:HierarchyChangeType:DetachSlave 4)
+
+(defconst xcb:xinput:ChangeMode:Attach 1)
+(defconst xcb:xinput:ChangeMode:Float 2)
+
+(defclass xcb:xinput:AddMaster
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (send-core :initarg :send-core :type xcb:BOOL)
+ (enable :initarg :enable :type xcb:BOOL)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xinput:RemoveMaster
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (return-mode :initarg :return-mode :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (return-pointer :initarg :return-pointer :type xcb:xinput:DeviceId)
+ (return-keyboard :initarg :return-keyboard :type xcb:xinput:DeviceId)))
+
+(defclass xcb:xinput:AttachSlave
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (master :initarg :master :type xcb:xinput:DeviceId)))
+
+(defclass xcb:xinput:DetachSlave
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:HierarchyChange
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'type)
+ cases
+ (((1)
+ name-len send-core enable name~ pad~0)
+ ((2)
+ deviceid return-mode pad~1 return-pointer return-keyboard)
+ ((3)
+ deviceid* master)
+ ((4)
+ deviceid** pad~2)))
+ :type xcb:-switch)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (send-core :initarg :send-core :type xcb:BOOL)
+ (enable :initarg :enable :type xcb:BOOL)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (return-mode :initarg :return-mode :type xcb:CARD8)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (return-pointer :initarg :return-pointer :type xcb:xinput:DeviceId)
+ (return-keyboard :initarg :return-keyboard :type xcb:xinput:DeviceId)
+ (deviceid* :initarg :deviceid* :type xcb:xinput:DeviceId)
+ (master :initarg :master :type xcb:xinput:DeviceId)
+ (deviceid** :initarg :deviceid** :type xcb:xinput:DeviceId)
+ (pad~2 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIChangeHierarchy
+ (xcb:-request)
+ ((~opcode :initform 43 :type xcb:-u1)
+ (num-changes :initarg :num-changes :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (changes~ :initform
+ '(name changes type xcb:xinput:HierarchyChange size
+ (xcb:-fieldref 'num-changes))
+ :type xcb:-list)
+ (changes :initarg :changes :type xcb:-ignore)))
+
+(defclass xcb:xinput:XISetClientPointer
+ (xcb:-request)
+ ((~opcode :initform 44 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIGetClientPointer
+ (xcb:-request)
+ ((~opcode :initform 45 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xinput:XIGetClientPointer~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (set :initarg :set :type xcb:BOOL)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~2 :initform 20 :type xcb:-pad)))
+
+(defconst xcb:xinput:XIEventMask:DeviceChanged 2)
+(defconst xcb:xinput:XIEventMask:KeyPress 4)
+(defconst xcb:xinput:XIEventMask:KeyRelease 8)
+(defconst xcb:xinput:XIEventMask:ButtonPress 16)
+(defconst xcb:xinput:XIEventMask:ButtonRelease 32)
+(defconst xcb:xinput:XIEventMask:Motion 64)
+(defconst xcb:xinput:XIEventMask:Enter 128)
+(defconst xcb:xinput:XIEventMask:Leave 256)
+(defconst xcb:xinput:XIEventMask:FocusIn 512)
+(defconst xcb:xinput:XIEventMask:FocusOut 1024)
+(defconst xcb:xinput:XIEventMask:Hierarchy 2048)
+(defconst xcb:xinput:XIEventMask:Property 4096)
+(defconst xcb:xinput:XIEventMask:RawKeyPress 8192)
+(defconst xcb:xinput:XIEventMask:RawKeyRelease 16384)
+(defconst xcb:xinput:XIEventMask:RawButtonPress 32768)
+(defconst xcb:xinput:XIEventMask:RawButtonRelease 65536)
+(defconst xcb:xinput:XIEventMask:RawMotion 131072)
+(defconst xcb:xinput:XIEventMask:TouchBegin 262144)
+(defconst xcb:xinput:XIEventMask:TouchUpdate 524288)
+(defconst xcb:xinput:XIEventMask:TouchEnd 1048576)
+(defconst xcb:xinput:XIEventMask:TouchOwnership 2097152)
+(defconst xcb:xinput:XIEventMask:RawTouchBegin 4194304)
+(defconst xcb:xinput:XIEventMask:RawTouchUpdate 8388608)
+(defconst xcb:xinput:XIEventMask:RawTouchEnd 16777216)
+(defconst xcb:xinput:XIEventMask:BarrierHit 33554432)
+(defconst xcb:xinput:XIEventMask:BarrierLeave 67108864)
+
+(defclass xcb:xinput:EventMask
+ (xcb:-struct)
+ ((deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (mask-len :initarg :mask-len :type xcb:CARD16)
+ (mask~ :initform
+ '(name mask type xcb:CARD32 size
+ (xcb:-fieldref 'mask-len))
+ :type xcb:-list)
+ (mask :initarg :mask :type xcb:-ignore)))
+
+(defclass xcb:xinput:XISelectEvents
+ (xcb:-request)
+ ((~opcode :initform 46 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (num-mask :initarg :num-mask :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (masks~ :initform
+ '(name masks type xcb:xinput:EventMask size
+ (xcb:-fieldref 'num-mask))
+ :type xcb:-list)
+ (masks :initarg :masks :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIQueryVersion
+ (xcb:-request)
+ ((~opcode :initform 47 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+(defclass xcb:xinput:XIQueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defconst xcb:xinput:DeviceClassType:Key 0)
+(defconst xcb:xinput:DeviceClassType:Button 1)
+(defconst xcb:xinput:DeviceClassType:Valuator 2)
+(defconst xcb:xinput:DeviceClassType:Scroll 3)
+(defconst xcb:xinput:DeviceClassType:Touch 8)
+(defconst xcb:xinput:DeviceClassType:Gesture 9)
+
+(defconst xcb:xinput:DeviceType:MasterPointer 1)
+(defconst xcb:xinput:DeviceType:MasterKeyboard 2)
+(defconst xcb:xinput:DeviceType:SlavePointer 3)
+(defconst xcb:xinput:DeviceType:SlaveKeyboard 4)
+(defconst xcb:xinput:DeviceType:FloatingSlave 5)
+
+(defconst xcb:xinput:ScrollFlags:NoEmulation 1)
+(defconst xcb:xinput:ScrollFlags:Preferred 2)
+
+(defconst xcb:xinput:ScrollType:Vertical 1)
+(defconst xcb:xinput:ScrollType:Horizontal 2)
+
+(defconst xcb:xinput:TouchMode:Direct 1)
+(defconst xcb:xinput:TouchMode:Dependent 2)
+
+(defclass xcb:xinput:ButtonClass
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (num-buttons :initarg :num-buttons :type xcb:CARD16)
+ (state~ :initform
+ '(name state type xcb:CARD32 size
+ (/
+ (+
+ (xcb:-fieldref 'num-buttons)
+ 31)
+ 32))
+ :type xcb:-list)
+ (state :initarg :state :type xcb:-ignore)
+ (labels~ :initform
+ '(name labels type xcb:ATOM size
+ (xcb:-fieldref 'num-buttons))
+ :type xcb:-list)
+ (labels :initarg :labels :type xcb:-ignore)))
+
+(defclass xcb:xinput:KeyClass
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (num-keys :initarg :num-keys :type xcb:CARD16)
+ (keys~ :initform
+ '(name keys type xcb:CARD32 size
+ (xcb:-fieldref 'num-keys))
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defclass xcb:xinput:ScrollClass
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (number :initarg :number :type xcb:CARD16)
+ (scroll-type :initarg :scroll-type :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (increment :initarg :increment :type xcb:xinput:FP3232)))
+
+(defclass xcb:xinput:TouchClass
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (mode :initarg :mode :type xcb:CARD8)
+ (num-touches :initarg :num-touches :type xcb:CARD8)))
+
+(defclass xcb:xinput:GestureClass
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (num-touches :initarg :num-touches :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:xinput:ValuatorClass
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (number :initarg :number :type xcb:CARD16)
+ (label :initarg :label :type xcb:ATOM)
+ (min :initarg :min :type xcb:xinput:FP3232)
+ (max :initarg :max :type xcb:xinput:FP3232)
+ (value :initarg :value :type xcb:xinput:FP3232)
+ (resolution :initarg :resolution :type xcb:CARD32)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceClass
+ (xcb:-struct)
+ ((~size :initform
+ '(*
+ (xcb:-fieldref 'len)
+ 4))
+ (type :initarg :type :type xcb:CARD16)
+ (len :initarg :len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (data :initform
+ '(expression
+ (xcb:-fieldref 'type)
+ cases
+ (((0)
+ pad~0 num-keys keys~)
+ ((1)
+ pad~1 num-buttons state~ labels~)
+ ((2)
+ pad~2 number label min max value resolution mode pad~3)
+ ((3)
+ pad~4 number* scroll-type pad~5 flags increment)
+ ((8)
+ mode* num-touches)
+ ((9)
+ num-touches* pad~6)))
+ :type xcb:-switch)
+ (pad~0 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (num-keys :initarg :num-keys :type xcb:CARD16)
+ (keys~ :initform
+ '(name keys type xcb:CARD32 size
+ (xcb:-fieldref 'num-keys))
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)
+ (pad~1 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (num-buttons :initarg :num-buttons :type xcb:CARD16)
+ (state~ :initform
+ '(name state type xcb:CARD32 size
+ (/
+ (+
+ (xcb:-fieldref 'num-buttons)
+ 31)
+ 32))
+ :type xcb:-list)
+ (state :initarg :state :type xcb:-ignore)
+ (labels~ :initform
+ '(name labels type xcb:ATOM size
+ (xcb:-fieldref 'num-buttons))
+ :type xcb:-list)
+ (labels :initarg :labels :type xcb:-ignore)
+ (pad~2 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (number :initarg :number :type xcb:CARD16)
+ (label :initarg :label :type xcb:ATOM)
+ (min :initarg :min :type xcb:xinput:FP3232)
+ (max :initarg :max :type xcb:xinput:FP3232)
+ (value :initarg :value :type xcb:xinput:FP3232)
+ (resolution :initarg :resolution :type xcb:CARD32)
+ (mode :initarg :mode :type xcb:CARD8)
+ (pad~3 :initform 3 :type xcb:-pad)
+ (pad~4 :initform
+ [4 2]
+ :type xcb:-pad-align)
+ (number* :initarg :number* :type xcb:CARD16)
+ (scroll-type :initarg :scroll-type :type xcb:CARD16)
+ (pad~5 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (increment :initarg :increment :type xcb:xinput:FP3232)
+ (mode* :initarg :mode* :type xcb:CARD8)
+ (num-touches :initarg :num-touches :type xcb:CARD8)
+ (num-touches* :initarg :num-touches* :type xcb:CARD8)
+ (pad~6 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIDeviceInfo
+ (xcb:-struct)
+ ((deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (type :initarg :type :type xcb:CARD16)
+ (attachment :initarg :attachment :type xcb:xinput:DeviceId)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (enabled :initarg :enabled :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (classes~ :initform
+ '(name classes type xcb:xinput:DeviceClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIQueryDevice
+ (xcb:-request)
+ ((~opcode :initform 48 :type xcb:-u1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xinput:XIQueryDevice~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-infos :initarg :num-infos :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (infos~ :initform
+ '(name infos type xcb:xinput:XIDeviceInfo size
+ (xcb:-fieldref 'num-infos))
+ :type xcb:-list)
+ (infos :initarg :infos :type xcb:-ignore)))
+
+(defclass xcb:xinput:XISetFocus
+ (xcb:-request)
+ ((~opcode :initform 49 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIGetFocus
+ (xcb:-request)
+ ((~opcode :initform 50 :type xcb:-u1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xinput:XIGetFocus~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (focus :initarg :focus :type xcb:WINDOW)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defconst xcb:xinput:GrabOwner:NoOwner 0)
+(defconst xcb:xinput:GrabOwner:Owner 1)
+
+(defclass xcb:xinput:XIGrabDevice
+ (xcb:-request)
+ ((~opcode :initform 51 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (mode :initarg :mode :type xcb:CARD8)
+ (paired-device-mode :initarg :paired-device-mode :type xcb:CARD8)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (mask-len :initarg :mask-len :type xcb:CARD16)
+ (mask~ :initform
+ '(name mask type xcb:CARD32 size
+ (xcb:-fieldref 'mask-len))
+ :type xcb:-list)
+ (mask :initarg :mask :type xcb:-ignore)))
+(defclass xcb:xinput:XIGrabDevice~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~1 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIUngrabDevice
+ (xcb:-request)
+ ((~opcode :initform 52 :type xcb:-u1)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defconst xcb:xinput:EventMode:AsyncDevice 0)
+(defconst xcb:xinput:EventMode:SyncDevice 1)
+(defconst xcb:xinput:EventMode:ReplayDevice 2)
+(defconst xcb:xinput:EventMode:AsyncPairedDevice 3)
+(defconst xcb:xinput:EventMode:AsyncPair 4)
+(defconst xcb:xinput:EventMode:SyncPair 5)
+(defconst xcb:xinput:EventMode:AcceptTouch 6)
+(defconst xcb:xinput:EventMode:RejectTouch 7)
+
+(defclass xcb:xinput:XIAllowEvents
+ (xcb:-request)
+ ((~opcode :initform 53 :type xcb:-u1)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (event-mode :initarg :event-mode :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (touchid :initarg :touchid :type xcb:CARD32)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)))
+
+(defconst xcb:xinput:GrabMode22:Sync 0)
+(defconst xcb:xinput:GrabMode22:Async 1)
+(defconst xcb:xinput:GrabMode22:Touch 2)
+
+(defconst xcb:xinput:GrabType:Button 0)
+(defconst xcb:xinput:GrabType:Keycode 1)
+(defconst xcb:xinput:GrabType:Enter 2)
+(defconst xcb:xinput:GrabType:FocusIn 3)
+(defconst xcb:xinput:GrabType:TouchBegin 4)
+(defconst xcb:xinput:GrabType:GesturePinchBegin 5)
+(defconst xcb:xinput:GrabType:GestureSwipeBegin 6)
+
+(defclass xcb:xinput:GrabModifierInfo
+ (xcb:-struct)
+ ((modifiers :initarg :modifiers :type xcb:CARD32)
+ (status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xinput:XIPassiveGrabDevice
+ (xcb:-request)
+ ((~opcode :initform 54 :type xcb:-u1)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (detail :initarg :detail :type xcb:CARD32)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (num-modifiers :initarg :num-modifiers :type xcb:CARD16)
+ (mask-len :initarg :mask-len :type xcb:CARD16)
+ (grab-type :initarg :grab-type :type xcb:CARD8)
+ (grab-mode :initarg :grab-mode :type xcb:CARD8)
+ (paired-device-mode :initarg :paired-device-mode :type xcb:CARD8)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (mask~ :initform
+ '(name mask type xcb:CARD32 size
+ (xcb:-fieldref 'mask-len))
+ :type xcb:-list)
+ (mask :initarg :mask :type xcb:-ignore)
+ (modifiers~ :initform
+ '(name modifiers type xcb:CARD32 size
+ (xcb:-fieldref 'num-modifiers))
+ :type xcb:-list)
+ (modifiers :initarg :modifiers :type xcb:-ignore)))
+(defclass xcb:xinput:XIPassiveGrabDevice~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-modifiers :initarg :num-modifiers :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (modifiers~ :initform
+ '(name modifiers type xcb:xinput:GrabModifierInfo size
+ (xcb:-fieldref 'num-modifiers))
+ :type xcb:-list)
+ (modifiers :initarg :modifiers :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIPassiveUngrabDevice
+ (xcb:-request)
+ ((~opcode :initform 55 :type xcb:-u1)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (detail :initarg :detail :type xcb:CARD32)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (num-modifiers :initarg :num-modifiers :type xcb:CARD16)
+ (grab-type :initarg :grab-type :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (modifiers~ :initform
+ '(name modifiers type xcb:CARD32 size
+ (xcb:-fieldref 'num-modifiers))
+ :type xcb:-list)
+ (modifiers :initarg :modifiers :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIListProperties
+ (xcb:-request)
+ ((~opcode :initform 56 :type xcb:-u1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xinput:XIListProperties~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-properties :initarg :num-properties :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (properties~ :initform
+ '(name properties type xcb:ATOM size
+ (xcb:-fieldref 'num-properties))
+ :type xcb:-list)
+ (properties :initarg :properties :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIChangeProperty
+ (xcb:-request)
+ ((~opcode :initform 57 :type xcb:-u1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (mode :initarg :mode :type xcb:CARD8)
+ (format :initarg :format :type xcb:CARD8)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (items :initform
+ '(expression
+ (xcb:-fieldref 'format)
+ cases
+ (((8)
+ data8~ pad~0)
+ ((16)
+ data16~ pad~1)
+ ((32)
+ data32~)))
+ :type xcb:-switch)
+ (data8~ :initform
+ '(name data8 type xcb:CARD8 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data8 :initarg :data8 :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (data16~ :initform
+ '(name data16 type xcb:CARD16 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data16 :initarg :data16 :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (data32~ :initform
+ '(name data32 type xcb:CARD32 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data32 :initarg :data32 :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIDeleteProperty
+ (xcb:-request)
+ ((~opcode :initform 58 :type xcb:-u1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (property :initarg :property :type xcb:ATOM)))
+
+(defclass xcb:xinput:XIGetProperty
+ (xcb:-request)
+ ((~opcode :initform 59 :type xcb:-u1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (delete :initarg :delete :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (offset :initarg :offset :type xcb:CARD32)
+ (len :initarg :len :type xcb:CARD32)))
+(defclass xcb:xinput:XIGetProperty~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (type :initarg :type :type xcb:ATOM)
+ (bytes-after :initarg :bytes-after :type xcb:CARD32)
+ (num-items :initarg :num-items :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD8)
+ (pad~1 :initform 11 :type xcb:-pad)
+ (items :initform
+ '(expression
+ (xcb:-fieldref 'format)
+ cases
+ (((8)
+ data8~ pad~2)
+ ((16)
+ data16~ pad~3)
+ ((32)
+ data32~)))
+ :type xcb:-switch)
+ (data8~ :initform
+ '(name data8 type xcb:CARD8 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data8 :initarg :data8 :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)
+ (data16~ :initform
+ '(name data16 type xcb:CARD16 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data16 :initarg :data16 :type xcb:-ignore)
+ (pad~3 :initform 4 :type xcb:-pad-align)
+ (data32~ :initform
+ '(name data32 type xcb:CARD32 size
+ (xcb:-fieldref 'num-items))
+ :type xcb:-list)
+ (data32 :initarg :data32 :type xcb:-ignore)))
+
+(defclass xcb:xinput:XIGetSelectedEvents
+ (xcb:-request)
+ ((~opcode :initform 60 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xinput:XIGetSelectedEvents~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-masks :initarg :num-masks :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (masks~ :initform
+ '(name masks type xcb:xinput:EventMask size
+ (xcb:-fieldref 'num-masks))
+ :type xcb:-list)
+ (masks :initarg :masks :type xcb:-ignore)))
+
+(defclass xcb:xinput:BarrierReleasePointerInfo
+ (xcb:-struct)
+ ((deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (barrier :initarg :barrier :type xcb:xfixes:BARRIER)
+ (eventid :initarg :eventid :type xcb:CARD32)))
+
+(defclass xcb:xinput:XIBarrierReleasePointer
+ (xcb:-request)
+ ((~opcode :initform 61 :type xcb:-u1)
+ (num-barriers :initarg :num-barriers :type xcb:CARD32)
+ (barriers~ :initform
+ '(name barriers type xcb:xinput:BarrierReleasePointerInfo size
+ (xcb:-fieldref 'num-barriers))
+ :type xcb:-list)
+ (barriers :initarg :barriers :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceValuator
+ (xcb:-event)
+ ((~code :initform 0)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (device-state :initarg :device-state :type xcb:CARD16)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (first-valuator :initarg :first-valuator :type xcb:CARD8)
+ (valuators~ :initform
+ '(name valuators type xcb:INT32 size 6)
+ :type xcb:-list)
+ (valuators :initarg :valuators :type xcb:-ignore)))
+
+(defconst xcb:xinput:MoreEventsMask:MoreEvents 128)
+
+(defclass xcb:xinput:DeviceKeyPress
+ (xcb:-event)
+ ((~code :initform 1)
+ (detail :initarg :detail :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:INT16)
+ (root-y :initarg :root-y :type xcb:INT16)
+ (event-x :initarg :event-x :type xcb:INT16)
+ (event-y :initarg :event-y :type xcb:INT16)
+ (state :initarg :state :type xcb:CARD16)
+ (same-screen :initarg :same-screen :type xcb:BOOL)
+ (device-id :initarg :device-id :type xcb:CARD8)))
+
+(defclass xcb:xinput:DeviceKeyRelease
+ (xcb:xinput:DeviceKeyPress)
+ ((~code :initform 2)))
+
+(defclass xcb:xinput:DeviceButtonPress
+ (xcb:xinput:DeviceKeyPress)
+ ((~code :initform 3)))
+
+(defclass xcb:xinput:DeviceButtonRelease
+ (xcb:xinput:DeviceKeyPress)
+ ((~code :initform 4)))
+
+(defclass xcb:xinput:DeviceMotionNotify
+ (xcb:xinput:DeviceKeyPress)
+ ((~code :initform 5)))
+
+(defclass xcb:xinput:DeviceFocusIn
+ (xcb:-event)
+ ((~code :initform 6)
+ (detail :initarg :detail :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (window :initarg :window :type xcb:WINDOW)
+ (mode :initarg :mode :type xcb:BYTE)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (pad~0 :initform 18 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceFocusOut
+ (xcb:xinput:DeviceFocusIn)
+ ((~code :initform 7)))
+
+(defclass xcb:xinput:ProximityIn
+ (xcb:xinput:DeviceKeyPress)
+ ((~code :initform 8)))
+
+(defclass xcb:xinput:ProximityOut
+ (xcb:xinput:DeviceKeyPress)
+ ((~code :initform 9)))
+
+(defconst xcb:xinput:ClassesReportedMask:OutOfProximity 128)
+(defconst xcb:xinput:ClassesReportedMask:DeviceModeAbsolute 64)
+(defconst xcb:xinput:ClassesReportedMask:ReportingValuators 4)
+(defconst xcb:xinput:ClassesReportedMask:ReportingButtons 2)
+(defconst xcb:xinput:ClassesReportedMask:ReportingKeys 1)
+
+(defclass xcb:xinput:DeviceStateNotify
+ (xcb:-event)
+ ((~code :initform 10)
+ (device-id :initarg :device-id :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (num-keys :initarg :num-keys :type xcb:CARD8)
+ (num-buttons :initarg :num-buttons :type xcb:CARD8)
+ (num-valuators :initarg :num-valuators :type xcb:CARD8)
+ (classes-reported :initarg :classes-reported :type xcb:CARD8)
+ (buttons~ :initform
+ '(name buttons type xcb:CARD8 size 4)
+ :type xcb:-list)
+ (buttons :initarg :buttons :type xcb:-ignore)
+ (keys~ :initform
+ '(name keys type xcb:CARD8 size 4)
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)
+ (valuators~ :initform
+ '(name valuators type xcb:CARD32 size 3)
+ :type xcb:-list)
+ (valuators :initarg :valuators :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceMappingNotify
+ (xcb:-event)
+ ((~code :initform 11)
+ (device-id :initarg :device-id :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (request :initarg :request :type xcb:CARD8)
+ (first-keycode :initarg :first-keycode :type xcb:xinput:KeyCode)
+ (count :initarg :count :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defconst xcb:xinput:ChangeDevice:NewPointer 0)
+(defconst xcb:xinput:ChangeDevice:NewKeyboard 1)
+
+(defclass xcb:xinput:ChangeDeviceNotify
+ (xcb:-event)
+ ((~code :initform 12)
+ (device-id :initarg :device-id :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (request :initarg :request :type xcb:CARD8)
+ (pad~0 :initform 23 :type xcb:-pad)))
+
+(defclass xcb:xinput:DeviceKeyStateNotify
+ (xcb:-event)
+ ((~code :initform 13)
+ (device-id :initarg :device-id :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (keys~ :initform
+ '(name keys type xcb:CARD8 size 28)
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defclass xcb:xinput:DeviceButtonStateNotify
+ (xcb:-event)
+ ((~code :initform 14)
+ (device-id :initarg :device-id :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (buttons~ :initform
+ '(name buttons type xcb:CARD8 size 28)
+ :type xcb:-list)
+ (buttons :initarg :buttons :type xcb:-ignore)))
+
+(defconst xcb:xinput:DeviceChange:Added 0)
+(defconst xcb:xinput:DeviceChange:Removed 1)
+(defconst xcb:xinput:DeviceChange:Enabled 2)
+(defconst xcb:xinput:DeviceChange:Disabled 3)
+(defconst xcb:xinput:DeviceChange:Unrecoverable 4)
+(defconst xcb:xinput:DeviceChange:ControlChanged 5)
+
+(defclass xcb:xinput:DevicePresenceNotify
+ (xcb:-event)
+ ((~code :initform 15)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (devchange :initarg :devchange :type xcb:BYTE)
+ (device-id :initarg :device-id :type xcb:BYTE)
+ (control :initarg :control :type xcb:CARD16)
+ (pad~1 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:xinput:DevicePropertyNotify
+ (xcb:-event)
+ ((~code :initform 16)
+ (state :initarg :state :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (property :initarg :property :type xcb:ATOM)
+ (pad~0 :initform 19 :type xcb:-pad)
+ (device-id :initarg :device-id :type xcb:CARD8)))
+
+(defconst xcb:xinput:ChangeReason:SlaveSwitch 1)
+(defconst xcb:xinput:ChangeReason:DeviceChange 2)
+
+(defclass xcb:xinput:DeviceChanged
+ (xcb:-generic-event)
+ ((~evtype :initform 1)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (reason :initarg :reason :type xcb:CARD8)
+ (pad~0 :initform 11 :type xcb:-pad)
+ (classes~ :initform
+ '(name classes type xcb:xinput:DeviceClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defconst xcb:xinput:KeyEventFlags:KeyRepeat 65536)
+
+(defclass xcb:xinput:KeyPress
+ (xcb:-generic-event)
+ ((~evtype :initform 2)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (event-x :initarg :event-x :type xcb:xinput:FP1616)
+ (event-y :initarg :event-y :type xcb:xinput:FP1616)
+ (buttons-len :initarg :buttons-len :type xcb:CARD16)
+ (valuators-len :initarg :valuators-len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (button-mask~ :initform
+ '(name button-mask type xcb:CARD32 size
+ (xcb:-fieldref 'buttons-len))
+ :type xcb:-list)
+ (button-mask :initarg :button-mask :type xcb:-ignore)
+ (valuator-mask~ :initform
+ '(name valuator-mask type xcb:CARD32 size
+ (xcb:-fieldref 'valuators-len))
+ :type xcb:-list)
+ (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)))
+
+(defclass xcb:xinput:KeyRelease
+ (xcb:xinput:KeyPress)
+ ((~evtype :initform 3)))
+
+(defconst xcb:xinput:PointerEventFlags:PointerEmulated 65536)
+
+(defclass xcb:xinput:ButtonPress
+ (xcb:-generic-event)
+ ((~evtype :initform 4)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (event-x :initarg :event-x :type xcb:xinput:FP1616)
+ (event-y :initarg :event-y :type xcb:xinput:FP1616)
+ (buttons-len :initarg :buttons-len :type xcb:CARD16)
+ (valuators-len :initarg :valuators-len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (button-mask~ :initform
+ '(name button-mask type xcb:CARD32 size
+ (xcb:-fieldref 'buttons-len))
+ :type xcb:-list)
+ (button-mask :initarg :button-mask :type xcb:-ignore)
+ (valuator-mask~ :initform
+ '(name valuator-mask type xcb:CARD32 size
+ (xcb:-fieldref 'valuators-len))
+ :type xcb:-list)
+ (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)))
+
+(defclass xcb:xinput:ButtonRelease
+ (xcb:xinput:ButtonPress)
+ ((~evtype :initform 5)))
+
+(defclass xcb:xinput:Motion
+ (xcb:xinput:ButtonPress)
+ ((~evtype :initform 6)))
+
+(defconst xcb:xinput:NotifyMode:Normal 0)
+(defconst xcb:xinput:NotifyMode:Grab 1)
+(defconst xcb:xinput:NotifyMode:Ungrab 2)
+(defconst xcb:xinput:NotifyMode:WhileGrabbed 3)
+(defconst xcb:xinput:NotifyMode:PassiveGrab 4)
+(defconst xcb:xinput:NotifyMode:PassiveUngrab 5)
+
+(defconst xcb:xinput:NotifyDetail:Ancestor 0)
+(defconst xcb:xinput:NotifyDetail:Virtual 1)
+(defconst xcb:xinput:NotifyDetail:Inferior 2)
+(defconst xcb:xinput:NotifyDetail:Nonlinear 3)
+(defconst xcb:xinput:NotifyDetail:NonlinearVirtual 4)
+(defconst xcb:xinput:NotifyDetail:Pointer 5)
+(defconst xcb:xinput:NotifyDetail:PointerRoot 6)
+(defconst xcb:xinput:NotifyDetail:None 7)
+
+(defclass xcb:xinput:Enter
+ (xcb:-generic-event)
+ ((~evtype :initform 7)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (mode :initarg :mode :type xcb:CARD8)
+ (detail :initarg :detail :type xcb:CARD8)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (event-x :initarg :event-x :type xcb:xinput:FP1616)
+ (event-y :initarg :event-y :type xcb:xinput:FP1616)
+ (same-screen :initarg :same-screen :type xcb:BOOL)
+ (focus :initarg :focus :type xcb:BOOL)
+ (buttons-len :initarg :buttons-len :type xcb:CARD16)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (buttons~ :initform
+ '(name buttons type xcb:CARD32 size
+ (xcb:-fieldref 'buttons-len))
+ :type xcb:-list)
+ (buttons :initarg :buttons :type xcb:-ignore)))
+
+(defclass xcb:xinput:Leave
+ (xcb:xinput:Enter)
+ ((~evtype :initform 8)))
+
+(defclass xcb:xinput:FocusIn
+ (xcb:xinput:Enter)
+ ((~evtype :initform 9)))
+
+(defclass xcb:xinput:FocusOut
+ (xcb:xinput:Enter)
+ ((~evtype :initform 10)))
+
+(defconst xcb:xinput:HierarchyMask:MasterAdded 1)
+(defconst xcb:xinput:HierarchyMask:MasterRemoved 2)
+(defconst xcb:xinput:HierarchyMask:SlaveAdded 4)
+(defconst xcb:xinput:HierarchyMask:SlaveRemoved 8)
+(defconst xcb:xinput:HierarchyMask:SlaveAttached 16)
+(defconst xcb:xinput:HierarchyMask:SlaveDetached 32)
+(defconst xcb:xinput:HierarchyMask:DeviceEnabled 64)
+(defconst xcb:xinput:HierarchyMask:DeviceDisabled 128)
+
+(defclass xcb:xinput:HierarchyInfo
+ (xcb:-struct)
+ ((deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (attachment :initarg :attachment :type xcb:xinput:DeviceId)
+ (type :initarg :type :type xcb:CARD8)
+ (enabled :initarg :enabled :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)))
+
+(defclass xcb:xinput:Hierarchy
+ (xcb:-generic-event)
+ ((~evtype :initform 11)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (flags :initarg :flags :type xcb:CARD32)
+ (num-infos :initarg :num-infos :type xcb:CARD16)
+ (pad~0 :initform 10 :type xcb:-pad)
+ (infos~ :initform
+ '(name infos type xcb:xinput:HierarchyInfo size
+ (xcb:-fieldref 'num-infos))
+ :type xcb:-list)
+ (infos :initarg :infos :type xcb:-ignore)))
+
+(defconst xcb:xinput:PropertyFlag:Deleted 0)
+(defconst xcb:xinput:PropertyFlag:Created 1)
+(defconst xcb:xinput:PropertyFlag:Modified 2)
+
+(defclass xcb:xinput:Property
+ (xcb:-generic-event)
+ ((~evtype :initform 12)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (property :initarg :property :type xcb:ATOM)
+ (what :initarg :what :type xcb:CARD8)
+ (pad~0 :initform 11 :type xcb:-pad)))
+
+(defclass xcb:xinput:RawKeyPress
+ (xcb:-generic-event)
+ ((~evtype :initform 13)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (valuators-len :initarg :valuators-len :type xcb:CARD16)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)
+ (valuator-mask~ :initform
+ '(name valuator-mask type xcb:CARD32 size
+ (xcb:-fieldref 'valuators-len))
+ :type xcb:-list)
+ (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)
+ (axisvalues-raw~ :initform
+ '(name axisvalues-raw type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues-raw :initarg :axisvalues-raw :type xcb:-ignore)))
+
+(defclass xcb:xinput:RawKeyRelease
+ (xcb:xinput:RawKeyPress)
+ ((~evtype :initform 14)))
+
+(defclass xcb:xinput:RawButtonPress
+ (xcb:-generic-event)
+ ((~evtype :initform 15)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (valuators-len :initarg :valuators-len :type xcb:CARD16)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)
+ (valuator-mask~ :initform
+ '(name valuator-mask type xcb:CARD32 size
+ (xcb:-fieldref 'valuators-len))
+ :type xcb:-list)
+ (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)
+ (axisvalues-raw~ :initform
+ '(name axisvalues-raw type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues-raw :initarg :axisvalues-raw :type xcb:-ignore)))
+
+(defclass xcb:xinput:RawButtonRelease
+ (xcb:xinput:RawButtonPress)
+ ((~evtype :initform 16)))
+
+(defclass xcb:xinput:RawMotion
+ (xcb:xinput:RawButtonPress)
+ ((~evtype :initform 17)))
+
+(defconst xcb:xinput:TouchEventFlags:TouchPendingEnd 65536)
+(defconst xcb:xinput:TouchEventFlags:TouchEmulatingPointer 131072)
+
+(defclass xcb:xinput:TouchBegin
+ (xcb:-generic-event)
+ ((~evtype :initform 18)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (event-x :initarg :event-x :type xcb:xinput:FP1616)
+ (event-y :initarg :event-y :type xcb:xinput:FP1616)
+ (buttons-len :initarg :buttons-len :type xcb:CARD16)
+ (valuators-len :initarg :valuators-len :type xcb:CARD16)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (button-mask~ :initform
+ '(name button-mask type xcb:CARD32 size
+ (xcb:-fieldref 'buttons-len))
+ :type xcb:-list)
+ (button-mask :initarg :button-mask :type xcb:-ignore)
+ (valuator-mask~ :initform
+ '(name valuator-mask type xcb:CARD32 size
+ (xcb:-fieldref 'valuators-len))
+ :type xcb:-list)
+ (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)))
+
+(defclass xcb:xinput:TouchUpdate
+ (xcb:xinput:TouchBegin)
+ ((~evtype :initform 19)))
+
+(defclass xcb:xinput:TouchEnd
+ (xcb:xinput:TouchBegin)
+ ((~evtype :initform 20)))
+
+(defconst xcb:xinput:TouchOwnershipFlags:None 0)
+
+(defclass xcb:xinput:TouchOwnership
+ (xcb:-generic-event)
+ ((~evtype :initform 21)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (touchid :initarg :touchid :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xinput:RawTouchBegin
+ (xcb:-generic-event)
+ ((~evtype :initform 22)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (valuators-len :initarg :valuators-len :type xcb:CARD16)
+ (flags :initarg :flags :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)
+ (valuator-mask~ :initform
+ '(name valuator-mask type xcb:CARD32 size
+ (xcb:-fieldref 'valuators-len))
+ :type xcb:-list)
+ (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
+ (axisvalues~ :initform
+ '(name axisvalues type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues :initarg :axisvalues :type xcb:-ignore)
+ (axisvalues-raw~ :initform
+ '(name axisvalues-raw type xcb:xinput:FP3232 size
+ (apply #'+
+ (mapcar
+ (lambda
+ (i)
+ (eval
+ '(logcount obj)
+ (list
+ (nconc
+ '(obj)
+ i))))
+ (slot-value obj 'valuator-mask))))
+ :type xcb:-list)
+ (axisvalues-raw :initarg :axisvalues-raw :type xcb:-ignore)))
+
+(defclass xcb:xinput:RawTouchUpdate
+ (xcb:xinput:RawTouchBegin)
+ ((~evtype :initform 23)))
+
+(defclass xcb:xinput:RawTouchEnd
+ (xcb:xinput:RawTouchBegin)
+ ((~evtype :initform 24)))
+
+(defconst xcb:xinput:BarrierFlags:PointerReleased 1)
+(defconst xcb:xinput:BarrierFlags:DeviceIsGrabbed 2)
+
+(defclass xcb:xinput:BarrierHit
+ (xcb:-generic-event)
+ ((~evtype :initform 25)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (eventid :initarg :eventid :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (barrier :initarg :barrier :type xcb:xfixes:BARRIER)
+ (dtime :initarg :dtime :type xcb:CARD32)
+ (flags :initarg :flags :type xcb:CARD32)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (dx :initarg :dx :type xcb:xinput:FP3232)
+ (dy :initarg :dy :type xcb:xinput:FP3232)))
+
+(defclass xcb:xinput:BarrierLeave
+ (xcb:xinput:BarrierHit)
+ ((~evtype :initform 26)))
+
+(defconst xcb:xinput:GesturePinchEventFlags:GesturePinchCancelled 1)
+
+(defclass xcb:xinput:GesturePinchBegin
+ (xcb:-generic-event)
+ ((~evtype :initform 27)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (event-x :initarg :event-x :type xcb:xinput:FP1616)
+ (event-y :initarg :event-y :type xcb:xinput:FP1616)
+ (delta-x :initarg :delta-x :type xcb:xinput:FP1616)
+ (delta-y :initarg :delta-y :type xcb:xinput:FP1616)
+ (delta-unaccel-x :initarg :delta-unaccel-x :type xcb:xinput:FP1616)
+ (delta-unaccel-y :initarg :delta-unaccel-y :type xcb:xinput:FP1616)
+ (scale :initarg :scale :type xcb:xinput:FP1616)
+ (delta-angle :initarg :delta-angle :type xcb:xinput:FP1616)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (flags :initarg :flags :type xcb:CARD32)))
+
+(defclass xcb:xinput:GesturePinchUpdate
+ (xcb:xinput:GesturePinchBegin)
+ ((~evtype :initform 28)))
+
+(defclass xcb:xinput:GesturePinchEnd
+ (xcb:xinput:GesturePinchBegin)
+ ((~evtype :initform 29)))
+
+(defconst xcb:xinput:GestureSwipeEventFlags:GestureSwipeCancelled 1)
+
+(defclass xcb:xinput:GestureSwipeBegin
+ (xcb:-generic-event)
+ ((~evtype :initform 30)
+ (deviceid :initarg :deviceid :type xcb:xinput:DeviceId)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (detail :initarg :detail :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:xinput:FP1616)
+ (root-y :initarg :root-y :type xcb:xinput:FP1616)
+ (event-x :initarg :event-x :type xcb:xinput:FP1616)
+ (event-y :initarg :event-y :type xcb:xinput:FP1616)
+ (delta-x :initarg :delta-x :type xcb:xinput:FP1616)
+ (delta-y :initarg :delta-y :type xcb:xinput:FP1616)
+ (delta-unaccel-x :initarg :delta-unaccel-x :type xcb:xinput:FP1616)
+ (delta-unaccel-y :initarg :delta-unaccel-y :type xcb:xinput:FP1616)
+ (sourceid :initarg :sourceid :type xcb:xinput:DeviceId)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (mods :initarg :mods :type xcb:xinput:ModifierInfo)
+ (group :initarg :group :type xcb:xinput:GroupInfo)
+ (flags :initarg :flags :type xcb:CARD32)))
+
+(defclass xcb:xinput:GestureSwipeUpdate
+ (xcb:xinput:GestureSwipeBegin)
+ ((~evtype :initform 31)))
+
+(defclass xcb:xinput:GestureSwipeEnd
+ (xcb:xinput:GestureSwipeBegin)
+ ((~evtype :initform 32)))
+
+(defclass xcb:xinput:EventForSend
+ (xcb:-event)
+ nil)
+
+(defclass xcb:xinput:SendExtensionEvent
+ (xcb:-request)
+ ((~opcode :initform 31 :type xcb:-u1)
+ (destination :initarg :destination :type xcb:WINDOW)
+ (device-id :initarg :device-id :type xcb:CARD8)
+ (propagate :initarg :propagate :type xcb:BOOL)
+ (num-classes :initarg :num-classes :type xcb:CARD16)
+ (num-events :initarg :num-events :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (events~ :initform
+ '(name events type xcb:xinput:EventForSend size
+ (xcb:-fieldref 'num-events))
+ :type xcb:-list)
+ (events :initarg :events :type xcb:-ignore)
+ (classes~ :initform
+ '(name classes type xcb:xinput:EventClass size
+ (xcb:-fieldref 'num-classes))
+ :type xcb:-list)
+ (classes :initarg :classes :type xcb:-ignore)))
+
+(defclass xcb:xinput:Device
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:xinput:Event
+ (xcb:-error)
+ ((~code :initform 1)))
+
+(defclass xcb:xinput:Mode
+ (xcb:-error)
+ ((~code :initform 2)))
+
+(defclass xcb:xinput:DeviceBusy
+ (xcb:-error)
+ ((~code :initform 3)))
+
+(defclass xcb:xinput:Class
+ (xcb:-error)
+ ((~code :initform 4)))
+
+(defconst xcb:xinput:error-number-class-alist
+ '((0 . xcb:xinput:Device)
+ (1 . xcb:xinput:Event)
+ (2 . xcb:xinput:Mode)
+ (3 . xcb:xinput:DeviceBusy)
+ (4 . xcb:xinput:Class))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:xinput:event-number-class-alist
+ '((0 . xcb:xinput:DeviceValuator)
+ (1 . xcb:xinput:DeviceKeyPress)
+ (2 . xcb:xinput:DeviceKeyRelease)
+ (3 . xcb:xinput:DeviceButtonPress)
+ (4 . xcb:xinput:DeviceButtonRelease)
+ (5 . xcb:xinput:DeviceMotionNotify)
+ (6 . xcb:xinput:DeviceFocusIn)
+ (7 . xcb:xinput:DeviceFocusOut)
+ (8 . xcb:xinput:ProximityIn)
+ (9 . xcb:xinput:ProximityOut)
+ (10 . xcb:xinput:DeviceStateNotify)
+ (11 . xcb:xinput:DeviceMappingNotify)
+ (12 . xcb:xinput:ChangeDeviceNotify)
+ (13 . xcb:xinput:DeviceKeyStateNotify)
+ (14 . xcb:xinput:DeviceButtonStateNotify)
+ (15 . xcb:xinput:DevicePresenceNotify)
+ (16 . xcb:xinput:DevicePropertyNotify))
+ "(event-number . event-class) alist.")
+
+(defconst xcb:xinput:xge-number-class-alist
+ '((1 . xcb:xinput:DeviceChanged)
+ (2 . xcb:xinput:KeyPress)
+ (3 . xcb:xinput:KeyRelease)
+ (4 . xcb:xinput:ButtonPress)
+ (5 . xcb:xinput:ButtonRelease)
+ (6 . xcb:xinput:Motion)
+ (7 . xcb:xinput:Enter)
+ (8 . xcb:xinput:Leave)
+ (9 . xcb:xinput:FocusIn)
+ (10 . xcb:xinput:FocusOut)
+ (11 . xcb:xinput:Hierarchy)
+ (12 . xcb:xinput:Property)
+ (13 . xcb:xinput:RawKeyPress)
+ (14 . xcb:xinput:RawKeyRelease)
+ (15 . xcb:xinput:RawButtonPress)
+ (16 . xcb:xinput:RawButtonRelease)
+ (17 . xcb:xinput:RawMotion)
+ (18 . xcb:xinput:TouchBegin)
+ (19 . xcb:xinput:TouchUpdate)
+ (20 . xcb:xinput:TouchEnd)
+ (21 . xcb:xinput:TouchOwnership)
+ (22 . xcb:xinput:RawTouchBegin)
+ (23 . xcb:xinput:RawTouchUpdate)
+ (24 . xcb:xinput:RawTouchEnd)
+ (25 . xcb:xinput:BarrierHit)
+ (26 . xcb:xinput:BarrierLeave)
+ (27 . xcb:xinput:GesturePinchBegin)
+ (28 . xcb:xinput:GesturePinchUpdate)
+ (29 . xcb:xinput:GesturePinchEnd)
+ (30 . xcb:xinput:GestureSwipeBegin)
+ (31 . xcb:xinput:GestureSwipeUpdate)
+ (32 . xcb:xinput:GestureSwipeEnd))
+ "(xge-number . event-class) alist.")
+
+
+
+(provide 'xcb-xinput)
+
+;;; xcb-xinput.el ends here
diff --git a/elpa/xelb-0.20/xcb-xinput.elc b/elpa/xelb-0.20/xcb-xinput.elc
new file mode 100644
index 0000000..fc95d81
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xinput.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xkb.el b/elpa/xelb-0.20/xcb-xkb.el
new file mode 100644
index 0000000..5f20c43
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xkb.el
@@ -0,0 +1,2315 @@
+;;; xcb-xkb.el --- X11 xkb extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xkb.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xkb:-extension-xname "XKEYBOARD")
+(defconst xcb:xkb:-extension-name "xkb")
+(defconst xcb:xkb:-major-version 1)
+(defconst xcb:xkb:-minor-version 0)
+
+(require 'xcb-xproto)
+
+(defconst xcb:xkb:Const:MaxLegalKeyCode 255)
+(defconst xcb:xkb:Const:PerKeyBitArraySize 32)
+(defconst xcb:xkb:Const:KeyNameLength 4)
+
+(defconst xcb:xkb:EventType:NewKeyboardNotify 1)
+(defconst xcb:xkb:EventType:MapNotify 2)
+(defconst xcb:xkb:EventType:StateNotify 4)
+(defconst xcb:xkb:EventType:ControlsNotify 8)
+(defconst xcb:xkb:EventType:IndicatorStateNotify 16)
+(defconst xcb:xkb:EventType:IndicatorMapNotify 32)
+(defconst xcb:xkb:EventType:NamesNotify 64)
+(defconst xcb:xkb:EventType:CompatMapNotify 128)
+(defconst xcb:xkb:EventType:BellNotify 256)
+(defconst xcb:xkb:EventType:ActionMessage 512)
+(defconst xcb:xkb:EventType:AccessXNotify 1024)
+(defconst xcb:xkb:EventType:ExtensionDeviceNotify 2048)
+
+(defconst xcb:xkb:NKNDetail:Keycodes 1)
+(defconst xcb:xkb:NKNDetail:Geometry 2)
+(defconst xcb:xkb:NKNDetail:DeviceID 4)
+
+(defconst xcb:xkb:AXNDetail:SKPress 1)
+(defconst xcb:xkb:AXNDetail:SKAccept 2)
+(defconst xcb:xkb:AXNDetail:SKReject 4)
+(defconst xcb:xkb:AXNDetail:SKRelease 8)
+(defconst xcb:xkb:AXNDetail:BKAccept 16)
+(defconst xcb:xkb:AXNDetail:BKReject 32)
+(defconst xcb:xkb:AXNDetail:AXKWarning 64)
+
+(defconst xcb:xkb:MapPart:KeyTypes 1)
+(defconst xcb:xkb:MapPart:KeySyms 2)
+(defconst xcb:xkb:MapPart:ModifierMap 4)
+(defconst xcb:xkb:MapPart:ExplicitComponents 8)
+(defconst xcb:xkb:MapPart:KeyActions 16)
+(defconst xcb:xkb:MapPart:KeyBehaviors 32)
+(defconst xcb:xkb:MapPart:VirtualMods 64)
+(defconst xcb:xkb:MapPart:VirtualModMap 128)
+
+(defconst xcb:xkb:SetMapFlags:ResizeTypes 1)
+(defconst xcb:xkb:SetMapFlags:RecomputeActions 2)
+
+(defconst xcb:xkb:StatePart:ModifierState 1)
+(defconst xcb:xkb:StatePart:ModifierBase 2)
+(defconst xcb:xkb:StatePart:ModifierLatch 4)
+(defconst xcb:xkb:StatePart:ModifierLock 8)
+(defconst xcb:xkb:StatePart:GroupState 16)
+(defconst xcb:xkb:StatePart:GroupBase 32)
+(defconst xcb:xkb:StatePart:GroupLatch 64)
+(defconst xcb:xkb:StatePart:GroupLock 128)
+(defconst xcb:xkb:StatePart:CompatState 256)
+(defconst xcb:xkb:StatePart:GrabMods 512)
+(defconst xcb:xkb:StatePart:CompatGrabMods 1024)
+(defconst xcb:xkb:StatePart:LookupMods 2048)
+(defconst xcb:xkb:StatePart:CompatLookupMods 4096)
+(defconst xcb:xkb:StatePart:PointerButtons 8192)
+
+(defconst xcb:xkb:BoolCtrl:RepeatKeys 1)
+(defconst xcb:xkb:BoolCtrl:SlowKeys 2)
+(defconst xcb:xkb:BoolCtrl:BounceKeys 4)
+(defconst xcb:xkb:BoolCtrl:StickyKeys 8)
+(defconst xcb:xkb:BoolCtrl:MouseKeys 16)
+(defconst xcb:xkb:BoolCtrl:MouseKeysAccel 32)
+(defconst xcb:xkb:BoolCtrl:AccessXKeys 64)
+(defconst xcb:xkb:BoolCtrl:AccessXTimeoutMask 128)
+(defconst xcb:xkb:BoolCtrl:AccessXFeedbackMask 256)
+(defconst xcb:xkb:BoolCtrl:AudibleBellMask 512)
+(defconst xcb:xkb:BoolCtrl:Overlay1Mask 1024)
+(defconst xcb:xkb:BoolCtrl:Overlay2Mask 2048)
+(defconst xcb:xkb:BoolCtrl:IgnoreGroupLockMask 4096)
+
+(defconst xcb:xkb:Control:GroupsWrap 134217728)
+(defconst xcb:xkb:Control:InternalMods 268435456)
+
+(defconst xcb:xkb:AXOption:SKPressFB 1)
+(defconst xcb:xkb:AXOption:SKAcceptFB 2)
+(defconst xcb:xkb:AXOption:FeatureFB 4)
+(defconst xcb:xkb:AXOption:SlowWarnFB 8)
+(defconst xcb:xkb:AXOption:IndicatorFB 16)
+(defconst xcb:xkb:AXOption:StickyKeysFB 32)
+(defconst xcb:xkb:AXOption:TwoKeys 64)
+(defconst xcb:xkb:AXOption:LatchToLock 128)
+(defconst xcb:xkb:AXOption:SKReleaseFB 256)
+(defconst xcb:xkb:AXOption:SKRejectFB 512)
+(defconst xcb:xkb:AXOption:BKRejectFB 1024)
+(defconst xcb:xkb:AXOption:DumbBell 2048)
+
+(xcb:deftypealias 'xcb:xkb:DeviceSpec 'xcb:CARD16)
+
+(defconst xcb:xkb:LedClassResult:KbdFeedbackClass 0)
+(defconst xcb:xkb:LedClassResult:LedFeedbackClass 4)
+
+(defconst xcb:xkb:LedClass:KbdFeedbackClass 0)
+(defconst xcb:xkb:LedClass:LedFeedbackClass 4)
+(defconst xcb:xkb:LedClass:DfltXIClass 768)
+(defconst xcb:xkb:LedClass:AllXIClasses 1280)
+
+(xcb:deftypealias 'xcb:xkb:LedClassSpec 'xcb:CARD16)
+
+(defconst xcb:xkb:BellClassResult:KbdFeedbackClass 0)
+(defconst xcb:xkb:BellClassResult:BellFeedbackClass 5)
+
+(defconst xcb:xkb:BellClass:KbdFeedbackClass 0)
+(defconst xcb:xkb:BellClass:BellFeedbackClass 5)
+(defconst xcb:xkb:BellClass:DfltXIClass 768)
+
+(xcb:deftypealias 'xcb:xkb:BellClassSpec 'xcb:CARD16)
+
+(defconst xcb:xkb:ID:UseCoreKbd 256)
+(defconst xcb:xkb:ID:UseCorePtr 512)
+(defconst xcb:xkb:ID:DfltXIClass 768)
+(defconst xcb:xkb:ID:DfltXIId 1024)
+(defconst xcb:xkb:ID:AllXIClass 1280)
+(defconst xcb:xkb:ID:AllXIId 1536)
+(defconst xcb:xkb:ID:XINone 65280)
+
+(xcb:deftypealias 'xcb:xkb:IDSpec 'xcb:CARD16)
+
+(defconst xcb:xkb:Group:1 0)
+(defconst xcb:xkb:Group:2 1)
+(defconst xcb:xkb:Group:3 2)
+(defconst xcb:xkb:Group:4 3)
+
+(defconst xcb:xkb:Groups:Any 254)
+(defconst xcb:xkb:Groups:All 255)
+
+(defconst xcb:xkb:SetOfGroup:Group1 1)
+(defconst xcb:xkb:SetOfGroup:Group2 2)
+(defconst xcb:xkb:SetOfGroup:Group3 4)
+(defconst xcb:xkb:SetOfGroup:Group4 8)
+
+(defconst xcb:xkb:SetOfGroups:Any 128)
+
+(defconst xcb:xkb:GroupsWrap:WrapIntoRange 0)
+(defconst xcb:xkb:GroupsWrap:ClampIntoRange 64)
+(defconst xcb:xkb:GroupsWrap:RedirectIntoRange 128)
+
+(defconst xcb:xkb:VModsHigh:15 128)
+(defconst xcb:xkb:VModsHigh:14 64)
+(defconst xcb:xkb:VModsHigh:13 32)
+(defconst xcb:xkb:VModsHigh:12 16)
+(defconst xcb:xkb:VModsHigh:11 8)
+(defconst xcb:xkb:VModsHigh:10 4)
+(defconst xcb:xkb:VModsHigh:9 2)
+(defconst xcb:xkb:VModsHigh:8 1)
+
+(defconst xcb:xkb:VModsLow:7 128)
+(defconst xcb:xkb:VModsLow:6 64)
+(defconst xcb:xkb:VModsLow:5 32)
+(defconst xcb:xkb:VModsLow:4 16)
+(defconst xcb:xkb:VModsLow:3 8)
+(defconst xcb:xkb:VModsLow:2 4)
+(defconst xcb:xkb:VModsLow:1 2)
+(defconst xcb:xkb:VModsLow:0 1)
+
+(defconst xcb:xkb:VMod:15 32768)
+(defconst xcb:xkb:VMod:14 16384)
+(defconst xcb:xkb:VMod:13 8192)
+(defconst xcb:xkb:VMod:12 4096)
+(defconst xcb:xkb:VMod:11 2048)
+(defconst xcb:xkb:VMod:10 1024)
+(defconst xcb:xkb:VMod:9 512)
+(defconst xcb:xkb:VMod:8 256)
+(defconst xcb:xkb:VMod:7 128)
+(defconst xcb:xkb:VMod:6 64)
+(defconst xcb:xkb:VMod:5 32)
+(defconst xcb:xkb:VMod:4 16)
+(defconst xcb:xkb:VMod:3 8)
+(defconst xcb:xkb:VMod:2 4)
+(defconst xcb:xkb:VMod:1 2)
+(defconst xcb:xkb:VMod:0 1)
+
+(defconst xcb:xkb:Explicit:VModMap 128)
+(defconst xcb:xkb:Explicit:Behavior 64)
+(defconst xcb:xkb:Explicit:AutoRepeat 32)
+(defconst xcb:xkb:Explicit:Interpret 16)
+(defconst xcb:xkb:Explicit:KeyType4 8)
+(defconst xcb:xkb:Explicit:KeyType3 4)
+(defconst xcb:xkb:Explicit:KeyType2 2)
+(defconst xcb:xkb:Explicit:KeyType1 1)
+
+(defconst xcb:xkb:SymInterpretMatch:NoneOf 0)
+(defconst xcb:xkb:SymInterpretMatch:AnyOfOrNone 1)
+(defconst xcb:xkb:SymInterpretMatch:AnyOf 2)
+(defconst xcb:xkb:SymInterpretMatch:AllOf 3)
+(defconst xcb:xkb:SymInterpretMatch:Exactly 4)
+
+(defconst xcb:xkb:SymInterpMatch:LevelOneOnly 128)
+(defconst xcb:xkb:SymInterpMatch:OpMask 127)
+
+(defconst xcb:xkb:IMFlag:NoExplicit 128)
+(defconst xcb:xkb:IMFlag:NoAutomatic 64)
+(defconst xcb:xkb:IMFlag:LEDDrivesKB 32)
+
+(defconst xcb:xkb:IMModsWhich:UseCompat 16)
+(defconst xcb:xkb:IMModsWhich:UseEffective 8)
+(defconst xcb:xkb:IMModsWhich:UseLocked 4)
+(defconst xcb:xkb:IMModsWhich:UseLatched 2)
+(defconst xcb:xkb:IMModsWhich:UseBase 1)
+
+(defconst xcb:xkb:IMGroupsWhich:UseCompat 16)
+(defconst xcb:xkb:IMGroupsWhich:UseEffective 8)
+(defconst xcb:xkb:IMGroupsWhich:UseLocked 4)
+(defconst xcb:xkb:IMGroupsWhich:UseLatched 2)
+(defconst xcb:xkb:IMGroupsWhich:UseBase 1)
+
+(defclass xcb:xkb:IndicatorMap
+ (xcb:-struct)
+ ((flags :initarg :flags :type xcb:CARD8)
+ (whichGroups :initarg :whichGroups :type xcb:CARD8)
+ (groups :initarg :groups :type xcb:CARD8)
+ (whichMods :initarg :whichMods :type xcb:CARD8)
+ (mods :initarg :mods :type xcb:CARD8)
+ (realMods :initarg :realMods :type xcb:CARD8)
+ (vmods :initarg :vmods :type xcb:CARD16)
+ (ctrls :initarg :ctrls :type xcb:CARD32)))
+
+(defconst xcb:xkb:CMDetail:SymInterp 1)
+(defconst xcb:xkb:CMDetail:GroupCompat 2)
+
+(defconst xcb:xkb:NameDetail:Keycodes 1)
+(defconst xcb:xkb:NameDetail:Geometry 2)
+(defconst xcb:xkb:NameDetail:Symbols 4)
+(defconst xcb:xkb:NameDetail:PhysSymbols 8)
+(defconst xcb:xkb:NameDetail:Types 16)
+(defconst xcb:xkb:NameDetail:Compat 32)
+(defconst xcb:xkb:NameDetail:KeyTypeNames 64)
+(defconst xcb:xkb:NameDetail:KTLevelNames 128)
+(defconst xcb:xkb:NameDetail:IndicatorNames 256)
+(defconst xcb:xkb:NameDetail:KeyNames 512)
+(defconst xcb:xkb:NameDetail:KeyAliases 1024)
+(defconst xcb:xkb:NameDetail:VirtualModNames 2048)
+(defconst xcb:xkb:NameDetail:GroupNames 4096)
+(defconst xcb:xkb:NameDetail:RGNames 8192)
+
+(defconst xcb:xkb:GBNDetail:Types 1)
+(defconst xcb:xkb:GBNDetail:CompatMap 2)
+(defconst xcb:xkb:GBNDetail:ClientSymbols 4)
+(defconst xcb:xkb:GBNDetail:ServerSymbols 8)
+(defconst xcb:xkb:GBNDetail:IndicatorMaps 16)
+(defconst xcb:xkb:GBNDetail:KeyNames 32)
+(defconst xcb:xkb:GBNDetail:Geometry 64)
+(defconst xcb:xkb:GBNDetail:OtherNames 128)
+
+(defconst xcb:xkb:XIFeature:Keyboards 1)
+(defconst xcb:xkb:XIFeature:ButtonActions 2)
+(defconst xcb:xkb:XIFeature:IndicatorNames 4)
+(defconst xcb:xkb:XIFeature:IndicatorMaps 8)
+(defconst xcb:xkb:XIFeature:IndicatorState 16)
+
+(defconst xcb:xkb:PerClientFlag:DetectableAutoRepeat 1)
+(defconst xcb:xkb:PerClientFlag:GrabsUseXKBState 2)
+(defconst xcb:xkb:PerClientFlag:AutoResetControls 4)
+(defconst xcb:xkb:PerClientFlag:LookupStateWhenGrabbed 8)
+(defconst xcb:xkb:PerClientFlag:SendEventUsesXKBState 16)
+
+(defclass xcb:xkb:ModDef
+ (xcb:-struct)
+ ((mask :initarg :mask :type xcb:CARD8)
+ (realMods :initarg :realMods :type xcb:CARD8)
+ (vmods :initarg :vmods :type xcb:CARD16)))
+
+(defclass xcb:xkb:KeyName
+ (xcb:-struct)
+ ((name~ :initform
+ '(name name type xcb:char size 4)
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:xkb:KeyAlias
+ (xcb:-struct)
+ ((real~ :initform
+ '(name real type xcb:char size 4)
+ :type xcb:-list)
+ (real :initarg :real :type xcb:-ignore)
+ (alias~ :initform
+ '(name alias type xcb:char size 4)
+ :type xcb:-list)
+ (alias :initarg :alias :type xcb:-ignore)))
+
+(defclass xcb:xkb:CountedString16
+ (xcb:-struct)
+ ((length :initarg :length :type xcb:CARD16)
+ (string~ :initform
+ '(name string type xcb:char size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)
+ (alignment-pad~ :initform
+ '(name alignment-pad type xcb:void size
+ (-
+ (logand
+ (+
+ (xcb:-fieldref 'length)
+ 5)
+ (lognot 3))
+ (+
+ (xcb:-fieldref 'length)
+ 2)))
+ :type xcb:-list)
+ (alignment-pad :initarg :alignment-pad :type xcb:-ignore)))
+
+(defclass xcb:xkb:KTMapEntry
+ (xcb:-struct)
+ ((active :initarg :active :type xcb:BOOL)
+ (mods-mask :initarg :mods-mask :type xcb:CARD8)
+ (level :initarg :level :type xcb:CARD8)
+ (mods-mods :initarg :mods-mods :type xcb:CARD8)
+ (mods-vmods :initarg :mods-vmods :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xkb:KeyType
+ (xcb:-struct)
+ ((mods-mask :initarg :mods-mask :type xcb:CARD8)
+ (mods-mods :initarg :mods-mods :type xcb:CARD8)
+ (mods-vmods :initarg :mods-vmods :type xcb:CARD16)
+ (numLevels :initarg :numLevels :type xcb:CARD8)
+ (nMapEntries :initarg :nMapEntries :type xcb:CARD8)
+ (hasPreserve :initarg :hasPreserve :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (map~ :initform
+ '(name map type xcb:xkb:KTMapEntry size
+ (xcb:-fieldref 'nMapEntries))
+ :type xcb:-list)
+ (map :initarg :map :type xcb:-ignore)
+ (preserve~ :initform
+ '(name preserve type xcb:xkb:ModDef size
+ (*
+ (xcb:-fieldref 'hasPreserve)
+ (xcb:-fieldref 'nMapEntries)))
+ :type xcb:-list)
+ (preserve :initarg :preserve :type xcb:-ignore)))
+
+(defclass xcb:xkb:KeySymMap
+ (xcb:-struct)
+ ((kt-index~ :initform
+ '(name kt-index type xcb:CARD8 size 4)
+ :type xcb:-list)
+ (kt-index :initarg :kt-index :type xcb:-ignore)
+ (groupInfo :initarg :groupInfo :type xcb:CARD8)
+ (width :initarg :width :type xcb:CARD8)
+ (nSyms :initarg :nSyms :type xcb:CARD16)
+ (syms~ :initform
+ '(name syms type xcb:KEYSYM size
+ (xcb:-fieldref 'nSyms))
+ :type xcb:-list)
+ (syms :initarg :syms :type xcb:-ignore)))
+
+(defclass xcb:xkb:CommonBehavior
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (data :initarg :data :type xcb:CARD8)))
+
+(defclass xcb:xkb:DefaultBehavior
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(xcb:deftypealias 'xcb:xkb:LockBehavior 'xcb:xkb:DefaultBehavior)
+
+(defclass xcb:xkb:RadioGroupBehavior
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (group :initarg :group :type xcb:CARD8)))
+
+(defclass xcb:xkb:OverlayBehavior
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (key :initarg :key :type xcb:KEYCODE)))
+
+(xcb:deftypealias 'xcb:xkb:PermamentLockBehavior 'xcb:xkb:LockBehavior)
+
+(xcb:deftypealias 'xcb:xkb:PermamentRadioGroupBehavior 'xcb:xkb:RadioGroupBehavior)
+
+(xcb:deftypealias 'xcb:xkb:PermamentOverlayBehavior 'xcb:xkb:OverlayBehavior)
+
+(defclass xcb:xkb:Behavior
+ (xcb:-union)
+ ((~size :initform 2)
+ (common :initarg :common :type xcb:xkb:CommonBehavior)
+ (default :initarg :default :type xcb:xkb:DefaultBehavior)
+ (lock :initarg :lock :type xcb:xkb:LockBehavior)
+ (radioGroup :initarg :radioGroup :type xcb:xkb:RadioGroupBehavior)
+ (overlay1 :initarg :overlay1 :type xcb:xkb:OverlayBehavior)
+ (overlay2 :initarg :overlay2 :type xcb:xkb:OverlayBehavior)
+ (permamentLock :initarg :permamentLock :type xcb:xkb:PermamentLockBehavior)
+ (permamentRadioGroup :initarg :permamentRadioGroup :type xcb:xkb:PermamentRadioGroupBehavior)
+ (permamentOverlay1 :initarg :permamentOverlay1 :type xcb:xkb:PermamentOverlayBehavior)
+ (permamentOverlay2 :initarg :permamentOverlay2 :type xcb:xkb:PermamentOverlayBehavior)
+ (type :initarg :type :type xcb:CARD8)))
+
+(defconst xcb:xkb:BehaviorType:Default 0)
+(defconst xcb:xkb:BehaviorType:Lock 1)
+(defconst xcb:xkb:BehaviorType:RadioGroup 2)
+(defconst xcb:xkb:BehaviorType:Overlay1 3)
+(defconst xcb:xkb:BehaviorType:Overlay2 4)
+(defconst xcb:xkb:BehaviorType:PermamentLock 129)
+(defconst xcb:xkb:BehaviorType:PermamentRadioGroup 130)
+(defconst xcb:xkb:BehaviorType:PermamentOverlay1 131)
+(defconst xcb:xkb:BehaviorType:PermamentOverlay2 132)
+
+(defclass xcb:xkb:SetBehavior
+ (xcb:-struct)
+ ((keycode :initarg :keycode :type xcb:KEYCODE)
+ (behavior :initarg :behavior :type xcb:xkb:Behavior)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:xkb:SetExplicit
+ (xcb:-struct)
+ ((keycode :initarg :keycode :type xcb:KEYCODE)
+ (explicit :initarg :explicit :type xcb:CARD8)))
+
+(defclass xcb:xkb:KeyModMap
+ (xcb:-struct)
+ ((keycode :initarg :keycode :type xcb:KEYCODE)
+ (mods :initarg :mods :type xcb:CARD8)))
+
+(defclass xcb:xkb:KeyVModMap
+ (xcb:-struct)
+ ((keycode :initarg :keycode :type xcb:KEYCODE)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (vmods :initarg :vmods :type xcb:CARD16)))
+
+(defclass xcb:xkb:KTSetMapEntry
+ (xcb:-struct)
+ ((level :initarg :level :type xcb:CARD8)
+ (realMods :initarg :realMods :type xcb:CARD8)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)))
+
+(defclass xcb:xkb:SetKeyType
+ (xcb:-struct)
+ ((mask :initarg :mask :type xcb:CARD8)
+ (realMods :initarg :realMods :type xcb:CARD8)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (numLevels :initarg :numLevels :type xcb:CARD8)
+ (nMapEntries :initarg :nMapEntries :type xcb:CARD8)
+ (preserve :initarg :preserve :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (entries~ :initform
+ '(name entries type xcb:xkb:KTSetMapEntry size
+ (xcb:-fieldref 'nMapEntries))
+ :type xcb:-list)
+ (entries :initarg :entries :type xcb:-ignore)
+ (preserve-entries~ :initform
+ '(name preserve-entries type xcb:xkb:KTSetMapEntry size
+ (*
+ (xcb:-fieldref 'preserve)
+ (xcb:-fieldref 'nMapEntries)))
+ :type xcb:-list)
+ (preserve-entries :initarg :preserve-entries :type xcb:-ignore)))
+
+(xcb:deftypealias 'xcb:xkb:STRING8 'xcb:char)
+
+(defclass xcb:xkb:Outline
+ (xcb:-struct)
+ ((nPoints :initarg :nPoints :type xcb:CARD8)
+ (cornerRadius :initarg :cornerRadius :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (points~ :initform
+ '(name points type xcb:POINT size
+ (xcb:-fieldref 'nPoints))
+ :type xcb:-list)
+ (points :initarg :points :type xcb:-ignore)))
+
+(defclass xcb:xkb:Shape
+ (xcb:-struct)
+ ((name :initarg :name :type xcb:ATOM)
+ (nOutlines :initarg :nOutlines :type xcb:CARD8)
+ (primaryNdx :initarg :primaryNdx :type xcb:CARD8)
+ (approxNdx :initarg :approxNdx :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (outlines~ :initform
+ '(name outlines type xcb:xkb:Outline size
+ (xcb:-fieldref 'nOutlines))
+ :type xcb:-list)
+ (outlines :initarg :outlines :type xcb:-ignore)))
+
+(defclass xcb:xkb:Key
+ (xcb:-struct)
+ ((name~ :initform
+ '(name name type xcb:xkb:STRING8 size 4)
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (gap :initarg :gap :type xcb:INT16)
+ (shapeNdx :initarg :shapeNdx :type xcb:CARD8)
+ (colorNdx :initarg :colorNdx :type xcb:CARD8)))
+
+(defclass xcb:xkb:OverlayKey
+ (xcb:-struct)
+ ((over~ :initform
+ '(name over type xcb:xkb:STRING8 size 4)
+ :type xcb:-list)
+ (over :initarg :over :type xcb:-ignore)
+ (under~ :initform
+ '(name under type xcb:xkb:STRING8 size 4)
+ :type xcb:-list)
+ (under :initarg :under :type xcb:-ignore)))
+
+(defclass xcb:xkb:OverlayRow
+ (xcb:-struct)
+ ((rowUnder :initarg :rowUnder :type xcb:CARD8)
+ (nKeys :initarg :nKeys :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (keys~ :initform
+ '(name keys type xcb:xkb:OverlayKey size
+ (xcb:-fieldref 'nKeys))
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defclass xcb:xkb:Overlay
+ (xcb:-struct)
+ ((name :initarg :name :type xcb:ATOM)
+ (nRows :initarg :nRows :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (rows~ :initform
+ '(name rows type xcb:xkb:OverlayRow size
+ (xcb:-fieldref 'nRows))
+ :type xcb:-list)
+ (rows :initarg :rows :type xcb:-ignore)))
+
+(defclass xcb:xkb:Row
+ (xcb:-struct)
+ ((top :initarg :top :type xcb:INT16)
+ (left :initarg :left :type xcb:INT16)
+ (nKeys :initarg :nKeys :type xcb:CARD8)
+ (vertical :initarg :vertical :type xcb:BOOL)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (keys~ :initform
+ '(name keys type xcb:xkb:Key size
+ (xcb:-fieldref 'nKeys))
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defconst xcb:xkb:DoodadType:Outline 1)
+(defconst xcb:xkb:DoodadType:Solid 2)
+(defconst xcb:xkb:DoodadType:Text 3)
+(defconst xcb:xkb:DoodadType:Indicator 4)
+(defconst xcb:xkb:DoodadType:Logo 5)
+
+(defclass xcb:xkb:Listing
+ (xcb:-struct)
+ ((flags :initarg :flags :type xcb:CARD16)
+ (length :initarg :length :type xcb:CARD16)
+ (string~ :initform
+ '(name string type xcb:xkb:STRING8 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)
+ (pad~0 :initform 2 :type xcb:-pad-align)))
+
+(defclass xcb:xkb:DeviceLedInfo
+ (xcb:-struct)
+ ((ledClass :initarg :ledClass :type xcb:xkb:LedClassSpec)
+ (ledID :initarg :ledID :type xcb:xkb:IDSpec)
+ (namesPresent :initarg :namesPresent :type xcb:CARD32)
+ (mapsPresent :initarg :mapsPresent :type xcb:CARD32)
+ (physIndicators :initarg :physIndicators :type xcb:CARD32)
+ (state :initarg :state :type xcb:CARD32)
+ (names~ :initform
+ '(name names type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'namesPresent)))
+ :type xcb:-list)
+ (names :initarg :names :type xcb:-ignore)
+ (maps~ :initform
+ '(name maps type xcb:xkb:IndicatorMap size
+ (logcount
+ (xcb:-fieldref 'mapsPresent)))
+ :type xcb:-list)
+ (maps :initarg :maps :type xcb:-ignore)))
+
+(defconst xcb:xkb:Error:BadDevice 255)
+(defconst xcb:xkb:Error:BadClass 254)
+(defconst xcb:xkb:Error:BadId 253)
+
+(defclass xcb:xkb:Keyboard
+ (xcb:-error)
+ ((~code :initform 0)
+ (value :initarg :value :type xcb:CARD32)
+ (minorOpcode :initarg :minorOpcode :type xcb:CARD16)
+ (majorOpcode :initarg :majorOpcode :type xcb:CARD8)
+ (pad~0 :initform 21 :type xcb:-pad)))
+
+(defconst xcb:xkb:SA:ClearLocks 1)
+(defconst xcb:xkb:SA:LatchToLock 2)
+(defconst xcb:xkb:SA:UseModMapMods 4)
+(defconst xcb:xkb:SA:GroupAbsolute 4)
+
+(defconst xcb:xkb:SAType:NoAction 0)
+(defconst xcb:xkb:SAType:SetMods 1)
+(defconst xcb:xkb:SAType:LatchMods 2)
+(defconst xcb:xkb:SAType:LockMods 3)
+(defconst xcb:xkb:SAType:SetGroup 4)
+(defconst xcb:xkb:SAType:LatchGroup 5)
+(defconst xcb:xkb:SAType:LockGroup 6)
+(defconst xcb:xkb:SAType:MovePtr 7)
+(defconst xcb:xkb:SAType:PtrBtn 8)
+(defconst xcb:xkb:SAType:LockPtrBtn 9)
+(defconst xcb:xkb:SAType:SetPtrDflt 10)
+(defconst xcb:xkb:SAType:ISOLock 11)
+(defconst xcb:xkb:SAType:Terminate 12)
+(defconst xcb:xkb:SAType:SwitchScreen 13)
+(defconst xcb:xkb:SAType:SetControls 14)
+(defconst xcb:xkb:SAType:LockControls 15)
+(defconst xcb:xkb:SAType:ActionMessage 16)
+(defconst xcb:xkb:SAType:RedirectKey 17)
+(defconst xcb:xkb:SAType:DeviceBtn 18)
+(defconst xcb:xkb:SAType:LockDeviceBtn 19)
+(defconst xcb:xkb:SAType:DeviceValuator 20)
+
+(defclass xcb:xkb:SANoAction
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (pad~0 :initform 7 :type xcb:-pad)))
+
+(defclass xcb:xkb:SASetMods
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (mask :initarg :mask :type xcb:CARD8)
+ (realMods :initarg :realMods :type xcb:CARD8)
+ (vmodsHigh :initarg :vmodsHigh :type xcb:CARD8)
+ (vmodsLow :initarg :vmodsLow :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(xcb:deftypealias 'xcb:xkb:SALatchMods 'xcb:xkb:SASetMods)
+
+(xcb:deftypealias 'xcb:xkb:SALockMods 'xcb:xkb:SASetMods)
+
+(defclass xcb:xkb:SASetGroup
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (group :initarg :group :type xcb:INT8)
+ (pad~0 :initform 5 :type xcb:-pad)))
+
+(xcb:deftypealias 'xcb:xkb:SALatchGroup 'xcb:xkb:SASetGroup)
+
+(xcb:deftypealias 'xcb:xkb:SALockGroup 'xcb:xkb:SASetGroup)
+
+(defconst xcb:xkb:SAMovePtrFlag:NoAcceleration 1)
+(defconst xcb:xkb:SAMovePtrFlag:MoveAbsoluteX 2)
+(defconst xcb:xkb:SAMovePtrFlag:MoveAbsoluteY 4)
+
+(defclass xcb:xkb:SAMovePtr
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (xHigh :initarg :xHigh :type xcb:INT8)
+ (xLow :initarg :xLow :type xcb:CARD8)
+ (yHigh :initarg :yHigh :type xcb:INT8)
+ (yLow :initarg :yLow :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xkb:SAPtrBtn
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (count :initarg :count :type xcb:CARD8)
+ (button :initarg :button :type xcb:CARD8)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:xkb:SALockPtrBtn
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (button :initarg :button :type xcb:CARD8)
+ (pad~1 :initform 4 :type xcb:-pad)))
+
+(defconst xcb:xkb:SASetPtrDfltFlag:DfltBtnAbsolute 4)
+(defconst xcb:xkb:SASetPtrDfltFlag:AffectDfltButton 1)
+
+(defclass xcb:xkb:SASetPtrDflt
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (affect :initarg :affect :type xcb:CARD8)
+ (value :initarg :value :type xcb:INT8)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+(defconst xcb:xkb:SAIsoLockFlag:NoLock 1)
+(defconst xcb:xkb:SAIsoLockFlag:NoUnlock 2)
+(defconst xcb:xkb:SAIsoLockFlag:UseModMapMods 4)
+(defconst xcb:xkb:SAIsoLockFlag:GroupAbsolute 4)
+(defconst xcb:xkb:SAIsoLockFlag:ISODfltIsGroup 8)
+
+(defconst xcb:xkb:SAIsoLockNoAffect:Ctrls 8)
+(defconst xcb:xkb:SAIsoLockNoAffect:Ptr 16)
+(defconst xcb:xkb:SAIsoLockNoAffect:Group 32)
+(defconst xcb:xkb:SAIsoLockNoAffect:Mods 64)
+
+(defclass xcb:xkb:SAIsoLock
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (mask :initarg :mask :type xcb:CARD8)
+ (realMods :initarg :realMods :type xcb:CARD8)
+ (group :initarg :group :type xcb:INT8)
+ (affect :initarg :affect :type xcb:CARD8)
+ (vmodsHigh :initarg :vmodsHigh :type xcb:CARD8)
+ (vmodsLow :initarg :vmodsLow :type xcb:CARD8)))
+
+(defclass xcb:xkb:SATerminate
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (pad~0 :initform 7 :type xcb:-pad)))
+
+(defconst xcb:xkb:SwitchScreenFlag:Application 1)
+(defconst xcb:xkb:SwitchScreenFlag:Absolute 4)
+
+(defclass xcb:xkb:SASwitchScreen
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (newScreen :initarg :newScreen :type xcb:INT8)
+ (pad~0 :initform 5 :type xcb:-pad)))
+
+(defconst xcb:xkb:BoolCtrlsHigh:AccessXFeedback 1)
+(defconst xcb:xkb:BoolCtrlsHigh:AudibleBell 2)
+(defconst xcb:xkb:BoolCtrlsHigh:Overlay1 4)
+(defconst xcb:xkb:BoolCtrlsHigh:Overlay2 8)
+(defconst xcb:xkb:BoolCtrlsHigh:IgnoreGroupLock 16)
+
+(defconst xcb:xkb:BoolCtrlsLow:RepeatKeys 1)
+(defconst xcb:xkb:BoolCtrlsLow:SlowKeys 2)
+(defconst xcb:xkb:BoolCtrlsLow:BounceKeys 4)
+(defconst xcb:xkb:BoolCtrlsLow:StickyKeys 8)
+(defconst xcb:xkb:BoolCtrlsLow:MouseKeys 16)
+(defconst xcb:xkb:BoolCtrlsLow:MouseKeysAccel 32)
+(defconst xcb:xkb:BoolCtrlsLow:AccessXKeys 64)
+(defconst xcb:xkb:BoolCtrlsLow:AccessXTimeout 128)
+
+(defclass xcb:xkb:SASetControls
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (boolCtrlsHigh :initarg :boolCtrlsHigh :type xcb:CARD8)
+ (boolCtrlsLow :initarg :boolCtrlsLow :type xcb:CARD8)
+ (pad~1 :initform 2 :type xcb:-pad)))
+
+(xcb:deftypealias 'xcb:xkb:SALockControls 'xcb:xkb:SASetControls)
+
+(defconst xcb:xkb:ActionMessageFlag:OnPress 1)
+(defconst xcb:xkb:ActionMessageFlag:OnRelease 2)
+(defconst xcb:xkb:ActionMessageFlag:GenKeyEvent 4)
+
+(defclass xcb:xkb:SAActionMessage
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (message~ :initform
+ '(name message type xcb:CARD8 size 6)
+ :type xcb:-list)
+ (message :initarg :message :type xcb:-ignore)))
+
+(defclass xcb:xkb:SARedirectKey
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (newkey :initarg :newkey :type xcb:KEYCODE)
+ (mask :initarg :mask :type xcb:CARD8)
+ (realModifiers :initarg :realModifiers :type xcb:CARD8)
+ (vmodsMaskHigh :initarg :vmodsMaskHigh :type xcb:CARD8)
+ (vmodsMaskLow :initarg :vmodsMaskLow :type xcb:CARD8)
+ (vmodsHigh :initarg :vmodsHigh :type xcb:CARD8)
+ (vmodsLow :initarg :vmodsLow :type xcb:CARD8)))
+
+(defclass xcb:xkb:SADeviceBtn
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (count :initarg :count :type xcb:CARD8)
+ (button :initarg :button :type xcb:CARD8)
+ (device :initarg :device :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defconst xcb:xkb:LockDeviceFlags:NoLock 1)
+(defconst xcb:xkb:LockDeviceFlags:NoUnlock 2)
+
+(defclass xcb:xkb:SALockDeviceBtn
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (button :initarg :button :type xcb:CARD8)
+ (device :initarg :device :type xcb:CARD8)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defconst xcb:xkb:SAValWhat:IgnoreVal 0)
+(defconst xcb:xkb:SAValWhat:SetValMin 1)
+(defconst xcb:xkb:SAValWhat:SetValCenter 2)
+(defconst xcb:xkb:SAValWhat:SetValMax 3)
+(defconst xcb:xkb:SAValWhat:SetValRelative 4)
+(defconst xcb:xkb:SAValWhat:SetValAbsolute 5)
+
+(defclass xcb:xkb:SADeviceValuator
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (device :initarg :device :type xcb:CARD8)
+ (val1what :initarg :val1what :type xcb:CARD8)
+ (val1index :initarg :val1index :type xcb:CARD8)
+ (val1value :initarg :val1value :type xcb:CARD8)
+ (val2what :initarg :val2what :type xcb:CARD8)
+ (val2index :initarg :val2index :type xcb:CARD8)
+ (val2value :initarg :val2value :type xcb:CARD8)))
+
+(defclass xcb:xkb:SIAction
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (data~ :initform
+ '(name data type xcb:CARD8 size 7)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:xkb:SymInterpret
+ (xcb:-struct)
+ ((sym :initarg :sym :type xcb:KEYSYM)
+ (mods :initarg :mods :type xcb:CARD8)
+ (match :initarg :match :type xcb:CARD8)
+ (virtualMod :initarg :virtualMod :type xcb:CARD8)
+ (flags :initarg :flags :type xcb:CARD8)
+ (action :initarg :action :type xcb:xkb:SIAction)))
+
+(defclass xcb:xkb:Action
+ (xcb:-union)
+ ((~size :initform 8)
+ (noaction :initarg :noaction :type xcb:xkb:SANoAction)
+ (setmods :initarg :setmods :type xcb:xkb:SASetMods)
+ (latchmods :initarg :latchmods :type xcb:xkb:SALatchMods)
+ (lockmods :initarg :lockmods :type xcb:xkb:SALockMods)
+ (setgroup :initarg :setgroup :type xcb:xkb:SASetGroup)
+ (latchgroup :initarg :latchgroup :type xcb:xkb:SALatchGroup)
+ (lockgroup :initarg :lockgroup :type xcb:xkb:SALockGroup)
+ (moveptr :initarg :moveptr :type xcb:xkb:SAMovePtr)
+ (ptrbtn :initarg :ptrbtn :type xcb:xkb:SAPtrBtn)
+ (lockptrbtn :initarg :lockptrbtn :type xcb:xkb:SALockPtrBtn)
+ (setptrdflt :initarg :setptrdflt :type xcb:xkb:SASetPtrDflt)
+ (isolock :initarg :isolock :type xcb:xkb:SAIsoLock)
+ (terminate :initarg :terminate :type xcb:xkb:SATerminate)
+ (switchscreen :initarg :switchscreen :type xcb:xkb:SASwitchScreen)
+ (setcontrols :initarg :setcontrols :type xcb:xkb:SASetControls)
+ (lockcontrols :initarg :lockcontrols :type xcb:xkb:SALockControls)
+ (message :initarg :message :type xcb:xkb:SAActionMessage)
+ (redirect :initarg :redirect :type xcb:xkb:SARedirectKey)
+ (devbtn :initarg :devbtn :type xcb:xkb:SADeviceBtn)
+ (lockdevbtn :initarg :lockdevbtn :type xcb:xkb:SALockDeviceBtn)
+ (devval :initarg :devval :type xcb:xkb:SADeviceValuator)
+ (type :initarg :type :type xcb:CARD8)))
+
+(defclass xcb:xkb:UseExtension
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (wantedMajor :initarg :wantedMajor :type xcb:CARD16)
+ (wantedMinor :initarg :wantedMinor :type xcb:CARD16)))
+(defclass xcb:xkb:UseExtension~reply
+ (xcb:-reply)
+ ((supported :initarg :supported :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (serverMajor :initarg :serverMajor :type xcb:CARD16)
+ (serverMinor :initarg :serverMinor :type xcb:CARD16)
+ (pad~0 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:xkb:SelectEvents
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (affectWhich :initarg :affectWhich :type xcb:CARD16)
+ (clear :initarg :clear :type xcb:CARD16)
+ (selectAll :initarg :selectAll :type xcb:CARD16)
+ (affectMap :initarg :affectMap :type xcb:CARD16)
+ (map :initarg :map :type xcb:CARD16)
+ (details :initform
+ '(expression
+ (logand
+ (xcb:-fieldref 'affectWhich)
+ (logand
+ (lognot
+ (xcb:-fieldref 'clear))
+ (lognot
+ (xcb:-fieldref 'selectAll))))
+ cases
+ ((1 affectNewKeyboard newKeyboardDetails)
+ (4 affectState stateDetails)
+ (8 affectCtrls ctrlDetails)
+ (16 affectIndicatorState indicatorStateDetails)
+ (32 affectIndicatorMap indicatorMapDetails)
+ (64 affectNames namesDetails)
+ (128 affectCompat compatDetails)
+ (256 affectBell bellDetails)
+ (512 affectMsgDetails msgDetails)
+ (1024 affectAccessX accessXDetails)
+ (2048 affectExtDev extdevDetails)))
+ :type xcb:-switch)
+ (affectNewKeyboard :initarg :affectNewKeyboard :type xcb:CARD16)
+ (newKeyboardDetails :initarg :newKeyboardDetails :type xcb:CARD16)
+ (affectState :initarg :affectState :type xcb:CARD16)
+ (stateDetails :initarg :stateDetails :type xcb:CARD16)
+ (affectCtrls :initarg :affectCtrls :type xcb:CARD32)
+ (ctrlDetails :initarg :ctrlDetails :type xcb:CARD32)
+ (affectIndicatorState :initarg :affectIndicatorState :type xcb:CARD32)
+ (indicatorStateDetails :initarg :indicatorStateDetails :type xcb:CARD32)
+ (affectIndicatorMap :initarg :affectIndicatorMap :type xcb:CARD32)
+ (indicatorMapDetails :initarg :indicatorMapDetails :type xcb:CARD32)
+ (affectNames :initarg :affectNames :type xcb:CARD16)
+ (namesDetails :initarg :namesDetails :type xcb:CARD16)
+ (affectCompat :initarg :affectCompat :type xcb:CARD8)
+ (compatDetails :initarg :compatDetails :type xcb:CARD8)
+ (affectBell :initarg :affectBell :type xcb:CARD8)
+ (bellDetails :initarg :bellDetails :type xcb:CARD8)
+ (affectMsgDetails :initarg :affectMsgDetails :type xcb:CARD8)
+ (msgDetails :initarg :msgDetails :type xcb:CARD8)
+ (affectAccessX :initarg :affectAccessX :type xcb:CARD16)
+ (accessXDetails :initarg :accessXDetails :type xcb:CARD16)
+ (affectExtDev :initarg :affectExtDev :type xcb:CARD16)
+ (extdevDetails :initarg :extdevDetails :type xcb:CARD16)))
+
+(defclass xcb:xkb:Bell
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (bellClass :initarg :bellClass :type xcb:xkb:BellClassSpec)
+ (bellID :initarg :bellID :type xcb:xkb:IDSpec)
+ (percent :initarg :percent :type xcb:INT8)
+ (forceSound :initarg :forceSound :type xcb:BOOL)
+ (eventOnly :initarg :eventOnly :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (pitch :initarg :pitch :type xcb:INT16)
+ (duration :initarg :duration :type xcb:INT16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (name :initarg :name :type xcb:ATOM)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:xkb:GetState
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xkb:GetState~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (mods :initarg :mods :type xcb:CARD8)
+ (baseMods :initarg :baseMods :type xcb:CARD8)
+ (latchedMods :initarg :latchedMods :type xcb:CARD8)
+ (lockedMods :initarg :lockedMods :type xcb:CARD8)
+ (group :initarg :group :type xcb:CARD8)
+ (lockedGroup :initarg :lockedGroup :type xcb:CARD8)
+ (baseGroup :initarg :baseGroup :type xcb:INT16)
+ (latchedGroup :initarg :latchedGroup :type xcb:INT16)
+ (compatState :initarg :compatState :type xcb:CARD8)
+ (grabMods :initarg :grabMods :type xcb:CARD8)
+ (compatGrabMods :initarg :compatGrabMods :type xcb:CARD8)
+ (lookupMods :initarg :lookupMods :type xcb:CARD8)
+ (compatLookupMods :initarg :compatLookupMods :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (ptrBtnState :initarg :ptrBtnState :type xcb:CARD16)
+ (pad~1 :initform 6 :type xcb:-pad)))
+
+(defclass xcb:xkb:LatchLockState
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (affectModLocks :initarg :affectModLocks :type xcb:CARD8)
+ (modLocks :initarg :modLocks :type xcb:CARD8)
+ (lockGroup :initarg :lockGroup :type xcb:BOOL)
+ (groupLock :initarg :groupLock :type xcb:CARD8)
+ (affectModLatches :initarg :affectModLatches :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (latchGroup :initarg :latchGroup :type xcb:BOOL)
+ (groupLatch :initarg :groupLatch :type xcb:CARD16)))
+
+(defclass xcb:xkb:GetControls
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xkb:GetControls~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (mouseKeysDfltBtn :initarg :mouseKeysDfltBtn :type xcb:CARD8)
+ (numGroups :initarg :numGroups :type xcb:CARD8)
+ (groupsWrap :initarg :groupsWrap :type xcb:CARD8)
+ (internalModsMask :initarg :internalModsMask :type xcb:CARD8)
+ (ignoreLockModsMask :initarg :ignoreLockModsMask :type xcb:CARD8)
+ (internalModsRealMods :initarg :internalModsRealMods :type xcb:CARD8)
+ (ignoreLockModsRealMods :initarg :ignoreLockModsRealMods :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (internalModsVmods :initarg :internalModsVmods :type xcb:CARD16)
+ (ignoreLockModsVmods :initarg :ignoreLockModsVmods :type xcb:CARD16)
+ (repeatDelay :initarg :repeatDelay :type xcb:CARD16)
+ (repeatInterval :initarg :repeatInterval :type xcb:CARD16)
+ (slowKeysDelay :initarg :slowKeysDelay :type xcb:CARD16)
+ (debounceDelay :initarg :debounceDelay :type xcb:CARD16)
+ (mouseKeysDelay :initarg :mouseKeysDelay :type xcb:CARD16)
+ (mouseKeysInterval :initarg :mouseKeysInterval :type xcb:CARD16)
+ (mouseKeysTimeToMax :initarg :mouseKeysTimeToMax :type xcb:CARD16)
+ (mouseKeysMaxSpeed :initarg :mouseKeysMaxSpeed :type xcb:CARD16)
+ (mouseKeysCurve :initarg :mouseKeysCurve :type xcb:INT16)
+ (accessXOption :initarg :accessXOption :type xcb:CARD16)
+ (accessXTimeout :initarg :accessXTimeout :type xcb:CARD16)
+ (accessXTimeoutOptionsMask :initarg :accessXTimeoutOptionsMask :type xcb:CARD16)
+ (accessXTimeoutOptionsValues :initarg :accessXTimeoutOptionsValues :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (accessXTimeoutMask :initarg :accessXTimeoutMask :type xcb:CARD32)
+ (accessXTimeoutValues :initarg :accessXTimeoutValues :type xcb:CARD32)
+ (enabledControls :initarg :enabledControls :type xcb:CARD32)
+ (perKeyRepeat~ :initform
+ '(name perKeyRepeat type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (perKeyRepeat :initarg :perKeyRepeat :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetControls
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (affectInternalRealMods :initarg :affectInternalRealMods :type xcb:CARD8)
+ (internalRealMods :initarg :internalRealMods :type xcb:CARD8)
+ (affectIgnoreLockRealMods :initarg :affectIgnoreLockRealMods :type xcb:CARD8)
+ (ignoreLockRealMods :initarg :ignoreLockRealMods :type xcb:CARD8)
+ (affectInternalVirtualMods :initarg :affectInternalVirtualMods :type xcb:CARD16)
+ (internalVirtualMods :initarg :internalVirtualMods :type xcb:CARD16)
+ (affectIgnoreLockVirtualMods :initarg :affectIgnoreLockVirtualMods :type xcb:CARD16)
+ (ignoreLockVirtualMods :initarg :ignoreLockVirtualMods :type xcb:CARD16)
+ (mouseKeysDfltBtn :initarg :mouseKeysDfltBtn :type xcb:CARD8)
+ (groupsWrap :initarg :groupsWrap :type xcb:CARD8)
+ (accessXOptions :initarg :accessXOptions :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (affectEnabledControls :initarg :affectEnabledControls :type xcb:CARD32)
+ (enabledControls :initarg :enabledControls :type xcb:CARD32)
+ (changeControls :initarg :changeControls :type xcb:CARD32)
+ (repeatDelay :initarg :repeatDelay :type xcb:CARD16)
+ (repeatInterval :initarg :repeatInterval :type xcb:CARD16)
+ (slowKeysDelay :initarg :slowKeysDelay :type xcb:CARD16)
+ (debounceDelay :initarg :debounceDelay :type xcb:CARD16)
+ (mouseKeysDelay :initarg :mouseKeysDelay :type xcb:CARD16)
+ (mouseKeysInterval :initarg :mouseKeysInterval :type xcb:CARD16)
+ (mouseKeysTimeToMax :initarg :mouseKeysTimeToMax :type xcb:CARD16)
+ (mouseKeysMaxSpeed :initarg :mouseKeysMaxSpeed :type xcb:CARD16)
+ (mouseKeysCurve :initarg :mouseKeysCurve :type xcb:INT16)
+ (accessXTimeout :initarg :accessXTimeout :type xcb:CARD16)
+ (accessXTimeoutMask :initarg :accessXTimeoutMask :type xcb:CARD32)
+ (accessXTimeoutValues :initarg :accessXTimeoutValues :type xcb:CARD32)
+ (accessXTimeoutOptionsMask :initarg :accessXTimeoutOptionsMask :type xcb:CARD16)
+ (accessXTimeoutOptionsValues :initarg :accessXTimeoutOptionsValues :type xcb:CARD16)
+ (perKeyRepeat~ :initform
+ '(name perKeyRepeat type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (perKeyRepeat :initarg :perKeyRepeat :type xcb:-ignore)))
+
+(defclass xcb:xkb:GetMap
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (full :initarg :full :type xcb:CARD16)
+ (partial :initarg :partial :type xcb:CARD16)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (firstKeySym :initarg :firstKeySym :type xcb:KEYCODE)
+ (nKeySyms :initarg :nKeySyms :type xcb:CARD8)
+ (firstKeyAction :initarg :firstKeyAction :type xcb:KEYCODE)
+ (nKeyActions :initarg :nKeyActions :type xcb:CARD8)
+ (firstKeyBehavior :initarg :firstKeyBehavior :type xcb:KEYCODE)
+ (nKeyBehaviors :initarg :nKeyBehaviors :type xcb:CARD8)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (firstKeyExplicit :initarg :firstKeyExplicit :type xcb:KEYCODE)
+ (nKeyExplicit :initarg :nKeyExplicit :type xcb:CARD8)
+ (firstModMapKey :initarg :firstModMapKey :type xcb:KEYCODE)
+ (nModMapKeys :initarg :nModMapKeys :type xcb:CARD8)
+ (firstVModMapKey :initarg :firstVModMapKey :type xcb:KEYCODE)
+ (nVModMapKeys :initarg :nVModMapKeys :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xkb:GetMap~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (minKeyCode :initarg :minKeyCode :type xcb:KEYCODE)
+ (maxKeyCode :initarg :maxKeyCode :type xcb:KEYCODE)
+ (present :initarg :present :type xcb:CARD16)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (totalTypes :initarg :totalTypes :type xcb:CARD8)
+ (firstKeySym :initarg :firstKeySym :type xcb:KEYCODE)
+ (totalSyms :initarg :totalSyms :type xcb:CARD16)
+ (nKeySyms :initarg :nKeySyms :type xcb:CARD8)
+ (firstKeyAction :initarg :firstKeyAction :type xcb:KEYCODE)
+ (totalActions :initarg :totalActions :type xcb:CARD16)
+ (nKeyActions :initarg :nKeyActions :type xcb:CARD8)
+ (firstKeyBehavior :initarg :firstKeyBehavior :type xcb:KEYCODE)
+ (nKeyBehaviors :initarg :nKeyBehaviors :type xcb:CARD8)
+ (totalKeyBehaviors :initarg :totalKeyBehaviors :type xcb:CARD8)
+ (firstKeyExplicit :initarg :firstKeyExplicit :type xcb:KEYCODE)
+ (nKeyExplicit :initarg :nKeyExplicit :type xcb:CARD8)
+ (totalKeyExplicit :initarg :totalKeyExplicit :type xcb:CARD8)
+ (firstModMapKey :initarg :firstModMapKey :type xcb:KEYCODE)
+ (nModMapKeys :initarg :nModMapKeys :type xcb:CARD8)
+ (totalModMapKeys :initarg :totalModMapKeys :type xcb:CARD8)
+ (firstVModMapKey :initarg :firstVModMapKey :type xcb:KEYCODE)
+ (nVModMapKeys :initarg :nVModMapKeys :type xcb:CARD8)
+ (totalVModMapKeys :initarg :totalVModMapKeys :type xcb:CARD8)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (map :initform
+ '(expression
+ (xcb:-fieldref 'present)
+ cases
+ ((1 types-rtrn~)
+ (2 syms-rtrn~)
+ (16 acts-rtrn-count~ pad~2 acts-rtrn-acts~)
+ (32 behaviors-rtrn~)
+ (64 vmods-rtrn~ pad~3)
+ (8 explicit-rtrn~ pad~4)
+ (4 modmap-rtrn~ pad~5)
+ (128 vmodmap-rtrn~)))
+ :type xcb:-switch)
+ (types-rtrn~ :initform
+ '(name types-rtrn type xcb:xkb:KeyType size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (types-rtrn :initarg :types-rtrn :type xcb:-ignore)
+ (syms-rtrn~ :initform
+ '(name syms-rtrn type xcb:xkb:KeySymMap size
+ (xcb:-fieldref 'nKeySyms))
+ :type xcb:-list)
+ (syms-rtrn :initarg :syms-rtrn :type xcb:-ignore)
+ (acts-rtrn-count~ :initform
+ '(name acts-rtrn-count type xcb:CARD8 size
+ (xcb:-fieldref 'nKeyActions))
+ :type xcb:-list)
+ (acts-rtrn-count :initarg :acts-rtrn-count :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)
+ (acts-rtrn-acts~ :initform
+ '(name acts-rtrn-acts type xcb:xkb:Action size
+ (xcb:-fieldref 'totalActions))
+ :type xcb:-list)
+ (acts-rtrn-acts :initarg :acts-rtrn-acts :type xcb:-ignore)
+ (behaviors-rtrn~ :initform
+ '(name behaviors-rtrn type xcb:xkb:SetBehavior size
+ (xcb:-fieldref 'totalKeyBehaviors))
+ :type xcb:-list)
+ (behaviors-rtrn :initarg :behaviors-rtrn :type xcb:-ignore)
+ (vmods-rtrn~ :initform
+ '(name vmods-rtrn type xcb:CARD8 size
+ (logcount
+ (xcb:-fieldref 'virtualMods)))
+ :type xcb:-list)
+ (vmods-rtrn :initarg :vmods-rtrn :type xcb:-ignore)
+ (pad~3 :initform 4 :type xcb:-pad-align)
+ (explicit-rtrn~ :initform
+ '(name explicit-rtrn type xcb:xkb:SetExplicit size
+ (xcb:-fieldref 'totalKeyExplicit))
+ :type xcb:-list)
+ (explicit-rtrn :initarg :explicit-rtrn :type xcb:-ignore)
+ (pad~4 :initform 4 :type xcb:-pad-align)
+ (modmap-rtrn~ :initform
+ '(name modmap-rtrn type xcb:xkb:KeyModMap size
+ (xcb:-fieldref 'totalModMapKeys))
+ :type xcb:-list)
+ (modmap-rtrn :initarg :modmap-rtrn :type xcb:-ignore)
+ (pad~5 :initform 4 :type xcb:-pad-align)
+ (vmodmap-rtrn~ :initform
+ '(name vmodmap-rtrn type xcb:xkb:KeyVModMap size
+ (xcb:-fieldref 'totalVModMapKeys))
+ :type xcb:-list)
+ (vmodmap-rtrn :initarg :vmodmap-rtrn :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetMap
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (present :initarg :present :type xcb:CARD16)
+ (flags :initarg :flags :type xcb:CARD16)
+ (minKeyCode :initarg :minKeyCode :type xcb:KEYCODE)
+ (maxKeyCode :initarg :maxKeyCode :type xcb:KEYCODE)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (firstKeySym :initarg :firstKeySym :type xcb:KEYCODE)
+ (nKeySyms :initarg :nKeySyms :type xcb:CARD8)
+ (totalSyms :initarg :totalSyms :type xcb:CARD16)
+ (firstKeyAction :initarg :firstKeyAction :type xcb:KEYCODE)
+ (nKeyActions :initarg :nKeyActions :type xcb:CARD8)
+ (totalActions :initarg :totalActions :type xcb:CARD16)
+ (firstKeyBehavior :initarg :firstKeyBehavior :type xcb:KEYCODE)
+ (nKeyBehaviors :initarg :nKeyBehaviors :type xcb:CARD8)
+ (totalKeyBehaviors :initarg :totalKeyBehaviors :type xcb:CARD8)
+ (firstKeyExplicit :initarg :firstKeyExplicit :type xcb:KEYCODE)
+ (nKeyExplicit :initarg :nKeyExplicit :type xcb:CARD8)
+ (totalKeyExplicit :initarg :totalKeyExplicit :type xcb:CARD8)
+ (firstModMapKey :initarg :firstModMapKey :type xcb:KEYCODE)
+ (nModMapKeys :initarg :nModMapKeys :type xcb:CARD8)
+ (totalModMapKeys :initarg :totalModMapKeys :type xcb:CARD8)
+ (firstVModMapKey :initarg :firstVModMapKey :type xcb:KEYCODE)
+ (nVModMapKeys :initarg :nVModMapKeys :type xcb:CARD8)
+ (totalVModMapKeys :initarg :totalVModMapKeys :type xcb:CARD8)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (values :initform
+ '(expression
+ (xcb:-fieldref 'present)
+ cases
+ ((1 types~)
+ (2 syms~)
+ (16 actionsCount~ pad~0 actions~)
+ (32 behaviors~)
+ (64 vmods~ pad~1)
+ (8 explicit~)
+ (4 modmap~)
+ (128 vmodmap~)))
+ :type xcb:-switch)
+ (types~ :initform
+ '(name types type xcb:xkb:SetKeyType size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (types :initarg :types :type xcb:-ignore)
+ (syms~ :initform
+ '(name syms type xcb:xkb:KeySymMap size
+ (xcb:-fieldref 'nKeySyms))
+ :type xcb:-list)
+ (syms :initarg :syms :type xcb:-ignore)
+ (actionsCount~ :initform
+ '(name actionsCount type xcb:CARD8 size
+ (xcb:-fieldref 'nKeyActions))
+ :type xcb:-list)
+ (actionsCount :initarg :actionsCount :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (actions~ :initform
+ '(name actions type xcb:xkb:Action size
+ (xcb:-fieldref 'totalActions))
+ :type xcb:-list)
+ (actions :initarg :actions :type xcb:-ignore)
+ (behaviors~ :initform
+ '(name behaviors type xcb:xkb:SetBehavior size
+ (xcb:-fieldref 'totalKeyBehaviors))
+ :type xcb:-list)
+ (behaviors :initarg :behaviors :type xcb:-ignore)
+ (vmods~ :initform
+ '(name vmods type xcb:CARD8 size
+ (logcount
+ (xcb:-fieldref 'virtualMods)))
+ :type xcb:-list)
+ (vmods :initarg :vmods :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (explicit~ :initform
+ '(name explicit type xcb:xkb:SetExplicit size
+ (xcb:-fieldref 'totalKeyExplicit))
+ :type xcb:-list)
+ (explicit :initarg :explicit :type xcb:-ignore)
+ (modmap~ :initform
+ '(name modmap type xcb:xkb:KeyModMap size
+ (xcb:-fieldref 'totalModMapKeys))
+ :type xcb:-list)
+ (modmap :initarg :modmap :type xcb:-ignore)
+ (vmodmap~ :initform
+ '(name vmodmap type xcb:xkb:KeyVModMap size
+ (xcb:-fieldref 'totalVModMapKeys))
+ :type xcb:-list)
+ (vmodmap :initarg :vmodmap :type xcb:-ignore)))
+
+(defclass xcb:xkb:GetCompatMap
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (groups :initarg :groups :type xcb:CARD8)
+ (getAllSI :initarg :getAllSI :type xcb:BOOL)
+ (firstSI :initarg :firstSI :type xcb:CARD16)
+ (nSI :initarg :nSI :type xcb:CARD16)))
+(defclass xcb:xkb:GetCompatMap~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (groupsRtrn :initarg :groupsRtrn :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (firstSIRtrn :initarg :firstSIRtrn :type xcb:CARD16)
+ (nSIRtrn :initarg :nSIRtrn :type xcb:CARD16)
+ (nTotalSI :initarg :nTotalSI :type xcb:CARD16)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (si-rtrn~ :initform
+ '(name si-rtrn type xcb:xkb:SymInterpret size
+ (xcb:-fieldref 'nSIRtrn))
+ :type xcb:-list)
+ (si-rtrn :initarg :si-rtrn :type xcb:-ignore)
+ (group-rtrn~ :initform
+ '(name group-rtrn type xcb:xkb:ModDef size
+ (logcount
+ (xcb:-fieldref 'groupsRtrn)))
+ :type xcb:-list)
+ (group-rtrn :initarg :group-rtrn :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetCompatMap
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (recomputeActions :initarg :recomputeActions :type xcb:BOOL)
+ (truncateSI :initarg :truncateSI :type xcb:BOOL)
+ (groups :initarg :groups :type xcb:CARD8)
+ (firstSI :initarg :firstSI :type xcb:CARD16)
+ (nSI :initarg :nSI :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (si~ :initform
+ '(name si type xcb:xkb:SymInterpret size
+ (xcb:-fieldref 'nSI))
+ :type xcb:-list)
+ (si :initarg :si :type xcb:-ignore)
+ (groupMaps~ :initform
+ '(name groupMaps type xcb:xkb:ModDef size
+ (logcount
+ (xcb:-fieldref 'groups)))
+ :type xcb:-list)
+ (groupMaps :initarg :groupMaps :type xcb:-ignore)))
+
+(defclass xcb:xkb:GetIndicatorState
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:xkb:GetIndicatorState~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (state :initarg :state :type xcb:CARD32)
+ (pad~0 :initform 20 :type xcb:-pad)))
+
+(defclass xcb:xkb:GetIndicatorMap
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (which :initarg :which :type xcb:CARD32)))
+(defclass xcb:xkb:GetIndicatorMap~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (which :initarg :which :type xcb:CARD32)
+ (realIndicators :initarg :realIndicators :type xcb:CARD32)
+ (nIndicators :initarg :nIndicators :type xcb:CARD8)
+ (pad~0 :initform 15 :type xcb:-pad)
+ (maps~ :initform
+ '(name maps type xcb:xkb:IndicatorMap size
+ (logcount
+ (xcb:-fieldref 'which)))
+ :type xcb:-list)
+ (maps :initarg :maps :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetIndicatorMap
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (which :initarg :which :type xcb:CARD32)
+ (maps~ :initform
+ '(name maps type xcb:xkb:IndicatorMap size
+ (logcount
+ (xcb:-fieldref 'which)))
+ :type xcb:-list)
+ (maps :initarg :maps :type xcb:-ignore)))
+
+(defclass xcb:xkb:GetNamedIndicator
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (ledClass :initarg :ledClass :type xcb:xkb:LedClassSpec)
+ (ledID :initarg :ledID :type xcb:xkb:IDSpec)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (indicator :initarg :indicator :type xcb:ATOM)))
+(defclass xcb:xkb:GetNamedIndicator~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (indicator :initarg :indicator :type xcb:ATOM)
+ (found :initarg :found :type xcb:BOOL)
+ (on :initarg :on :type xcb:BOOL)
+ (realIndicator :initarg :realIndicator :type xcb:BOOL)
+ (ndx :initarg :ndx :type xcb:CARD8)
+ (map-flags :initarg :map-flags :type xcb:CARD8)
+ (map-whichGroups :initarg :map-whichGroups :type xcb:CARD8)
+ (map-groups :initarg :map-groups :type xcb:CARD8)
+ (map-whichMods :initarg :map-whichMods :type xcb:CARD8)
+ (map-mods :initarg :map-mods :type xcb:CARD8)
+ (map-realMods :initarg :map-realMods :type xcb:CARD8)
+ (map-vmod :initarg :map-vmod :type xcb:CARD16)
+ (map-ctrls :initarg :map-ctrls :type xcb:CARD32)
+ (supported :initarg :supported :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xkb:SetNamedIndicator
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (ledClass :initarg :ledClass :type xcb:xkb:LedClassSpec)
+ (ledID :initarg :ledID :type xcb:xkb:IDSpec)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (indicator :initarg :indicator :type xcb:ATOM)
+ (setState :initarg :setState :type xcb:BOOL)
+ (on :initarg :on :type xcb:BOOL)
+ (setMap :initarg :setMap :type xcb:BOOL)
+ (createMap :initarg :createMap :type xcb:BOOL)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (map-flags :initarg :map-flags :type xcb:CARD8)
+ (map-whichGroups :initarg :map-whichGroups :type xcb:CARD8)
+ (map-groups :initarg :map-groups :type xcb:CARD8)
+ (map-whichMods :initarg :map-whichMods :type xcb:CARD8)
+ (map-realMods :initarg :map-realMods :type xcb:CARD8)
+ (map-vmods :initarg :map-vmods :type xcb:CARD16)
+ (map-ctrls :initarg :map-ctrls :type xcb:CARD32)))
+
+(defclass xcb:xkb:GetNames
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (which :initarg :which :type xcb:CARD32)))
+(defclass xcb:xkb:GetNames~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (which :initarg :which :type xcb:CARD32)
+ (minKeyCode :initarg :minKeyCode :type xcb:KEYCODE)
+ (maxKeyCode :initarg :maxKeyCode :type xcb:KEYCODE)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (groupNames :initarg :groupNames :type xcb:CARD8)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (firstKey :initarg :firstKey :type xcb:KEYCODE)
+ (nKeys :initarg :nKeys :type xcb:CARD8)
+ (indicators :initarg :indicators :type xcb:CARD32)
+ (nRadioGroups :initarg :nRadioGroups :type xcb:CARD8)
+ (nKeyAliases :initarg :nKeyAliases :type xcb:CARD8)
+ (nKTLevels :initarg :nKTLevels :type xcb:CARD16)
+ (pad~0 :initform 4 :type xcb:-pad)
+ (valueList :initform
+ '(expression
+ (xcb:-fieldref 'which)
+ cases
+ ((1 keycodesName)
+ (2 geometryName)
+ (4 symbolsName)
+ (8 physSymbolsName)
+ (16 typesName)
+ (32 compatName)
+ (64 typeNames~)
+ (128 nLevelsPerType~ pad~1 ktLevelNames~)
+ (256 indicatorNames~)
+ (2048 virtualModNames~)
+ (4096 groups~)
+ (512 keyNames~)
+ (1024 keyAliases~)
+ (8192 radioGroupNames~)))
+ :type xcb:-switch)
+ (keycodesName :initarg :keycodesName :type xcb:ATOM)
+ (geometryName :initarg :geometryName :type xcb:ATOM)
+ (symbolsName :initarg :symbolsName :type xcb:ATOM)
+ (physSymbolsName :initarg :physSymbolsName :type xcb:ATOM)
+ (typesName :initarg :typesName :type xcb:ATOM)
+ (compatName :initarg :compatName :type xcb:ATOM)
+ (typeNames~ :initform
+ '(name typeNames type xcb:ATOM size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (typeNames :initarg :typeNames :type xcb:-ignore)
+ (nLevelsPerType~ :initform
+ '(name nLevelsPerType type xcb:CARD8 size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (nLevelsPerType :initarg :nLevelsPerType :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (ktLevelNames~ :initform
+ '(name ktLevelNames type xcb:ATOM size
+ (apply #'+
+ (slot-value obj 'nLevelsPerType)))
+ :type xcb:-list)
+ (ktLevelNames :initarg :ktLevelNames :type xcb:-ignore)
+ (indicatorNames~ :initform
+ '(name indicatorNames type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'indicators)))
+ :type xcb:-list)
+ (indicatorNames :initarg :indicatorNames :type xcb:-ignore)
+ (virtualModNames~ :initform
+ '(name virtualModNames type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'virtualMods)))
+ :type xcb:-list)
+ (virtualModNames :initarg :virtualModNames :type xcb:-ignore)
+ (groups~ :initform
+ '(name groups type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'groupNames)))
+ :type xcb:-list)
+ (groups :initarg :groups :type xcb:-ignore)
+ (keyNames~ :initform
+ '(name keyNames type xcb:xkb:KeyName size
+ (xcb:-fieldref 'nKeys))
+ :type xcb:-list)
+ (keyNames :initarg :keyNames :type xcb:-ignore)
+ (keyAliases~ :initform
+ '(name keyAliases type xcb:xkb:KeyAlias size
+ (xcb:-fieldref 'nKeyAliases))
+ :type xcb:-list)
+ (keyAliases :initarg :keyAliases :type xcb:-ignore)
+ (radioGroupNames~ :initform
+ '(name radioGroupNames type xcb:ATOM size
+ (xcb:-fieldref 'nRadioGroups))
+ :type xcb:-list)
+ (radioGroupNames :initarg :radioGroupNames :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetNames
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (which :initarg :which :type xcb:CARD32)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (firstKTLevelt :initarg :firstKTLevelt :type xcb:CARD8)
+ (nKTLevels :initarg :nKTLevels :type xcb:CARD8)
+ (indicators :initarg :indicators :type xcb:CARD32)
+ (groupNames :initarg :groupNames :type xcb:CARD8)
+ (nRadioGroups :initarg :nRadioGroups :type xcb:CARD8)
+ (firstKey :initarg :firstKey :type xcb:KEYCODE)
+ (nKeys :initarg :nKeys :type xcb:CARD8)
+ (nKeyAliases :initarg :nKeyAliases :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (totalKTLevelNames :initarg :totalKTLevelNames :type xcb:CARD16)
+ (values :initform
+ '(expression
+ (xcb:-fieldref 'which)
+ cases
+ ((1 keycodesName)
+ (2 geometryName)
+ (4 symbolsName)
+ (8 physSymbolsName)
+ (16 typesName)
+ (32 compatName)
+ (64 typeNames~)
+ (128 nLevelsPerType~ pad~1 ktLevelNames~)
+ (256 indicatorNames~)
+ (2048 virtualModNames~)
+ (4096 groups~)
+ (512 keyNames~)
+ (1024 keyAliases~)
+ (8192 radioGroupNames~)))
+ :type xcb:-switch)
+ (keycodesName :initarg :keycodesName :type xcb:ATOM)
+ (geometryName :initarg :geometryName :type xcb:ATOM)
+ (symbolsName :initarg :symbolsName :type xcb:ATOM)
+ (physSymbolsName :initarg :physSymbolsName :type xcb:ATOM)
+ (typesName :initarg :typesName :type xcb:ATOM)
+ (compatName :initarg :compatName :type xcb:ATOM)
+ (typeNames~ :initform
+ '(name typeNames type xcb:ATOM size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (typeNames :initarg :typeNames :type xcb:-ignore)
+ (nLevelsPerType~ :initform
+ '(name nLevelsPerType type xcb:CARD8 size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (nLevelsPerType :initarg :nLevelsPerType :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (ktLevelNames~ :initform
+ '(name ktLevelNames type xcb:ATOM size
+ (apply #'+
+ (slot-value obj 'nLevelsPerType)))
+ :type xcb:-list)
+ (ktLevelNames :initarg :ktLevelNames :type xcb:-ignore)
+ (indicatorNames~ :initform
+ '(name indicatorNames type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'indicators)))
+ :type xcb:-list)
+ (indicatorNames :initarg :indicatorNames :type xcb:-ignore)
+ (virtualModNames~ :initform
+ '(name virtualModNames type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'virtualMods)))
+ :type xcb:-list)
+ (virtualModNames :initarg :virtualModNames :type xcb:-ignore)
+ (groups~ :initform
+ '(name groups type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'groupNames)))
+ :type xcb:-list)
+ (groups :initarg :groups :type xcb:-ignore)
+ (keyNames~ :initform
+ '(name keyNames type xcb:xkb:KeyName size
+ (xcb:-fieldref 'nKeys))
+ :type xcb:-list)
+ (keyNames :initarg :keyNames :type xcb:-ignore)
+ (keyAliases~ :initform
+ '(name keyAliases type xcb:xkb:KeyAlias size
+ (xcb:-fieldref 'nKeyAliases))
+ :type xcb:-list)
+ (keyAliases :initarg :keyAliases :type xcb:-ignore)
+ (radioGroupNames~ :initform
+ '(name radioGroupNames type xcb:ATOM size
+ (xcb:-fieldref 'nRadioGroups))
+ :type xcb:-list)
+ (radioGroupNames :initarg :radioGroupNames :type xcb:-ignore)))
+
+(defclass xcb:xkb:PerClientFlags
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (change :initarg :change :type xcb:CARD32)
+ (value :initarg :value :type xcb:CARD32)
+ (ctrlsToChange :initarg :ctrlsToChange :type xcb:CARD32)
+ (autoCtrls :initarg :autoCtrls :type xcb:CARD32)
+ (autoCtrlsValues :initarg :autoCtrlsValues :type xcb:CARD32)))
+(defclass xcb:xkb:PerClientFlags~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (supported :initarg :supported :type xcb:CARD32)
+ (value :initarg :value :type xcb:CARD32)
+ (autoCtrls :initarg :autoCtrls :type xcb:CARD32)
+ (autoCtrlsValues :initarg :autoCtrlsValues :type xcb:CARD32)
+ (pad~0 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xkb:ListComponents
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (maxNames :initarg :maxNames :type xcb:CARD16)))
+(defclass xcb:xkb:ListComponents~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (nKeymaps :initarg :nKeymaps :type xcb:CARD16)
+ (nKeycodes :initarg :nKeycodes :type xcb:CARD16)
+ (nTypes :initarg :nTypes :type xcb:CARD16)
+ (nCompatMaps :initarg :nCompatMaps :type xcb:CARD16)
+ (nSymbols :initarg :nSymbols :type xcb:CARD16)
+ (nGeometries :initarg :nGeometries :type xcb:CARD16)
+ (extra :initarg :extra :type xcb:CARD16)
+ (pad~0 :initform 10 :type xcb:-pad)
+ (keymaps~ :initform
+ '(name keymaps type xcb:xkb:Listing size
+ (xcb:-fieldref 'nKeymaps))
+ :type xcb:-list)
+ (keymaps :initarg :keymaps :type xcb:-ignore)
+ (keycodes~ :initform
+ '(name keycodes type xcb:xkb:Listing size
+ (xcb:-fieldref 'nKeycodes))
+ :type xcb:-list)
+ (keycodes :initarg :keycodes :type xcb:-ignore)
+ (types~ :initform
+ '(name types type xcb:xkb:Listing size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (types :initarg :types :type xcb:-ignore)
+ (compatMaps~ :initform
+ '(name compatMaps type xcb:xkb:Listing size
+ (xcb:-fieldref 'nCompatMaps))
+ :type xcb:-list)
+ (compatMaps :initarg :compatMaps :type xcb:-ignore)
+ (symbols~ :initform
+ '(name symbols type xcb:xkb:Listing size
+ (xcb:-fieldref 'nSymbols))
+ :type xcb:-list)
+ (symbols :initarg :symbols :type xcb:-ignore)
+ (geometries~ :initform
+ '(name geometries type xcb:xkb:Listing size
+ (xcb:-fieldref 'nGeometries))
+ :type xcb:-list)
+ (geometries :initarg :geometries :type xcb:-ignore)))
+
+(defclass xcb:xkb:GetKbdByName
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (need :initarg :need :type xcb:CARD16)
+ (want :initarg :want :type xcb:CARD16)
+ (load :initarg :load :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)))
+(defclass xcb:xkb:GetKbdByName~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (minKeyCode :initarg :minKeyCode :type xcb:KEYCODE)
+ (maxKeyCode :initarg :maxKeyCode :type xcb:KEYCODE)
+ (loaded :initarg :loaded :type xcb:BOOL)
+ (newKeyboard :initarg :newKeyboard :type xcb:BOOL)
+ (found :initarg :found :type xcb:CARD16)
+ (reported :initarg :reported :type xcb:CARD16)
+ (pad~0 :initform 16 :type xcb:-pad)
+ (replies :initform
+ '(expression
+ (xcb:-fieldref 'reported)
+ cases
+ ((13 getmap-type typeDeviceID getmap-sequence getmap-length pad~1 typeMinKeyCode typeMaxKeyCode present firstType nTypes totalTypes firstKeySym totalSyms nKeySyms firstKeyAction totalActions nKeyActions firstKeyBehavior nKeyBehaviors totalKeyBehaviors firstKeyExplicit nKeyExplicit totalKeyExplicit firstModMapKey nModMapKeys totalModMapKeys firstVModMapKey nVModMapKeys totalVModMapKeys pad~2 virtualMods map)
+ (2 compatmap-type compatDeviceID compatmap-sequence compatmap-length groupsRtrn pad~7 firstSIRtrn nSIRtrn nTotalSI pad~8 si-rtrn~ group-rtrn~)
+ (16 indicatormap-type indicatorDeviceID indicatormap-sequence indicatormap-length which realIndicators nIndicators pad~9 maps~)
+ (160 keyname-type keyDeviceID keyname-sequence keyname-length which* keyMinKeyCode keyMaxKeyCode nTypes* groupNames virtualMods* firstKey nKeys indicators nRadioGroups nKeyAliases nKTLevels pad~10 valueList)
+ (64 geometry-type geometryDeviceID geometry-sequence geometry-length name geometryFound pad~12 widthMM heightMM nProperties nColors nShapes nSections nDoodads nKeyAliases* baseColorNdx labelColorNdx labelFont)))
+ :type xcb:-switch)
+ (getmap-type :initarg :getmap-type :type xcb:CARD8)
+ (typeDeviceID :initarg :typeDeviceID :type xcb:CARD8)
+ (getmap-sequence :initarg :getmap-sequence :type xcb:CARD16)
+ (getmap-length :initarg :getmap-length :type xcb:CARD32)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (typeMinKeyCode :initarg :typeMinKeyCode :type xcb:KEYCODE)
+ (typeMaxKeyCode :initarg :typeMaxKeyCode :type xcb:KEYCODE)
+ (present :initarg :present :type xcb:CARD16)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (totalTypes :initarg :totalTypes :type xcb:CARD8)
+ (firstKeySym :initarg :firstKeySym :type xcb:KEYCODE)
+ (totalSyms :initarg :totalSyms :type xcb:CARD16)
+ (nKeySyms :initarg :nKeySyms :type xcb:CARD8)
+ (firstKeyAction :initarg :firstKeyAction :type xcb:KEYCODE)
+ (totalActions :initarg :totalActions :type xcb:CARD16)
+ (nKeyActions :initarg :nKeyActions :type xcb:CARD8)
+ (firstKeyBehavior :initarg :firstKeyBehavior :type xcb:KEYCODE)
+ (nKeyBehaviors :initarg :nKeyBehaviors :type xcb:CARD8)
+ (totalKeyBehaviors :initarg :totalKeyBehaviors :type xcb:CARD8)
+ (firstKeyExplicit :initarg :firstKeyExplicit :type xcb:KEYCODE)
+ (nKeyExplicit :initarg :nKeyExplicit :type xcb:CARD8)
+ (totalKeyExplicit :initarg :totalKeyExplicit :type xcb:CARD8)
+ (firstModMapKey :initarg :firstModMapKey :type xcb:KEYCODE)
+ (nModMapKeys :initarg :nModMapKeys :type xcb:CARD8)
+ (totalModMapKeys :initarg :totalModMapKeys :type xcb:CARD8)
+ (firstVModMapKey :initarg :firstVModMapKey :type xcb:KEYCODE)
+ (nVModMapKeys :initarg :nVModMapKeys :type xcb:CARD8)
+ (totalVModMapKeys :initarg :totalVModMapKeys :type xcb:CARD8)
+ (pad~2 :initform 1 :type xcb:-pad)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (map :initform
+ '(expression
+ (xcb:-fieldref 'present)
+ cases
+ ((1 types-rtrn~)
+ (2 syms-rtrn~)
+ (16 acts-rtrn-count~ pad~3 acts-rtrn-acts~)
+ (32 behaviors-rtrn~)
+ (64 vmods-rtrn~ pad~4)
+ (8 explicit-rtrn~ pad~5)
+ (4 modmap-rtrn~ pad~6)
+ (128 vmodmap-rtrn~)))
+ :type xcb:-switch)
+ (types-rtrn~ :initform
+ '(name types-rtrn type xcb:xkb:KeyType size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (types-rtrn :initarg :types-rtrn :type xcb:-ignore)
+ (syms-rtrn~ :initform
+ '(name syms-rtrn type xcb:xkb:KeySymMap size
+ (xcb:-fieldref 'nKeySyms))
+ :type xcb:-list)
+ (syms-rtrn :initarg :syms-rtrn :type xcb:-ignore)
+ (acts-rtrn-count~ :initform
+ '(name acts-rtrn-count type xcb:CARD8 size
+ (xcb:-fieldref 'nKeyActions))
+ :type xcb:-list)
+ (acts-rtrn-count :initarg :acts-rtrn-count :type xcb:-ignore)
+ (pad~3 :initform 4 :type xcb:-pad-align)
+ (acts-rtrn-acts~ :initform
+ '(name acts-rtrn-acts type xcb:xkb:Action size
+ (xcb:-fieldref 'totalActions))
+ :type xcb:-list)
+ (acts-rtrn-acts :initarg :acts-rtrn-acts :type xcb:-ignore)
+ (behaviors-rtrn~ :initform
+ '(name behaviors-rtrn type xcb:xkb:SetBehavior size
+ (xcb:-fieldref 'totalKeyBehaviors))
+ :type xcb:-list)
+ (behaviors-rtrn :initarg :behaviors-rtrn :type xcb:-ignore)
+ (vmods-rtrn~ :initform
+ '(name vmods-rtrn type xcb:CARD8 size
+ (logcount
+ (xcb:-fieldref 'virtualMods)))
+ :type xcb:-list)
+ (vmods-rtrn :initarg :vmods-rtrn :type xcb:-ignore)
+ (pad~4 :initform 4 :type xcb:-pad-align)
+ (explicit-rtrn~ :initform
+ '(name explicit-rtrn type xcb:xkb:SetExplicit size
+ (xcb:-fieldref 'totalKeyExplicit))
+ :type xcb:-list)
+ (explicit-rtrn :initarg :explicit-rtrn :type xcb:-ignore)
+ (pad~5 :initform 4 :type xcb:-pad-align)
+ (modmap-rtrn~ :initform
+ '(name modmap-rtrn type xcb:xkb:KeyModMap size
+ (xcb:-fieldref 'totalModMapKeys))
+ :type xcb:-list)
+ (modmap-rtrn :initarg :modmap-rtrn :type xcb:-ignore)
+ (pad~6 :initform 4 :type xcb:-pad-align)
+ (vmodmap-rtrn~ :initform
+ '(name vmodmap-rtrn type xcb:xkb:KeyVModMap size
+ (xcb:-fieldref 'totalVModMapKeys))
+ :type xcb:-list)
+ (vmodmap-rtrn :initarg :vmodmap-rtrn :type xcb:-ignore)
+ (compatmap-type :initarg :compatmap-type :type xcb:CARD8)
+ (compatDeviceID :initarg :compatDeviceID :type xcb:CARD8)
+ (compatmap-sequence :initarg :compatmap-sequence :type xcb:CARD16)
+ (compatmap-length :initarg :compatmap-length :type xcb:CARD32)
+ (groupsRtrn :initarg :groupsRtrn :type xcb:CARD8)
+ (pad~7 :initform 1 :type xcb:-pad)
+ (firstSIRtrn :initarg :firstSIRtrn :type xcb:CARD16)
+ (nSIRtrn :initarg :nSIRtrn :type xcb:CARD16)
+ (nTotalSI :initarg :nTotalSI :type xcb:CARD16)
+ (pad~8 :initform 16 :type xcb:-pad)
+ (si-rtrn~ :initform
+ '(name si-rtrn type xcb:xkb:SymInterpret size
+ (xcb:-fieldref 'nSIRtrn))
+ :type xcb:-list)
+ (si-rtrn :initarg :si-rtrn :type xcb:-ignore)
+ (group-rtrn~ :initform
+ '(name group-rtrn type xcb:xkb:ModDef size
+ (logcount
+ (xcb:-fieldref 'groupsRtrn)))
+ :type xcb:-list)
+ (group-rtrn :initarg :group-rtrn :type xcb:-ignore)
+ (indicatormap-type :initarg :indicatormap-type :type xcb:CARD8)
+ (indicatorDeviceID :initarg :indicatorDeviceID :type xcb:CARD8)
+ (indicatormap-sequence :initarg :indicatormap-sequence :type xcb:CARD16)
+ (indicatormap-length :initarg :indicatormap-length :type xcb:CARD32)
+ (which :initarg :which :type xcb:CARD32)
+ (realIndicators :initarg :realIndicators :type xcb:CARD32)
+ (nIndicators :initarg :nIndicators :type xcb:CARD8)
+ (pad~9 :initform 15 :type xcb:-pad)
+ (maps~ :initform
+ '(name maps type xcb:xkb:IndicatorMap size
+ (xcb:-fieldref 'nIndicators))
+ :type xcb:-list)
+ (maps :initarg :maps :type xcb:-ignore)
+ (keyname-type :initarg :keyname-type :type xcb:CARD8)
+ (keyDeviceID :initarg :keyDeviceID :type xcb:CARD8)
+ (keyname-sequence :initarg :keyname-sequence :type xcb:CARD16)
+ (keyname-length :initarg :keyname-length :type xcb:CARD32)
+ (which* :initarg :which* :type xcb:CARD32)
+ (keyMinKeyCode :initarg :keyMinKeyCode :type xcb:KEYCODE)
+ (keyMaxKeyCode :initarg :keyMaxKeyCode :type xcb:KEYCODE)
+ (nTypes* :initarg :nTypes* :type xcb:CARD8)
+ (groupNames :initarg :groupNames :type xcb:CARD8)
+ (virtualMods* :initarg :virtualMods* :type xcb:CARD16)
+ (firstKey :initarg :firstKey :type xcb:KEYCODE)
+ (nKeys :initarg :nKeys :type xcb:CARD8)
+ (indicators :initarg :indicators :type xcb:CARD32)
+ (nRadioGroups :initarg :nRadioGroups :type xcb:CARD8)
+ (nKeyAliases :initarg :nKeyAliases :type xcb:CARD8)
+ (nKTLevels :initarg :nKTLevels :type xcb:CARD16)
+ (pad~10 :initform 4 :type xcb:-pad)
+ (valueList :initform
+ '(expression
+ (xcb:-fieldref 'which)
+ cases
+ ((1 keycodesName)
+ (2 geometryName)
+ (4 symbolsName)
+ (8 physSymbolsName)
+ (16 typesName)
+ (32 compatName)
+ (64 typeNames~)
+ (128 nLevelsPerType~ pad~11 ktLevelNames~)
+ (256 indicatorNames~)
+ (2048 virtualModNames~)
+ (4096 groups~)
+ (512 keyNames~)
+ (1024 keyAliases~)
+ (8192 radioGroupNames~)))
+ :type xcb:-switch)
+ (keycodesName :initarg :keycodesName :type xcb:ATOM)
+ (geometryName :initarg :geometryName :type xcb:ATOM)
+ (symbolsName :initarg :symbolsName :type xcb:ATOM)
+ (physSymbolsName :initarg :physSymbolsName :type xcb:ATOM)
+ (typesName :initarg :typesName :type xcb:ATOM)
+ (compatName :initarg :compatName :type xcb:ATOM)
+ (typeNames~ :initform
+ '(name typeNames type xcb:ATOM size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (typeNames :initarg :typeNames :type xcb:-ignore)
+ (nLevelsPerType~ :initform
+ '(name nLevelsPerType type xcb:CARD8 size
+ (xcb:-fieldref 'nTypes))
+ :type xcb:-list)
+ (nLevelsPerType :initarg :nLevelsPerType :type xcb:-ignore)
+ (pad~11 :initform 4 :type xcb:-pad-align)
+ (ktLevelNames~ :initform
+ '(name ktLevelNames type xcb:ATOM size
+ (apply #'+
+ (slot-value obj 'nLevelsPerType)))
+ :type xcb:-list)
+ (ktLevelNames :initarg :ktLevelNames :type xcb:-ignore)
+ (indicatorNames~ :initform
+ '(name indicatorNames type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'indicators)))
+ :type xcb:-list)
+ (indicatorNames :initarg :indicatorNames :type xcb:-ignore)
+ (virtualModNames~ :initform
+ '(name virtualModNames type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'virtualMods)))
+ :type xcb:-list)
+ (virtualModNames :initarg :virtualModNames :type xcb:-ignore)
+ (groups~ :initform
+ '(name groups type xcb:ATOM size
+ (logcount
+ (xcb:-fieldref 'groupNames)))
+ :type xcb:-list)
+ (groups :initarg :groups :type xcb:-ignore)
+ (keyNames~ :initform
+ '(name keyNames type xcb:xkb:KeyName size
+ (xcb:-fieldref 'nKeys))
+ :type xcb:-list)
+ (keyNames :initarg :keyNames :type xcb:-ignore)
+ (keyAliases~ :initform
+ '(name keyAliases type xcb:xkb:KeyAlias size
+ (xcb:-fieldref 'nKeyAliases))
+ :type xcb:-list)
+ (keyAliases :initarg :keyAliases :type xcb:-ignore)
+ (radioGroupNames~ :initform
+ '(name radioGroupNames type xcb:ATOM size
+ (xcb:-fieldref 'nRadioGroups))
+ :type xcb:-list)
+ (radioGroupNames :initarg :radioGroupNames :type xcb:-ignore)
+ (geometry-type :initarg :geometry-type :type xcb:CARD8)
+ (geometryDeviceID :initarg :geometryDeviceID :type xcb:CARD8)
+ (geometry-sequence :initarg :geometry-sequence :type xcb:CARD16)
+ (geometry-length :initarg :geometry-length :type xcb:CARD32)
+ (name :initarg :name :type xcb:ATOM)
+ (geometryFound :initarg :geometryFound :type xcb:BOOL)
+ (pad~12 :initform 1 :type xcb:-pad)
+ (widthMM :initarg :widthMM :type xcb:CARD16)
+ (heightMM :initarg :heightMM :type xcb:CARD16)
+ (nProperties :initarg :nProperties :type xcb:CARD16)
+ (nColors :initarg :nColors :type xcb:CARD16)
+ (nShapes :initarg :nShapes :type xcb:CARD16)
+ (nSections :initarg :nSections :type xcb:CARD16)
+ (nDoodads :initarg :nDoodads :type xcb:CARD16)
+ (nKeyAliases* :initarg :nKeyAliases* :type xcb:CARD16)
+ (baseColorNdx :initarg :baseColorNdx :type xcb:CARD8)
+ (labelColorNdx :initarg :labelColorNdx :type xcb:CARD8)
+ (labelFont :initarg :labelFont :type xcb:xkb:CountedString16)))
+
+(defclass xcb:xkb:GetDeviceInfo
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (wanted :initarg :wanted :type xcb:CARD16)
+ (allButtons :initarg :allButtons :type xcb:BOOL)
+ (firstButton :initarg :firstButton :type xcb:CARD8)
+ (nButtons :initarg :nButtons :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (ledClass :initarg :ledClass :type xcb:xkb:LedClassSpec)
+ (ledID :initarg :ledID :type xcb:xkb:IDSpec)))
+(defclass xcb:xkb:GetDeviceInfo~reply
+ (xcb:-reply)
+ ((deviceID :initarg :deviceID :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (present :initarg :present :type xcb:CARD16)
+ (supported :initarg :supported :type xcb:CARD16)
+ (unsupported :initarg :unsupported :type xcb:CARD16)
+ (nDeviceLedFBs :initarg :nDeviceLedFBs :type xcb:CARD16)
+ (firstBtnWanted :initarg :firstBtnWanted :type xcb:CARD8)
+ (nBtnsWanted :initarg :nBtnsWanted :type xcb:CARD8)
+ (firstBtnRtrn :initarg :firstBtnRtrn :type xcb:CARD8)
+ (nBtnsRtrn :initarg :nBtnsRtrn :type xcb:CARD8)
+ (totalBtns :initarg :totalBtns :type xcb:CARD8)
+ (hasOwnState :initarg :hasOwnState :type xcb:BOOL)
+ (dfltKbdFB :initarg :dfltKbdFB :type xcb:CARD16)
+ (dfltLedFB :initarg :dfltLedFB :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (devType :initarg :devType :type xcb:ATOM)
+ (nameLen :initarg :nameLen :type xcb:CARD16)
+ (name~ :initform
+ '(name name type xcb:xkb:STRING8 size
+ (xcb:-fieldref 'nameLen))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (btnActions~ :initform
+ '(name btnActions type xcb:xkb:Action size
+ (xcb:-fieldref 'nBtnsRtrn))
+ :type xcb:-list)
+ (btnActions :initarg :btnActions :type xcb:-ignore)
+ (leds~ :initform
+ '(name leds type xcb:xkb:DeviceLedInfo size
+ (xcb:-fieldref 'nDeviceLedFBs))
+ :type xcb:-list)
+ (leds :initarg :leds :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetDeviceInfo
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)
+ (deviceSpec :initarg :deviceSpec :type xcb:xkb:DeviceSpec)
+ (firstBtn :initarg :firstBtn :type xcb:CARD8)
+ (nBtns :initarg :nBtns :type xcb:CARD8)
+ (change :initarg :change :type xcb:CARD16)
+ (nDeviceLedFBs :initarg :nDeviceLedFBs :type xcb:CARD16)
+ (btnActions~ :initform
+ '(name btnActions type xcb:xkb:Action size
+ (xcb:-fieldref 'nBtns))
+ :type xcb:-list)
+ (btnActions :initarg :btnActions :type xcb:-ignore)
+ (leds~ :initform
+ '(name leds type xcb:xkb:DeviceLedInfo size
+ (xcb:-fieldref 'nDeviceLedFBs))
+ :type xcb:-list)
+ (leds :initarg :leds :type xcb:-ignore)))
+
+(defclass xcb:xkb:SetDebuggingFlags
+ (xcb:-request)
+ ((~opcode :initform 101 :type xcb:-u1)
+ (msgLength :initarg :msgLength :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (affectFlags :initarg :affectFlags :type xcb:CARD32)
+ (flags :initarg :flags :type xcb:CARD32)
+ (affectCtrls :initarg :affectCtrls :type xcb:CARD32)
+ (ctrls :initarg :ctrls :type xcb:CARD32)
+ (message~ :initform
+ '(name message type xcb:xkb:STRING8 size
+ (xcb:-fieldref 'msgLength))
+ :type xcb:-list)
+ (message :initarg :message :type xcb:-ignore)))
+(defclass xcb:xkb:SetDebuggingFlags~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (currentFlags :initarg :currentFlags :type xcb:CARD32)
+ (currentCtrls :initarg :currentCtrls :type xcb:CARD32)
+ (supportedFlags :initarg :supportedFlags :type xcb:CARD32)
+ (supportedCtrls :initarg :supportedCtrls :type xcb:CARD32)
+ (pad~1 :initform 8 :type xcb:-pad)))
+
+(defclass xcb:xkb:NewKeyboardNotify
+ (xcb:-event)
+ ((~code :initform 0)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (oldDeviceID :initarg :oldDeviceID :type xcb:CARD8)
+ (minKeyCode :initarg :minKeyCode :type xcb:KEYCODE)
+ (maxKeyCode :initarg :maxKeyCode :type xcb:KEYCODE)
+ (oldMinKeyCode :initarg :oldMinKeyCode :type xcb:KEYCODE)
+ (oldMaxKeyCode :initarg :oldMaxKeyCode :type xcb:KEYCODE)
+ (requestMajor :initarg :requestMajor :type xcb:CARD8)
+ (requestMinor :initarg :requestMinor :type xcb:CARD8)
+ (changed :initarg :changed :type xcb:CARD16)
+ (pad~0 :initform 14 :type xcb:-pad)))
+
+(defclass xcb:xkb:MapNotify
+ (xcb:-event)
+ ((~code :initform 1)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (ptrBtnActions :initarg :ptrBtnActions :type xcb:CARD8)
+ (changed :initarg :changed :type xcb:CARD16)
+ (minKeyCode :initarg :minKeyCode :type xcb:KEYCODE)
+ (maxKeyCode :initarg :maxKeyCode :type xcb:KEYCODE)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (firstKeySym :initarg :firstKeySym :type xcb:KEYCODE)
+ (nKeySyms :initarg :nKeySyms :type xcb:CARD8)
+ (firstKeyAct :initarg :firstKeyAct :type xcb:KEYCODE)
+ (nKeyActs :initarg :nKeyActs :type xcb:CARD8)
+ (firstKeyBehavior :initarg :firstKeyBehavior :type xcb:KEYCODE)
+ (nKeyBehavior :initarg :nKeyBehavior :type xcb:CARD8)
+ (firstKeyExplicit :initarg :firstKeyExplicit :type xcb:KEYCODE)
+ (nKeyExplicit :initarg :nKeyExplicit :type xcb:CARD8)
+ (firstModMapKey :initarg :firstModMapKey :type xcb:KEYCODE)
+ (nModMapKeys :initarg :nModMapKeys :type xcb:CARD8)
+ (firstVModMapKey :initarg :firstVModMapKey :type xcb:KEYCODE)
+ (nVModMapKeys :initarg :nVModMapKeys :type xcb:CARD8)
+ (virtualMods :initarg :virtualMods :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:xkb:StateNotify
+ (xcb:-event)
+ ((~code :initform 2)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (mods :initarg :mods :type xcb:CARD8)
+ (baseMods :initarg :baseMods :type xcb:CARD8)
+ (latchedMods :initarg :latchedMods :type xcb:CARD8)
+ (lockedMods :initarg :lockedMods :type xcb:CARD8)
+ (group :initarg :group :type xcb:CARD8)
+ (baseGroup :initarg :baseGroup :type xcb:INT16)
+ (latchedGroup :initarg :latchedGroup :type xcb:INT16)
+ (lockedGroup :initarg :lockedGroup :type xcb:CARD8)
+ (compatState :initarg :compatState :type xcb:CARD8)
+ (grabMods :initarg :grabMods :type xcb:CARD8)
+ (compatGrabMods :initarg :compatGrabMods :type xcb:CARD8)
+ (lookupMods :initarg :lookupMods :type xcb:CARD8)
+ (compatLoockupMods :initarg :compatLoockupMods :type xcb:CARD8)
+ (ptrBtnState :initarg :ptrBtnState :type xcb:CARD16)
+ (changed :initarg :changed :type xcb:CARD16)
+ (keycode :initarg :keycode :type xcb:KEYCODE)
+ (eventType :initarg :eventType :type xcb:CARD8)
+ (requestMajor :initarg :requestMajor :type xcb:CARD8)
+ (requestMinor :initarg :requestMinor :type xcb:CARD8)))
+
+(defclass xcb:xkb:ControlsNotify
+ (xcb:-event)
+ ((~code :initform 3)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (numGroups :initarg :numGroups :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (changedControls :initarg :changedControls :type xcb:CARD32)
+ (enabledControls :initarg :enabledControls :type xcb:CARD32)
+ (enabledControlChanges :initarg :enabledControlChanges :type xcb:CARD32)
+ (keycode :initarg :keycode :type xcb:KEYCODE)
+ (eventType :initarg :eventType :type xcb:CARD8)
+ (requestMajor :initarg :requestMajor :type xcb:CARD8)
+ (requestMinor :initarg :requestMinor :type xcb:CARD8)
+ (pad~1 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:xkb:IndicatorStateNotify
+ (xcb:-event)
+ ((~code :initform 4)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (state :initarg :state :type xcb:CARD32)
+ (stateChanged :initarg :stateChanged :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)))
+
+(defclass xcb:xkb:IndicatorMapNotify
+ (xcb:-event)
+ ((~code :initform 5)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (state :initarg :state :type xcb:CARD32)
+ (mapChanged :initarg :mapChanged :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)))
+
+(defclass xcb:xkb:NamesNotify
+ (xcb:-event)
+ ((~code :initform 6)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (changed :initarg :changed :type xcb:CARD16)
+ (firstType :initarg :firstType :type xcb:CARD8)
+ (nTypes :initarg :nTypes :type xcb:CARD8)
+ (firstLevelName :initarg :firstLevelName :type xcb:CARD8)
+ (nLevelNames :initarg :nLevelNames :type xcb:CARD8)
+ (pad~1 :initform 1 :type xcb:-pad)
+ (nRadioGroups :initarg :nRadioGroups :type xcb:CARD8)
+ (nKeyAliases :initarg :nKeyAliases :type xcb:CARD8)
+ (changedGroupNames :initarg :changedGroupNames :type xcb:CARD8)
+ (changedVirtualMods :initarg :changedVirtualMods :type xcb:CARD16)
+ (firstKey :initarg :firstKey :type xcb:KEYCODE)
+ (nKeys :initarg :nKeys :type xcb:CARD8)
+ (changedIndicators :initarg :changedIndicators :type xcb:CARD32)
+ (pad~2 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:xkb:CompatMapNotify
+ (xcb:-event)
+ ((~code :initform 7)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (changedGroups :initarg :changedGroups :type xcb:CARD8)
+ (firstSI :initarg :firstSI :type xcb:CARD16)
+ (nSI :initarg :nSI :type xcb:CARD16)
+ (nTotalSI :initarg :nTotalSI :type xcb:CARD16)
+ (pad~0 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:xkb:BellNotify
+ (xcb:-event)
+ ((~code :initform 8)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (bellClass :initarg :bellClass :type xcb:CARD8)
+ (bellID :initarg :bellID :type xcb:CARD8)
+ (percent :initarg :percent :type xcb:CARD8)
+ (pitch :initarg :pitch :type xcb:CARD16)
+ (duration :initarg :duration :type xcb:CARD16)
+ (name :initarg :name :type xcb:ATOM)
+ (window :initarg :window :type xcb:WINDOW)
+ (eventOnly :initarg :eventOnly :type xcb:BOOL)
+ (pad~0 :initform 7 :type xcb:-pad)))
+
+(defclass xcb:xkb:ActionMessage
+ (xcb:-event)
+ ((~code :initform 9)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (keycode :initarg :keycode :type xcb:KEYCODE)
+ (press :initarg :press :type xcb:BOOL)
+ (keyEventFollows :initarg :keyEventFollows :type xcb:BOOL)
+ (mods :initarg :mods :type xcb:CARD8)
+ (group :initarg :group :type xcb:CARD8)
+ (message~ :initform
+ '(name message type xcb:xkb:STRING8 size 8)
+ :type xcb:-list)
+ (message :initarg :message :type xcb:-ignore)
+ (pad~0 :initform 10 :type xcb:-pad)))
+
+(defclass xcb:xkb:AccessXNotify
+ (xcb:-event)
+ ((~code :initform 10)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (keycode :initarg :keycode :type xcb:KEYCODE)
+ (detailt :initarg :detailt :type xcb:CARD16)
+ (slowKeysDelay :initarg :slowKeysDelay :type xcb:CARD16)
+ (debounceDelay :initarg :debounceDelay :type xcb:CARD16)
+ (pad~0 :initform 16 :type xcb:-pad)))
+
+(defclass xcb:xkb:ExtensionDeviceNotify
+ (xcb:-event)
+ ((~code :initform 11)
+ (xkbType :initarg :xkbType :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (deviceID :initarg :deviceID :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (reason :initarg :reason :type xcb:CARD16)
+ (ledClass :initarg :ledClass :type xcb:CARD16)
+ (ledID :initarg :ledID :type xcb:CARD16)
+ (ledsDefined :initarg :ledsDefined :type xcb:CARD32)
+ (ledState :initarg :ledState :type xcb:CARD32)
+ (firstButton :initarg :firstButton :type xcb:CARD8)
+ (nButtons :initarg :nButtons :type xcb:CARD8)
+ (supported :initarg :supported :type xcb:CARD16)
+ (unsupported :initarg :unsupported :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)))
+
+(defconst xcb:xkb:error-number-class-alist
+ '((0 . xcb:xkb:Keyboard))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:xkb:event-number-class-alist
+ '((0 . xcb:xkb:NewKeyboardNotify)
+ (1 . xcb:xkb:MapNotify)
+ (2 . xcb:xkb:StateNotify)
+ (3 . xcb:xkb:ControlsNotify)
+ (4 . xcb:xkb:IndicatorStateNotify)
+ (5 . xcb:xkb:IndicatorMapNotify)
+ (6 . xcb:xkb:NamesNotify)
+ (7 . xcb:xkb:CompatMapNotify)
+ (8 . xcb:xkb:BellNotify)
+ (9 . xcb:xkb:ActionMessage)
+ (10 . xcb:xkb:AccessXNotify)
+ (11 . xcb:xkb:ExtensionDeviceNotify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-xkb)
+
+;;; xcb-xkb.el ends here
diff --git a/elpa/xelb-0.20/xcb-xkb.elc b/elpa/xelb-0.20/xcb-xkb.elc
new file mode 100644
index 0000000..83a97c2
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xkb.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xlib.el b/elpa/xelb-0.20/xcb-xlib.el
new file mode 100644
index 0000000..0f4f5ea
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xlib.el
@@ -0,0 +1,112 @@
+;;; xcb-xlib.el --- Port of Xlib -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file currently only contains constants from 'Xlib.h'
+
+;;; Code:
+
+(defconst xlib:XNRequiredCharSet "requiredCharSet")
+(defconst xlib:XNQueryOrientation "queryOrientation")
+(defconst xlib:XNBaseFontName "baseFontName")
+(defconst xlib:XNOMAutomatic "omAutomatic")
+(defconst xlib:XNMissingCharSet "missingCharSet")
+(defconst xlib:XNDefaultString "defaultString")
+(defconst xlib:XNOrientation "orientation")
+(defconst xlib:XNDirectionalDependentDrawing "directionalDependentDrawing")
+(defconst xlib:XNContextualDrawing "contextualDrawing")
+(defconst xlib:XNFontInfo "fontInfo")
+
+(defconst xlib:XNVaNestedList "XNVaNestedList")
+(defconst xlib:XNQueryInputStyle "queryInputStyle")
+(defconst xlib:XNClientWindow "clientWindow")
+(defconst xlib:XNInputStyle "inputStyle")
+(defconst xlib:XNFocusWindow "focusWindow")
+(defconst xlib:XNResourceName "resourceName")
+(defconst xlib:XNResourceClass "resourceClass")
+(defconst xlib:XNGeometryCallback "geometryCallback")
+(defconst xlib:XNDestroyCallback "destroyCallback")
+(defconst xlib:XNFilterEvents "filterEvents")
+(defconst xlib:XNPreeditStartCallback "preeditStartCallback")
+(defconst xlib:XNPreeditDoneCallback "preeditDoneCallback")
+(defconst xlib:XNPreeditDrawCallback "preeditDrawCallback")
+(defconst xlib:XNPreeditCaretCallback "preeditCaretCallback")
+(defconst xlib:XNPreeditStateNotifyCallback "preeditStateNotifyCallback")
+(defconst xlib:XNPreeditAttributes "preeditAttributes")
+(defconst xlib:XNStatusStartCallback "statusStartCallback")
+(defconst xlib:XNStatusDoneCallback "statusDoneCallback")
+(defconst xlib:XNStatusDrawCallback "statusDrawCallback")
+(defconst xlib:XNStatusAttributes "statusAttributes")
+(defconst xlib:XNArea "area")
+(defconst xlib:XNAreaNeeded "areaNeeded")
+(defconst xlib:XNSpotLocation "spotLocation")
+(defconst xlib:XNColormap "colorMap")
+(defconst xlib:XNStdColormap "stdColorMap")
+(defconst xlib:XNForeground "foreground")
+(defconst xlib:XNBackground "background")
+(defconst xlib:XNBackgroundPixmap "backgroundPixmap")
+(defconst xlib:XNFontSet "fontSet")
+(defconst xlib:XNLineSpace "lineSpace")
+(defconst xlib:XNCursor "cursor")
+(defconst xlib:XNQueryIMValuesList "queryIMValuesList")
+(defconst xlib:XNQueryICValuesList "queryICValuesList")
+(defconst xlib:XNVisiblePosition "visiblePosition")
+(defconst xlib:XNR6PreeditCallback "r6PreeditCallback")
+(defconst xlib:XNStringConversionCallback "stringConversionCallback")
+(defconst xlib:XNStringConversion "stringConversion")
+(defconst xlib:XNResetState "resetState")
+(defconst xlib:XNHotKey "hotKey")
+(defconst xlib:XNHotKeyState "hotKeyState")
+(defconst xlib:XNPreeditState "preeditState")
+(defconst xlib:XNSeparatorofNestedList "separatorofNestedList")
+
+(defconst xlib:XIMPreeditArea #x0001)
+(defconst xlib:XIMPreeditCallbacks #x0002)
+(defconst xlib:XIMPreeditPosition #x0004)
+(defconst xlib:XIMPreeditNothing #x0008)
+(defconst xlib:XIMPreeditNone #x0010)
+(defconst xlib:XIMStatusArea #x0100)
+(defconst xlib:XIMStatusCallbacks #x0200)
+(defconst xlib:XIMStatusNothing #x0400)
+(defconst xlib:XIMStatusNone #x0800)
+
+(defconst xlib:XIMReverse #x001)
+(defconst xlib:XIMUnderline #x002)
+(defconst xlib:XIMHighlight #x004)
+(defconst xlib:XIMPrimary #x010)
+(defconst xlib:XIMSecondary #x020)
+(defconst xlib:XIMTertiary #x040)
+(defconst xlib:XIMVisibleToForward #x080)
+(defconst xlib:XIMVisibleToBackword #x100)
+(defconst xlib:XIMVisibleToCenter #x200)
+
+(defconst xlib:XBufferOverflow -1)
+(defconst xlib:XLookupNone 1)
+(defconst xlib:XLookupChars 2)
+(defconst xlib:XLookupKeySym 3)
+(defconst xlib:XLookupBoth 4)
+
+
+
+(provide 'xcb-xlib)
+
+;;; xcb-xlib.el ends here
diff --git a/elpa/xelb-0.20/xcb-xlib.elc b/elpa/xelb-0.20/xcb-xlib.elc
new file mode 100644
index 0000000..24a3430
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xlib.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xprint.el b/elpa/xelb-0.20/xcb-xprint.el
new file mode 100644
index 0000000..36abd27
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xprint.el
@@ -0,0 +1,414 @@
+;;; xcb-xprint.el --- X11 XPrint extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xprint.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xprint:-extension-xname "XpExtension")
+(defconst xcb:xprint:-extension-name "XPrint")
+(defconst xcb:xprint:-major-version 1)
+(defconst xcb:xprint:-minor-version 0)
+
+(require 'xcb-xproto)
+
+(xcb:deftypealias 'xcb:xprint:STRING8 'xcb:char)
+
+(defclass xcb:xprint:PRINTER
+ (xcb:-struct)
+ ((nameLen :initarg :nameLen :type xcb:CARD32)
+ (name~ :initform
+ '(name name type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'nameLen))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (descLen :initarg :descLen :type xcb:CARD32)
+ (description~ :initform
+ '(name description type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'descLen))
+ :type xcb:-list)
+ (description :initarg :description :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(xcb:deftypealias 'xcb:xprint:PCONTEXT 'xcb:-u4)
+
+(defconst xcb:xprint:GetDoc:Finished 0)
+(defconst xcb:xprint:GetDoc:SecondConsumer 1)
+
+(defconst xcb:xprint:EvMask:NoEventMask 0)
+(defconst xcb:xprint:EvMask:PrintMask 1)
+(defconst xcb:xprint:EvMask:AttributeMask 2)
+
+(defconst xcb:xprint:Detail:StartJobNotify 1)
+(defconst xcb:xprint:Detail:EndJobNotify 2)
+(defconst xcb:xprint:Detail:StartDocNotify 3)
+(defconst xcb:xprint:Detail:EndDocNotify 4)
+(defconst xcb:xprint:Detail:StartPageNotify 5)
+(defconst xcb:xprint:Detail:EndPageNotify 6)
+
+(defconst xcb:xprint:Attr:JobAttr 1)
+(defconst xcb:xprint:Attr:DocAttr 2)
+(defconst xcb:xprint:Attr:PageAttr 3)
+(defconst xcb:xprint:Attr:PrinterAttr 4)
+(defconst xcb:xprint:Attr:ServerAttr 5)
+(defconst xcb:xprint:Attr:MediumAttr 6)
+(defconst xcb:xprint:Attr:SpoolerAttr 7)
+
+(defclass xcb:xprint:PrintQueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:xprint:PrintQueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major-version :initarg :major-version :type xcb:CARD16)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+
+(defclass xcb:xprint:PrintGetPrinterList
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (printerNameLen :initarg :printerNameLen :type xcb:CARD32)
+ (localeLen :initarg :localeLen :type xcb:CARD32)
+ (printer-name~ :initform
+ '(name printer-name type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'printerNameLen))
+ :type xcb:-list)
+ (printer-name :initarg :printer-name :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (locale~ :initform
+ '(name locale type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'localeLen))
+ :type xcb:-list)
+ (locale :initarg :locale :type xcb:-ignore)))
+(defclass xcb:xprint:PrintGetPrinterList~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (listCount :initarg :listCount :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (printers~ :initform
+ '(name printers type xcb:xprint:PRINTER size
+ (xcb:-fieldref 'listCount))
+ :type xcb:-list)
+ (printers :initarg :printers :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintRehashPrinterList
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)))
+
+(defclass xcb:xprint:CreateContext
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (context-id :initarg :context-id :type xcb:CARD32)
+ (printerNameLen :initarg :printerNameLen :type xcb:CARD32)
+ (localeLen :initarg :localeLen :type xcb:CARD32)
+ (printerName~ :initform
+ '(name printerName type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'printerNameLen))
+ :type xcb:-list)
+ (printerName :initarg :printerName :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (locale~ :initform
+ '(name locale type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'localeLen))
+ :type xcb:-list)
+ (locale :initarg :locale :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintSetContext
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (context :initarg :context :type xcb:CARD32)))
+
+(defclass xcb:xprint:PrintGetContext
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)))
+(defclass xcb:xprint:PrintGetContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context :initarg :context :type xcb:CARD32)))
+
+(defclass xcb:xprint:PrintDestroyContext
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (context :initarg :context :type xcb:CARD32)))
+
+(defclass xcb:xprint:PrintGetScreenOfContext
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)))
+(defclass xcb:xprint:PrintGetScreenOfContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)))
+
+(defclass xcb:xprint:PrintStartJob
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (output-mode :initarg :output-mode :type xcb:CARD8)))
+
+(defclass xcb:xprint:PrintEndJob
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (cancel :initarg :cancel :type xcb:BOOL)))
+
+(defclass xcb:xprint:PrintStartDoc
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (driver-mode :initarg :driver-mode :type xcb:CARD8)))
+
+(defclass xcb:xprint:PrintEndDoc
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (cancel :initarg :cancel :type xcb:BOOL)))
+
+(defclass xcb:xprint:PrintPutDocumentData
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (len-data :initarg :len-data :type xcb:CARD32)
+ (len-fmt :initarg :len-fmt :type xcb:CARD16)
+ (len-options :initarg :len-options :type xcb:CARD16)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (xcb:-fieldref 'len-data))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (doc-format~ :initform
+ '(name doc-format type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'len-fmt))
+ :type xcb:-list)
+ (doc-format :initarg :doc-format :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (options~ :initform
+ '(name options type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'len-options))
+ :type xcb:-list)
+ (options :initarg :options :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintGetDocumentData
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (max-bytes :initarg :max-bytes :type xcb:CARD32)))
+(defclass xcb:xprint:PrintGetDocumentData~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (status-code :initarg :status-code :type xcb:CARD32)
+ (finished-flag :initarg :finished-flag :type xcb:CARD32)
+ (dataLen :initarg :dataLen :type xcb:CARD32)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (xcb:-fieldref 'dataLen))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintStartPage
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:xprint:PrintEndPage
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (cancel :initarg :cancel :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xprint:PrintSelectInput
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (event-mask :initarg :event-mask :type xcb:CARD32)))
+
+(defclass xcb:xprint:PrintInputSelected
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)))
+(defclass xcb:xprint:PrintInputSelected~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (event-mask :initarg :event-mask :type xcb:CARD32)
+ (all-events-mask :initarg :all-events-mask :type xcb:CARD32)))
+
+(defclass xcb:xprint:PrintGetAttributes
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (pool :initarg :pool :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xprint:PrintGetAttributes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (stringLen :initarg :stringLen :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (attributes~ :initform
+ '(name attributes type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'stringLen))
+ :type xcb:-list)
+ (attributes :initarg :attributes :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintGetOneAttributes
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (nameLen :initarg :nameLen :type xcb:CARD32)
+ (pool :initarg :pool :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'nameLen))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:xprint:PrintGetOneAttributes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (valueLen :initarg :valueLen :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (value~ :initform
+ '(name value type xcb:xprint:STRING8 size
+ (xcb:-fieldref 'valueLen))
+ :type xcb:-list)
+ (value :initarg :value :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintSetAttributes
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (stringLen :initarg :stringLen :type xcb:CARD32)
+ (pool :initarg :pool :type xcb:CARD8)
+ (rule :initarg :rule :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (attributes~ :initform
+ '(name attributes type xcb:xprint:STRING8 size nil)
+ :type xcb:-list)
+ (attributes :initarg :attributes :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintGetPageDimensions
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)))
+(defclass xcb:xprint:PrintGetPageDimensions~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (offset-x :initarg :offset-x :type xcb:CARD16)
+ (offset-y :initarg :offset-y :type xcb:CARD16)
+ (reproducible-width :initarg :reproducible-width :type xcb:CARD16)
+ (reproducible-height :initarg :reproducible-height :type xcb:CARD16)))
+
+(defclass xcb:xprint:PrintQueryScreens
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)))
+(defclass xcb:xprint:PrintQueryScreens~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (listCount :initarg :listCount :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (roots~ :initform
+ '(name roots type xcb:WINDOW size
+ (xcb:-fieldref 'listCount))
+ :type xcb:-list)
+ (roots :initarg :roots :type xcb:-ignore)))
+
+(defclass xcb:xprint:PrintSetImageResolution
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (image-resolution :initarg :image-resolution :type xcb:CARD16)))
+(defclass xcb:xprint:PrintSetImageResolution~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (previous-resolutions :initarg :previous-resolutions :type xcb:CARD16)))
+
+(defclass xcb:xprint:PrintGetImageResolution
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)))
+(defclass xcb:xprint:PrintGetImageResolution~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (image-resolution :initarg :image-resolution :type xcb:CARD16)))
+
+(defclass xcb:xprint:Notify
+ (xcb:-event)
+ ((~code :initform 0)
+ (detail :initarg :detail :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)
+ (cancel :initarg :cancel :type xcb:BOOL)))
+
+(defclass xcb:xprint:AttributNotify
+ (xcb:-event)
+ ((~code :initform 1)
+ (detail :initarg :detail :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (context :initarg :context :type xcb:xprint:PCONTEXT)))
+
+(defclass xcb:xprint:BadContext
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:xprint:BadSequence
+ (xcb:-error)
+ ((~code :initform 1)))
+
+(defconst xcb:xprint:error-number-class-alist
+ '((0 . xcb:xprint:BadContext)
+ (1 . xcb:xprint:BadSequence))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:xprint:event-number-class-alist
+ '((0 . xcb:xprint:Notify)
+ (1 . xcb:xprint:AttributNotify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-xprint)
+
+;;; xcb-xprint.el ends here
diff --git a/elpa/xelb-0.20/xcb-xprint.elc b/elpa/xelb-0.20/xcb-xprint.elc
new file mode 100644
index 0000000..c4d7731
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xprint.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xproto.el b/elpa/xelb-0.20/xcb-xproto.el
new file mode 100644
index 0000000..19b1f09
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xproto.el
@@ -0,0 +1,3012 @@
+;;; xcb-xproto.el --- X11 core protocol -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xproto.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defclass xcb:CHAR2B
+ (xcb:-struct)
+ ((byte1 :initarg :byte1 :type xcb:CARD8)
+ (byte2 :initarg :byte2 :type xcb:CARD8)))
+
+(xcb:deftypealias 'xcb:WINDOW 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:PIXMAP 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:CURSOR 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:FONT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:GCONTEXT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:COLORMAP 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:ATOM 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:DRAWABLE 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:FONTABLE 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:BOOL32 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:VISUALID 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:TIMESTAMP 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:KEYSYM 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:KEYCODE 'xcb:CARD8)
+
+(xcb:deftypealias 'xcb:KEYCODE32 'xcb:CARD32)
+
+(xcb:deftypealias 'xcb:BUTTON 'xcb:CARD8)
+
+(defclass xcb:POINT
+ (xcb:-struct)
+ ((x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)))
+
+(defclass xcb:RECTANGLE
+ (xcb:-struct)
+ ((x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:ARC
+ (xcb:-struct)
+ ((x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (angle1 :initarg :angle1 :type xcb:INT16)
+ (angle2 :initarg :angle2 :type xcb:INT16)))
+
+(defclass xcb:FORMAT
+ (xcb:-struct)
+ ((depth :initarg :depth :type xcb:CARD8)
+ (bits-per-pixel :initarg :bits-per-pixel :type xcb:CARD8)
+ (scanline-pad :initarg :scanline-pad :type xcb:CARD8)
+ (pad~0 :initform 5 :type xcb:-pad)))
+
+(defconst xcb:VisualClass:StaticGray 0)
+(defconst xcb:VisualClass:GrayScale 1)
+(defconst xcb:VisualClass:StaticColor 2)
+(defconst xcb:VisualClass:PseudoColor 3)
+(defconst xcb:VisualClass:TrueColor 4)
+(defconst xcb:VisualClass:DirectColor 5)
+
+(defclass xcb:VISUALTYPE
+ (xcb:-struct)
+ ((visual-id :initarg :visual-id :type xcb:VISUALID)
+ (class :initarg :class :type xcb:CARD8)
+ (bits-per-rgb-value :initarg :bits-per-rgb-value :type xcb:CARD8)
+ (colormap-entries :initarg :colormap-entries :type xcb:CARD16)
+ (red-mask :initarg :red-mask :type xcb:CARD32)
+ (green-mask :initarg :green-mask :type xcb:CARD32)
+ (blue-mask :initarg :blue-mask :type xcb:CARD32)
+ (pad~0 :initform 4 :type xcb:-pad)))
+
+(defclass xcb:DEPTH
+ (xcb:-struct)
+ ((depth :initarg :depth :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (visuals-len :initarg :visuals-len :type xcb:CARD16)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (visuals~ :initform
+ '(name visuals type xcb:VISUALTYPE size
+ (xcb:-fieldref 'visuals-len))
+ :type xcb:-list)
+ (visuals :initarg :visuals :type xcb:-ignore)))
+
+(defconst xcb:EventMask:NoEvent 0)
+(defconst xcb:EventMask:KeyPress 1)
+(defconst xcb:EventMask:KeyRelease 2)
+(defconst xcb:EventMask:ButtonPress 4)
+(defconst xcb:EventMask:ButtonRelease 8)
+(defconst xcb:EventMask:EnterWindow 16)
+(defconst xcb:EventMask:LeaveWindow 32)
+(defconst xcb:EventMask:PointerMotion 64)
+(defconst xcb:EventMask:PointerMotionHint 128)
+(defconst xcb:EventMask:Button1Motion 256)
+(defconst xcb:EventMask:Button2Motion 512)
+(defconst xcb:EventMask:Button3Motion 1024)
+(defconst xcb:EventMask:Button4Motion 2048)
+(defconst xcb:EventMask:Button5Motion 4096)
+(defconst xcb:EventMask:ButtonMotion 8192)
+(defconst xcb:EventMask:KeymapState 16384)
+(defconst xcb:EventMask:Exposure 32768)
+(defconst xcb:EventMask:VisibilityChange 65536)
+(defconst xcb:EventMask:StructureNotify 131072)
+(defconst xcb:EventMask:ResizeRedirect 262144)
+(defconst xcb:EventMask:SubstructureNotify 524288)
+(defconst xcb:EventMask:SubstructureRedirect 1048576)
+(defconst xcb:EventMask:FocusChange 2097152)
+(defconst xcb:EventMask:PropertyChange 4194304)
+(defconst xcb:EventMask:ColorMapChange 8388608)
+(defconst xcb:EventMask:OwnerGrabButton 16777216)
+
+(defconst xcb:BackingStore:NotUseful 0)
+(defconst xcb:BackingStore:WhenMapped 1)
+(defconst xcb:BackingStore:Always 2)
+
+(defclass xcb:SCREEN
+ (xcb:-struct)
+ ((root :initarg :root :type xcb:WINDOW)
+ (default-colormap :initarg :default-colormap :type xcb:COLORMAP)
+ (white-pixel :initarg :white-pixel :type xcb:CARD32)
+ (black-pixel :initarg :black-pixel :type xcb:CARD32)
+ (current-input-masks :initarg :current-input-masks :type xcb:CARD32)
+ (width-in-pixels :initarg :width-in-pixels :type xcb:CARD16)
+ (height-in-pixels :initarg :height-in-pixels :type xcb:CARD16)
+ (width-in-millimeters :initarg :width-in-millimeters :type xcb:CARD16)
+ (height-in-millimeters :initarg :height-in-millimeters :type xcb:CARD16)
+ (min-installed-maps :initarg :min-installed-maps :type xcb:CARD16)
+ (max-installed-maps :initarg :max-installed-maps :type xcb:CARD16)
+ (root-visual :initarg :root-visual :type xcb:VISUALID)
+ (backing-stores :initarg :backing-stores :type xcb:BYTE)
+ (save-unders :initarg :save-unders :type xcb:BOOL)
+ (root-depth :initarg :root-depth :type xcb:CARD8)
+ (allowed-depths-len :initarg :allowed-depths-len :type xcb:CARD8)
+ (allowed-depths~ :initform
+ '(name allowed-depths type xcb:DEPTH size
+ (xcb:-fieldref 'allowed-depths-len))
+ :type xcb:-list)
+ (allowed-depths :initarg :allowed-depths :type xcb:-ignore)))
+
+(defclass xcb:SetupRequest
+ (xcb:-struct)
+ ((byte-order :initarg :byte-order :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (protocol-major-version :initarg :protocol-major-version :type xcb:CARD16)
+ (protocol-minor-version :initarg :protocol-minor-version :type xcb:CARD16)
+ (authorization-protocol-name-len :initarg :authorization-protocol-name-len :type xcb:CARD16)
+ (authorization-protocol-data-len :initarg :authorization-protocol-data-len :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (authorization-protocol-name~ :initform
+ '(name authorization-protocol-name type xcb:char size
+ (xcb:-fieldref 'authorization-protocol-name-len))
+ :type xcb:-list)
+ (authorization-protocol-name :initarg :authorization-protocol-name :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)
+ (authorization-protocol-data~ :initform
+ '(name authorization-protocol-data type xcb:char size
+ (xcb:-fieldref 'authorization-protocol-data-len))
+ :type xcb:-list)
+ (authorization-protocol-data :initarg :authorization-protocol-data :type xcb:-ignore)
+ (pad~3 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:SetupFailed
+ (xcb:-struct)
+ ((status :initarg :status :type xcb:CARD8)
+ (reason-len :initarg :reason-len :type xcb:CARD8)
+ (protocol-major-version :initarg :protocol-major-version :type xcb:CARD16)
+ (protocol-minor-version :initarg :protocol-minor-version :type xcb:CARD16)
+ (length :initarg :length :type xcb:CARD16)
+ (reason~ :initform
+ '(name reason type xcb:char size
+ (xcb:-fieldref 'reason-len))
+ :type xcb:-list)
+ (reason :initarg :reason :type xcb:-ignore)))
+
+(defclass xcb:SetupAuthenticate
+ (xcb:-struct)
+ ((status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 5 :type xcb:-pad)
+ (length :initarg :length :type xcb:CARD16)
+ (reason~ :initform
+ '(name reason type xcb:char size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (reason :initarg :reason :type xcb:-ignore)))
+
+(defconst xcb:ImageOrder:LSBFirst 0)
+(defconst xcb:ImageOrder:MSBFirst 1)
+
+(defclass xcb:Setup
+ (xcb:-struct)
+ ((status :initarg :status :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (protocol-major-version :initarg :protocol-major-version :type xcb:CARD16)
+ (protocol-minor-version :initarg :protocol-minor-version :type xcb:CARD16)
+ (length :initarg :length :type xcb:CARD16)
+ (release-number :initarg :release-number :type xcb:CARD32)
+ (resource-id-base :initarg :resource-id-base :type xcb:CARD32)
+ (resource-id-mask :initarg :resource-id-mask :type xcb:CARD32)
+ (motion-buffer-size :initarg :motion-buffer-size :type xcb:CARD32)
+ (vendor-len :initarg :vendor-len :type xcb:CARD16)
+ (maximum-request-length :initarg :maximum-request-length :type xcb:CARD16)
+ (roots-len :initarg :roots-len :type xcb:CARD8)
+ (pixmap-formats-len :initarg :pixmap-formats-len :type xcb:CARD8)
+ (image-byte-order :initarg :image-byte-order :type xcb:CARD8)
+ (bitmap-format-bit-order :initarg :bitmap-format-bit-order :type xcb:CARD8)
+ (bitmap-format-scanline-unit :initarg :bitmap-format-scanline-unit :type xcb:CARD8)
+ (bitmap-format-scanline-pad :initarg :bitmap-format-scanline-pad :type xcb:CARD8)
+ (min-keycode :initarg :min-keycode :type xcb:KEYCODE)
+ (max-keycode :initarg :max-keycode :type xcb:KEYCODE)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (vendor~ :initform
+ '(name vendor type xcb:char size
+ (xcb:-fieldref 'vendor-len))
+ :type xcb:-list)
+ (vendor :initarg :vendor :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)
+ (pixmap-formats~ :initform
+ '(name pixmap-formats type xcb:FORMAT size
+ (xcb:-fieldref 'pixmap-formats-len))
+ :type xcb:-list)
+ (pixmap-formats :initarg :pixmap-formats :type xcb:-ignore)
+ (roots~ :initform
+ '(name roots type xcb:SCREEN size
+ (xcb:-fieldref 'roots-len))
+ :type xcb:-list)
+ (roots :initarg :roots :type xcb:-ignore)))
+
+(defconst xcb:ModMask:Shift 1)
+(defconst xcb:ModMask:Lock 2)
+(defconst xcb:ModMask:Control 4)
+(defconst xcb:ModMask:1 8)
+(defconst xcb:ModMask:2 16)
+(defconst xcb:ModMask:3 32)
+(defconst xcb:ModMask:4 64)
+(defconst xcb:ModMask:5 128)
+(defconst xcb:ModMask:Any 32768)
+
+(defconst xcb:KeyButMask:Shift 1)
+(defconst xcb:KeyButMask:Lock 2)
+(defconst xcb:KeyButMask:Control 4)
+(defconst xcb:KeyButMask:Mod1 8)
+(defconst xcb:KeyButMask:Mod2 16)
+(defconst xcb:KeyButMask:Mod3 32)
+(defconst xcb:KeyButMask:Mod4 64)
+(defconst xcb:KeyButMask:Mod5 128)
+(defconst xcb:KeyButMask:Button1 256)
+(defconst xcb:KeyButMask:Button2 512)
+(defconst xcb:KeyButMask:Button3 1024)
+(defconst xcb:KeyButMask:Button4 2048)
+(defconst xcb:KeyButMask:Button5 4096)
+
+(defconst xcb:Window:None 0)
+
+(defclass xcb:KeyPress
+ (xcb:-event)
+ ((~code :initform 2)
+ (detail :initarg :detail :type xcb:KEYCODE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:INT16)
+ (root-y :initarg :root-y :type xcb:INT16)
+ (event-x :initarg :event-x :type xcb:INT16)
+ (event-y :initarg :event-y :type xcb:INT16)
+ (state :initarg :state :type xcb:CARD16)
+ (same-screen :initarg :same-screen :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:KeyRelease
+ (xcb:KeyPress)
+ ((~code :initform 3)))
+
+(defconst xcb:ButtonMask:1 256)
+(defconst xcb:ButtonMask:2 512)
+(defconst xcb:ButtonMask:3 1024)
+(defconst xcb:ButtonMask:4 2048)
+(defconst xcb:ButtonMask:5 4096)
+(defconst xcb:ButtonMask:Any 32768)
+
+(defclass xcb:ButtonPress
+ (xcb:-event)
+ ((~code :initform 4)
+ (detail :initarg :detail :type xcb:BUTTON)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:INT16)
+ (root-y :initarg :root-y :type xcb:INT16)
+ (event-x :initarg :event-x :type xcb:INT16)
+ (event-y :initarg :event-y :type xcb:INT16)
+ (state :initarg :state :type xcb:CARD16)
+ (same-screen :initarg :same-screen :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:ButtonRelease
+ (xcb:ButtonPress)
+ ((~code :initform 5)))
+
+(defconst xcb:Motion:Normal 0)
+(defconst xcb:Motion:Hint 1)
+
+(defclass xcb:MotionNotify
+ (xcb:-event)
+ ((~code :initform 6)
+ (detail :initarg :detail :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:INT16)
+ (root-y :initarg :root-y :type xcb:INT16)
+ (event-x :initarg :event-x :type xcb:INT16)
+ (event-y :initarg :event-y :type xcb:INT16)
+ (state :initarg :state :type xcb:CARD16)
+ (same-screen :initarg :same-screen :type xcb:BOOL)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defconst xcb:NotifyDetail:Ancestor 0)
+(defconst xcb:NotifyDetail:Virtual 1)
+(defconst xcb:NotifyDetail:Inferior 2)
+(defconst xcb:NotifyDetail:Nonlinear 3)
+(defconst xcb:NotifyDetail:NonlinearVirtual 4)
+(defconst xcb:NotifyDetail:Pointer 5)
+(defconst xcb:NotifyDetail:PointerRoot 6)
+(defconst xcb:NotifyDetail:None 7)
+
+(defconst xcb:NotifyMode:Normal 0)
+(defconst xcb:NotifyMode:Grab 1)
+(defconst xcb:NotifyMode:Ungrab 2)
+(defconst xcb:NotifyMode:WhileGrabbed 3)
+
+(defclass xcb:EnterNotify
+ (xcb:-event)
+ ((~code :initform 7)
+ (detail :initarg :detail :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (root :initarg :root :type xcb:WINDOW)
+ (event :initarg :event :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:INT16)
+ (root-y :initarg :root-y :type xcb:INT16)
+ (event-x :initarg :event-x :type xcb:INT16)
+ (event-y :initarg :event-y :type xcb:INT16)
+ (state :initarg :state :type xcb:CARD16)
+ (mode :initarg :mode :type xcb:BYTE)
+ (same-screen-focus :initarg :same-screen-focus :type xcb:BYTE)))
+
+(defclass xcb:LeaveNotify
+ (xcb:EnterNotify)
+ ((~code :initform 8)))
+
+(defclass xcb:FocusIn
+ (xcb:-event)
+ ((~code :initform 9)
+ (detail :initarg :detail :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (mode :initarg :mode :type xcb:BYTE)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:FocusOut
+ (xcb:FocusIn)
+ ((~code :initform 10)))
+
+(defclass xcb:KeymapNotify
+ (xcb:-event)
+ ((~code :initform 11)
+ (keys~ :initform
+ '(name keys type xcb:CARD8 size 31)
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defclass xcb:Expose
+ (xcb:-event)
+ ((~code :initform 12)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (x :initarg :x :type xcb:CARD16)
+ (y :initarg :y :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (count :initarg :count :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:GraphicsExposure
+ (xcb:-event)
+ ((~code :initform 13)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (x :initarg :x :type xcb:CARD16)
+ (y :initarg :y :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (count :initarg :count :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:NoExposure
+ (xcb:-event)
+ ((~code :initform 14)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (pad~1 :initform 1 :type xcb:-pad)))
+
+(defconst xcb:Visibility:Unobscured 0)
+(defconst xcb:Visibility:PartiallyObscured 1)
+(defconst xcb:Visibility:FullyObscured 2)
+
+(defclass xcb:VisibilityNotify
+ (xcb:-event)
+ ((~code :initform 15)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (state :initarg :state :type xcb:BYTE)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:CreateNotify
+ (xcb:-event)
+ ((~code :initform 16)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (border-width :initarg :border-width :type xcb:CARD16)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL)
+ (pad~1 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:DestroyNotify
+ (xcb:-event)
+ ((~code :initform 17)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:UnmapNotify
+ (xcb:-event)
+ ((~code :initform 18)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (from-configure :initarg :from-configure :type xcb:BOOL)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:MapNotify
+ (xcb:-event)
+ ((~code :initform 19)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:MapRequest
+ (xcb:-event)
+ ((~code :initform 20)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:ReparentNotify
+ (xcb:-event)
+ ((~code :initform 21)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:ConfigureNotify
+ (xcb:-event)
+ ((~code :initform 22)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (above-sibling :initarg :above-sibling :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (border-width :initarg :border-width :type xcb:CARD16)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL)
+ (pad~1 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:ConfigureRequest
+ (xcb:-event)
+ ((~code :initform 23)
+ (stack-mode :initarg :stack-mode :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (sibling :initarg :sibling :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (border-width :initarg :border-width :type xcb:CARD16)
+ (value-mask :initarg :value-mask :type xcb:CARD16)))
+
+(defclass xcb:GravityNotify
+ (xcb:-event)
+ ((~code :initform 24)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)))
+
+(defclass xcb:ResizeRequest
+ (xcb:-event)
+ ((~code :initform 25)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defconst xcb:Place:OnTop 0)
+(defconst xcb:Place:OnBottom 1)
+
+(defclass xcb:CirculateNotify
+ (xcb:-event)
+ ((~code :initform 26)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (event :initarg :event :type xcb:WINDOW)
+ (window :initarg :window :type xcb:WINDOW)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (place :initarg :place :type xcb:BYTE)
+ (pad~2 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:CirculateRequest
+ (xcb:CirculateNotify)
+ ((~code :initform 27)))
+
+(defconst xcb:Property:NewValue 0)
+(defconst xcb:Property:Delete 1)
+
+(defclass xcb:PropertyNotify
+ (xcb:-event)
+ ((~code :initform 28)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (atom :initarg :atom :type xcb:ATOM)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (state :initarg :state :type xcb:BYTE)
+ (pad~1 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:SelectionClear
+ (xcb:-event)
+ ((~code :initform 29)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (owner :initarg :owner :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)))
+
+(defconst xcb:Time:CurrentTime 0)
+
+(defconst xcb:Atom:None 0)
+(defconst xcb:Atom:Any 0)
+(defconst xcb:Atom:PRIMARY 1)
+(defconst xcb:Atom:SECONDARY 2)
+(defconst xcb:Atom:ARC 3)
+(defconst xcb:Atom:ATOM 4)
+(defconst xcb:Atom:BITMAP 5)
+(defconst xcb:Atom:CARDINAL 6)
+(defconst xcb:Atom:COLORMAP 7)
+(defconst xcb:Atom:CURSOR 8)
+(defconst xcb:Atom:CUT_BUFFER0 9)
+(defconst xcb:Atom:CUT_BUFFER1 10)
+(defconst xcb:Atom:CUT_BUFFER2 11)
+(defconst xcb:Atom:CUT_BUFFER3 12)
+(defconst xcb:Atom:CUT_BUFFER4 13)
+(defconst xcb:Atom:CUT_BUFFER5 14)
+(defconst xcb:Atom:CUT_BUFFER6 15)
+(defconst xcb:Atom:CUT_BUFFER7 16)
+(defconst xcb:Atom:DRAWABLE 17)
+(defconst xcb:Atom:FONT 18)
+(defconst xcb:Atom:INTEGER 19)
+(defconst xcb:Atom:PIXMAP 20)
+(defconst xcb:Atom:POINT 21)
+(defconst xcb:Atom:RECTANGLE 22)
+(defconst xcb:Atom:RESOURCE_MANAGER 23)
+(defconst xcb:Atom:RGB_COLOR_MAP 24)
+(defconst xcb:Atom:RGB_BEST_MAP 25)
+(defconst xcb:Atom:RGB_BLUE_MAP 26)
+(defconst xcb:Atom:RGB_DEFAULT_MAP 27)
+(defconst xcb:Atom:RGB_GRAY_MAP 28)
+(defconst xcb:Atom:RGB_GREEN_MAP 29)
+(defconst xcb:Atom:RGB_RED_MAP 30)
+(defconst xcb:Atom:STRING 31)
+(defconst xcb:Atom:VISUALID 32)
+(defconst xcb:Atom:WINDOW 33)
+(defconst xcb:Atom:WM_COMMAND 34)
+(defconst xcb:Atom:WM_HINTS 35)
+(defconst xcb:Atom:WM_CLIENT_MACHINE 36)
+(defconst xcb:Atom:WM_ICON_NAME 37)
+(defconst xcb:Atom:WM_ICON_SIZE 38)
+(defconst xcb:Atom:WM_NAME 39)
+(defconst xcb:Atom:WM_NORMAL_HINTS 40)
+(defconst xcb:Atom:WM_SIZE_HINTS 41)
+(defconst xcb:Atom:WM_ZOOM_HINTS 42)
+(defconst xcb:Atom:MIN_SPACE 43)
+(defconst xcb:Atom:NORM_SPACE 44)
+(defconst xcb:Atom:MAX_SPACE 45)
+(defconst xcb:Atom:END_SPACE 46)
+(defconst xcb:Atom:SUPERSCRIPT_X 47)
+(defconst xcb:Atom:SUPERSCRIPT_Y 48)
+(defconst xcb:Atom:SUBSCRIPT_X 49)
+(defconst xcb:Atom:SUBSCRIPT_Y 50)
+(defconst xcb:Atom:UNDERLINE_POSITION 51)
+(defconst xcb:Atom:UNDERLINE_THICKNESS 52)
+(defconst xcb:Atom:STRIKEOUT_ASCENT 53)
+(defconst xcb:Atom:STRIKEOUT_DESCENT 54)
+(defconst xcb:Atom:ITALIC_ANGLE 55)
+(defconst xcb:Atom:X_HEIGHT 56)
+(defconst xcb:Atom:QUAD_WIDTH 57)
+(defconst xcb:Atom:WEIGHT 58)
+(defconst xcb:Atom:POINT_SIZE 59)
+(defconst xcb:Atom:RESOLUTION 60)
+(defconst xcb:Atom:COPYRIGHT 61)
+(defconst xcb:Atom:NOTICE 62)
+(defconst xcb:Atom:FONT_NAME 63)
+(defconst xcb:Atom:FAMILY_NAME 64)
+(defconst xcb:Atom:FULL_NAME 65)
+(defconst xcb:Atom:CAP_HEIGHT 66)
+(defconst xcb:Atom:WM_CLASS 67)
+(defconst xcb:Atom:WM_TRANSIENT_FOR 68)
+
+(defclass xcb:SelectionRequest
+ (xcb:-event)
+ ((~code :initform 30)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (owner :initarg :owner :type xcb:WINDOW)
+ (requestor :initarg :requestor :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)
+ (target :initarg :target :type xcb:ATOM)
+ (property :initarg :property :type xcb:ATOM)))
+
+(defclass xcb:SelectionNotify
+ (xcb:-event)
+ ((~code :initform 31)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (requestor :initarg :requestor :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)
+ (target :initarg :target :type xcb:ATOM)
+ (property :initarg :property :type xcb:ATOM)))
+
+(defconst xcb:ColormapState:Uninstalled 0)
+(defconst xcb:ColormapState:Installed 1)
+
+(defconst xcb:Colormap:None 0)
+
+(defclass xcb:ColormapNotify
+ (xcb:-event)
+ ((~code :initform 32)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (colormap :initarg :colormap :type xcb:COLORMAP)
+ (new :initarg :new :type xcb:BOOL)
+ (state :initarg :state :type xcb:BYTE)
+ (pad~1 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:ClientMessageData
+ (xcb:-union)
+ ((~size :initform 20)
+ (data8~ :initform
+ '(name data8 type xcb:CARD8 size 20)
+ :type xcb:-list)
+ (data8 :initarg :data8 :type xcb:-ignore)
+ (data16~ :initform
+ '(name data16 type xcb:CARD16 size 10)
+ :type xcb:-list)
+ (data16 :initarg :data16 :type xcb:-ignore)
+ (data32~ :initform
+ '(name data32 type xcb:CARD32 size 5)
+ :type xcb:-list)
+ (data32 :initarg :data32 :type xcb:-ignore)))
+
+(defclass xcb:ClientMessage
+ (xcb:-event)
+ ((~code :initform 33)
+ (format :initarg :format :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (window :initarg :window :type xcb:WINDOW)
+ (type :initarg :type :type xcb:ATOM)
+ (data :initarg :data :type xcb:ClientMessageData)))
+
+(defconst xcb:Mapping:Modifier 0)
+(defconst xcb:Mapping:Keyboard 1)
+(defconst xcb:Mapping:Pointer 2)
+
+(defclass xcb:MappingNotify
+ (xcb:-event)
+ ((~code :initform 34)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (request :initarg :request :type xcb:BYTE)
+ (first-keycode :initarg :first-keycode :type xcb:KEYCODE)
+ (count :initarg :count :type xcb:CARD8)
+ (pad~1 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:GeGeneric
+ (xcb:-generic-event)
+ ((pad~0 :initform 22 :type xcb:-pad)))
+
+(defclass xcb:Request
+ (xcb:-error)
+ ((~code :initform 1)
+ (bad-value :initarg :bad-value :type xcb:CARD32)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:Value
+ (xcb:-error)
+ ((~code :initform 2)
+ (bad-value :initarg :bad-value :type xcb:CARD32)
+ (minor-opcode :initarg :minor-opcode :type xcb:CARD16)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:Window
+ (xcb:-error xcb:Value)
+ ((~code :initform 3)))
+
+(defclass xcb:Pixmap
+ (xcb:-error xcb:Value)
+ ((~code :initform 4)))
+
+(defclass xcb:Atom
+ (xcb:-error xcb:Value)
+ ((~code :initform 5)))
+
+(defclass xcb:Cursor
+ (xcb:-error xcb:Value)
+ ((~code :initform 6)))
+
+(defclass xcb:Font
+ (xcb:-error xcb:Value)
+ ((~code :initform 7)))
+
+(defclass xcb:Match
+ (xcb:-error xcb:Request)
+ ((~code :initform 8)))
+
+(defclass xcb:Drawable
+ (xcb:-error xcb:Value)
+ ((~code :initform 9)))
+
+(defclass xcb:Access
+ (xcb:-error xcb:Request)
+ ((~code :initform 10)))
+
+(defclass xcb:Alloc
+ (xcb:-error xcb:Request)
+ ((~code :initform 11)))
+
+(defclass xcb:Colormap
+ (xcb:-error xcb:Value)
+ ((~code :initform 12)))
+
+(defclass xcb:GContext
+ (xcb:-error xcb:Value)
+ ((~code :initform 13)))
+
+(defclass xcb:IDChoice
+ (xcb:-error xcb:Value)
+ ((~code :initform 14)))
+
+(defclass xcb:Name
+ (xcb:-error xcb:Request)
+ ((~code :initform 15)))
+
+(defclass xcb:Length
+ (xcb:-error xcb:Request)
+ ((~code :initform 16)))
+
+(defclass xcb:Implementation
+ (xcb:-error xcb:Request)
+ ((~code :initform 17)))
+
+(defconst xcb:WindowClass:CopyFromParent 0)
+(defconst xcb:WindowClass:InputOutput 1)
+(defconst xcb:WindowClass:InputOnly 2)
+
+(defconst xcb:CW:BackPixmap 1)
+(defconst xcb:CW:BackPixel 2)
+(defconst xcb:CW:BorderPixmap 4)
+(defconst xcb:CW:BorderPixel 8)
+(defconst xcb:CW:BitGravity 16)
+(defconst xcb:CW:WinGravity 32)
+(defconst xcb:CW:BackingStore 64)
+(defconst xcb:CW:BackingPlanes 128)
+(defconst xcb:CW:BackingPixel 256)
+(defconst xcb:CW:OverrideRedirect 512)
+(defconst xcb:CW:SaveUnder 1024)
+(defconst xcb:CW:EventMask 2048)
+(defconst xcb:CW:DontPropagate 4096)
+(defconst xcb:CW:Colormap 8192)
+(defconst xcb:CW:Cursor 16384)
+
+(defconst xcb:BackPixmap:None 0)
+(defconst xcb:BackPixmap:ParentRelative 1)
+
+(defconst xcb:Gravity:BitForget 0)
+(defconst xcb:Gravity:WinUnmap 0)
+(defconst xcb:Gravity:NorthWest 1)
+(defconst xcb:Gravity:North 2)
+(defconst xcb:Gravity:NorthEast 3)
+(defconst xcb:Gravity:West 4)
+(defconst xcb:Gravity:Center 5)
+(defconst xcb:Gravity:East 6)
+(defconst xcb:Gravity:SouthWest 7)
+(defconst xcb:Gravity:South 8)
+(defconst xcb:Gravity:SouthEast 9)
+(defconst xcb:Gravity:Static 10)
+
+(defclass xcb:CreateWindow
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (depth :initarg :depth :type xcb:CARD8)
+ (wid :initarg :wid :type xcb:WINDOW)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (border-width :initarg :border-width :type xcb:CARD16)
+ (class :initarg :class :type xcb:CARD16)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 background-pixmap)
+ (2 background-pixel)
+ (4 border-pixmap)
+ (8 border-pixel)
+ (16 bit-gravity)
+ (32 win-gravity)
+ (64 backing-store)
+ (128 backing-planes)
+ (256 backing-pixel)
+ (512 override-redirect)
+ (1024 save-under)
+ (2048 event-mask)
+ (4096 do-not-propogate-mask)
+ (8192 colormap)
+ (16384 cursor)))
+ :type xcb:-switch)
+ (background-pixmap :initarg :background-pixmap :type xcb:PIXMAP)
+ (background-pixel :initarg :background-pixel :type xcb:CARD32)
+ (border-pixmap :initarg :border-pixmap :type xcb:PIXMAP)
+ (border-pixel :initarg :border-pixel :type xcb:CARD32)
+ (bit-gravity :initarg :bit-gravity :type xcb:CARD32)
+ (win-gravity :initarg :win-gravity :type xcb:CARD32)
+ (backing-store :initarg :backing-store :type xcb:CARD32)
+ (backing-planes :initarg :backing-planes :type xcb:CARD32)
+ (backing-pixel :initarg :backing-pixel :type xcb:CARD32)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL32)
+ (save-under :initarg :save-under :type xcb:BOOL32)
+ (event-mask :initarg :event-mask :type xcb:CARD32)
+ (do-not-propogate-mask :initarg :do-not-propogate-mask :type xcb:CARD32)
+ (colormap :initarg :colormap :type xcb:COLORMAP)
+ (cursor :initarg :cursor :type xcb:CURSOR)))
+
+(defclass xcb:ChangeWindowAttributes
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 background-pixmap)
+ (2 background-pixel)
+ (4 border-pixmap)
+ (8 border-pixel)
+ (16 bit-gravity)
+ (32 win-gravity)
+ (64 backing-store)
+ (128 backing-planes)
+ (256 backing-pixel)
+ (512 override-redirect)
+ (1024 save-under)
+ (2048 event-mask)
+ (4096 do-not-propogate-mask)
+ (8192 colormap)
+ (16384 cursor)))
+ :type xcb:-switch)
+ (background-pixmap :initarg :background-pixmap :type xcb:PIXMAP)
+ (background-pixel :initarg :background-pixel :type xcb:CARD32)
+ (border-pixmap :initarg :border-pixmap :type xcb:PIXMAP)
+ (border-pixel :initarg :border-pixel :type xcb:CARD32)
+ (bit-gravity :initarg :bit-gravity :type xcb:CARD32)
+ (win-gravity :initarg :win-gravity :type xcb:CARD32)
+ (backing-store :initarg :backing-store :type xcb:CARD32)
+ (backing-planes :initarg :backing-planes :type xcb:CARD32)
+ (backing-pixel :initarg :backing-pixel :type xcb:CARD32)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL32)
+ (save-under :initarg :save-under :type xcb:BOOL32)
+ (event-mask :initarg :event-mask :type xcb:CARD32)
+ (do-not-propogate-mask :initarg :do-not-propogate-mask :type xcb:CARD32)
+ (colormap :initarg :colormap :type xcb:COLORMAP)
+ (cursor :initarg :cursor :type xcb:CURSOR)))
+
+(defconst xcb:MapState:Unmapped 0)
+(defconst xcb:MapState:Unviewable 1)
+(defconst xcb:MapState:Viewable 2)
+
+(defclass xcb:GetWindowAttributes
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:GetWindowAttributes~reply
+ (xcb:-reply)
+ ((backing-store :initarg :backing-store :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (class :initarg :class :type xcb:CARD16)
+ (bit-gravity :initarg :bit-gravity :type xcb:CARD8)
+ (win-gravity :initarg :win-gravity :type xcb:CARD8)
+ (backing-planes :initarg :backing-planes :type xcb:CARD32)
+ (backing-pixel :initarg :backing-pixel :type xcb:CARD32)
+ (save-under :initarg :save-under :type xcb:BOOL)
+ (map-is-installed :initarg :map-is-installed :type xcb:BOOL)
+ (map-state :initarg :map-state :type xcb:CARD8)
+ (override-redirect :initarg :override-redirect :type xcb:BOOL)
+ (colormap :initarg :colormap :type xcb:COLORMAP)
+ (all-event-masks :initarg :all-event-masks :type xcb:CARD32)
+ (your-event-mask :initarg :your-event-mask :type xcb:CARD32)
+ (do-not-propagate-mask :initarg :do-not-propagate-mask :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:DestroyWindow
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:DestroySubwindows
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defconst xcb:SetMode:Insert 0)
+(defconst xcb:SetMode:Delete 1)
+
+(defclass xcb:ChangeSaveSet
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:BYTE)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:ReparentWindow
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)))
+
+(defclass xcb:MapWindow
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:MapSubwindows
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:UnmapWindow
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:UnmapSubwindows
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defconst xcb:ConfigWindow:X 1)
+(defconst xcb:ConfigWindow:Y 2)
+(defconst xcb:ConfigWindow:Width 4)
+(defconst xcb:ConfigWindow:Height 8)
+(defconst xcb:ConfigWindow:BorderWidth 16)
+(defconst xcb:ConfigWindow:Sibling 32)
+(defconst xcb:ConfigWindow:StackMode 64)
+
+(defconst xcb:StackMode:Above 0)
+(defconst xcb:StackMode:Below 1)
+(defconst xcb:StackMode:TopIf 2)
+(defconst xcb:StackMode:BottomIf 3)
+(defconst xcb:StackMode:Opposite 4)
+
+(defclass xcb:ConfigureWindow
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)
+ (value-mask :initarg :value-mask :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 x)
+ (2 y)
+ (4 width)
+ (8 height)
+ (16 border-width)
+ (32 sibling)
+ (64 stack-mode)))
+ :type xcb:-switch)
+ (x :initarg :x :type xcb:INT32)
+ (y :initarg :y :type xcb:INT32)
+ (width :initarg :width :type xcb:CARD32)
+ (height :initarg :height :type xcb:CARD32)
+ (border-width :initarg :border-width :type xcb:CARD32)
+ (sibling :initarg :sibling :type xcb:WINDOW)
+ (stack-mode :initarg :stack-mode :type xcb:CARD32)))
+
+(defconst xcb:Circulate:RaiseLowest 0)
+(defconst xcb:Circulate:LowerHighest 1)
+
+(defclass xcb:CirculateWindow
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (direction :initarg :direction :type xcb:CARD8)
+ (window :initarg :window :type xcb:WINDOW)))
+
+(defclass xcb:GetGeometry
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+(defclass xcb:GetGeometry~reply
+ (xcb:-reply)
+ ((depth :initarg :depth :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (border-width :initarg :border-width :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:QueryTree
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:QueryTree~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (parent :initarg :parent :type xcb:WINDOW)
+ (children-len :initarg :children-len :type xcb:CARD16)
+ (pad~1 :initform 14 :type xcb:-pad)
+ (children~ :initform
+ '(name children type xcb:WINDOW size
+ (xcb:-fieldref 'children-len))
+ :type xcb:-list)
+ (children :initarg :children :type xcb:-ignore)))
+
+(defclass xcb:InternAtom
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (only-if-exists :initarg :only-if-exists :type xcb:BOOL)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:InternAtom~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (atom :initarg :atom :type xcb:ATOM)))
+
+(defclass xcb:GetAtomName
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (atom :initarg :atom :type xcb:ATOM)))
+(defclass xcb:GetAtomName~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defconst xcb:PropMode:Replace 0)
+(defconst xcb:PropMode:Prepend 1)
+(defconst xcb:PropMode:Append 2)
+
+(defclass xcb:ChangeProperty
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:CARD8)
+ (window :initarg :window :type xcb:WINDOW)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (format :initarg :format :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (data-len :initarg :data-len :type xcb:CARD32)
+ (data~ :initform
+ '(name data type xcb:void size
+ (/
+ (*
+ (xcb:-fieldref 'data-len)
+ (xcb:-fieldref 'format))
+ 8))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:DeleteProperty
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)
+ (property :initarg :property :type xcb:ATOM)))
+
+(defconst xcb:GetPropertyType:Any 0)
+
+(defclass xcb:GetProperty
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (delete :initarg :delete :type xcb:BOOL)
+ (window :initarg :window :type xcb:WINDOW)
+ (property :initarg :property :type xcb:ATOM)
+ (type :initarg :type :type xcb:ATOM)
+ (long-offset :initarg :long-offset :type xcb:CARD32)
+ (long-length :initarg :long-length :type xcb:CARD32)))
+(defclass xcb:GetProperty~reply
+ (xcb:-reply)
+ ((format :initarg :format :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (type :initarg :type :type xcb:ATOM)
+ (bytes-after :initarg :bytes-after :type xcb:CARD32)
+ (value-len :initarg :value-len :type xcb:CARD32)
+ (pad~0 :initform 12 :type xcb:-pad)
+ (value~ :initform
+ '(name value type xcb:void size
+ (*
+ (xcb:-fieldref 'value-len)
+ (/
+ (xcb:-fieldref 'format)
+ 8)))
+ :type xcb:-list)
+ (value :initarg :value :type xcb:-ignore)))
+
+(defclass xcb:ListProperties
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:ListProperties~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (atoms-len :initarg :atoms-len :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (atoms~ :initform
+ '(name atoms type xcb:ATOM size
+ (xcb:-fieldref 'atoms-len))
+ :type xcb:-list)
+ (atoms :initarg :atoms :type xcb:-ignore)))
+
+(defclass xcb:SetSelectionOwner
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (owner :initarg :owner :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defclass xcb:GetSelectionOwner
+ (xcb:-request)
+ ((~opcode :initform 23 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (selection :initarg :selection :type xcb:ATOM)))
+(defclass xcb:GetSelectionOwner~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (owner :initarg :owner :type xcb:WINDOW)))
+
+(defclass xcb:ConvertSelection
+ (xcb:-request)
+ ((~opcode :initform 24 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (requestor :initarg :requestor :type xcb:WINDOW)
+ (selection :initarg :selection :type xcb:ATOM)
+ (target :initarg :target :type xcb:ATOM)
+ (property :initarg :property :type xcb:ATOM)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defconst xcb:SendEventDest:PointerWindow 0)
+(defconst xcb:SendEventDest:ItemFocus 1)
+
+(defclass xcb:SendEvent
+ (xcb:-request)
+ ((~opcode :initform 25 :type xcb:-u1)
+ (propagate :initarg :propagate :type xcb:BOOL)
+ (destination :initarg :destination :type xcb:WINDOW)
+ (event-mask :initarg :event-mask :type xcb:CARD32)
+ (event~ :initform
+ '(name event type xcb:char size 32)
+ :type xcb:-list)
+ (event :initarg :event :type xcb:-ignore)))
+
+(defconst xcb:GrabMode:Sync 0)
+(defconst xcb:GrabMode:Async 1)
+
+(defconst xcb:GrabStatus:Success 0)
+(defconst xcb:GrabStatus:AlreadyGrabbed 1)
+(defconst xcb:GrabStatus:InvalidTime 2)
+(defconst xcb:GrabStatus:NotViewable 3)
+(defconst xcb:GrabStatus:Frozen 4)
+
+(defconst xcb:Cursor:None 0)
+
+(defclass xcb:GrabPointer
+ (xcb:-request)
+ ((~opcode :initform 26 :type xcb:-u1)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (event-mask :initarg :event-mask :type xcb:CARD16)
+ (pointer-mode :initarg :pointer-mode :type xcb:BYTE)
+ (keyboard-mode :initarg :keyboard-mode :type xcb:BYTE)
+ (confine-to :initarg :confine-to :type xcb:WINDOW)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+(defclass xcb:GrabPointer~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:UngrabPointer
+ (xcb:-request)
+ ((~opcode :initform 27 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defconst xcb:ButtonIndex:Any 0)
+(defconst xcb:ButtonIndex:1 1)
+(defconst xcb:ButtonIndex:2 2)
+(defconst xcb:ButtonIndex:3 3)
+(defconst xcb:ButtonIndex:4 4)
+(defconst xcb:ButtonIndex:5 5)
+
+(defclass xcb:GrabButton
+ (xcb:-request)
+ ((~opcode :initform 28 :type xcb:-u1)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (event-mask :initarg :event-mask :type xcb:CARD16)
+ (pointer-mode :initarg :pointer-mode :type xcb:CARD8)
+ (keyboard-mode :initarg :keyboard-mode :type xcb:CARD8)
+ (confine-to :initarg :confine-to :type xcb:WINDOW)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (button :initarg :button :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (modifiers :initarg :modifiers :type xcb:CARD16)))
+
+(defclass xcb:UngrabButton
+ (xcb:-request)
+ ((~opcode :initform 29 :type xcb:-u1)
+ (button :initarg :button :type xcb:CARD8)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:ChangeActivePointerGrab
+ (xcb:-request)
+ ((~opcode :initform 30 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (event-mask :initarg :event-mask :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:GrabKeyboard
+ (xcb:-request)
+ ((~opcode :initform 31 :type xcb:-u1)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (pointer-mode :initarg :pointer-mode :type xcb:BYTE)
+ (keyboard-mode :initarg :keyboard-mode :type xcb:BYTE)
+ (pad~0 :initform 2 :type xcb:-pad)))
+(defclass xcb:GrabKeyboard~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:UngrabKeyboard
+ (xcb:-request)
+ ((~opcode :initform 32 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defconst xcb:Grab:Any 0)
+
+(defclass xcb:GrabKey
+ (xcb:-request)
+ ((~opcode :initform 33 :type xcb:-u1)
+ (owner-events :initarg :owner-events :type xcb:BOOL)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (key :initarg :key :type xcb:KEYCODE)
+ (pointer-mode :initarg :pointer-mode :type xcb:CARD8)
+ (keyboard-mode :initarg :keyboard-mode :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:UngrabKey
+ (xcb:-request)
+ ((~opcode :initform 34 :type xcb:-u1)
+ (key :initarg :key :type xcb:KEYCODE)
+ (grab-window :initarg :grab-window :type xcb:WINDOW)
+ (modifiers :initarg :modifiers :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defconst xcb:Allow:AsyncPointer 0)
+(defconst xcb:Allow:SyncPointer 1)
+(defconst xcb:Allow:ReplayPointer 2)
+(defconst xcb:Allow:AsyncKeyboard 3)
+(defconst xcb:Allow:SyncKeyboard 4)
+(defconst xcb:Allow:ReplayKeyboard 5)
+(defconst xcb:Allow:AsyncBoth 6)
+(defconst xcb:Allow:SyncBoth 7)
+
+(defclass xcb:AllowEvents
+ (xcb:-request)
+ ((~opcode :initform 35 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:CARD8)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defclass xcb:GrabServer
+ (xcb:-request)
+ ((~opcode :initform 36 :type xcb:-u1)))
+
+(defclass xcb:UngrabServer
+ (xcb:-request)
+ ((~opcode :initform 37 :type xcb:-u1)))
+
+(defclass xcb:QueryPointer
+ (xcb:-request)
+ ((~opcode :initform 38 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:QueryPointer~reply
+ (xcb:-reply)
+ ((same-screen :initarg :same-screen :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (child :initarg :child :type xcb:WINDOW)
+ (root-x :initarg :root-x :type xcb:INT16)
+ (root-y :initarg :root-y :type xcb:INT16)
+ (win-x :initarg :win-x :type xcb:INT16)
+ (win-y :initarg :win-y :type xcb:INT16)
+ (mask :initarg :mask :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:TIMECOORD
+ (xcb:-struct)
+ ((time :initarg :time :type xcb:TIMESTAMP)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)))
+
+(defclass xcb:GetMotionEvents
+ (xcb:-request)
+ ((~opcode :initform 39 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)
+ (start :initarg :start :type xcb:TIMESTAMP)
+ (stop :initarg :stop :type xcb:TIMESTAMP)))
+(defclass xcb:GetMotionEvents~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (events-len :initarg :events-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (events~ :initform
+ '(name events type xcb:TIMECOORD size
+ (xcb:-fieldref 'events-len))
+ :type xcb:-list)
+ (events :initarg :events :type xcb:-ignore)))
+
+(defclass xcb:TranslateCoordinates
+ (xcb:-request)
+ ((~opcode :initform 40 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (src-window :initarg :src-window :type xcb:WINDOW)
+ (dst-window :initarg :dst-window :type xcb:WINDOW)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)))
+(defclass xcb:TranslateCoordinates~reply
+ (xcb:-reply)
+ ((same-screen :initarg :same-screen :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (child :initarg :child :type xcb:WINDOW)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)))
+
+(defclass xcb:WarpPointer
+ (xcb:-request)
+ ((~opcode :initform 41 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (src-window :initarg :src-window :type xcb:WINDOW)
+ (dst-window :initarg :dst-window :type xcb:WINDOW)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (src-width :initarg :src-width :type xcb:CARD16)
+ (src-height :initarg :src-height :type xcb:CARD16)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)))
+
+(defconst xcb:InputFocus:None 0)
+(defconst xcb:InputFocus:PointerRoot 1)
+(defconst xcb:InputFocus:Parent 2)
+(defconst xcb:InputFocus:FollowKeyboard 3)
+
+(defclass xcb:SetInputFocus
+ (xcb:-request)
+ ((~opcode :initform 42 :type xcb:-u1)
+ (revert-to :initarg :revert-to :type xcb:CARD8)
+ (focus :initarg :focus :type xcb:WINDOW)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defclass xcb:GetInputFocus
+ (xcb:-request)
+ ((~opcode :initform 43 :type xcb:-u1)))
+(defclass xcb:GetInputFocus~reply
+ (xcb:-reply)
+ ((revert-to :initarg :revert-to :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (focus :initarg :focus :type xcb:WINDOW)))
+
+(defclass xcb:QueryKeymap
+ (xcb:-request)
+ ((~opcode :initform 44 :type xcb:-u1)))
+(defclass xcb:QueryKeymap~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (keys~ :initform
+ '(name keys type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (keys :initarg :keys :type xcb:-ignore)))
+
+(defclass xcb:OpenFont
+ (xcb:-request)
+ ((~opcode :initform 45 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (fid :initarg :fid :type xcb:FONT)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:CloseFont
+ (xcb:-request)
+ ((~opcode :initform 46 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (font :initarg :font :type xcb:FONT)))
+
+(defconst xcb:FontDraw:LeftToRight 0)
+(defconst xcb:FontDraw:RightToLeft 1)
+
+(defclass xcb:FONTPROP
+ (xcb:-struct)
+ ((name :initarg :name :type xcb:ATOM)
+ (value :initarg :value :type xcb:CARD32)))
+
+(defclass xcb:CHARINFO
+ (xcb:-struct)
+ ((left-side-bearing :initarg :left-side-bearing :type xcb:INT16)
+ (right-side-bearing :initarg :right-side-bearing :type xcb:INT16)
+ (character-width :initarg :character-width :type xcb:INT16)
+ (ascent :initarg :ascent :type xcb:INT16)
+ (descent :initarg :descent :type xcb:INT16)
+ (attributes :initarg :attributes :type xcb:CARD16)))
+
+(defclass xcb:QueryFont
+ (xcb:-request)
+ ((~opcode :initform 47 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (font :initarg :font :type xcb:FONTABLE)))
+(defclass xcb:QueryFont~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (min-bounds :initarg :min-bounds :type xcb:CHARINFO)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (max-bounds :initarg :max-bounds :type xcb:CHARINFO)
+ (pad~2 :initform 4 :type xcb:-pad)
+ (min-char-or-byte2 :initarg :min-char-or-byte2 :type xcb:CARD16)
+ (max-char-or-byte2 :initarg :max-char-or-byte2 :type xcb:CARD16)
+ (default-char :initarg :default-char :type xcb:CARD16)
+ (properties-len :initarg :properties-len :type xcb:CARD16)
+ (draw-direction :initarg :draw-direction :type xcb:BYTE)
+ (min-byte1 :initarg :min-byte1 :type xcb:CARD8)
+ (max-byte1 :initarg :max-byte1 :type xcb:CARD8)
+ (all-chars-exist :initarg :all-chars-exist :type xcb:BOOL)
+ (font-ascent :initarg :font-ascent :type xcb:INT16)
+ (font-descent :initarg :font-descent :type xcb:INT16)
+ (char-infos-len :initarg :char-infos-len :type xcb:CARD32)
+ (properties~ :initform
+ '(name properties type xcb:FONTPROP size
+ (xcb:-fieldref 'properties-len))
+ :type xcb:-list)
+ (properties :initarg :properties :type xcb:-ignore)
+ (char-infos~ :initform
+ '(name char-infos type xcb:CHARINFO size
+ (xcb:-fieldref 'char-infos-len))
+ :type xcb:-list)
+ (char-infos :initarg :char-infos :type xcb:-ignore)))
+
+(defclass xcb:QueryTextExtents
+ (xcb:-request)
+ ((~opcode :initform 48 :type xcb:-u1)
+ (odd-length :type xcb:BOOL)
+ (font :initarg :font :type xcb:FONTABLE)
+ (string~ :initform
+ '(name string type xcb:CHAR2B size nil)
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+(cl-defmethod xcb:marshal
+ ((obj xcb:QueryTextExtents))
+ nil
+ (setf
+ (slot-value obj 'odd-length)
+ (logand
+ (length
+ (xcb:-fieldref 'string))
+ 1))
+ (cl-call-next-method obj))
+(defclass xcb:QueryTextExtents~reply
+ (xcb:-reply)
+ ((draw-direction :initarg :draw-direction :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (font-ascent :initarg :font-ascent :type xcb:INT16)
+ (font-descent :initarg :font-descent :type xcb:INT16)
+ (overall-ascent :initarg :overall-ascent :type xcb:INT16)
+ (overall-descent :initarg :overall-descent :type xcb:INT16)
+ (overall-width :initarg :overall-width :type xcb:INT32)
+ (overall-left :initarg :overall-left :type xcb:INT32)
+ (overall-right :initarg :overall-right :type xcb:INT32)))
+
+(defclass xcb:STR
+ (xcb:-struct)
+ ((name-len :initarg :name-len :type xcb:CARD8)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:ListFonts
+ (xcb:-request)
+ ((~opcode :initform 49 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (max-names :initarg :max-names :type xcb:CARD16)
+ (pattern-len :initarg :pattern-len :type xcb:CARD16)
+ (pattern~ :initform
+ '(name pattern type xcb:char size
+ (xcb:-fieldref 'pattern-len))
+ :type xcb:-list)
+ (pattern :initarg :pattern :type xcb:-ignore)))
+(defclass xcb:ListFonts~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (names-len :initarg :names-len :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (names~ :initform
+ '(name names type xcb:STR size
+ (xcb:-fieldref 'names-len))
+ :type xcb:-list)
+ (names :initarg :names :type xcb:-ignore)))
+
+(defclass xcb:ListFontsWithInfo
+ (xcb:-request)
+ ((~opcode :initform 50 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (max-names :initarg :max-names :type xcb:CARD16)
+ (pattern-len :initarg :pattern-len :type xcb:CARD16)
+ (pattern~ :initform
+ '(name pattern type xcb:char size
+ (xcb:-fieldref 'pattern-len))
+ :type xcb:-list)
+ (pattern :initarg :pattern :type xcb:-ignore)))
+(defclass xcb:ListFontsWithInfo~reply
+ (xcb:-reply)
+ ((name-len :initarg :name-len :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (min-bounds :initarg :min-bounds :type xcb:CHARINFO)
+ (pad~0 :initform 4 :type xcb:-pad)
+ (max-bounds :initarg :max-bounds :type xcb:CHARINFO)
+ (pad~1 :initform 4 :type xcb:-pad)
+ (min-char-or-byte2 :initarg :min-char-or-byte2 :type xcb:CARD16)
+ (max-char-or-byte2 :initarg :max-char-or-byte2 :type xcb:CARD16)
+ (default-char :initarg :default-char :type xcb:CARD16)
+ (properties-len :initarg :properties-len :type xcb:CARD16)
+ (draw-direction :initarg :draw-direction :type xcb:BYTE)
+ (min-byte1 :initarg :min-byte1 :type xcb:CARD8)
+ (max-byte1 :initarg :max-byte1 :type xcb:CARD8)
+ (all-chars-exist :initarg :all-chars-exist :type xcb:BOOL)
+ (font-ascent :initarg :font-ascent :type xcb:INT16)
+ (font-descent :initarg :font-descent :type xcb:INT16)
+ (replies-hint :initarg :replies-hint :type xcb:CARD32)
+ (properties~ :initform
+ '(name properties type xcb:FONTPROP size
+ (xcb:-fieldref 'properties-len))
+ :type xcb:-list)
+ (properties :initarg :properties :type xcb:-ignore)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:SetFontPath
+ (xcb:-request)
+ ((~opcode :initform 51 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (font-qty :initarg :font-qty :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (font~ :initform
+ '(name font type xcb:STR size
+ (xcb:-fieldref 'font-qty))
+ :type xcb:-list)
+ (font :initarg :font :type xcb:-ignore)))
+
+(defclass xcb:GetFontPath
+ (xcb:-request)
+ ((~opcode :initform 52 :type xcb:-u1)))
+(defclass xcb:GetFontPath~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (path-len :initarg :path-len :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (path~ :initform
+ '(name path type xcb:STR size
+ (xcb:-fieldref 'path-len))
+ :type xcb:-list)
+ (path :initarg :path :type xcb:-ignore)))
+
+(defclass xcb:CreatePixmap
+ (xcb:-request)
+ ((~opcode :initform 53 :type xcb:-u1)
+ (depth :initarg :depth :type xcb:CARD8)
+ (pid :initarg :pid :type xcb:PIXMAP)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:FreePixmap
+ (xcb:-request)
+ ((~opcode :initform 54 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (pixmap :initarg :pixmap :type xcb:PIXMAP)))
+
+(defconst xcb:GC:Function 1)
+(defconst xcb:GC:PlaneMask 2)
+(defconst xcb:GC:Foreground 4)
+(defconst xcb:GC:Background 8)
+(defconst xcb:GC:LineWidth 16)
+(defconst xcb:GC:LineStyle 32)
+(defconst xcb:GC:CapStyle 64)
+(defconst xcb:GC:JoinStyle 128)
+(defconst xcb:GC:FillStyle 256)
+(defconst xcb:GC:FillRule 512)
+(defconst xcb:GC:Tile 1024)
+(defconst xcb:GC:Stipple 2048)
+(defconst xcb:GC:TileStippleOriginX 4096)
+(defconst xcb:GC:TileStippleOriginY 8192)
+(defconst xcb:GC:Font 16384)
+(defconst xcb:GC:SubwindowMode 32768)
+(defconst xcb:GC:GraphicsExposures 65536)
+(defconst xcb:GC:ClipOriginX 131072)
+(defconst xcb:GC:ClipOriginY 262144)
+(defconst xcb:GC:ClipMask 524288)
+(defconst xcb:GC:DashOffset 1048576)
+(defconst xcb:GC:DashList 2097152)
+(defconst xcb:GC:ArcMode 4194304)
+
+(defconst xcb:GX:clear 0)
+(defconst xcb:GX:and 1)
+(defconst xcb:GX:andReverse 2)
+(defconst xcb:GX:copy 3)
+(defconst xcb:GX:andInverted 4)
+(defconst xcb:GX:noop 5)
+(defconst xcb:GX:xor 6)
+(defconst xcb:GX:or 7)
+(defconst xcb:GX:nor 8)
+(defconst xcb:GX:equiv 9)
+(defconst xcb:GX:invert 10)
+(defconst xcb:GX:orReverse 11)
+(defconst xcb:GX:copyInverted 12)
+(defconst xcb:GX:orInverted 13)
+(defconst xcb:GX:nand 14)
+(defconst xcb:GX:set 15)
+
+(defconst xcb:LineStyle:Solid 0)
+(defconst xcb:LineStyle:OnOffDash 1)
+(defconst xcb:LineStyle:DoubleDash 2)
+
+(defconst xcb:CapStyle:NotLast 0)
+(defconst xcb:CapStyle:Butt 1)
+(defconst xcb:CapStyle:Round 2)
+(defconst xcb:CapStyle:Projecting 3)
+
+(defconst xcb:JoinStyle:Miter 0)
+(defconst xcb:JoinStyle:Round 1)
+(defconst xcb:JoinStyle:Bevel 2)
+
+(defconst xcb:FillStyle:Solid 0)
+(defconst xcb:FillStyle:Tiled 1)
+(defconst xcb:FillStyle:Stippled 2)
+(defconst xcb:FillStyle:OpaqueStippled 3)
+
+(defconst xcb:FillRule:EvenOdd 0)
+(defconst xcb:FillRule:Winding 1)
+
+(defconst xcb:SubwindowMode:ClipByChildren 0)
+(defconst xcb:SubwindowMode:IncludeInferiors 1)
+
+(defconst xcb:ArcMode:Chord 0)
+(defconst xcb:ArcMode:PieSlice 1)
+
+(defclass xcb:CreateGC
+ (xcb:-request)
+ ((~opcode :initform 55 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cid :initarg :cid :type xcb:GCONTEXT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 function)
+ (2 plane-mask)
+ (4 foreground)
+ (8 background)
+ (16 line-width)
+ (32 line-style)
+ (64 cap-style)
+ (128 join-style)
+ (256 fill-style)
+ (512 fill-rule)
+ (1024 tile)
+ (2048 stipple)
+ (4096 tile-stipple-x-origin)
+ (8192 tile-stipple-y-origin)
+ (16384 font)
+ (32768 subwindow-mode)
+ (65536 graphics-exposures)
+ (131072 clip-x-origin)
+ (262144 clip-y-origin)
+ (524288 clip-mask)
+ (1048576 dash-offset)
+ (2097152 dashes)
+ (4194304 arc-mode)))
+ :type xcb:-switch)
+ (function :initarg :function :type xcb:CARD32)
+ (plane-mask :initarg :plane-mask :type xcb:CARD32)
+ (foreground :initarg :foreground :type xcb:CARD32)
+ (background :initarg :background :type xcb:CARD32)
+ (line-width :initarg :line-width :type xcb:CARD32)
+ (line-style :initarg :line-style :type xcb:CARD32)
+ (cap-style :initarg :cap-style :type xcb:CARD32)
+ (join-style :initarg :join-style :type xcb:CARD32)
+ (fill-style :initarg :fill-style :type xcb:CARD32)
+ (fill-rule :initarg :fill-rule :type xcb:CARD32)
+ (tile :initarg :tile :type xcb:PIXMAP)
+ (stipple :initarg :stipple :type xcb:PIXMAP)
+ (tile-stipple-x-origin :initarg :tile-stipple-x-origin :type xcb:INT32)
+ (tile-stipple-y-origin :initarg :tile-stipple-y-origin :type xcb:INT32)
+ (font :initarg :font :type xcb:FONT)
+ (subwindow-mode :initarg :subwindow-mode :type xcb:CARD32)
+ (graphics-exposures :initarg :graphics-exposures :type xcb:BOOL32)
+ (clip-x-origin :initarg :clip-x-origin :type xcb:INT32)
+ (clip-y-origin :initarg :clip-y-origin :type xcb:INT32)
+ (clip-mask :initarg :clip-mask :type xcb:PIXMAP)
+ (dash-offset :initarg :dash-offset :type xcb:CARD32)
+ (dashes :initarg :dashes :type xcb:CARD32)
+ (arc-mode :initarg :arc-mode :type xcb:CARD32)))
+
+(defclass xcb:ChangeGC
+ (xcb:-request)
+ ((~opcode :initform 56 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 function)
+ (2 plane-mask)
+ (4 foreground)
+ (8 background)
+ (16 line-width)
+ (32 line-style)
+ (64 cap-style)
+ (128 join-style)
+ (256 fill-style)
+ (512 fill-rule)
+ (1024 tile)
+ (2048 stipple)
+ (4096 tile-stipple-x-origin)
+ (8192 tile-stipple-y-origin)
+ (16384 font)
+ (32768 subwindow-mode)
+ (65536 graphics-exposures)
+ (131072 clip-x-origin)
+ (262144 clip-y-origin)
+ (524288 clip-mask)
+ (1048576 dash-offset)
+ (2097152 dashes)
+ (4194304 arc-mode)))
+ :type xcb:-switch)
+ (function :initarg :function :type xcb:CARD32)
+ (plane-mask :initarg :plane-mask :type xcb:CARD32)
+ (foreground :initarg :foreground :type xcb:CARD32)
+ (background :initarg :background :type xcb:CARD32)
+ (line-width :initarg :line-width :type xcb:CARD32)
+ (line-style :initarg :line-style :type xcb:CARD32)
+ (cap-style :initarg :cap-style :type xcb:CARD32)
+ (join-style :initarg :join-style :type xcb:CARD32)
+ (fill-style :initarg :fill-style :type xcb:CARD32)
+ (fill-rule :initarg :fill-rule :type xcb:CARD32)
+ (tile :initarg :tile :type xcb:PIXMAP)
+ (stipple :initarg :stipple :type xcb:PIXMAP)
+ (tile-stipple-x-origin :initarg :tile-stipple-x-origin :type xcb:INT32)
+ (tile-stipple-y-origin :initarg :tile-stipple-y-origin :type xcb:INT32)
+ (font :initarg :font :type xcb:FONT)
+ (subwindow-mode :initarg :subwindow-mode :type xcb:CARD32)
+ (graphics-exposures :initarg :graphics-exposures :type xcb:BOOL32)
+ (clip-x-origin :initarg :clip-x-origin :type xcb:INT32)
+ (clip-y-origin :initarg :clip-y-origin :type xcb:INT32)
+ (clip-mask :initarg :clip-mask :type xcb:PIXMAP)
+ (dash-offset :initarg :dash-offset :type xcb:CARD32)
+ (dashes :initarg :dashes :type xcb:CARD32)
+ (arc-mode :initarg :arc-mode :type xcb:CARD32)))
+
+(defclass xcb:CopyGC
+ (xcb:-request)
+ ((~opcode :initform 57 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (src-gc :initarg :src-gc :type xcb:GCONTEXT)
+ (dst-gc :initarg :dst-gc :type xcb:GCONTEXT)
+ (value-mask :initarg :value-mask :type xcb:CARD32)))
+
+(defclass xcb:SetDashes
+ (xcb:-request)
+ ((~opcode :initform 58 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (dash-offset :initarg :dash-offset :type xcb:CARD16)
+ (dashes-len :initarg :dashes-len :type xcb:CARD16)
+ (dashes~ :initform
+ '(name dashes type xcb:CARD8 size
+ (xcb:-fieldref 'dashes-len))
+ :type xcb:-list)
+ (dashes :initarg :dashes :type xcb:-ignore)))
+
+(defconst xcb:ClipOrdering:Unsorted 0)
+(defconst xcb:ClipOrdering:YSorted 1)
+(defconst xcb:ClipOrdering:YXSorted 2)
+(defconst xcb:ClipOrdering:YXBanded 3)
+
+(defclass xcb:SetClipRectangles
+ (xcb:-request)
+ ((~opcode :initform 59 :type xcb:-u1)
+ (ordering :initarg :ordering :type xcb:BYTE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (clip-x-origin :initarg :clip-x-origin :type xcb:INT16)
+ (clip-y-origin :initarg :clip-y-origin :type xcb:INT16)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:FreeGC
+ (xcb:-request)
+ ((~opcode :initform 60 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (gc :initarg :gc :type xcb:GCONTEXT)))
+
+(defclass xcb:ClearArea
+ (xcb:-request)
+ ((~opcode :initform 61 :type xcb:-u1)
+ (exposures :initarg :exposures :type xcb:BOOL)
+ (window :initarg :window :type xcb:WINDOW)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:CopyArea
+ (xcb:-request)
+ ((~opcode :initform 62 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (src-drawable :initarg :src-drawable :type xcb:DRAWABLE)
+ (dst-drawable :initarg :dst-drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:CopyPlane
+ (xcb:-request)
+ ((~opcode :initform 63 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (src-drawable :initarg :src-drawable :type xcb:DRAWABLE)
+ (dst-drawable :initarg :dst-drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (bit-plane :initarg :bit-plane :type xcb:CARD32)))
+
+(defconst xcb:CoordMode:Origin 0)
+(defconst xcb:CoordMode:Previous 1)
+
+(defclass xcb:PolyPoint
+ (xcb:-request)
+ ((~opcode :initform 64 :type xcb:-u1)
+ (coordinate-mode :initarg :coordinate-mode :type xcb:BYTE)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (points~ :initform
+ '(name points type xcb:POINT size nil)
+ :type xcb:-list)
+ (points :initarg :points :type xcb:-ignore)))
+
+(defclass xcb:PolyLine
+ (xcb:-request)
+ ((~opcode :initform 65 :type xcb:-u1)
+ (coordinate-mode :initarg :coordinate-mode :type xcb:BYTE)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (points~ :initform
+ '(name points type xcb:POINT size nil)
+ :type xcb:-list)
+ (points :initarg :points :type xcb:-ignore)))
+
+(defclass xcb:SEGMENT
+ (xcb:-struct)
+ ((x1 :initarg :x1 :type xcb:INT16)
+ (y1 :initarg :y1 :type xcb:INT16)
+ (x2 :initarg :x2 :type xcb:INT16)
+ (y2 :initarg :y2 :type xcb:INT16)))
+
+(defclass xcb:PolySegment
+ (xcb:-request)
+ ((~opcode :initform 66 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (segments~ :initform
+ '(name segments type xcb:SEGMENT size nil)
+ :type xcb:-list)
+ (segments :initarg :segments :type xcb:-ignore)))
+
+(defclass xcb:PolyRectangle
+ (xcb:-request)
+ ((~opcode :initform 67 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:PolyArc
+ (xcb:-request)
+ ((~opcode :initform 68 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (arcs~ :initform
+ '(name arcs type xcb:ARC size nil)
+ :type xcb:-list)
+ (arcs :initarg :arcs :type xcb:-ignore)))
+
+(defconst xcb:PolyShape:Complex 0)
+(defconst xcb:PolyShape:Nonconvex 1)
+(defconst xcb:PolyShape:Convex 2)
+
+(defclass xcb:FillPoly
+ (xcb:-request)
+ ((~opcode :initform 69 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (shape :initarg :shape :type xcb:CARD8)
+ (coordinate-mode :initarg :coordinate-mode :type xcb:CARD8)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (points~ :initform
+ '(name points type xcb:POINT size nil)
+ :type xcb:-list)
+ (points :initarg :points :type xcb:-ignore)))
+
+(defclass xcb:PolyFillRectangle
+ (xcb:-request)
+ ((~opcode :initform 70 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (rectangles~ :initform
+ '(name rectangles type xcb:RECTANGLE size nil)
+ :type xcb:-list)
+ (rectangles :initarg :rectangles :type xcb:-ignore)))
+
+(defclass xcb:PolyFillArc
+ (xcb:-request)
+ ((~opcode :initform 71 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (arcs~ :initform
+ '(name arcs type xcb:ARC size nil)
+ :type xcb:-list)
+ (arcs :initarg :arcs :type xcb:-ignore)))
+
+(defconst xcb:ImageFormat:XYBitmap 0)
+(defconst xcb:ImageFormat:XYPixmap 1)
+(defconst xcb:ImageFormat:ZPixmap 2)
+
+(defclass xcb:PutImage
+ (xcb:-request)
+ ((~opcode :initform 72 :type xcb:-u1)
+ (format :initarg :format :type xcb:CARD8)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (dst-x :initarg :dst-x :type xcb:INT16)
+ (dst-y :initarg :dst-y :type xcb:INT16)
+ (left-pad :initarg :left-pad :type xcb:CARD8)
+ (depth :initarg :depth :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size nil)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:GetImage
+ (xcb:-request)
+ ((~opcode :initform 73 :type xcb:-u1)
+ (format :initarg :format :type xcb:CARD8)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (plane-mask :initarg :plane-mask :type xcb:CARD32)))
+(defclass xcb:GetImage~reply
+ (xcb:-reply)
+ ((depth :initarg :depth :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (visual :initarg :visual :type xcb:VISUALID)
+ (pad~0 :initform 20 :type xcb:-pad)
+ (data~ :initform
+ '(name data type xcb:BYTE size
+ (*
+ (xcb:-fieldref 'length)
+ 4))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:PolyText8
+ (xcb:-request)
+ ((~opcode :initform 74 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (items~ :initform
+ '(name items type xcb:BYTE size nil)
+ :type xcb:-list)
+ (items :initarg :items :type xcb:-ignore)))
+
+(defclass xcb:PolyText16
+ (xcb:-request)
+ ((~opcode :initform 75 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (items~ :initform
+ '(name items type xcb:BYTE size nil)
+ :type xcb:-list)
+ (items :initarg :items :type xcb:-ignore)))
+
+(defclass xcb:ImageText8
+ (xcb:-request)
+ ((~opcode :initform 76 :type xcb:-u1)
+ (string-len :initarg :string-len :type xcb:BYTE)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (string~ :initform
+ '(name string type xcb:char size
+ (xcb:-fieldref 'string-len))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+
+(defclass xcb:ImageText16
+ (xcb:-request)
+ ((~opcode :initform 77 :type xcb:-u1)
+ (string-len :initarg :string-len :type xcb:BYTE)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (x :initarg :x :type xcb:INT16)
+ (y :initarg :y :type xcb:INT16)
+ (string~ :initform
+ '(name string type xcb:CHAR2B size
+ (xcb:-fieldref 'string-len))
+ :type xcb:-list)
+ (string :initarg :string :type xcb:-ignore)))
+
+(defconst xcb:ColormapAlloc:None 0)
+(defconst xcb:ColormapAlloc:All 1)
+
+(defclass xcb:CreateColormap
+ (xcb:-request)
+ ((~opcode :initform 78 :type xcb:-u1)
+ (alloc :initarg :alloc :type xcb:BYTE)
+ (mid :initarg :mid :type xcb:COLORMAP)
+ (window :initarg :window :type xcb:WINDOW)
+ (visual :initarg :visual :type xcb:VISUALID)))
+
+(defclass xcb:FreeColormap
+ (xcb:-request)
+ ((~opcode :initform 79 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)))
+
+(defclass xcb:CopyColormapAndFree
+ (xcb:-request)
+ ((~opcode :initform 80 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (mid :initarg :mid :type xcb:COLORMAP)
+ (src-cmap :initarg :src-cmap :type xcb:COLORMAP)))
+
+(defclass xcb:InstallColormap
+ (xcb:-request)
+ ((~opcode :initform 81 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)))
+
+(defclass xcb:UninstallColormap
+ (xcb:-request)
+ ((~opcode :initform 82 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)))
+
+(defclass xcb:ListInstalledColormaps
+ (xcb:-request)
+ ((~opcode :initform 83 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:ListInstalledColormaps~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (cmaps-len :initarg :cmaps-len :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (cmaps~ :initform
+ '(name cmaps type xcb:COLORMAP size
+ (xcb:-fieldref 'cmaps-len))
+ :type xcb:-list)
+ (cmaps :initarg :cmaps :type xcb:-ignore)))
+
+(defclass xcb:AllocColor
+ (xcb:-request)
+ ((~opcode :initform 84 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)))
+(defclass xcb:AllocColor~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (pixel :initarg :pixel :type xcb:CARD32)))
+
+(defclass xcb:AllocNamedColor
+ (xcb:-request)
+ ((~opcode :initform 85 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:AllocNamedColor~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pixel :initarg :pixel :type xcb:CARD32)
+ (exact-red :initarg :exact-red :type xcb:CARD16)
+ (exact-green :initarg :exact-green :type xcb:CARD16)
+ (exact-blue :initarg :exact-blue :type xcb:CARD16)
+ (visual-red :initarg :visual-red :type xcb:CARD16)
+ (visual-green :initarg :visual-green :type xcb:CARD16)
+ (visual-blue :initarg :visual-blue :type xcb:CARD16)))
+
+(defclass xcb:AllocColorCells
+ (xcb:-request)
+ ((~opcode :initform 86 :type xcb:-u1)
+ (contiguous :initarg :contiguous :type xcb:BOOL)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (colors :initarg :colors :type xcb:CARD16)
+ (planes :initarg :planes :type xcb:CARD16)))
+(defclass xcb:AllocColorCells~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pixels-len :initarg :pixels-len :type xcb:CARD16)
+ (masks-len :initarg :masks-len :type xcb:CARD16)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (pixels~ :initform
+ '(name pixels type xcb:CARD32 size
+ (xcb:-fieldref 'pixels-len))
+ :type xcb:-list)
+ (pixels :initarg :pixels :type xcb:-ignore)
+ (masks~ :initform
+ '(name masks type xcb:CARD32 size
+ (xcb:-fieldref 'masks-len))
+ :type xcb:-list)
+ (masks :initarg :masks :type xcb:-ignore)))
+
+(defclass xcb:AllocColorPlanes
+ (xcb:-request)
+ ((~opcode :initform 87 :type xcb:-u1)
+ (contiguous :initarg :contiguous :type xcb:BOOL)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (colors :initarg :colors :type xcb:CARD16)
+ (reds :initarg :reds :type xcb:CARD16)
+ (greens :initarg :greens :type xcb:CARD16)
+ (blues :initarg :blues :type xcb:CARD16)))
+(defclass xcb:AllocColorPlanes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pixels-len :initarg :pixels-len :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (red-mask :initarg :red-mask :type xcb:CARD32)
+ (green-mask :initarg :green-mask :type xcb:CARD32)
+ (blue-mask :initarg :blue-mask :type xcb:CARD32)
+ (pad~2 :initform 8 :type xcb:-pad)
+ (pixels~ :initform
+ '(name pixels type xcb:CARD32 size
+ (xcb:-fieldref 'pixels-len))
+ :type xcb:-list)
+ (pixels :initarg :pixels :type xcb:-ignore)))
+
+(defclass xcb:FreeColors
+ (xcb:-request)
+ ((~opcode :initform 88 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (plane-mask :initarg :plane-mask :type xcb:CARD32)
+ (pixels~ :initform
+ '(name pixels type xcb:CARD32 size nil)
+ :type xcb:-list)
+ (pixels :initarg :pixels :type xcb:-ignore)))
+
+(defconst xcb:ColorFlag:Red 1)
+(defconst xcb:ColorFlag:Green 2)
+(defconst xcb:ColorFlag:Blue 4)
+
+(defclass xcb:COLORITEM
+ (xcb:-struct)
+ ((pixel :initarg :pixel :type xcb:CARD32)
+ (red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (flags :initarg :flags :type xcb:BYTE)
+ (pad~0 :initform 1 :type xcb:-pad)))
+
+(defclass xcb:StoreColors
+ (xcb:-request)
+ ((~opcode :initform 89 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (items~ :initform
+ '(name items type xcb:COLORITEM size nil)
+ :type xcb:-list)
+ (items :initarg :items :type xcb:-ignore)))
+
+(defclass xcb:StoreNamedColor
+ (xcb:-request)
+ ((~opcode :initform 90 :type xcb:-u1)
+ (flags :initarg :flags :type xcb:CARD8)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (pixel :initarg :pixel :type xcb:CARD32)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+
+(defclass xcb:RGB
+ (xcb:-struct)
+ ((red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)))
+
+(defclass xcb:QueryColors
+ (xcb:-request)
+ ((~opcode :initform 91 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (pixels~ :initform
+ '(name pixels type xcb:CARD32 size nil)
+ :type xcb:-list)
+ (pixels :initarg :pixels :type xcb:-ignore)))
+(defclass xcb:QueryColors~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (colors-len :initarg :colors-len :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (colors~ :initform
+ '(name colors type xcb:RGB size
+ (xcb:-fieldref 'colors-len))
+ :type xcb:-list)
+ (colors :initarg :colors :type xcb:-ignore)))
+
+(defclass xcb:LookupColor
+ (xcb:-request)
+ ((~opcode :initform 92 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cmap :initarg :cmap :type xcb:COLORMAP)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:LookupColor~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (exact-red :initarg :exact-red :type xcb:CARD16)
+ (exact-green :initarg :exact-green :type xcb:CARD16)
+ (exact-blue :initarg :exact-blue :type xcb:CARD16)
+ (visual-red :initarg :visual-red :type xcb:CARD16)
+ (visual-green :initarg :visual-green :type xcb:CARD16)
+ (visual-blue :initarg :visual-blue :type xcb:CARD16)))
+
+(defconst xcb:Pixmap:None 0)
+
+(defclass xcb:CreateCursor
+ (xcb:-request)
+ ((~opcode :initform 93 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cid :initarg :cid :type xcb:CURSOR)
+ (source :initarg :source :type xcb:PIXMAP)
+ (mask :initarg :mask :type xcb:PIXMAP)
+ (fore-red :initarg :fore-red :type xcb:CARD16)
+ (fore-green :initarg :fore-green :type xcb:CARD16)
+ (fore-blue :initarg :fore-blue :type xcb:CARD16)
+ (back-red :initarg :back-red :type xcb:CARD16)
+ (back-green :initarg :back-green :type xcb:CARD16)
+ (back-blue :initarg :back-blue :type xcb:CARD16)
+ (x :initarg :x :type xcb:CARD16)
+ (y :initarg :y :type xcb:CARD16)))
+
+(defconst xcb:Font:None 0)
+
+(defclass xcb:CreateGlyphCursor
+ (xcb:-request)
+ ((~opcode :initform 94 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cid :initarg :cid :type xcb:CURSOR)
+ (source-font :initarg :source-font :type xcb:FONT)
+ (mask-font :initarg :mask-font :type xcb:FONT)
+ (source-char :initarg :source-char :type xcb:CARD16)
+ (mask-char :initarg :mask-char :type xcb:CARD16)
+ (fore-red :initarg :fore-red :type xcb:CARD16)
+ (fore-green :initarg :fore-green :type xcb:CARD16)
+ (fore-blue :initarg :fore-blue :type xcb:CARD16)
+ (back-red :initarg :back-red :type xcb:CARD16)
+ (back-green :initarg :back-green :type xcb:CARD16)
+ (back-blue :initarg :back-blue :type xcb:CARD16)))
+
+(defclass xcb:FreeCursor
+ (xcb:-request)
+ ((~opcode :initform 95 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cursor :initarg :cursor :type xcb:CURSOR)))
+
+(defclass xcb:RecolorCursor
+ (xcb:-request)
+ ((~opcode :initform 96 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (cursor :initarg :cursor :type xcb:CURSOR)
+ (fore-red :initarg :fore-red :type xcb:CARD16)
+ (fore-green :initarg :fore-green :type xcb:CARD16)
+ (fore-blue :initarg :fore-blue :type xcb:CARD16)
+ (back-red :initarg :back-red :type xcb:CARD16)
+ (back-green :initarg :back-green :type xcb:CARD16)
+ (back-blue :initarg :back-blue :type xcb:CARD16)))
+
+(defconst xcb:QueryShapeOf:LargestCursor 0)
+(defconst xcb:QueryShapeOf:FastestTile 1)
+(defconst xcb:QueryShapeOf:FastestStipple 2)
+
+(defclass xcb:QueryBestSize
+ (xcb:-request)
+ ((~opcode :initform 97 :type xcb:-u1)
+ (class :initarg :class :type xcb:CARD8)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+(defclass xcb:QueryBestSize~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+
+(defclass xcb:QueryExtension
+ (xcb:-request)
+ ((~opcode :initform 98 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)))
+(defclass xcb:QueryExtension~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (present :initarg :present :type xcb:BOOL)
+ (major-opcode :initarg :major-opcode :type xcb:CARD8)
+ (first-event :initarg :first-event :type xcb:CARD8)
+ (first-error :initarg :first-error :type xcb:CARD8)))
+
+(defclass xcb:ListExtensions
+ (xcb:-request)
+ ((~opcode :initform 99 :type xcb:-u1)))
+(defclass xcb:ListExtensions~reply
+ (xcb:-reply)
+ ((names-len :initarg :names-len :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~0 :initform 24 :type xcb:-pad)
+ (names~ :initform
+ '(name names type xcb:STR size
+ (xcb:-fieldref 'names-len))
+ :type xcb:-list)
+ (names :initarg :names :type xcb:-ignore)))
+
+(defclass xcb:ChangeKeyboardMapping
+ (xcb:-request)
+ ((~opcode :initform 100 :type xcb:-u1)
+ (keycode-count :initarg :keycode-count :type xcb:CARD8)
+ (first-keycode :initarg :first-keycode :type xcb:KEYCODE)
+ (keysyms-per-keycode :initarg :keysyms-per-keycode :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (*
+ (xcb:-fieldref 'keycode-count)
+ (xcb:-fieldref 'keysyms-per-keycode)))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)))
+
+(defclass xcb:GetKeyboardMapping
+ (xcb:-request)
+ ((~opcode :initform 101 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (first-keycode :initarg :first-keycode :type xcb:KEYCODE)
+ (count :initarg :count :type xcb:CARD8)))
+(defclass xcb:GetKeyboardMapping~reply
+ (xcb:-reply)
+ ((keysyms-per-keycode :initarg :keysyms-per-keycode :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~0 :initform 24 :type xcb:-pad)
+ (keysyms~ :initform
+ '(name keysyms type xcb:KEYSYM size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (keysyms :initarg :keysyms :type xcb:-ignore)))
+
+(defconst xcb:KB:KeyClickPercent 1)
+(defconst xcb:KB:BellPercent 2)
+(defconst xcb:KB:BellPitch 4)
+(defconst xcb:KB:BellDuration 8)
+(defconst xcb:KB:Led 16)
+(defconst xcb:KB:LedMode 32)
+(defconst xcb:KB:Key 64)
+(defconst xcb:KB:AutoRepeatMode 128)
+
+(defconst xcb:LedMode:Off 0)
+(defconst xcb:LedMode:On 1)
+
+(defconst xcb:AutoRepeatMode:Off 0)
+(defconst xcb:AutoRepeatMode:On 1)
+(defconst xcb:AutoRepeatMode:Default 2)
+
+(defclass xcb:ChangeKeyboardControl
+ (xcb:-request)
+ ((~opcode :initform 102 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (value-mask :initarg :value-mask :type xcb:CARD32)
+ (value-list :initform
+ '(expression
+ (xcb:-fieldref 'value-mask)
+ cases
+ ((1 key-click-percent)
+ (2 bell-percent)
+ (4 bell-pitch)
+ (8 bell-duration)
+ (16 led)
+ (32 led-mode)
+ (64 key)
+ (128 auto-repeat-mode)))
+ :type xcb:-switch)
+ (key-click-percent :initarg :key-click-percent :type xcb:INT32)
+ (bell-percent :initarg :bell-percent :type xcb:INT32)
+ (bell-pitch :initarg :bell-pitch :type xcb:INT32)
+ (bell-duration :initarg :bell-duration :type xcb:INT32)
+ (led :initarg :led :type xcb:CARD32)
+ (led-mode :initarg :led-mode :type xcb:CARD32)
+ (key :initarg :key :type xcb:KEYCODE32)
+ (auto-repeat-mode :initarg :auto-repeat-mode :type xcb:CARD32)))
+
+(defclass xcb:GetKeyboardControl
+ (xcb:-request)
+ ((~opcode :initform 103 :type xcb:-u1)))
+(defclass xcb:GetKeyboardControl~reply
+ (xcb:-reply)
+ ((global-auto-repeat :initarg :global-auto-repeat :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (led-mask :initarg :led-mask :type xcb:CARD32)
+ (key-click-percent :initarg :key-click-percent :type xcb:CARD8)
+ (bell-percent :initarg :bell-percent :type xcb:CARD8)
+ (bell-pitch :initarg :bell-pitch :type xcb:CARD16)
+ (bell-duration :initarg :bell-duration :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (auto-repeats~ :initform
+ '(name auto-repeats type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (auto-repeats :initarg :auto-repeats :type xcb:-ignore)))
+
+(defclass xcb:Bell
+ (xcb:-request)
+ ((~opcode :initform 104 :type xcb:-u1)
+ (percent :initarg :percent :type xcb:INT8)))
+
+(defclass xcb:ChangePointerControl
+ (xcb:-request)
+ ((~opcode :initform 105 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (acceleration-numerator :initarg :acceleration-numerator :type xcb:INT16)
+ (acceleration-denominator :initarg :acceleration-denominator :type xcb:INT16)
+ (threshold :initarg :threshold :type xcb:INT16)
+ (do-acceleration :initarg :do-acceleration :type xcb:BOOL)
+ (do-threshold :initarg :do-threshold :type xcb:BOOL)))
+
+(defclass xcb:GetPointerControl
+ (xcb:-request)
+ ((~opcode :initform 106 :type xcb:-u1)))
+(defclass xcb:GetPointerControl~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (acceleration-numerator :initarg :acceleration-numerator :type xcb:CARD16)
+ (acceleration-denominator :initarg :acceleration-denominator :type xcb:CARD16)
+ (threshold :initarg :threshold :type xcb:CARD16)
+ (pad~1 :initform 18 :type xcb:-pad)))
+
+(defconst xcb:Blanking:NotPreferred 0)
+(defconst xcb:Blanking:Preferred 1)
+(defconst xcb:Blanking:Default 2)
+
+(defconst xcb:Exposures:NotAllowed 0)
+(defconst xcb:Exposures:Allowed 1)
+(defconst xcb:Exposures:Default 2)
+
+(defclass xcb:SetScreenSaver
+ (xcb:-request)
+ ((~opcode :initform 107 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (timeout :initarg :timeout :type xcb:INT16)
+ (interval :initarg :interval :type xcb:INT16)
+ (prefer-blanking :initarg :prefer-blanking :type xcb:CARD8)
+ (allow-exposures :initarg :allow-exposures :type xcb:CARD8)))
+
+(defclass xcb:GetScreenSaver
+ (xcb:-request)
+ ((~opcode :initform 108 :type xcb:-u1)))
+(defclass xcb:GetScreenSaver~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (timeout :initarg :timeout :type xcb:CARD16)
+ (interval :initarg :interval :type xcb:CARD16)
+ (prefer-blanking :initarg :prefer-blanking :type xcb:BYTE)
+ (allow-exposures :initarg :allow-exposures :type xcb:BYTE)
+ (pad~1 :initform 18 :type xcb:-pad)))
+
+(defconst xcb:HostMode:Insert 0)
+(defconst xcb:HostMode:Delete 1)
+
+(defconst xcb:Family:Internet 0)
+(defconst xcb:Family:DECnet 1)
+(defconst xcb:Family:Chaos 2)
+(defconst xcb:Family:ServerInterpreted 5)
+(defconst xcb:Family:Internet6 6)
+
+(defclass xcb:ChangeHosts
+ (xcb:-request)
+ ((~opcode :initform 109 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:CARD8)
+ (family :initarg :family :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (address-len :initarg :address-len :type xcb:CARD16)
+ (address~ :initform
+ '(name address type xcb:BYTE size
+ (xcb:-fieldref 'address-len))
+ :type xcb:-list)
+ (address :initarg :address :type xcb:-ignore)))
+
+(defclass xcb:HOST
+ (xcb:-struct)
+ ((family :initarg :family :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (address-len :initarg :address-len :type xcb:CARD16)
+ (address~ :initform
+ '(name address type xcb:BYTE size
+ (xcb:-fieldref 'address-len))
+ :type xcb:-list)
+ (address :initarg :address :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:ListHosts
+ (xcb:-request)
+ ((~opcode :initform 110 :type xcb:-u1)))
+(defclass xcb:ListHosts~reply
+ (xcb:-reply)
+ ((mode :initarg :mode :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (hosts-len :initarg :hosts-len :type xcb:CARD16)
+ (pad~0 :initform 22 :type xcb:-pad)
+ (hosts~ :initform
+ '(name hosts type xcb:HOST size
+ (xcb:-fieldref 'hosts-len))
+ :type xcb:-list)
+ (hosts :initarg :hosts :type xcb:-ignore)))
+
+(defconst xcb:AccessControl:Disable 0)
+(defconst xcb:AccessControl:Enable 1)
+
+(defclass xcb:SetAccessControl
+ (xcb:-request)
+ ((~opcode :initform 111 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:CARD8)))
+
+(defconst xcb:CloseDown:DestroyAll 0)
+(defconst xcb:CloseDown:RetainPermanent 1)
+(defconst xcb:CloseDown:RetainTemporary 2)
+
+(defclass xcb:SetCloseDownMode
+ (xcb:-request)
+ ((~opcode :initform 112 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:CARD8)))
+
+(defconst xcb:Kill:AllTemporary 0)
+
+(defclass xcb:KillClient
+ (xcb:-request)
+ ((~opcode :initform 113 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (resource :initarg :resource :type xcb:CARD32)))
+
+(defclass xcb:RotateProperties
+ (xcb:-request)
+ ((~opcode :initform 114 :type xcb:-u1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (window :initarg :window :type xcb:WINDOW)
+ (atoms-len :initarg :atoms-len :type xcb:CARD16)
+ (delta :initarg :delta :type xcb:INT16)
+ (atoms~ :initform
+ '(name atoms type xcb:ATOM size
+ (xcb:-fieldref 'atoms-len))
+ :type xcb:-list)
+ (atoms :initarg :atoms :type xcb:-ignore)))
+
+(defconst xcb:ScreenSaver:Reset 0)
+(defconst xcb:ScreenSaver:Active 1)
+
+(defclass xcb:ForceScreenSaver
+ (xcb:-request)
+ ((~opcode :initform 115 :type xcb:-u1)
+ (mode :initarg :mode :type xcb:CARD8)))
+
+(defconst xcb:MappingStatus:Success 0)
+(defconst xcb:MappingStatus:Busy 1)
+(defconst xcb:MappingStatus:Failure 2)
+
+(defclass xcb:SetPointerMapping
+ (xcb:-request)
+ ((~opcode :initform 116 :type xcb:-u1)
+ (map-len :initarg :map-len :type xcb:CARD8)
+ (map~ :initform
+ '(name map type xcb:CARD8 size
+ (xcb:-fieldref 'map-len))
+ :type xcb:-list)
+ (map :initarg :map :type xcb:-ignore)))
+(defclass xcb:SetPointerMapping~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:GetPointerMapping
+ (xcb:-request)
+ ((~opcode :initform 117 :type xcb:-u1)))
+(defclass xcb:GetPointerMapping~reply
+ (xcb:-reply)
+ ((map-len :initarg :map-len :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~0 :initform 24 :type xcb:-pad)
+ (map~ :initform
+ '(name map type xcb:CARD8 size
+ (xcb:-fieldref 'map-len))
+ :type xcb:-list)
+ (map :initarg :map :type xcb:-ignore)))
+
+(defconst xcb:MapIndex:Shift 0)
+(defconst xcb:MapIndex:Lock 1)
+(defconst xcb:MapIndex:Control 2)
+(defconst xcb:MapIndex:1 3)
+(defconst xcb:MapIndex:2 4)
+(defconst xcb:MapIndex:3 5)
+(defconst xcb:MapIndex:4 6)
+(defconst xcb:MapIndex:5 7)
+
+(defclass xcb:SetModifierMapping
+ (xcb:-request)
+ ((~opcode :initform 118 :type xcb:-u1)
+ (keycodes-per-modifier :initarg :keycodes-per-modifier :type xcb:CARD8)
+ (keycodes~ :initform
+ '(name keycodes type xcb:KEYCODE size
+ (*
+ (xcb:-fieldref 'keycodes-per-modifier)
+ 8))
+ :type xcb:-list)
+ (keycodes :initarg :keycodes :type xcb:-ignore)))
+(defclass xcb:SetModifierMapping~reply
+ (xcb:-reply)
+ ((status :initarg :status :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:GetModifierMapping
+ (xcb:-request)
+ ((~opcode :initform 119 :type xcb:-u1)))
+(defclass xcb:GetModifierMapping~reply
+ (xcb:-reply)
+ ((keycodes-per-modifier :initarg :keycodes-per-modifier :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~0 :initform 24 :type xcb:-pad)
+ (keycodes~ :initform
+ '(name keycodes type xcb:KEYCODE size
+ (*
+ (xcb:-fieldref 'keycodes-per-modifier)
+ 8))
+ :type xcb:-list)
+ (keycodes :initarg :keycodes :type xcb:-ignore)))
+
+(defclass xcb:NoOperation
+ (xcb:-request)
+ ((~opcode :initform 127 :type xcb:-u1)))
+
+(defconst xcb:error-number-class-alist
+ '((1 . xcb:Request)
+ (2 . xcb:Value)
+ (3 . xcb:Window)
+ (4 . xcb:Pixmap)
+ (5 . xcb:Atom)
+ (6 . xcb:Cursor)
+ (7 . xcb:Font)
+ (8 . xcb:Match)
+ (9 . xcb:Drawable)
+ (10 . xcb:Access)
+ (11 . xcb:Alloc)
+ (12 . xcb:Colormap)
+ (13 . xcb:GContext)
+ (14 . xcb:IDChoice)
+ (15 . xcb:Name)
+ (16 . xcb:Length)
+ (17 . xcb:Implementation))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:event-number-class-alist
+ '((2 . xcb:KeyPress)
+ (3 . xcb:KeyRelease)
+ (4 . xcb:ButtonPress)
+ (5 . xcb:ButtonRelease)
+ (6 . xcb:MotionNotify)
+ (7 . xcb:EnterNotify)
+ (8 . xcb:LeaveNotify)
+ (9 . xcb:FocusIn)
+ (10 . xcb:FocusOut)
+ (11 . xcb:KeymapNotify)
+ (12 . xcb:Expose)
+ (13 . xcb:GraphicsExposure)
+ (14 . xcb:NoExposure)
+ (15 . xcb:VisibilityNotify)
+ (16 . xcb:CreateNotify)
+ (17 . xcb:DestroyNotify)
+ (18 . xcb:UnmapNotify)
+ (19 . xcb:MapNotify)
+ (20 . xcb:MapRequest)
+ (21 . xcb:ReparentNotify)
+ (22 . xcb:ConfigureNotify)
+ (23 . xcb:ConfigureRequest)
+ (24 . xcb:GravityNotify)
+ (25 . xcb:ResizeRequest)
+ (26 . xcb:CirculateNotify)
+ (27 . xcb:CirculateRequest)
+ (28 . xcb:PropertyNotify)
+ (29 . xcb:SelectionClear)
+ (30 . xcb:SelectionRequest)
+ (31 . xcb:SelectionNotify)
+ (32 . xcb:ColormapNotify)
+ (33 . xcb:ClientMessage)
+ (34 . xcb:MappingNotify)
+ (35 . xcb:GeGeneric))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-xproto)
+
+;;; xcb-xproto.el ends here
diff --git a/elpa/xelb-0.20/xcb-xproto.elc b/elpa/xelb-0.20/xcb-xproto.elc
new file mode 100644
index 0000000..d4279d2
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xproto.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xselinux.el b/elpa/xelb-0.20/xcb-xselinux.el
new file mode 100644
index 0000000..cc7c47c
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xselinux.el
@@ -0,0 +1,392 @@
+;;; xcb-xselinux.el --- X11 SELinux extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xselinux.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xselinux:-extension-xname "SELinux")
+(defconst xcb:xselinux:-extension-name "SELinux")
+(defconst xcb:xselinux:-major-version 1)
+(defconst xcb:xselinux:-minor-version 0)
+
+(require 'xcb-xproto)
+
+(defclass xcb:xselinux:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (client-major :initarg :client-major :type xcb:CARD8)
+ (client-minor :initarg :client-minor :type xcb:CARD8)))
+(defclass xcb:xselinux:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (server-major :initarg :server-major :type xcb:CARD16)
+ (server-minor :initarg :server-minor :type xcb:CARD16)))
+
+(defclass xcb:xselinux:SetDeviceCreateContext
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetDeviceCreateContext
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)))
+(defclass xcb:xselinux:GetDeviceCreateContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:SetDeviceContext
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (device :initarg :device :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetDeviceContext
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (device :initarg :device :type xcb:CARD32)))
+(defclass xcb:xselinux:GetDeviceContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:SetWindowCreateContext
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetWindowCreateContext
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)))
+(defclass xcb:xselinux:GetWindowCreateContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetWindowContext
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xselinux:GetWindowContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:ListItem
+ (xcb:-struct)
+ ((name :initarg :name :type xcb:ATOM)
+ (object-context-len :initarg :object-context-len :type xcb:CARD32)
+ (data-context-len :initarg :data-context-len :type xcb:CARD32)
+ (object-context~ :initform
+ '(name object-context type xcb:char size
+ (xcb:-fieldref 'object-context-len))
+ :type xcb:-list)
+ (object-context :initarg :object-context :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)
+ (data-context~ :initform
+ '(name data-context type xcb:char size
+ (xcb:-fieldref 'data-context-len))
+ :type xcb:-list)
+ (data-context :initarg :data-context :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xselinux:SetPropertyCreateContext
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetPropertyCreateContext
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)))
+(defclass xcb:xselinux:GetPropertyCreateContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:SetPropertyUseContext
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetPropertyUseContext
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)))
+(defclass xcb:xselinux:GetPropertyUseContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetPropertyContext
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (property :initarg :property :type xcb:ATOM)))
+(defclass xcb:xselinux:GetPropertyContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetPropertyDataContext
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (property :initarg :property :type xcb:ATOM)))
+(defclass xcb:xselinux:GetPropertyDataContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:ListProperties
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xselinux:ListProperties~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (properties-len :initarg :properties-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (properties~ :initform
+ '(name properties type xcb:xselinux:ListItem size
+ (xcb:-fieldref 'properties-len))
+ :type xcb:-list)
+ (properties :initarg :properties :type xcb:-ignore)))
+
+(defclass xcb:xselinux:SetSelectionCreateContext
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetSelectionCreateContext
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)))
+(defclass xcb:xselinux:GetSelectionCreateContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:SetSelectionUseContext
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetSelectionUseContext
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)))
+(defclass xcb:xselinux:GetSelectionUseContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetSelectionContext
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (selection :initarg :selection :type xcb:ATOM)))
+(defclass xcb:xselinux:GetSelectionContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetSelectionDataContext
+ (xcb:-request)
+ ((~opcode :initform 20 :type xcb:-u1)
+ (selection :initarg :selection :type xcb:ATOM)))
+(defclass xcb:xselinux:GetSelectionDataContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+(defclass xcb:xselinux:ListSelections
+ (xcb:-request)
+ ((~opcode :initform 21 :type xcb:-u1)))
+(defclass xcb:xselinux:ListSelections~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (selections-len :initarg :selections-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (selections~ :initform
+ '(name selections type xcb:xselinux:ListItem size
+ (xcb:-fieldref 'selections-len))
+ :type xcb:-list)
+ (selections :initarg :selections :type xcb:-ignore)))
+
+(defclass xcb:xselinux:GetClientContext
+ (xcb:-request)
+ ((~opcode :initform 22 :type xcb:-u1)
+ (resource :initarg :resource :type xcb:CARD32)))
+(defclass xcb:xselinux:GetClientContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (context-len :initarg :context-len :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (context~ :initform
+ '(name context type xcb:char size
+ (xcb:-fieldref 'context-len))
+ :type xcb:-list)
+ (context :initarg :context :type xcb:-ignore)))
+
+
+
+(provide 'xcb-xselinux)
+
+;;; xcb-xselinux.el ends here
diff --git a/elpa/xelb-0.20/xcb-xselinux.elc b/elpa/xelb-0.20/xcb-xselinux.elc
new file mode 100644
index 0000000..fa735ab
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xselinux.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xsettings.el b/elpa/xelb-0.20/xcb-xsettings.el
new file mode 100644
index 0000000..1d7c0e3
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xsettings.el
@@ -0,0 +1,88 @@
+;;; xcb-xsettings.el --- XSETTINGS protocol -*- lexical-binding: t -*-
+
+;; Copyright (C) 2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file is written by hand. If possible we should auto-generate it
+;; from an XML protocol specification. The XSETTINGS protocol is
+;; specified at: https://specifications.freedesktop.org/xsettings-spec/
+
+;;; Code:
+
+(require 'xcb-types)
+(require 'xcb-icccm)
+
+(defconst xcb:xsettings:-Type:Integer 0)
+(defconst xcb:xsettings:-Type:String 1)
+(defconst xcb:xsettings:-Type:Color 2)
+
+(defclass xcb:xsettings:-Settings
+ (xcb:-struct)
+ ((byte-order :initarg :byte-order :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)
+ (serial :initarg :serial :type xcb:CARD32)
+ (settings-len :initarg :settings-len :type xcb:CARD32)
+ (settings~ :initform
+ '(name settings type xcb:xsettings:-SETTING size
+ (xcb:-fieldref 'settings-len))
+ :type xcb:-list)
+ (settings :initarg :settings :type xcb:-ignore)))
+
+(defclass xcb:xsettings:-SETTING
+ (xcb:-struct)
+ ((type :initarg :type :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (name-len :initarg :name-len :type xcb:CARD16)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-len))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (last-change-serial :initarg :last-change-serial :type xcb:CARD32)))
+
+(defclass xcb:xsettings:-SETTING_INTEGER
+ (xcb:xsettings:-SETTING)
+ ((type :initform 'xcb:xsettings:-Type:Integer)
+ (value :initarg :value :type xcb:INT32)))
+
+(defclass xcb:xsettings:-SETTING_STRING
+ (xcb:xsettings:-SETTING)
+ ((type :initform 'xcb:xsettings:-Type:String)
+ (value-len :initarg :value-len :type xcb:CARD32)
+ (value~ :initform
+ '(name value type xcb:char size
+ (xcb:-fieldref 'value-len))
+ :type xcb:-list)
+ (value :initarg :value :type xcb:-ignore)
+ (pad~2 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xsettings:-SETTING_COLOR
+ (xcb:xsettings:-SETTING)
+ ((type :initform 'xcb:xsettings:-Type:Color)
+ (red :initarg :red :type xcb:CARD16)
+ (green :initarg :green :type xcb:CARD16)
+ (blue :initarg :blue :type xcb:CARD16)
+ (alpha :initarg :alpha :initform #xffff :type xcb:CARD16)))
+
+
+
+(provide 'xcb-xsettings)
+
+;;; xcb-xsettings.el ends here
diff --git a/elpa/xelb-0.20/xcb-xsettings.elc b/elpa/xelb-0.20/xcb-xsettings.elc
new file mode 100644
index 0000000..edff8a6
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xsettings.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xtest.el b/elpa/xelb-0.20/xcb-xtest.el
new file mode 100644
index 0000000..431cd25
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xtest.el
@@ -0,0 +1,87 @@
+;;; xcb-xtest.el --- X11 Test extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xtest.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xtest:-extension-xname "XTEST")
+(defconst xcb:xtest:-extension-name "Test")
+(defconst xcb:xtest:-major-version 2)
+(defconst xcb:xtest:-minor-version 2)
+
+(require 'xcb-xproto)
+
+(defclass xcb:xtest:GetVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)
+ (major-version :initarg :major-version :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+(defclass xcb:xtest:GetVersion~reply
+ (xcb:-reply)
+ ((major-version :initarg :major-version :type xcb:CARD8)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (minor-version :initarg :minor-version :type xcb:CARD16)))
+
+(defconst xcb:xtest:Cursor:None 0)
+(defconst xcb:xtest:Cursor:Current 1)
+
+(defclass xcb:xtest:CompareCursor
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)
+ (cursor :initarg :cursor :type xcb:CURSOR)))
+(defclass xcb:xtest:CompareCursor~reply
+ (xcb:-reply)
+ ((same :initarg :same :type xcb:BOOL)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:xtest:FakeInput
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (type :initarg :type :type xcb:BYTE)
+ (detail :initarg :detail :type xcb:BYTE)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (time :initarg :time :type xcb:CARD32)
+ (root :initarg :root :type xcb:WINDOW)
+ (pad~1 :initform 8 :type xcb:-pad)
+ (rootX :initarg :rootX :type xcb:INT16)
+ (rootY :initarg :rootY :type xcb:INT16)
+ (pad~2 :initform 7 :type xcb:-pad)
+ (deviceid :initarg :deviceid :type xcb:CARD8)))
+
+(defclass xcb:xtest:GrabControl
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (impervious :initarg :impervious :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+
+
+(provide 'xcb-xtest)
+
+;;; xcb-xtest.el ends here
diff --git a/elpa/xelb-0.20/xcb-xtest.elc b/elpa/xelb-0.20/xcb-xtest.elc
new file mode 100644
index 0000000..9fd764a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xtest.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xv.el b/elpa/xelb-0.20/xcb-xv.el
new file mode 100644
index 0000000..627461e
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xv.el
@@ -0,0 +1,523 @@
+;;; xcb-xv.el --- X11 Xv extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xv.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xv:-extension-xname "XVideo")
+(defconst xcb:xv:-extension-name "Xv")
+(defconst xcb:xv:-major-version 2)
+(defconst xcb:xv:-minor-version 2)
+
+(require 'xcb-xproto)
+
+(require 'xcb-shm)
+
+(xcb:deftypealias 'xcb:xv:PORT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:xv:ENCODING 'xcb:-u4)
+
+(defconst xcb:xv:Type:InputMask 1)
+(defconst xcb:xv:Type:OutputMask 2)
+(defconst xcb:xv:Type:VideoMask 4)
+(defconst xcb:xv:Type:StillMask 8)
+(defconst xcb:xv:Type:ImageMask 16)
+
+(defconst xcb:xv:ImageFormatInfoType:RGB 0)
+(defconst xcb:xv:ImageFormatInfoType:YUV 1)
+
+(defconst xcb:xv:ImageFormatInfoFormat:Packed 0)
+(defconst xcb:xv:ImageFormatInfoFormat:Planar 1)
+
+(defconst xcb:xv:AttributeFlag:Gettable 1)
+(defconst xcb:xv:AttributeFlag:Settable 2)
+
+(defconst xcb:xv:VideoNotifyReason:Started 0)
+(defconst xcb:xv:VideoNotifyReason:Stopped 1)
+(defconst xcb:xv:VideoNotifyReason:Busy 2)
+(defconst xcb:xv:VideoNotifyReason:Preempted 3)
+(defconst xcb:xv:VideoNotifyReason:HardError 4)
+
+(defconst xcb:xv:ScanlineOrder:TopToBottom 0)
+(defconst xcb:xv:ScanlineOrder:BottomToTop 1)
+
+(defconst xcb:xv:GrabPortStatus:Success 0)
+(defconst xcb:xv:GrabPortStatus:BadExtension 1)
+(defconst xcb:xv:GrabPortStatus:AlreadyGrabbed 2)
+(defconst xcb:xv:GrabPortStatus:InvalidTime 3)
+(defconst xcb:xv:GrabPortStatus:BadReply 4)
+(defconst xcb:xv:GrabPortStatus:BadAlloc 5)
+
+(defclass xcb:xv:Rational
+ (xcb:-struct)
+ ((numerator :initarg :numerator :type xcb:INT32)
+ (denominator :initarg :denominator :type xcb:INT32)))
+
+(defclass xcb:xv:Format
+ (xcb:-struct)
+ ((visual :initarg :visual :type xcb:VISUALID)
+ (depth :initarg :depth :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xv:AdaptorInfo
+ (xcb:-struct)
+ ((base-id :initarg :base-id :type xcb:xv:PORT)
+ (name-size :initarg :name-size :type xcb:CARD16)
+ (num-ports :initarg :num-ports :type xcb:CARD16)
+ (num-formats :initarg :num-formats :type xcb:CARD16)
+ (type :initarg :type :type xcb:CARD8)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-size))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)
+ (formats~ :initform
+ '(name formats type xcb:xv:Format size
+ (xcb:-fieldref 'num-formats))
+ :type xcb:-list)
+ (formats :initarg :formats :type xcb:-ignore)))
+
+(defclass xcb:xv:EncodingInfo
+ (xcb:-struct)
+ ((encoding :initarg :encoding :type xcb:xv:ENCODING)
+ (name-size :initarg :name-size :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (rate :initarg :rate :type xcb:xv:Rational)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'name-size))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~1 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xv:Image
+ (xcb:-struct)
+ ((id :initarg :id :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (data-size :initarg :data-size :type xcb:CARD32)
+ (num-planes :initarg :num-planes :type xcb:CARD32)
+ (pitches~ :initform
+ '(name pitches type xcb:CARD32 size
+ (xcb:-fieldref 'num-planes))
+ :type xcb:-list)
+ (pitches :initarg :pitches :type xcb:-ignore)
+ (offsets~ :initform
+ '(name offsets type xcb:CARD32 size
+ (xcb:-fieldref 'num-planes))
+ :type xcb:-list)
+ (offsets :initarg :offsets :type xcb:-ignore)
+ (data~ :initform
+ '(name data type xcb:CARD8 size
+ (xcb:-fieldref 'data-size))
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:xv:AttributeInfo
+ (xcb:-struct)
+ ((flags :initarg :flags :type xcb:CARD32)
+ (min :initarg :min :type xcb:INT32)
+ (max :initarg :max :type xcb:INT32)
+ (size :initarg :size :type xcb:CARD32)
+ (name~ :initform
+ '(name name type xcb:char size
+ (xcb:-fieldref 'size))
+ :type xcb:-list)
+ (name :initarg :name :type xcb:-ignore)
+ (pad~0 :initform 4 :type xcb:-pad-align)))
+
+(defclass xcb:xv:ImageFormatInfo
+ (xcb:-struct)
+ ((id :initarg :id :type xcb:CARD32)
+ (type :initarg :type :type xcb:CARD8)
+ (byte-order :initarg :byte-order :type xcb:CARD8)
+ (pad~0 :initform 2 :type xcb:-pad)
+ (guid~ :initform
+ '(name guid type xcb:CARD8 size 16)
+ :type xcb:-list)
+ (guid :initarg :guid :type xcb:-ignore)
+ (bpp :initarg :bpp :type xcb:CARD8)
+ (num-planes :initarg :num-planes :type xcb:CARD8)
+ (pad~1 :initform 2 :type xcb:-pad)
+ (depth :initarg :depth :type xcb:CARD8)
+ (pad~2 :initform 3 :type xcb:-pad)
+ (red-mask :initarg :red-mask :type xcb:CARD32)
+ (green-mask :initarg :green-mask :type xcb:CARD32)
+ (blue-mask :initarg :blue-mask :type xcb:CARD32)
+ (format :initarg :format :type xcb:CARD8)
+ (pad~3 :initform 3 :type xcb:-pad)
+ (y-sample-bits :initarg :y-sample-bits :type xcb:CARD32)
+ (u-sample-bits :initarg :u-sample-bits :type xcb:CARD32)
+ (v-sample-bits :initarg :v-sample-bits :type xcb:CARD32)
+ (vhorz-y-period :initarg :vhorz-y-period :type xcb:CARD32)
+ (vhorz-u-period :initarg :vhorz-u-period :type xcb:CARD32)
+ (vhorz-v-period :initarg :vhorz-v-period :type xcb:CARD32)
+ (vvert-y-period :initarg :vvert-y-period :type xcb:CARD32)
+ (vvert-u-period :initarg :vvert-u-period :type xcb:CARD32)
+ (vvert-v-period :initarg :vvert-v-period :type xcb:CARD32)
+ (vcomp-order~ :initform
+ '(name vcomp-order type xcb:CARD8 size 32)
+ :type xcb:-list)
+ (vcomp-order :initarg :vcomp-order :type xcb:-ignore)
+ (vscanline-order :initarg :vscanline-order :type xcb:CARD8)
+ (pad~4 :initform 11 :type xcb:-pad)))
+
+(defclass xcb:xv:BadPort
+ (xcb:-error)
+ ((~code :initform 0)))
+
+(defclass xcb:xv:BadEncoding
+ (xcb:-error)
+ ((~code :initform 1)))
+
+(defclass xcb:xv:BadControl
+ (xcb:-error)
+ ((~code :initform 2)))
+
+(defclass xcb:xv:VideoNotify
+ (xcb:-event)
+ ((~code :initform 0)
+ (reason :initarg :reason :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (port :initarg :port :type xcb:xv:PORT)))
+
+(defclass xcb:xv:PortNotify
+ (xcb:-event)
+ ((~code :initform 1)
+ (pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (time :initarg :time :type xcb:TIMESTAMP)
+ (port :initarg :port :type xcb:xv:PORT)
+ (attribute :initarg :attribute :type xcb:ATOM)
+ (value :initarg :value :type xcb:INT32)))
+
+(defclass xcb:xv:QueryExtension
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:xv:QueryExtension~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major :initarg :major :type xcb:CARD16)
+ (minor :initarg :minor :type xcb:CARD16)))
+
+(defclass xcb:xv:QueryAdaptors
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (window :initarg :window :type xcb:WINDOW)))
+(defclass xcb:xv:QueryAdaptors~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-adaptors :initarg :num-adaptors :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (info~ :initform
+ '(name info type xcb:xv:AdaptorInfo size
+ (xcb:-fieldref 'num-adaptors))
+ :type xcb:-list)
+ (info :initarg :info :type xcb:-ignore)))
+
+(defclass xcb:xv:QueryEncodings
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)))
+(defclass xcb:xv:QueryEncodings~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-encodings :initarg :num-encodings :type xcb:CARD16)
+ (pad~1 :initform 22 :type xcb:-pad)
+ (info~ :initform
+ '(name info type xcb:xv:EncodingInfo size
+ (xcb:-fieldref 'num-encodings))
+ :type xcb:-list)
+ (info :initarg :info :type xcb:-ignore)))
+
+(defclass xcb:xv:GrabPort
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+(defclass xcb:xv:GrabPort~reply
+ (xcb:-reply)
+ ((result :initarg :result :type xcb:BYTE)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)))
+
+(defclass xcb:xv:UngrabPort
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (time :initarg :time :type xcb:TIMESTAMP)))
+
+(defclass xcb:xv:PutVideo
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (vid-x :initarg :vid-x :type xcb:INT16)
+ (vid-y :initarg :vid-y :type xcb:INT16)
+ (vid-w :initarg :vid-w :type xcb:CARD16)
+ (vid-h :initarg :vid-h :type xcb:CARD16)
+ (drw-x :initarg :drw-x :type xcb:INT16)
+ (drw-y :initarg :drw-y :type xcb:INT16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)))
+
+(defclass xcb:xv:PutStill
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (vid-x :initarg :vid-x :type xcb:INT16)
+ (vid-y :initarg :vid-y :type xcb:INT16)
+ (vid-w :initarg :vid-w :type xcb:CARD16)
+ (vid-h :initarg :vid-h :type xcb:CARD16)
+ (drw-x :initarg :drw-x :type xcb:INT16)
+ (drw-y :initarg :drw-y :type xcb:INT16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)))
+
+(defclass xcb:xv:GetVideo
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (vid-x :initarg :vid-x :type xcb:INT16)
+ (vid-y :initarg :vid-y :type xcb:INT16)
+ (vid-w :initarg :vid-w :type xcb:CARD16)
+ (vid-h :initarg :vid-h :type xcb:CARD16)
+ (drw-x :initarg :drw-x :type xcb:INT16)
+ (drw-y :initarg :drw-y :type xcb:INT16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)))
+
+(defclass xcb:xv:GetStill
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (vid-x :initarg :vid-x :type xcb:INT16)
+ (vid-y :initarg :vid-y :type xcb:INT16)
+ (vid-w :initarg :vid-w :type xcb:CARD16)
+ (vid-h :initarg :vid-h :type xcb:CARD16)
+ (drw-x :initarg :drw-x :type xcb:INT16)
+ (drw-y :initarg :drw-y :type xcb:INT16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)))
+
+(defclass xcb:xv:StopVideo
+ (xcb:-request)
+ ((~opcode :initform 9 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)))
+
+(defclass xcb:xv:SelectVideoNotify
+ (xcb:-request)
+ ((~opcode :initform 10 :type xcb:-u1)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (onoff :initarg :onoff :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xv:SelectPortNotify
+ (xcb:-request)
+ ((~opcode :initform 11 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (onoff :initarg :onoff :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defclass xcb:xv:QueryBestSize
+ (xcb:-request)
+ ((~opcode :initform 12 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (vid-w :initarg :vid-w :type xcb:CARD16)
+ (vid-h :initarg :vid-h :type xcb:CARD16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)
+ (motion :initarg :motion :type xcb:BOOL)
+ (pad~0 :initform 3 :type xcb:-pad)))
+(defclass xcb:xv:QueryBestSize~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (actual-width :initarg :actual-width :type xcb:CARD16)
+ (actual-height :initarg :actual-height :type xcb:CARD16)))
+
+(defclass xcb:xv:SetPortAttribute
+ (xcb:-request)
+ ((~opcode :initform 13 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (attribute :initarg :attribute :type xcb:ATOM)
+ (value :initarg :value :type xcb:INT32)))
+
+(defclass xcb:xv:GetPortAttribute
+ (xcb:-request)
+ ((~opcode :initform 14 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (attribute :initarg :attribute :type xcb:ATOM)))
+(defclass xcb:xv:GetPortAttribute~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (value :initarg :value :type xcb:INT32)))
+
+(defclass xcb:xv:QueryPortAttributes
+ (xcb:-request)
+ ((~opcode :initform 15 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)))
+(defclass xcb:xv:QueryPortAttributes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-attributes :initarg :num-attributes :type xcb:CARD32)
+ (text-size :initarg :text-size :type xcb:CARD32)
+ (pad~1 :initform 16 :type xcb:-pad)
+ (attributes~ :initform
+ '(name attributes type xcb:xv:AttributeInfo size
+ (xcb:-fieldref 'num-attributes))
+ :type xcb:-list)
+ (attributes :initarg :attributes :type xcb:-ignore)))
+
+(defclass xcb:xv:ListImageFormats
+ (xcb:-request)
+ ((~opcode :initform 16 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)))
+(defclass xcb:xv:ListImageFormats~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-formats :initarg :num-formats :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (format~ :initform
+ '(name format type xcb:xv:ImageFormatInfo size
+ (xcb:-fieldref 'num-formats))
+ :type xcb:-list)
+ (format :initarg :format :type xcb:-ignore)))
+
+(defclass xcb:xv:QueryImageAttributes
+ (xcb:-request)
+ ((~opcode :initform 17 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (id :initarg :id :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+(defclass xcb:xv:QueryImageAttributes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num-planes :initarg :num-planes :type xcb:CARD32)
+ (data-size :initarg :data-size :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (pitches~ :initform
+ '(name pitches type xcb:CARD32 size
+ (xcb:-fieldref 'num-planes))
+ :type xcb:-list)
+ (pitches :initarg :pitches :type xcb:-ignore)
+ (offsets~ :initform
+ '(name offsets type xcb:CARD32 size
+ (xcb:-fieldref 'num-planes))
+ :type xcb:-list)
+ (offsets :initarg :offsets :type xcb:-ignore)))
+
+(defclass xcb:xv:PutImage
+ (xcb:-request)
+ ((~opcode :initform 18 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (id :initarg :id :type xcb:CARD32)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (src-w :initarg :src-w :type xcb:CARD16)
+ (src-h :initarg :src-h :type xcb:CARD16)
+ (drw-x :initarg :drw-x :type xcb:INT16)
+ (drw-y :initarg :drw-y :type xcb:INT16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (data~ :initform
+ '(name data type xcb:CARD8 size nil)
+ :type xcb:-list)
+ (data :initarg :data :type xcb:-ignore)))
+
+(defclass xcb:xv:ShmPutImage
+ (xcb:-request)
+ ((~opcode :initform 19 :type xcb:-u1)
+ (port :initarg :port :type xcb:xv:PORT)
+ (drawable :initarg :drawable :type xcb:DRAWABLE)
+ (gc :initarg :gc :type xcb:GCONTEXT)
+ (shmseg :initarg :shmseg :type xcb:shm:SEG)
+ (id :initarg :id :type xcb:CARD32)
+ (offset :initarg :offset :type xcb:CARD32)
+ (src-x :initarg :src-x :type xcb:INT16)
+ (src-y :initarg :src-y :type xcb:INT16)
+ (src-w :initarg :src-w :type xcb:CARD16)
+ (src-h :initarg :src-h :type xcb:CARD16)
+ (drw-x :initarg :drw-x :type xcb:INT16)
+ (drw-y :initarg :drw-y :type xcb:INT16)
+ (drw-w :initarg :drw-w :type xcb:CARD16)
+ (drw-h :initarg :drw-h :type xcb:CARD16)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (send-event :initarg :send-event :type xcb:CARD8)
+ (pad~0 :initform 3 :type xcb:-pad)))
+
+(defconst xcb:xv:error-number-class-alist
+ '((0 . xcb:xv:BadPort)
+ (1 . xcb:xv:BadEncoding)
+ (2 . xcb:xv:BadControl))
+ "(error-number . error-class) alist.")
+
+(defconst xcb:xv:event-number-class-alist
+ '((0 . xcb:xv:VideoNotify)
+ (1 . xcb:xv:PortNotify))
+ "(event-number . event-class) alist.")
+
+
+
+(provide 'xcb-xv)
+
+;;; xcb-xv.el ends here
diff --git a/elpa/xelb-0.20/xcb-xv.elc b/elpa/xelb-0.20/xcb-xv.elc
new file mode 100644
index 0000000..37847a7
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xv.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb-xvmc.el b/elpa/xelb-0.20/xcb-xvmc.el
new file mode 100644
index 0000000..1e9fa2d
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xvmc.el
@@ -0,0 +1,188 @@
+;;; xcb-xvmc.el --- X11 XvMC extension -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from 'xvmc.xml',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+(require 'xcb-types)
+
+(defconst xcb:xvmc:-extension-xname "XVideo-MotionCompensation")
+(defconst xcb:xvmc:-extension-name "XvMC")
+(defconst xcb:xvmc:-major-version 1)
+(defconst xcb:xvmc:-minor-version 1)
+
+(require 'xcb-xv)
+
+(xcb:deftypealias 'xcb:xvmc:CONTEXT 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:xvmc:SURFACE 'xcb:-u4)
+
+(xcb:deftypealias 'xcb:xvmc:SUBPICTURE 'xcb:-u4)
+
+(defclass xcb:xvmc:SurfaceInfo
+ (xcb:-struct)
+ ((id :initarg :id :type xcb:xvmc:SURFACE)
+ (chroma-format :initarg :chroma-format :type xcb:CARD16)
+ (pad0 :initarg :pad0 :type xcb:CARD16)
+ (max-width :initarg :max-width :type xcb:CARD16)
+ (max-height :initarg :max-height :type xcb:CARD16)
+ (subpicture-max-width :initarg :subpicture-max-width :type xcb:CARD16)
+ (subpicture-max-height :initarg :subpicture-max-height :type xcb:CARD16)
+ (mc-type :initarg :mc-type :type xcb:CARD32)
+ (flags :initarg :flags :type xcb:CARD32)))
+
+(defclass xcb:xvmc:QueryVersion
+ (xcb:-request)
+ ((~opcode :initform 0 :type xcb:-u1)))
+(defclass xcb:xvmc:QueryVersion~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (major :initarg :major :type xcb:CARD32)
+ (minor :initarg :minor :type xcb:CARD32)))
+
+(defclass xcb:xvmc:ListSurfaceTypes
+ (xcb:-request)
+ ((~opcode :initform 1 :type xcb:-u1)
+ (port-id :initarg :port-id :type xcb:xv:PORT)))
+(defclass xcb:xvmc:ListSurfaceTypes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num :initarg :num :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (surfaces~ :initform
+ '(name surfaces type xcb:xvmc:SurfaceInfo size
+ (xcb:-fieldref 'num))
+ :type xcb:-list)
+ (surfaces :initarg :surfaces :type xcb:-ignore)))
+
+(defclass xcb:xvmc:CreateContext
+ (xcb:-request)
+ ((~opcode :initform 2 :type xcb:-u1)
+ (context-id :initarg :context-id :type xcb:xvmc:CONTEXT)
+ (port-id :initarg :port-id :type xcb:xv:PORT)
+ (surface-id :initarg :surface-id :type xcb:xvmc:SURFACE)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)
+ (flags :initarg :flags :type xcb:CARD32)))
+(defclass xcb:xvmc:CreateContext~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width-actual :initarg :width-actual :type xcb:CARD16)
+ (height-actual :initarg :height-actual :type xcb:CARD16)
+ (flags-return :initarg :flags-return :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (priv-data~ :initform
+ '(name priv-data type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (priv-data :initarg :priv-data :type xcb:-ignore)))
+
+(defclass xcb:xvmc:DestroyContext
+ (xcb:-request)
+ ((~opcode :initform 3 :type xcb:-u1)
+ (context-id :initarg :context-id :type xcb:xvmc:CONTEXT)))
+
+(defclass xcb:xvmc:CreateSurface
+ (xcb:-request)
+ ((~opcode :initform 4 :type xcb:-u1)
+ (surface-id :initarg :surface-id :type xcb:xvmc:SURFACE)
+ (context-id :initarg :context-id :type xcb:xvmc:CONTEXT)))
+(defclass xcb:xvmc:CreateSurface~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (pad~1 :initform 24 :type xcb:-pad)
+ (priv-data~ :initform
+ '(name priv-data type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (priv-data :initarg :priv-data :type xcb:-ignore)))
+
+(defclass xcb:xvmc:DestroySurface
+ (xcb:-request)
+ ((~opcode :initform 5 :type xcb:-u1)
+ (surface-id :initarg :surface-id :type xcb:xvmc:SURFACE)))
+
+(defclass xcb:xvmc:CreateSubpicture
+ (xcb:-request)
+ ((~opcode :initform 6 :type xcb:-u1)
+ (subpicture-id :initarg :subpicture-id :type xcb:xvmc:SUBPICTURE)
+ (context :initarg :context :type xcb:xvmc:CONTEXT)
+ (xvimage-id :initarg :xvimage-id :type xcb:CARD32)
+ (width :initarg :width :type xcb:CARD16)
+ (height :initarg :height :type xcb:CARD16)))
+(defclass xcb:xvmc:CreateSubpicture~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (width-actual :initarg :width-actual :type xcb:CARD16)
+ (height-actual :initarg :height-actual :type xcb:CARD16)
+ (num-palette-entries :initarg :num-palette-entries :type xcb:CARD16)
+ (entry-bytes :initarg :entry-bytes :type xcb:CARD16)
+ (component-order~ :initform
+ '(name component-order type xcb:CARD8 size 4)
+ :type xcb:-list)
+ (component-order :initarg :component-order :type xcb:-ignore)
+ (pad~1 :initform 12 :type xcb:-pad)
+ (priv-data~ :initform
+ '(name priv-data type xcb:CARD32 size
+ (xcb:-fieldref 'length))
+ :type xcb:-list)
+ (priv-data :initarg :priv-data :type xcb:-ignore)))
+
+(defclass xcb:xvmc:DestroySubpicture
+ (xcb:-request)
+ ((~opcode :initform 7 :type xcb:-u1)
+ (subpicture-id :initarg :subpicture-id :type xcb:xvmc:SUBPICTURE)))
+
+(defclass xcb:xvmc:ListSubpictureTypes
+ (xcb:-request)
+ ((~opcode :initform 8 :type xcb:-u1)
+ (port-id :initarg :port-id :type xcb:xv:PORT)
+ (surface-id :initarg :surface-id :type xcb:xvmc:SURFACE)))
+(defclass xcb:xvmc:ListSubpictureTypes~reply
+ (xcb:-reply)
+ ((pad~0 :initform 1 :type xcb:-pad)
+ (~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32)
+ (num :initarg :num :type xcb:CARD32)
+ (pad~1 :initform 20 :type xcb:-pad)
+ (types~ :initform
+ '(name types type xcb:xv:ImageFormatInfo size
+ (xcb:-fieldref 'num))
+ :type xcb:-list)
+ (types :initarg :types :type xcb:-ignore)))
+
+
+
+(provide 'xcb-xvmc)
+
+;;; xcb-xvmc.el ends here
diff --git a/elpa/xelb-0.20/xcb-xvmc.elc b/elpa/xelb-0.20/xcb-xvmc.elc
new file mode 100644
index 0000000..49b79a7
--- /dev/null
+++ b/elpa/xelb-0.20/xcb-xvmc.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xcb.el b/elpa/xelb-0.20/xcb.el
new file mode 100644
index 0000000..afe36ee
--- /dev/null
+++ b/elpa/xelb-0.20/xcb.el
@@ -0,0 +1,883 @@
+;;; xcb.el --- X protocol Emacs Lisp Binding (XELB) -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library mainly provides methods for `xcb:connection', a opaque class
+;; encapsulating all information concerning an X connection. The most
+;; frequently used methods are:
+;; + Open/Close connection
+;; - `xcb:connect'
+;; - `xcb:disconnect'
+;; + Request/Reply/Error (asynchronous)
+;; - `xcb:+request'
+;; - `xcb:+request-checked'
+;; - `xcb:+request-unchecked'
+;; - `xcb:+reply'
+;; - `xcb:request-check'
+;; + Request/Reply/Error (synchronous)
+;; - `xcb:+request+reply'
+;; - `xcb:+request-checked+request-check'
+;; - `xcb:+request-unchecked+reply'
+;; + Event handling
+;; - `xcb:+event'
+;; + Misc.
+;; - `xcb:flush'
+;; - `xcb:generate-id'
+;; Please refer to their documentations for more details.
+
+;; Todo:
+;; + Use XC-MISC extension for `xcb:generate-id' when IDs are used up.
+
+;; References:
+;; + X protocol (http://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.txt)
+
+;;; Code:
+
+(require 'cl-lib)
+
+(require 'xcb-xproto)
+
+(defvar xcb:connection-timeout 3 "Connection timeout.")
+
+;;;; X connection related
+
+(defclass xcb:connection (xcb:--struct)
+ ((process :initarg :process :initform nil)
+ (connected :initform nil) ;non-nil indicates connected to X server
+ (display :initarg :display :initform nil)
+ (auth-info :initarg :auth-info :initform nil)
+ (socket :initarg :socket :initform nil)
+ (lock :initform nil)
+ (setup-data :initform nil) ;X connection setup data
+ (request-cache :initform []) ;cache for outgoing requests
+ (message-cache :initform []) ;cache for incoming messages
+ (event-lock :initform 0)
+ (event-queue :initform nil)
+ (error-plist :initform nil)
+ (reply-plist :initform nil)
+ (event-plist :initform nil)
+ (extension-plist :initform nil)
+ (extension-opcode-plist :initform nil)
+ (extension-first-error-alist :initform nil)
+ (extension-first-event-alist :initform nil)
+ (request-sequence :initform 0)
+ (last-seen-sequence :initform 0)
+ (xid :initform 0) ;last used X resource ID
+ (extra-plist :initform nil)) ;for storing extra data (e.g. by extensions)
+ :documentation "X connection.")
+
+(defclass xcb:auth-info (xcb:--struct)
+ ((name :initarg :name :initform "" :type string)
+ (data :initarg :data :initform "" :type string))
+ :documentation "X connection authentication info.")
+
+(cl-defmethod xcb:-get-extra-plist ((conn xcb:connection) module prop)
+ "Get the value of PROP from the extra plist for module MODULE."
+ (plist-get (plist-get (slot-value conn 'extra-plist) module) prop))
+
+(cl-defmethod xcb:-set-extra-plist ((conn xcb:connection) module prop val)
+ "Set the value of PROP in the extra plist for module MODULE to VAL."
+ (with-slots (extra-plist) conn
+ (setf extra-plist
+ (plist-put extra-plist module
+ (plist-put (plist-get extra-plist module) prop val)))))
+
+(defun xcb:connect (&optional display _screen)
+ "Connect to X server with display DISPLAY."
+ (declare (advertised-calling-convention (&optional display) "25.1"))
+ (unless display (setq display (frame-parameter nil 'display)))
+ (unless display (error "[XELB] No X display available"))
+ (let ((socket (xcb:display->socket display)))
+ (if (file-exists-p socket)
+ (xcb:connect-to-socket socket)
+ (xcb:connect-to-display-with-auth-info display))))
+
+(defun xcb:display->socket (display)
+ "Convert X11 display DISPLAY to its corresponding socket."
+ (concat "/tmp/.X11-unix/X"
+ (replace-regexp-in-string ".*:\\([^\\.]+\\).*" "\\1" display)))
+
+(defun xcb:connect-to-display-with-auth-info (&optional display auth _screen)
+ "Connect to X server with display DISPLAY, auth info AUTH."
+ (declare (advertised-calling-convention (&optional display auth) "25.1"))
+ (unless display (setq display (frame-parameter nil 'display)))
+ (unless display (error "[XELB] No X display available"))
+ (let* ((tmp (xcb:parse-display display))
+ (host (cdr (assoc 'host tmp)))
+ (host (if (string= "" host) 'local host))
+ (dpy (cdr (assoc 'display tmp)))
+ (process (make-network-process :name "XELB"
+ :host host
+ :service (+ 6000 dpy)))
+ (auth-info (if auth auth (xcb:create-auth-info)))
+ (connection (make-instance 'xcb:connection
+ :process process
+ :display display :auth-info auth-info)))
+ (xcb:-connect connection)
+ connection))
+
+(defun xcb:parse-display (name)
+ "Parse X Display name NAME."
+ (let ((host (replace-regexp-in-string "\\(.*\\):.*" "\\1" name))
+ (display (replace-regexp-in-string ".*:\\([^\\.]+\\).*" "\\1" name))
+ (screen
+ (replace-regexp-in-string ".*:[^\\.]+\\.?\\(.*\\)" "\\1" name)))
+ (setq display (string-to-number display))
+ (setq screen (if (string= "" screen) 0 (string-to-number screen)))
+ `((host . ,host) (display . ,display) (screen . ,screen))))
+
+(defun xcb:create-auth-info ()
+ "Create the default `auth-info'."
+ (let ((xauth-output (shell-command-to-string
+ (concat
+ "xauth list "
+ (replace-regexp-in-string "^localhost" ""
+ (getenv "DISPLAY"))
+ " 2>/dev/null")))
+ (name "MIT-MAGIC-COOKIE-1") ;only support MIT-MAGIC-COOKIE-1 protocol.
+ (data ""))
+ (if (string= "" xauth-output)
+ ;; No xauth entry available.
+ (setq name "")
+ (setq xauth-output (split-string xauth-output))
+ (if (string= name (car (last xauth-output 2)))
+ ;; The auth data is a 128-bit hex string.
+ (setq data (car (last xauth-output))
+ data
+ (concat
+ (cl-loop for i in (number-sequence 0 30 2)
+ collect (string-to-number
+ (substring data
+ i (+ i 2))
+ 16))))
+ ;; No xauth entry available.
+ (setq name "")))
+ (make-instance 'xcb:auth-info :name name :data data)))
+
+(defun xcb:connect-to-socket (&optional socket auth-info)
+ "Connect to X server with socket SOCKET and authentication info AUTH-INFO."
+ (unless (or socket (frame-parameter nil 'display))
+ (error "[XELB] No X display available"))
+ (let (display)
+ (if socket
+ ;; As there is no general way to deduce the display name from an X11
+ ;; socket, we assume a standard SOCKET name and hope for the best.
+ (setq display
+ (concat ":" ;local
+ (replace-regexp-in-string "^.*?\\([0-9.]+\\)$" "\\1"
+ socket)))
+ (setq display (frame-parameter nil 'display)
+ socket (xcb:display->socket display)))
+ (let* ((process (make-network-process :name "XELB" :family 'local
+ :service socket))
+ (auth (if auth-info auth-info (xcb:create-auth-info)))
+ (connection (make-instance 'xcb:connection
+ :process process :display display
+ :auth-info auth :socket socket)))
+ (xcb:-connect connection)
+ connection)))
+
+(cl-defmethod xcb:-connect ((obj xcb:connection))
+ "Connect to X server."
+ (let* ((process (slot-value obj 'process))
+ (auth-info (slot-value obj 'auth-info))
+ (aname (slot-value auth-info 'name))
+ (adata (slot-value auth-info 'data)))
+ (set-process-plist process
+ (plist-put (process-plist process) 'connection obj))
+ (set-process-coding-system process 'binary 'binary)
+ (set-process-filter process #'xcb:-connection-setup-filter)
+ (set-process-sentinel process #'xcb:-connection-sentinel)
+ (process-send-string ;send setup packet
+ process
+ (apply #'unibyte-string
+ (append ;convert vector to string
+ (xcb:marshal
+ (make-instance 'xcb:SetupRequest
+ :byte-order (if xcb:lsb #x6c #x42)
+ :protocol-major-version 11
+ :protocol-minor-version 0
+ :authorization-protocol-name-len (length aname)
+ :authorization-protocol-data-len (length adata)
+ :authorization-protocol-name aname
+ :authorization-protocol-data adata))
+ nil)))
+ ;; Wait for setup data ready
+ (with-timeout (xcb:connection-timeout (xcb:disconnect obj)
+ (error "[XELB] Connection timeout"))
+ (while (not (slot-value obj 'setup-data))
+ (accept-process-output process 1 nil 1)))))
+
+(defconst xcb:-SEQUENCE-SEGMENT-MASK (lognot #xFFFF))
+
+(defun xcb:-connection-setup-filter (process message)
+ "Process filter used during connection setup."
+ (let* ((connection (plist-get (process-plist process) 'connection))
+ (cache (vconcat (slot-value connection 'message-cache) message)))
+ (setf (slot-value connection 'message-cache) cache)
+ (unless (or (slot-value connection 'lock)
+ ;; Shorter than the setup header.
+ (> 8 (length cache)))
+ (setf (slot-value connection 'lock) t)
+ (let ((data-len (+ 8 (* 4 (if xcb:lsb
+ (xcb:-unpack-u2-lsb cache 6)
+ (xcb:-unpack-u2 cache 6)))))
+ obj)
+ (when (>= (length cache) data-len)
+ (xcb:-log "Setup response: %s" cache)
+ (pcase (aref cache 0)
+ (0
+ ;; Connection failed.
+ (setq obj (make-instance 'xcb:SetupFailed))
+ (xcb:unmarshal obj cache)
+ (setq cache (substring cache data-len))
+ (error "[XELB] Connection failed: %s" (slot-value obj 'reason)))
+ (1
+ ;; Connection established.
+ (setf (slot-value connection 'message-cache) [])
+ (set-process-filter process #'xcb:-connection-filter)
+ (setq obj (make-instance 'xcb:Setup))
+ (xcb:unmarshal obj cache)
+ (setq cache (substring cache data-len))
+ (setf (slot-value connection 'setup-data) obj)
+ (setf (slot-value connection 'connected) t))
+ (2
+ ;; Authentication required.
+ (setq obj (make-instance 'xcb:SetupAuthenticate))
+ (xcb:unmarshal obj cache)
+ (setq cache (substring cache data-len))
+ (error "[XELB] Authentication not supported: %s"
+ (slot-value obj 'reason)))
+ (x (error "Unrecognized setup status: %d" x)))))
+ (setf (slot-value connection 'lock) nil))))
+
+(defun xcb:-connection-sentinel (process _event)
+ "Process sentinel used to teardown the connection on disconnect."
+ (unless (process-live-p process)
+ (xcb:disconnect (plist-get (process-plist process) 'connection))))
+
+(cl-defmethod xcb:-convert-sequence ((obj xcb:connection) sequence16)
+ "Convert 16-bit sequence number SEQUENCE16 (read from a packet).
+
+The result would be 29 or 61 bits, depending on the machine."
+ (with-slots (request-sequence) obj
+ ;; Assume there are no more than #xFFFF requests sent since the
+ ;; request corresponding to this packet was made. Because errors
+ ;; and replies are always read out in the process filter, this
+ ;; assumption is quite safe.
+ (let ((sequence (logior (logand request-sequence
+ xcb:-SEQUENCE-SEGMENT-MASK)
+ sequence16)))
+ ;; `xcb:-cache-request' ensures sequence number never wraps.
+ (when (> sequence request-sequence)
+ (cl-decf sequence #x10000))
+ sequence)))
+
+(defun xcb:-connection-filter (process message)
+ "Filter function for an X connection.
+
+Concurrency is disabled as it breaks the orders of errors, replies and events."
+ (let* ((connection (plist-get (process-plist process) 'connection))
+ ;; Temporarily disable GC here as typically it's about to do
+ ;; lots of marshaling/unmarshaling.
+ (gc-cons-threshold most-positive-fixnum)
+ (cache (vconcat (slot-value connection 'message-cache) message))
+ (cache-length (length cache)))
+ (setf (slot-value connection 'message-cache) cache)
+ (unless (slot-value connection 'lock)
+ ;; Start parsing message
+ (setf (slot-value connection 'lock) t)
+ ;; Process error/reply/event
+ (catch 'break
+ (while (<= 32 (length cache))
+ (pcase (aref cache 0)
+ (0 ;error
+ (xcb:-log "Error received: %s" (substring cache 0 32))
+ (let ((sequence (funcall (if xcb:lsb #'xcb:-unpack-u2-lsb
+ #'xcb:-unpack-u2)
+ cache 2))
+ (plist (slot-value connection 'error-plist))
+ struct)
+ (setq sequence (xcb:-convert-sequence connection sequence))
+ (when (plist-member plist sequence)
+ (setq struct (plist-get plist sequence))
+ (setf (slot-value connection 'error-plist)
+ (plist-put plist sequence
+ (push `(,(aref cache 1) .
+ ,(substring cache 0 32))
+ struct))))
+ (setq cache (substring cache 32))
+ (setf (slot-value connection 'last-seen-sequence) sequence)))
+ (1 ;reply
+ (let* ((reply-words (funcall (if xcb:lsb #'xcb:-unpack-u4-lsb
+ #'xcb:-unpack-u4)
+ cache 4))
+ (reply-length (+ 32 (* 4 reply-words)))
+ struct sequence plist)
+ (when (< (length cache) reply-length) ;too short, do next time
+ (throw 'break nil))
+ (xcb:-log "Reply received: %s" (substring cache 0 reply-length))
+ (setq sequence (funcall (if xcb:lsb #'xcb:-unpack-u2-lsb
+ #'xcb:-unpack-u2)
+ cache 2)
+ sequence (xcb:-convert-sequence connection sequence))
+ (setq plist (slot-value connection 'reply-plist))
+ (setq struct (plist-get plist sequence))
+ (when struct
+ (setf (slot-value connection 'reply-plist)
+ (plist-put plist sequence
+ (if (symbolp struct)
+ ;; Single reply or
+ ;; first reply for multiple replies
+ (list struct
+ (substring cache 0 reply-length))
+ ;; Multiple replies
+ `(,(car struct) ,@(cdr struct)
+ ,(substring cache 0 reply-length))))))
+ (setq cache (substring cache reply-length))
+ (setf (slot-value connection 'last-seen-sequence) sequence)))
+ (x ;event
+ (let (synthetic listener event-length)
+ (when (/= 0 (logand x #x80)) ;synthetic event
+ (setq synthetic t
+ x (logand x #x7f))) ;low 7 bits is the event number
+ (setq listener
+ (plist-get (slot-value connection 'event-plist) x))
+ (pcase listener
+ (`xge
+ (setq event-length (funcall (if xcb:lsb
+ #'xcb:-unpack-u4-lsb
+ #'xcb:-unpack-u4)
+ cache 4)
+ ;; event-length indicates additional words to the
+ ;; first 32 bytes.
+ event-length (+ 32 (* 4 event-length)))
+ (when (< (length cache) event-length)
+ ;; Too short.
+ (throw 'break nil))
+ (setq listener
+ (compat-call plist-get
+ (slot-value connection 'event-plist)
+ (vector (aref cache 1)
+ (funcall
+ (if xcb:lsb
+ #'xcb:-unpack-u2-lsb
+ #'xcb:-unpack-u2)
+ cache 8))
+ #'equal)))
+ (`xkb
+ (setq listener
+ (compat-call plist-get
+ (slot-value connection 'event-plist)
+ (vector (aref cache 1))
+ #'equal))))
+ ;; Conventional events are 32 bytes in size.
+ (unless event-length
+ (setq event-length 32))
+ (when listener
+ (with-slots (event-queue) connection
+ (setf event-queue (nconc event-queue
+ `([,listener
+ ,(substring cache 0
+ event-length)
+ ,synthetic])))))
+ (xcb:-log "Event received: %s" (substring cache 0 event-length))
+ (setq cache (substring cache event-length)))))))
+ (setf (slot-value connection 'lock) nil))
+ (unless (slot-value connection 'lock)
+ (with-slots (message-cache) connection
+ (let ((current-cache-length (length message-cache)))
+ (setf message-cache
+ (substring message-cache (- cache-length (length cache))))
+ (when (/= current-cache-length cache-length)
+ (xcb:-connection-filter process []))))
+ (xcb:-process-events connection))))
+
+(cl-defmethod xcb:-process-events ((conn xcb:connection))
+ "Process cached events."
+ (with-slots (event-lock event-queue) conn
+ (unless (< 0 event-lock)
+ (cl-incf event-lock)
+ (unwind-protect
+ (let (event data synthetic)
+ (while (setq event (pop event-queue))
+ (setq data (aref event 1)
+ synthetic (aref event 2))
+ (dolist (listener (aref event 0))
+ (xcb-debug:backtrace-on-error
+ (funcall listener data synthetic)))))
+ (cl-decf event-lock)))))
+
+(cl-defmethod xcb:disconnect ((obj xcb:connection))
+ "Disconnect from X server."
+ (when (slot-value obj 'connected)
+ (ignore-errors (xcb:flush obj))
+ (delete-process (slot-value obj 'process))
+ ;; Reset every slot to its default value
+ (let ((slots (eieio-class-slots 'xcb:connection)))
+ (dolist (slot slots)
+ (setf (slot-value obj (eieio-slot-descriptor-name slot))
+ (eieio-oref-default obj (eieio-slot-descriptor-name slot)))))))
+
+;;;; Other routines
+
+(cl-defmethod xcb:get-setup ((obj xcb:connection))
+ "Get the setup info of X connection OBJ."
+ (slot-value obj 'setup-data))
+
+(cl-defmethod xcb:get-socket ((obj xcb:connection))
+ "Get the socket of X connection OBJ."
+ (slot-value obj 'socket))
+
+(cl-defmethod xcb:get-maximum-request-length ((obj xcb:connection))
+ "Get maximum request length from setup data."
+ (slot-value (xcb:get-setup obj) 'maximum-request-length))
+
+(cl-defmethod xcb:+event ((obj xcb:connection) event listener)
+ "Attach function LISTENER to event EVENT.
+
+Note that event listeners attached this way are shared with the super- and sub-
+classes of EVENT (since they have the same event number)."
+ (let* ((event-number (xcb:-error-or-event-class->number obj event))
+ (plist (slot-value obj 'event-plist))
+ key listeners)
+ (when (consp event-number)
+ (setq key (car event-number)
+ event-number (cdr event-number)
+ listeners (plist-get plist key))
+ ;; Add a placeholder.
+ (setf (slot-value obj 'event-plist)
+ (plist-put plist key
+ (if (child-of-class-p event 'xcb:-generic-event)
+ 'xge 'xkb))))
+ (setq listeners (compat-call plist-get plist event-number #'equal))
+ (setf (slot-value obj 'event-plist)
+ (compat-call plist-put plist event-number
+ (append listeners (list listener)) #'equal))))
+
+(cl-defmethod xcb:flush ((obj xcb:connection))
+ "Flush request data to X server."
+ (let ((cache (slot-value obj 'request-cache)))
+ (when (< 0 (length cache))
+ (setf (slot-value obj 'request-cache) []) ;should be cleared ASAP
+ (cl-incf (slot-value obj 'event-lock))
+ (unwind-protect
+ (process-send-string (slot-value obj 'process)
+ (apply #'unibyte-string (append cache nil)))
+ (cl-decf (slot-value obj 'event-lock)))
+ (xcb:-process-events obj))))
+
+(cl-defmethod xcb:get-extension-data ((obj xcb:connection) namespace)
+ "Fetch the extension data from X server (block until data is retrieved)."
+ (let* ((plist (slot-value obj 'extension-plist))
+ (data (plist-get plist namespace)))
+ (if (eieio-object-p data)
+ data
+ (when (not data) ;the request has not been made
+ (xcb:prefetch-extension-data obj namespace))
+ (setq data (xcb:-+reply obj (plist-get (slot-value obj 'extension-plist)
+ namespace)))
+ (when (cadr data) ;has error
+ (error "[XELB] %s" (cadr data)))
+ (setq data (car data))
+ (setf (slot-value obj 'extension-plist) (plist-put plist namespace data))
+ ;; Cache major opcode, first event and first error if possible
+ (with-slots (present major-opcode first-event first-error) data
+ (when (= 1 present)
+ (setf (slot-value obj 'extension-opcode-plist)
+ (plist-put (slot-value obj 'extension-opcode-plist)
+ namespace major-opcode)
+ (slot-value obj 'extension-first-event-alist)
+ (nconc (slot-value obj 'extension-first-event-alist)
+ `((,namespace . ,first-event)))
+ (slot-value obj 'extension-first-error-alist)
+ (nconc (slot-value obj 'extension-first-error-alist)
+ `((,namespace . ,first-error))))))
+ data)))
+
+(cl-defmethod xcb:prefetch-extension-data ((obj xcb:connection) namespace)
+ "Prefetch the extension data from X server."
+ (when (not (plist-get (slot-value obj 'extension-plist) namespace))
+ (let* ((extension-xname
+ (symbol-value (intern-soft (concat (symbol-name namespace)
+ ":-extension-xname"))))
+ (sequence
+ (xcb:-+request obj
+ (make-instance 'xcb:QueryExtension
+ :name-len (length extension-xname)
+ :name extension-xname))))
+ (setf (slot-value obj 'extension-plist)
+ (plist-put (slot-value obj 'extension-plist) namespace sequence))
+ (xcb:flush obj))))
+
+(cl-defmethod xcb:generate-id ((obj xcb:connection))
+ "Generate new X ID."
+ (let* ((setup (xcb:get-setup obj))
+ (base (slot-value setup 'resource-id-base))
+ (mask (slot-value setup 'resource-id-mask))
+ (increment (logand mask (- mask)))
+ (xid (+ (slot-value obj 'xid) increment)))
+ (when (> xid mask)
+ (error "[XELB] Unable to allocate new X resource ID"))
+ (setf (slot-value obj 'xid) xid)
+ (logior base xid)))
+
+;;;; Request related
+
+(cl-defmethod xcb:-cache-request ((obj xcb:connection) request)
+ "Send (or cache) a request and return the sequence number."
+ (let* ((namespace
+ (intern (replace-regexp-in-string
+ ":[^:]+$" "" (symbol-name
+ (eieio-object-class request)))))
+ (extension-opcode
+ (plist-get (slot-value obj 'extension-opcode-plist) namespace))
+ (msg (xcb:marshal request))
+ (len (+ 2 (length msg)))
+ (cache (slot-value obj 'request-cache)))
+ (when extension-opcode
+ (setq msg (vconcat (vector extension-opcode) msg))
+ (cl-incf len))
+ (when (> 2 (length msg)) ;for short message (e.g. GetInputFocus)
+ (setq msg (vconcat msg [0]))
+ (cl-incf len))
+ (setq msg
+ (vconcat (substring msg 0 2)
+ (funcall (if (slot-value request '~lsb) #'xcb:-pack-u2-lsb
+ #'xcb:-pack-u2)
+ (ceiling len 4))
+ (substring msg 2)
+ (make-vector (% (- 4 (% len 4)) 4) 0))) ;required sometimes
+ (when (< (xcb:get-maximum-request-length obj)
+ (+ (length msg) (length cache))) ;flush on cache full
+ (xcb:flush obj)
+ (setq cache []))
+ (with-slots (request-cache request-sequence last-seen-sequence) obj
+ (when (>= request-sequence most-positive-fixnum)
+ ;; Force wrapping the sequence number.
+ (xcb:aux:sync obj)
+ (setf request-sequence 0
+ last-seen-sequence 0))
+ (setf request-cache (vconcat cache msg)
+ request-sequence (1+ request-sequence))
+ (xcb:-log "Cache request #%d: %s" request-sequence msg)
+ request-sequence)))
+
+(cl-defmethod xcb:-+request ((obj xcb:connection) request)
+ (let ((sequence (xcb:-cache-request obj request))
+ (class (eieio-object-class request)))
+ (when (fboundp (xcb:-request-class->reply-class class))
+ ;; This request has a reply
+ (setf (slot-value obj 'reply-plist) ;require reply
+ (plist-put (slot-value obj 'reply-plist) sequence class))
+ (setf (slot-value obj 'error-plist) ;require error
+ (plist-put (slot-value obj 'error-plist) sequence nil)))
+ sequence))
+
+(defmacro xcb:+request (obj request)
+ "Make a request.
+
+If the request has a reply, then errors will also be available (if any).
+Otherwise no error will ever be reported."
+ (declare (indent 2))
+ `(xcb:-+request ,obj ,request))
+
+(cl-defmethod xcb:-+request-checked ((obj xcb:connection) request)
+ (when (fboundp
+ (xcb:-request-class->reply-class (eieio-object-class request)))
+ (error "This method shall not be called with request that has a reply"))
+ (let ((sequence (xcb:-cache-request obj request)))
+ (setf (slot-value obj 'error-plist)
+ (plist-put (slot-value obj 'error-plist) sequence nil))
+ sequence))
+
+(defmacro xcb:+request-checked (obj request)
+ "Make a request (which have no reply) and check for errors."
+ (declare (indent 2))
+ `(xcb:-+request-checked ,obj ,request))
+
+(cl-defmethod xcb:-+request-unchecked ((obj xcb:connection) request)
+ (unless (fboundp
+ (xcb:-request-class->reply-class (eieio-object-class request)))
+ (error "This method shall not be called with request that has no reply"))
+ (let ((sequence (xcb:-cache-request obj request)))
+ (setf (slot-value obj 'reply-plist)
+ (plist-put (slot-value obj 'reply-plist)
+ sequence (eieio-object-class request)))
+ sequence))
+
+(defmacro xcb:+request-unchecked (obj request)
+ "Make a request (which have at least a reply) and discard any error."
+ (declare (indent 2))
+ `(xcb:-+request-unchecked ,obj ,request))
+
+(cl-defmethod xcb:-+reply ((obj xcb:connection) sequence &optional multiple)
+ (unless (plist-member (slot-value obj 'reply-plist) sequence)
+ (error "This method is intended for requests with replies"))
+ (xcb:flush obj) ;or we may have to wait forever
+ (if multiple
+ ;; Multiple replies
+ (xcb:aux:sync obj)
+ ;; Single reply
+ (let ((process (slot-value obj 'process)))
+ ;; Wait until the request processed
+ (cl-incf (slot-value obj 'event-lock))
+ (unwind-protect
+ (with-timeout (xcb:connection-timeout
+ (warn "[XELB] Retrieve reply timeout"))
+ (while (and (> sequence (slot-value obj 'last-seen-sequence))
+ (<= sequence (slot-value obj 'request-sequence)))
+ (accept-process-output process 1 nil 1)))
+ (cl-decf (slot-value obj 'event-lock)))
+ (xcb:-process-events obj)))
+ (let* ((reply-plist (slot-value obj 'reply-plist))
+ (reply-data (plist-get reply-plist sequence))
+ (error-plist (slot-value obj 'error-plist))
+ (error-data (plist-get error-plist sequence))
+ class-name reply replies error errors)
+ (if (symbolp reply-data)
+ (setq replies nil) ;no reply
+ (setq class-name (xcb:-request-class->reply-class (car reply-data)))
+ (if multiple
+ ;; Multiple replies
+ (dolist (i (cdr reply-data))
+ (setq reply (make-instance class-name))
+ (xcb:unmarshal reply i)
+ (setq replies (nconc replies (list reply))))
+ ;; Single reply
+ (setq reply-data (cadr reply-data)
+ replies (make-instance class-name))
+ (xcb:unmarshal replies reply-data)))
+ (setq errors
+ (mapcar (lambda (i)
+ (setq error (make-instance
+ (xcb:-error-number->class obj (car i))))
+ (xcb:unmarshal error (cdr i))
+ error)
+ error-data))
+ (cl-remf (slot-value obj 'reply-plist) sequence)
+ (cl-remf (slot-value obj 'error-plist) sequence)
+ (list replies errors)))
+
+(defmacro xcb:+reply (obj sequence &optional multiple)
+ "Return the reply of a request of which the sequence number is SEQUENCE.
+
+If MULTIPLE is nil, the return value is the only reply, or it returns a list of
+all replies.
+
+WARNING: for requests that have multiple replies, you MUST supply a non-nil
+MULTIPLE value, or some replies may be lost!"
+ (declare (indent 2))
+ `(xcb:-+reply ,obj ,sequence ,multiple))
+
+(cl-defmethod xcb:-request-check ((obj xcb:connection) sequence)
+ (when (plist-member (slot-value obj 'reply-plist) sequence)
+ (error "This method is intended for requests with no reply"))
+ (xcb:flush obj) ;or we may have to wait forever
+ (let ((error-plist (slot-value obj 'error-plist))
+ error-obj tmp)
+ (unless (plist-member error-plist sequence)
+ (error "This method shall be called after `xcb:+request-checked'"))
+ (when (> sequence (slot-value obj 'last-seen-sequence))
+ (xcb:aux:sync obj)) ;wait until the request is processed
+ (setq error-obj
+ (mapcar (lambda (i)
+ (setq tmp (cdr i)
+ i (make-instance
+ (xcb:-error-number->class obj (car i))))
+ (xcb:unmarshal i tmp)
+ i)
+ (plist-get error-plist sequence)))
+ (cl-remf (slot-value obj 'error-plist) sequence)
+ error-obj))
+
+(defmacro xcb:request-check (obj sequence)
+ "Return the error of the request of which the sequence number is SEQUENCE.
+
+The sequence number shall be returned by `xcb:+request-checked'."
+ (declare (indent 2))
+ `(xcb:-request-check ,obj ,sequence))
+
+(defmacro xcb:+request+reply (obj request &optional multiple)
+ "Make a request and return its replies and errors.
+
+If MULTIPLE is nil, the return value is a list of which the car is the only
+reply and the cadr a list of errors. Otherwise, the car of the result is a
+list of replies.
+
+WARNING: for requests that have multiple replies, you MUST supply a non-nil
+MULTIPLE value, or some replies may be lost!"
+ (declare (indent 2))
+ `(xcb:-+reply ,obj (xcb:-+request ,obj ,request) ,multiple))
+
+(defmacro xcb:+request-checked+request-check (obj request)
+ "Make a request (which has no reply) and return the errors."
+ (declare (indent 2))
+ `(xcb:-request-check ,obj (xcb:-+request-checked ,obj ,request)))
+
+(defmacro xcb:+request-unchecked+reply (obj request &optional multiple)
+ "Make a request (that has at least one reply) and only return the reply.
+
+If MULTIPLE is nil, the return value is the only reply, or it returns a list of
+all replies.
+
+WARNING: for requests that have multiple replies, you MUST supply a non-nil
+MULTIPLE value, or some replies may be lost!"
+ (declare (indent 2))
+ `(car (xcb:-+reply ,obj (xcb:-+request-unchecked ,obj ,request) ,multiple)))
+
+;;;; Misc.
+
+(cl-defmethod xcb:aux:sync ((obj xcb:connection))
+ "Force sync with X server.
+
+Sync by sending a GetInputFocus request and waiting until it's processed."
+ (let ((sequence (xcb:-cache-request obj (make-instance 'xcb:GetInputFocus)))
+ (process (slot-value obj 'process)))
+ (xcb:flush obj)
+ ;; Wait until request processed
+ (cl-incf (slot-value obj 'event-lock))
+ (unwind-protect
+ (with-timeout (xcb:connection-timeout (warn "[XELB] Sync timeout"))
+ (while (and (> sequence (slot-value obj 'last-seen-sequence))
+ ;; In case the sequence number has been wrapped.
+ (<= sequence (slot-value obj 'request-sequence)))
+ (accept-process-output process 1 nil 1)))
+ (cl-decf (slot-value obj 'event-lock)))
+ (xcb:-process-events obj)
+ ;; Discard any reply or error.
+ (cl-remf (slot-value obj 'reply-plist) sequence)
+ (cl-remf (slot-value obj 'error-plist) sequence)))
+
+(cl-defmethod xcb:-error-or-event-class->number ((obj xcb:connection) class)
+ "Return the error/event number of a error/event class CLASS.
+
+If CLASS is a generic event, return (XGE-CODE . [EXTENSION EVTYPE]);
+Or if it's an XKB event, return (XKB-EVENT-CODE [XKB-CODE])."
+ (unless (symbolp class) (setq class (eieio-class-name class)))
+ (let ((prefix (replace-regexp-in-string ":[^:]+$" ":" (symbol-name class)))
+ first-code alist result parents)
+ (cond
+ ((child-of-class-p class 'xcb:-error)
+ ;; Error.
+ (if (string= prefix "xcb:")
+ (setq first-code 0
+ alist xcb:error-number-class-alist)
+ (setq first-code
+ (cdr (assq (intern (substring prefix 0 -1))
+ (slot-value obj
+ 'extension-first-error-alist)))
+ alist (symbol-value
+ (intern-soft (concat prefix
+ "error-number-class-alist")))))
+ (setq result (car (rassq class alist)))
+ (when result
+ (setq result (+ first-code result))))
+ ((child-of-class-p class 'xcb:-generic-event)
+ ;; Generic event.
+ (setq alist (symbol-value
+ (intern-soft (concat prefix "xge-number-class-alist")))
+ result (plist-get (slot-value obj 'extension-opcode-plist)
+ (intern-soft (substring prefix 0 -1))))
+ ;; Ensure the extension has been initialized.
+ (when result
+ (setq result `(35 . [,result ,(car (rassq class alist))]))))
+ ((string= prefix "xcb:xkb:")
+ ;; XKB event.
+ (eval-and-compile (require 'xcb-xkb))
+ ;; XKB uses a single event code for all events.
+ (setq result (cdr (assq 'xcb:xkb
+ (slot-value obj 'extension-first-event-alist))))
+ ;; Ensure the XKB extension has been initialized.
+ (when result
+ (setq alist xcb:xkb:event-number-class-alist
+ result `(,result . [,(car (rassq class alist))]))))
+ (t
+ ;; Other event.
+ (if (string= prefix "xcb:")
+ (setq first-code 0
+ alist xcb:event-number-class-alist)
+ (setq first-code
+ (cdr (assq (intern (substring prefix 0 -1))
+ (slot-value obj 'extension-first-event-alist)))
+ alist (symbol-value
+ (intern-soft (concat prefix
+ "event-number-class-alist")))))
+ (setq result (car (rassq class alist)))
+ (when result
+ (setq result (+ first-code result)))))
+ (unless result
+ ;; Fallback to use the error/event number of one superclass. Thus if the
+ ;; error/event number of a subclass differs from that of its parent, it
+ ;; must be explicitly pointed out.
+ (setq parents (eieio-class-parents class))
+ (while (and parents (not result))
+ (setq result (xcb:-error-or-event-class->number obj (pop parents)))))
+ result))
+
+(cl-defmethod xcb:-event-number->class ((obj xcb:connection) number)
+ "Return the event class that has the event number NUMBER.
+
+Note that when multiple events have the same number, only the top-most
+superclass will be returned."
+ (if (or (< number 64) (> number 127))
+ ;; Xproto event
+ (cdr (assoc number xcb:event-number-class-alist))
+ ;; Extension event
+ (let ((first-event number)
+ namespace index alist)
+ (while (and (not namespace) (>= first-event 64))
+ (setq namespace
+ (car (rassoc first-event
+ (slot-value obj 'extension-first-event-alist)))
+ first-event (1- first-event)))
+ (setq index (- number first-event 1))
+ (setq alist (intern-soft (concat (symbol-name namespace)
+ ":event-number-class-alist")))
+ (cdr (assoc index (symbol-value alist))))))
+
+(cl-defmethod xcb:-error-number->class ((obj xcb:connection) number)
+ "Return the error class that has the error number NUMBER.
+
+Note that when multiple errors have the same number, only the top-most
+superclass will be returned."
+ (if (or (< number 128) (> number 255))
+ ;; Xproto error
+ (cdr (assoc number xcb:error-number-class-alist))
+ ;; Extension error
+ (let ((first-error number)
+ namespace index alist)
+ (while (and (not namespace) (>= first-error 128))
+ (setq namespace
+ (car (rassoc first-error
+ (slot-value obj 'extension-first-error-alist)))
+ first-error (1- first-error)))
+ (setq index (- number first-error 1))
+ (setq alist (intern-soft (concat (symbol-name namespace)
+ ":error-number-class-alist")))
+ (cdr (assoc index (symbol-value alist))))))
+
+
+
+(provide 'xcb)
+
+;;; xcb.el ends here
diff --git a/elpa/xelb-0.20/xcb.elc b/elpa/xelb-0.20/xcb.elc
new file mode 100644
index 0000000..de0134a
--- /dev/null
+++ b/elpa/xelb-0.20/xcb.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xelb-autoloads.el b/elpa/xelb-0.20/xelb-autoloads.el
new file mode 100644
index 0000000..2492fd9
--- /dev/null
+++ b/elpa/xelb-0.20/xelb-autoloads.el
@@ -0,0 +1,253 @@
+;;; xelb-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*-
+;; Generated by the `loaddefs-generate' function.
+
+;; This file is part of GNU Emacs.
+
+;;; Code:
+
+(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path)))
+
+
+
+;;; Generated autoloads from xcb.el
+
+(register-definition-prefixes "xcb" '("xcb:"))
+
+
+;;; Generated autoloads from xcb-bigreq.el
+
+(register-definition-prefixes "xcb-bigreq" '("xcb:bigreq:"))
+
+
+;;; Generated autoloads from xcb-composite.el
+
+(register-definition-prefixes "xcb-composite" '("xcb:composite:"))
+
+
+;;; Generated autoloads from xcb-cursor.el
+
+(register-definition-prefixes "xcb-cursor" '("xcb:cursor:-"))
+
+
+;;; Generated autoloads from xcb-damage.el
+
+(register-definition-prefixes "xcb-damage" '("xcb:damage:"))
+
+
+;;; Generated autoloads from xcb-dbe.el
+
+(register-definition-prefixes "xcb-dbe" '("xcb:dbe:"))
+
+
+;;; Generated autoloads from xcb-debug.el
+
+(register-definition-prefixes "xcb-debug" '("xcb-debug:"))
+
+
+;;; Generated autoloads from xcb-dpms.el
+
+(register-definition-prefixes "xcb-dpms" '("xcb:dpms:"))
+
+
+;;; Generated autoloads from xcb-dri2.el
+
+(register-definition-prefixes "xcb-dri2" '("xcb:dri2:"))
+
+
+;;; Generated autoloads from xcb-dri3.el
+
+(register-definition-prefixes "xcb-dri3" '("xcb:dri3:"))
+
+
+;;; Generated autoloads from xcb-ewmh.el
+
+(register-definition-prefixes "xcb-ewmh" '("xcb:ewmh:"))
+
+
+;;; Generated autoloads from xcb-ge.el
+
+(register-definition-prefixes "xcb-ge" '("xcb:ge:"))
+
+
+;;; Generated autoloads from xcb-glx.el
+
+(register-definition-prefixes "xcb-glx" '("xcb:glx:"))
+
+
+;;; Generated autoloads from xcb-icccm.el
+
+(register-definition-prefixes "xcb-icccm" '("xcb:icccm:"))
+
+
+;;; Generated autoloads from xcb-keysyms.el
+
+(register-definition-prefixes "xcb-keysyms" '("xcb:keysyms:"))
+
+
+;;; Generated autoloads from xcb-present.el
+
+(register-definition-prefixes "xcb-present" '("xcb:present:"))
+
+
+;;; Generated autoloads from xcb-randr.el
+
+(register-definition-prefixes "xcb-randr" '("xcb:randr:"))
+
+
+;;; Generated autoloads from xcb-record.el
+
+(register-definition-prefixes "xcb-record" '("xcb:record:"))
+
+
+;;; Generated autoloads from xcb-render.el
+
+(register-definition-prefixes "xcb-render" '("xcb:render:"))
+
+
+;;; Generated autoloads from xcb-renderutil.el
+
+(register-definition-prefixes "xcb-renderutil" '("xcb:renderutil:"))
+
+
+;;; Generated autoloads from xcb-res.el
+
+(register-definition-prefixes "xcb-res" '("xcb:res:"))
+
+
+;;; Generated autoloads from xcb-screensaver.el
+
+(register-definition-prefixes "xcb-screensaver" '("xcb:screensaver:"))
+
+
+;;; Generated autoloads from xcb-shape.el
+
+(register-definition-prefixes "xcb-shape" '("xcb:shape:"))
+
+
+;;; Generated autoloads from xcb-shm.el
+
+(register-definition-prefixes "xcb-shm" '("xcb:shm:"))
+
+
+;;; Generated autoloads from xcb-sync.el
+
+(register-definition-prefixes "xcb-sync" '("xcb:sync:"))
+
+
+;;; Generated autoloads from xcb-systemtray.el
+
+(register-definition-prefixes "xcb-systemtray" '("xcb:"))
+
+
+;;; Generated autoloads from xcb-types.el
+
+(register-definition-prefixes "xcb-types" '("xcb:"))
+
+
+;;; Generated autoloads from xcb-xc_misc.el
+
+(register-definition-prefixes "xcb-xc_misc" '("xcb:xc_misc:"))
+
+
+;;; Generated autoloads from xcb-xembed.el
+
+(register-definition-prefixes "xcb-xembed" '("xcb:xembed:"))
+
+
+;;; Generated autoloads from xcb-xevie.el
+
+(register-definition-prefixes "xcb-xevie" '("xcb:xevie:"))
+
+
+;;; Generated autoloads from xcb-xf86dri.el
+
+(register-definition-prefixes "xcb-xf86dri" '("xcb:xf86dri:"))
+
+
+;;; Generated autoloads from xcb-xf86vidmode.el
+
+(register-definition-prefixes "xcb-xf86vidmode" '("xcb:xf86vidmode:"))
+
+
+;;; Generated autoloads from xcb-xfixes.el
+
+(register-definition-prefixes "xcb-xfixes" '("xcb:xfixes:"))
+
+
+;;; Generated autoloads from xcb-xim.el
+
+(register-definition-prefixes "xcb-xim" '("xim:"))
+
+
+;;; Generated autoloads from xcb-xinerama.el
+
+(register-definition-prefixes "xcb-xinerama" '("xcb:xinerama:"))
+
+
+;;; Generated autoloads from xcb-xinput.el
+
+(register-definition-prefixes "xcb-xinput" '("xcb:xinput:"))
+
+
+;;; Generated autoloads from xcb-xkb.el
+
+(register-definition-prefixes "xcb-xkb" '("xcb:xkb:"))
+
+
+;;; Generated autoloads from xcb-xlib.el
+
+(register-definition-prefixes "xcb-xlib" '("xlib:X"))
+
+
+;;; Generated autoloads from xcb-xprint.el
+
+(register-definition-prefixes "xcb-xprint" '("xcb:xprint:"))
+
+
+;;; Generated autoloads from xcb-xproto.el
+
+(register-definition-prefixes "xcb-xproto" '("xcb:"))
+
+
+;;; Generated autoloads from xcb-xselinux.el
+
+(register-definition-prefixes "xcb-xselinux" '("xcb:xselinux:"))
+
+
+;;; Generated autoloads from xcb-xsettings.el
+
+(register-definition-prefixes "xcb-xsettings" '("xcb:xsettings:-"))
+
+
+;;; Generated autoloads from xcb-xtest.el
+
+(register-definition-prefixes "xcb-xtest" '("xcb:xtest:"))
+
+
+;;; Generated autoloads from xcb-xv.el
+
+(register-definition-prefixes "xcb-xv" '("xcb:xv:"))
+
+
+;;; Generated autoloads from xcb-xvmc.el
+
+(register-definition-prefixes "xcb-xvmc" '("xcb:xvmc:"))
+
+
+;;; Generated autoloads from xelb-test.el
+
+(register-definition-prefixes "xelb-test" '("xelb-test-"))
+
+;;; End of scraped data
+
+(provide 'xelb-autoloads)
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; no-native-compile: t
+;; coding: utf-8-emacs-unix
+;; End:
+
+;;; xelb-autoloads.el ends here
diff --git a/elpa/xelb-0.20/xelb-gen b/elpa/xelb-0.20/xelb-gen
new file mode 100755
index 0000000..daff68c
--- /dev/null
+++ b/elpa/xelb-0.20/xelb-gen
@@ -0,0 +1,726 @@
+#!/usr/bin/env -S emacs -Q --script
+;;; xelb-gen --- XELB Code Generator -*- lexical-binding: t; no-byte-compile: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; 'xelb-gen' is responsible for converting XCB XML description files into
+;; Elisp libraries. Here are a few design guidelines:
+;; + The generated codes should be human-readable and conform to the Elisp
+;; coding conventions. Names mentioned in X specifications are preferred.
+;; + Deprecated features such as <valueparam> should be dropped, for
+;; - they would generate incompatible codes, and
+;; - they are probably already dropped upstream.
+;; + All documentations (within <doc> tags) and comments should be stripped
+;; out to reduce the overall amount of code. XELB application developers are
+;; then encouraged to refer to the corresponding specifications to get an
+;; authoritative explanation.
+
+;; This file is only intended to be run as a script.
+
+;; References:
+;; + xcb/proto (git://anongit.freedesktop.org/xcb/proto)
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'eieio)
+(require 'pp)
+
+;; Only used to eliminate compile warnings when distributed.
+(require 'xcb-types nil t)
+
+;;;; Variables
+
+(defvar xelb-prefix "xcb:" "Namespace of this module.")
+
+(defvar xelb-error-alist nil "Record X errors in this module.")
+
+(defvar xelb-event-alist nil "Record X events in this module.")
+
+(defvar xelb-xge-alist nil "Record X generic events in this module.")
+
+(defvar xelb-imports nil "Record imported libraries.")
+
+(defvar xelb-pad-count -1 "<pad> node counter.")
+
+(defvar xelb-request-fields nil "Fields in the current request.")
+
+(defconst xelb-xproto-namespace "xproto:" "The namespace of the core protocol.")
+
+;;;; Helper functions
+
+(defsubst xelb-node-name (node)
+ "Return the tag name of node NODE."
+ (car node))
+
+(defsubst xelb-node-attr (node attr)
+ "Return the attribute ATTR of node NODE."
+ (cdr (assoc attr (cadr node))))
+
+(defsubst xelb-resolve-type (name)
+ "Resolve NAME relative to the current module."
+ (if (string-prefix-p xelb-xproto-namespace name)
+ ;; Defined explicitly.
+ (or (intern-soft (concat "xcb:" (substring name (length xelb-xproto-namespace))))
+ (error "Undefined type: %s" name))
+ (or
+ ;; defined by this extension
+ (intern-soft (concat xelb-prefix name))
+ ;; defined by the core protocol
+ (intern-soft (concat "xcb:" name))
+ ;; Defined by an imported extension.
+ (cl-dolist (i xelb-imports)
+ (when-let ((type (intern-soft (concat i name))))
+ (cl-return type)))
+ ;; Not defined.
+ (error "Undefined type: %s" name))))
+
+(defsubst xelb-node-type (node)
+ "Return the type of node NODE."
+ (xelb-resolve-type (xelb-node-attr node 'type)))
+
+(defsubst xelb-escape-name (name)
+ "Replace underscores in NAME with dashes."
+ (replace-regexp-in-string "_" "-" name))
+
+(defsubst xelb-node-name-escape (node)
+ "Return the tag name of node NODE and escape it."
+ (xelb-escape-name (xelb-node-name node)))
+
+(defsubst xelb-node-attr-escape (node attr)
+ "Return the attribute ATTR of node NODE and escape it."
+ (xelb-escape-name (xelb-node-attr node attr)))
+
+(defsubst xelb-node-subnodes (node &optional mark-auto-padding)
+ "Return all the subnodes of node NODE as a list.
+
+If MARK-AUTO-PADDING is non-nil, all <list>'s fitting for padding will include
+an `xelb-auto-padding' attribute."
+ (let ((subnodes (cddr node)))
+ (when mark-auto-padding
+ ;; Remove all <comment>'s and <doc>'s
+ (setq subnodes
+ (cl-delete-if (lambda (i) (or (eq 'comment (car i)) (eq 'doc (car i))))
+ subnodes))
+ (dotimes (i (1- (length subnodes)))
+ (when (and (eq 'list (xelb-node-name (elt subnodes i)))
+ (pcase (xelb-node-name (elt subnodes (1+ i)))
+ ((or `reply `pad))
+ (_ t)))
+ (setf (cadr (elt subnodes i))
+ (nconc (cadr (elt subnodes i)) `((xelb-auto-padding . t)))))))
+ subnodes))
+
+(defsubst xelb-node-subnode (node)
+ "Return the (only) subnode of node NODE with useless contents skipped."
+ (let ((result (xelb-node-subnodes node)))
+ (catch 'break
+ (dolist (i result)
+ (unless (and (listp i)
+ (or (eq (xelb-node-name i) 'comment)
+ (eq (xelb-node-name i) 'doc)))
+ (throw 'break i))))))
+
+(defun xelb-node-size (node)
+ "Return the size of NODE in bytes."
+ (pcase (xelb-node-name node)
+ (`pad (xelb-node-attr node 'bytes))
+ (`field (xelb-type-size (xelb-node-type node)))
+ (`list (* (xelb-type-size (xelb-node-type node))
+ (xelb-parse-expression (xelb-node-subnode node))))
+ ((or `comment `doc) 0)
+ (x (error "Unexpected element: <%s>" x))))
+
+(defun xelb-type-size (type &optional slot)
+ "Return size of TYPE in bytes."
+ (pcase (or (get type 'xcb--typealias) type)
+ (`xcb:-ignore 0)
+ ((or `xcb:-u1 `xcb:-i1 `xcb:void) 1)
+ ((or `xcb:-u2 `xcb:-i2) 2)
+ ((or `xcb:-u4 `xcb:-i4) 4)
+ (`xcb:-u8 8)
+ (`xcb:-pad (cl--slot-descriptor-initform slot))
+ (`xcb:-list
+ (let ((initform (cadr (cl--slot-descriptor-initform slot))))
+ (* (plist-get initform 'size)
+ (xelb-type-size (plist-get initform 'type)))))
+ ((and x (guard (child-of-class-p x 'xcb:-struct)))
+ (apply #'+
+ (mapcar (lambda (slot)
+ (xelb-type-size (cl--slot-descriptor-type slot) slot))
+ (eieio-class-slots x))))
+ (x (error "Unknown size of type: %s" x))))
+
+(defsubst xelb-generate-pad-name ()
+ "Generate a new slot name for <pad>."
+ (make-symbol (format "pad~%d" (cl-incf xelb-pad-count))))
+
+;;;; Entry & root element
+
+(defun xelb-parse (file)
+ "Parse an XCB protocol description file FILE (XML)."
+ (let ((pp-escape-newlines nil) ;do not escape newlines
+ (pp-default-function 'pp-28) ;avoid unecessary churn
+ result header)
+ (with-temp-buffer
+ (insert-file-contents file)
+ (setq result (libxml-parse-xml-region (point-min) (point-max)))
+ (unless (eq 'xcb (xelb-node-name result))
+ ;; There's an extra comment.
+ (setq result (xelb-node-subnode result)))
+ (cl-assert (eq 'xcb (xelb-node-name result)))
+ (setq header (xelb-node-attr result 'header))
+ (unless (string= header "xproto")
+ (setq xelb-prefix (concat xelb-prefix header ":")))
+ ;; Print header
+ (princ (format "\
+;;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file was generated by 'xelb-gen' from '%s',
+;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.
+
+;;; Code:
+
+\(require 'xcb-types)
+
+"
+ header
+ (let ((extension-name (xelb-node-attr result
+ 'extension-name)))
+ (if extension-name
+ (concat extension-name " extension")
+ "core protocol"))
+ (file-name-nondirectory file)))
+ ;; Print extension info (if any)
+ (let ((extension-xname (xelb-node-attr result 'extension-xname))
+ (extension-name (xelb-node-attr result 'extension-name))
+ (major-version (xelb-node-attr result 'major-version))
+ (minor-version (xelb-node-attr result 'minor-version)))
+ (when extension-xname
+ (pp `(defconst ,(intern (concat xelb-prefix "-extension-xname"))
+ ,extension-xname)))
+ (when extension-name
+ (pp `(defconst ,(intern (concat xelb-prefix "-extension-name"))
+ ,extension-name)))
+ (when major-version
+ (pp `(defconst ,(intern (concat xelb-prefix "-major-version"))
+ ,(string-to-number major-version))))
+ (when minor-version
+ (pp `(defconst ,(intern (concat xelb-prefix "-minor-version"))
+ ,(string-to-number minor-version))))
+ (when (or extension-xname extension-name major-version minor-version)
+ (princ "\n")))
+ ;; Print contents
+ (dolist (i (xelb-node-subnodes result))
+ (let ((result (xelb-parse-top-level-element i)))
+ (when result ;skip <doc>, comments, etc
+ (dolist (j result)
+ (eval j) ;Make it immediately available.
+ (pp j))
+ (princ "\n"))))
+ ;; Print error/event alists
+ (when xelb-error-alist
+ (pp
+ `(defconst ,(intern (concat xelb-prefix "error-number-class-alist"))
+ ',xelb-error-alist "(error-number . error-class) alist."))
+ (princ "\n"))
+ (when xelb-event-alist
+ (pp
+ `(defconst ,(intern (concat xelb-prefix "event-number-class-alist"))
+ ',xelb-event-alist "(event-number . event-class) alist."))
+ (princ "\n"))
+ (when xelb-xge-alist
+ (pp
+ `(defconst ,(intern (concat xelb-prefix "xge-number-class-alist"))
+ ',xelb-xge-alist "(xge-number . event-class) alist."))
+ (princ "\n"))
+ ;; Print footer
+ (princ (format "\
+
+
+(provide 'xcb-%s)
+
+;;; xcb-%s.el ends here
+" header header)))))
+
+;;;; XCB: top-level elements
+
+(defun xelb-parse-top-level-element (node)
+ "Parse a top-level node NODE."
+ (setq xelb-pad-count -1)
+ (pcase (xelb-node-name node)
+ (`import (xelb-parse-import node))
+ (`struct (xelb-parse-struct node))
+ (`union (xelb-parse-union node))
+ ((or `xidtype `xidunion)
+ (xelb-parse-xidtype node)) ;they are basically the same
+ (`enum (xelb-parse-enum node))
+ (`typedef (xelb-parse-typedef node))
+ (`request (xelb-parse-request node))
+ (`event (xelb-parse-event node))
+ (`error (xelb-parse-error node))
+ (`eventcopy (xelb-parse-eventcopy node))
+ (`errorcopy (xelb-parse-errorcopy node))
+ (`eventstruct (xelb-parse-eventstruct node))
+ ((or `comment `doc)) ;ignored
+ (x (error "Unsupported top-level element: <%s>" x))))
+
+(defun xelb-parse-import (node)
+ "Parse <import>."
+ (let* ((name (xelb-node-subnode node))
+ (header (intern (concat "xcb-" name))))
+ (require header)
+ (push (concat "xcb:" name ":") xelb-imports)
+ `((require ',header))))
+
+(defun xelb-parse-struct (node)
+ "Parse <struct>."
+ (let ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (contents (xelb-node-subnodes node t)))
+ `((defclass ,name (xcb:-struct)
+ ,(apply #'nconc (mapcar #'xelb-parse-structure-content contents))))))
+
+(defun xelb-parse-union (node)
+ "Parse <union>."
+ (let ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (contents (xelb-node-subnodes node)))
+ `((defclass ,name (xcb:-union)
+ ,(apply #'nconc
+ `((~size :initform
+ ,(apply #'max (mapcar #'xelb-node-size contents))))
+ (mapcar #'xelb-parse-structure-content contents))))))
+
+(defun xelb-parse-xidtype (node)
+ "Parse <xidtype>."
+ (let ((name (intern (concat xelb-prefix (xelb-node-attr node 'name)))))
+ `((xcb:deftypealias ',name 'xcb:-u4))))
+
+(defun xelb-parse-enum (node)
+ "Parse <enum>."
+ (let ((name-prefix (concat xelb-prefix (xelb-node-attr node 'name) ":"))
+ (items (xelb-node-subnodes node))
+ (value 0))
+ (delq nil ;remove nil's produced by tags like <doc>
+ (mapcar (lambda (i)
+ (when (eq (xelb-node-name i) 'item)
+ ;; Only handle <item> tags
+ (let* ((name (xelb-node-attr i 'name))
+ (name (intern (concat name-prefix name)))
+ (expression (xelb-node-subnode i)))
+ (if expression
+ (setq value (xelb-parse-expression expression))
+ (cl-incf value))
+ ;; Omit the rare enums that do not fit in a fixnum in
+ ;; 32-bit Emacs, so that the resulting .el and .elc
+ ;; files are portable to 32-bit Emacs. Admittedly
+ ;; this is a kludge.
+ (unless (and (integerp value)
+ (not (<= -536870912 value 536870911)))
+ `(defconst ,name ,value)))))
+ items))))
+
+(defun xelb-parse-typedef (node)
+ "Parse <typedef>."
+ (let* ((oldname (xelb-node-attr node 'oldname))
+ (oldname (xelb-resolve-type oldname))
+ (newname (intern (concat xelb-prefix
+ (xelb-node-attr node 'newname)))))
+ `((xcb:deftypealias ',newname ',oldname))))
+
+(defun xelb-parse-request (node)
+ "Parse <request>.
+
+The `combine-adjacent' attribute is simply ignored."
+ (let* ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (opcode (string-to-number (xelb-node-attr node 'opcode)))
+ (contents `((~opcode :initform ,opcode :type xcb:-u1)))
+ (subnodes (xelb-node-subnodes node t))
+ expressions
+ result reply-name reply-contents)
+ ;; Fill `xelb-request-fields'.
+ (setq xelb-request-fields nil)
+ (dolist (i subnodes)
+ (unless (eq (xelb-node-name i) 'reply)
+ (let ((name (xelb-node-attr i 'name)))
+ (when name
+ (push (intern (xelb-escape-name name)) xelb-request-fields)))))
+ (dolist (i subnodes)
+ (if (not (eq (xelb-node-name i) 'reply))
+ (progn
+ (setq result (xelb-parse-structure-content i))
+ (if (eq 'exprfield (xelb-node-name i))
+ ;; Split into field and expression
+ (setq contents (nconc contents (list (car result)))
+ expressions (nconc expressions (list (cadr result))))
+ (setq contents (nconc contents result))))
+ ;; Parse <reply>
+ (setq xelb-pad-count -1) ;reset padding counter
+ (setq xelb-request-fields nil) ;Clear `xelb-request-fields'.
+ (setq reply-name
+ (intern (concat xelb-prefix (xelb-node-attr node 'name)
+ "~reply")))
+ (setq reply-contents (xelb-node-subnodes i t))
+ (setq reply-contents
+ (apply #'nconc
+ (mapcar #'xelb-parse-structure-content reply-contents)))))
+ (setq xelb-request-fields nil) ;Clear `xelb-request-fields'.
+ (delq nil contents)
+ (delq nil
+ `((defclass ,name (xcb:-request) ,contents)
+ ;; The optional expressions
+ ,(when expressions
+ `(cl-defmethod xcb:marshal ((obj ,name)) nil
+ ,@expressions
+ (cl-call-next-method obj)))
+ ;; The optional reply body
+ ,(when reply-name
+ (delq nil reply-contents)
+ ;; Insert slots for sequence number and reply length.
+ (setcdr reply-contents (append '((~sequence :type xcb:CARD16)
+ (length :type xcb:CARD32))
+ (cdr reply-contents)))
+ `(defclass ,reply-name (xcb:-reply) ,reply-contents))))))
+
+(defun xelb-parse-event (node)
+ "Parse <event>."
+ (let ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (event-number (string-to-number (xelb-node-attr node 'number)))
+ (no-sequence-number (xelb-node-attr node 'no-sequence-number))
+ (xge (xelb-node-attr node 'xge))
+ (contents (xelb-node-subnodes node t))
+ xge-extension)
+ (setq xge-extension (and xge (not (eq name 'xcb:GeGeneric))))
+ (setq contents
+ (apply #'nconc (mapcar #'xelb-parse-structure-content contents)))
+ (unless (or no-sequence-number xge)
+ (setcdr contents (append '((~sequence :type xcb:CARD16))
+ (cdr contents))))
+ ;; Add the event code.
+ (unless (and xge (not xge-extension))
+ (push `(,(if xge '~evtype '~code) :initform ,event-number) contents))
+ (if xge-extension
+ (setq xelb-xge-alist
+ (nconc xelb-xge-alist `((,event-number . ,name))))
+ (setq xelb-event-alist
+ (nconc xelb-event-alist `((,event-number . ,name)))))
+ `((defclass ,name (,(if xge 'xcb:-generic-event 'xcb:-event)) ,contents))))
+
+(defun xelb-parse-error (node)
+ "Parse <error>."
+ (let ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (error-number (string-to-number (xelb-node-attr node 'number)))
+ (contents (xelb-node-subnodes node t)))
+ (setq xelb-error-alist (nconc xelb-error-alist `((,error-number . ,name))))
+ `((defclass ,name (xcb:-error)
+ ,(append
+ ;; The error code.
+ `((~code :initform ,error-number))
+ ;; The contents.
+ (apply #'nconc (mapcar #'xelb-parse-structure-content contents)))))))
+
+(defun xelb-parse-eventcopy (node)
+ "Parse <eventcopy>."
+ (let* ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (refname (xelb-node-attr node 'ref))
+ (refname (xelb-resolve-type refname))
+ (xge (child-of-class-p refname 'xcb:-generic-event))
+ (event-number (string-to-number (xelb-node-attr node 'number))))
+ (if xge
+ (setq xelb-xge-alist
+ (nconc xelb-xge-alist `((,event-number . ,name))))
+ (setq xelb-event-alist
+ (nconc xelb-event-alist `((,event-number . ,name)))))
+ `((defclass ,name (,refname) ;Shadow the method of ref.
+ ((,(if xge '~evtype '~code) :initform ,event-number))))))
+
+(defun xelb-parse-errorcopy (node)
+ "Parse <errorcopy>."
+ (let* ((name (intern (concat xelb-prefix (xelb-node-attr node 'name))))
+ (refname (xelb-node-attr node 'ref))
+ (refname (xelb-resolve-type refname))
+ (error-number (string-to-number (xelb-node-attr node 'number))))
+ (setq xelb-error-alist (nconc xelb-error-alist `((,error-number . ,name))))
+ `((defclass ,name (xcb:-error ,refname) ;Shadow the method of ref
+ ((~code :initform ,error-number))))))
+
+(defun xelb-parse-eventstruct (node)
+ "Parse <eventstruct>."
+ (let ((name (intern (concat xelb-prefix (xelb-node-attr node 'name)))))
+ ;; Only conventional events are supported (and we don't check opcode).
+ `((defclass ,name (xcb:-event) nil))))
+
+;;;; XCB: structure contents
+
+(defun xelb-parse-structure-content (node)
+ "Parse a structure content node NODE."
+ (pcase (xelb-node-name node)
+ (`pad (xelb-parse-pad node))
+ (`required_start_align (xelb-parse-required_start_align node))
+ (`field (xelb-parse-field node))
+ (`length (xelb-parse-length node))
+ (`fd (xelb-parse-fd node))
+ (`list (xelb-parse-list node))
+ (`exprfield (xelb-parse-exprfield node))
+ (`switch (xelb-parse-switch node))
+ ((or `comment `doc)) ;simply ignored
+ (x (error "Unsupported structure content: <%s>" x))))
+
+;; The car of the result shall be renamed to prevent duplication of slot names
+(defun xelb-parse-pad (node)
+ "Parse <pad>."
+ (let ((bytes (xelb-node-attr node 'bytes))
+ (align (xelb-node-attr node 'align)))
+ (if bytes
+ `((,(xelb-generate-pad-name)
+ :initform ,(string-to-number bytes) :type xcb:-pad))
+ (if align
+ `((,(xelb-generate-pad-name)
+ :initform ,(string-to-number align) :type xcb:-pad-align))
+ (error "Invalid <pad> field")))))
+
+(defun xelb-parse-required_start_align (node)
+ "Parse <required_start_align>."
+ (let ((align (xelb-node-attr node 'align))
+ (offset (xelb-node-attr node 'offset)))
+ `((,(xelb-generate-pad-name)
+ :initform ,(if offset
+ (vector (string-to-number align)
+ (string-to-number offset))
+ (string-to-number align))
+ :type xcb:-pad-align))))
+
+(defun xelb-parse-field (node)
+ "Parse <field>."
+ (let* ((name (intern (xelb-node-attr-escape node 'name)))
+ (type (xelb-node-type node)))
+ `((,name :initarg ,(intern (concat ":" (symbol-name name))) :type ,type))))
+
+(defun xelb-parse-length (node)
+ "Parse <length>."
+ (let ((length (xelb-parse-expression (xelb-node-subnode node))))
+ `((~size :initform ',length))))
+
+(defun xelb-parse-fd (node)
+ "Parse <fd>."
+ (let ((name (intern (xelb-node-attr-escape node 'name))))
+ `((,name :type xcb:fd))))
+
+(defun xelb-parse-list (node)
+ "Parse <list>."
+ (let* ((name (intern (xelb-node-attr-escape node 'name)))
+ (name-alt (intern (concat (xelb-node-attr-escape node 'name) "~")))
+ (type (xelb-node-type node))
+ (size (xelb-parse-expression (xelb-node-subnode node))))
+ `((,name-alt :initform '(name ,name type ,type size ,size)
+ :type xcb:-list)
+ (,name :initarg ,(intern (concat ":" (symbol-name name)))
+ :type xcb:-ignore))))
+
+;; The car of result is the field declaration, and the cadr is the expression
+;; to be evaluated.
+(defun xelb-parse-exprfield (node)
+ "Parse <exprfield>."
+ (let* ((name (intern (xelb-node-attr-escape node 'name)))
+ (type (xelb-node-type node))
+ (value (xelb-parse-expression (xelb-node-subnode node))))
+ `((,name :type ,type)
+ (setf (slot-value obj ',name) ,value))))
+
+;; The only difference between <bitcase> and <case> is whether the `condition'
+;; is a list
+;; The name attribute of <bitcase> and <case> seems not useful here.
+(defun xelb-parse-switch (node)
+ "Parse <switch>."
+ (let ((name (intern (xelb-node-attr-escape node 'name)))
+ (expression (xelb-parse-expression (car (xelb-node-subnodes node))))
+ ;; <case> and <bitcase> only
+ (cases (cl-remove-if-not (lambda (i)
+ (memq (xelb-node-name i) '(case bitcase)))
+ (xelb-node-subnodes node)))
+ fields)
+ ;; Avoid duplicated slot names by appending "*" if necessary
+ (let (names name)
+ (dolist (case cases)
+ (pcase (xelb-node-name case)
+ ((or `bitcase `case)
+ (dolist (field (xelb-node-subnodes case))
+ (pcase (xelb-node-name field)
+ ((or `enumref `pad `doc `comment `required_start_align))
+ (_
+ (setq name (xelb-node-attr field 'name))
+ (when (member name names)
+ (while (member name names)
+ (setq name (concat name "*")))
+ (setcdr (assoc 'name (cadr field)) name))
+ (cl-pushnew name names :test #'equal))))))))
+ (setq cases
+ (mapcar (lambda (i)
+ (let ((case-name (xelb-node-name i))
+ condition name-list tmp)
+ (when (or (eq case-name 'bitcase) (eq case-name 'case))
+ (dolist (j (xelb-node-subnodes i t))
+ (pcase (xelb-node-name j)
+ (`enumref
+ (setq condition
+ (nconc condition
+ (list (xelb-parse-enumref j)))))
+ (_
+ (setq tmp (xelb-parse-structure-content j))
+ (setq fields (nconc fields tmp))
+ (setq name-list
+ (nconc name-list (list (caar tmp)))))))
+ (when (eq case-name 'bitcase)
+ (setq condition (if (= 1 (length condition))
+ ;; Flatten 1-element list.
+ (car condition)
+ (if (cl-every #'integerp condition)
+ (apply #'logior condition)
+ `(logior ,@condition))))))
+ `(,condition ,@name-list)))
+ cases))
+ `((,name :initform '(expression ,expression cases ,cases)
+ :type xcb:-switch)
+ ,@fields)))
+
+;;;; XCB: expressions
+
+(defun xelb-parse-expression (node)
+ "Parse an expression node NODE."
+ (when node
+ (pcase (xelb-node-name node)
+ (`op (xelb-parse-op node))
+ (`fieldref (xelb-parse-fieldref node))
+ (`paramref (xelb-parse-paramref node))
+ (`value (xelb-parse-value node))
+ (`bit (xelb-parse-bit node))
+ (`enumref (xelb-parse-enumref node))
+ (`unop (xelb-parse-unop node))
+ (`sumof (xelb-parse-sumof node))
+ (`popcount (xelb-parse-popcount node))
+ (`listelement-ref (xelb-parse-listelement-ref node))
+ ((or `comment `doc)) ;simply ignored
+ (x (error "Unsupported expression: <%s>" x)))))
+
+(defun xelb-parse-op (node)
+ "Parse <op>."
+ (let* ((subnodes (xelb-node-subnodes node))
+ (x (xelb-parse-expression (car subnodes)))
+ (y (xelb-parse-expression (cadr subnodes))))
+ (pcase (xelb-node-attr node 'op)
+ ("+" `(+ ,x ,y))
+ ("-" `(- ,x ,y))
+ ("*" `(* ,x ,y))
+ ("/" `(/ ,x ,y))
+ ("&" `(logand ,x ,y))
+ ("<<" `(ash ,x ,y))
+ (x (error "Unsupported operator: `%s'" x)))))
+
+(defun xelb-parse-fieldref (node)
+ "Parse <fieldref>."
+ (let ((name (intern (xelb-escape-name (xelb-node-subnode node)))))
+ (if (or (not xelb-request-fields) ;Probably not a request.
+ (memq name xelb-request-fields)
+ (not (string-suffix-p "-len" (symbol-name name))))
+ `(xcb:-fieldref ',name)
+ `(length
+ (xcb:-fieldref ',(intern (substring (symbol-name name) 0 -4)))))))
+
+(defun xelb-parse-paramref (node)
+ "Parse <paramref>."
+ `(xcb:-paramref ',(intern (xelb-escape-name (xelb-node-subnode node)))))
+
+(defun xelb-parse-value (node)
+ "Parse <value>."
+ (string-to-number
+ (replace-regexp-in-string "^0x" "#x" (xelb-node-subnode node))))
+
+(defun xelb-parse-bit (node)
+ "Parse <bit>."
+ (let ((bit (string-to-number (xelb-node-subnode node))))
+ (cl-assert (<= 0 bit 31))
+ (ash 1 bit)))
+
+(defun xelb-parse-enumref (node)
+ "Parse <enumref>."
+ (let ((name (concat (xelb-node-attr node 'ref) ":"
+ (xelb-node-subnode node))))
+ (symbol-value (xelb-resolve-type name))))
+
+(defun xelb-parse-unop (node)
+ "Parse <unop>."
+ (cl-assert (string= "~" (xelb-node-attr node 'op)))
+ `(lognot ,(xelb-parse-expression (xelb-node-subnode node))))
+
+(defun xelb-parse-sumof (node)
+ "Parse <sumof>."
+ (let* ((ref (intern (xelb-node-attr-escape node 'ref)))
+ (expression (xelb-node-subnode node))
+ (list-data `(slot-value obj ',ref)))
+ (if (not expression)
+ `(apply #'+ ,list-data)
+ (setq expression (xelb-parse-expression expression))
+ `(apply #'+ (mapcar (lambda (i)
+ (eval ',expression (list (nconc '(obj) i))))
+ ,list-data)))))
+
+(defun xelb-parse-popcount (node)
+ "Parse <popcount>."
+ (let ((expression (xelb-parse-expression (xelb-node-subnode node))))
+ `(logcount ,expression)))
+
+(defun xelb-parse-listelement-ref (_node)
+ "Parse <listelement-ref>."
+ 'obj) ;a list element is internally named 'obj'
+
+;;;; The entry
+
+(setq debug-on-error t)
+(setq edebug-all-forms t)
+
+(if (not argv)
+ (error "Usage: xelb-gen <protocol.xml> [additional_load_paths]")
+ (add-to-list 'load-path default-directory)
+ (dolist (i (cdr argv))
+ (add-to-list 'load-path i))
+ (require 'xcb-types)
+ (xelb-parse (car argv)))
+
+;;; xelb-gen ends here
diff --git a/elpa/xelb-0.20/xelb-pkg.el b/elpa/xelb-0.20/xelb-pkg.el
new file mode 100644
index 0000000..b66d835
--- /dev/null
+++ b/elpa/xelb-0.20/xelb-pkg.el
@@ -0,0 +1,2 @@
+;; Generated package description from xelb.el -*- no-byte-compile: t -*-
+(define-package "xelb" "0.20" "X protocol Emacs Lisp Binding" '((emacs "27.1") (compat "29.1")) :commit "bdf3a69214c70611fbce71942598c85c4fe3d6b7" :authors '(("Chris Feng" . "chris.w.feng@gmail.com")) :maintainer '(("Adrián Medraño Calvo" . "adrian@medranocalvo.com") ("Steven Allen" . "steven@stebalien.com") ("Daniel Mendler" . "mail@daniel-mendler.de")) :keywords '("unix") :url "https://github.com/emacs-exwm/xelb")
diff --git a/elpa/xelb-0.20/xelb-test.el b/elpa/xelb-0.20/xelb-test.el
new file mode 100644
index 0000000..ed7e6f8
--- /dev/null
+++ b/elpa/xelb-0.20/xelb-test.el
@@ -0,0 +1,96 @@
+;;; xelb-test.el --- Unit tests for XELB -*- lexical-binding: t -*-
+;; Copyright (C) 2024 Free Software Foundation, Inc.
+
+;; Author: Steven Allen <steven@stebalien.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This module contains unit tests for testing XELB.
+
+;;; Code:
+
+(require 'ert)
+(require 'xcb-types)
+
+;; https://en.wikipedia.org/wiki/Single-precision_floating-point_format#Notable_single-precision_cases
+(defconst xelb-test-binary32-cases
+ '((#x00000001 . 1.401298464324817e-45)
+ (#x007fffff . 1.1754942106924411e-38)
+ (#x00800000 . 1.1754943508222875e-38)
+ (#x7f7fffff . 3.4028234663852886e38)
+ (#x3f7fffff . 0.999999940395355225)
+ (#x3f800000 . 1.0)
+ (#x3f800001 . 1.00000011920928955)
+ (#xc0000000 . -2.0)
+ (#x00000000 . 0.0)
+ (#x80000000 . -0.0)
+ (#x7f800000 . 1e+INF)
+ (#xff800000 . -1e+INF)
+ (#x40490fdb . 3.14159274101257324)
+ (#x3eaaaaab . 0.333333343267440796)))
+
+;; https://en.wikipedia.org/wiki/Double-precision_floating-point_format#Double-precision_examples
+(defconst xelb-test-binary64-cases
+ `((#x3ff0000000000000 . 1.0)
+ (#x3ff0000000000001 . 1.0000000000000002)
+ (#x3ff0000000000002 . 1.0000000000000004)
+ (#x4000000000000000 . 2.0)
+ (#xc000000000000000 . -2.0)
+ (#x4008000000000000 . 3.0)
+ (#x4010000000000000 . 4.0)
+ (#x4014000000000000 . 5.0)
+ (#x4018000000000000 . 6.0)
+ (#x4037000000000000 . 23.0)
+ (#x3f88000000000000 . 0.01171875)
+ (#x0000000000000001 . 4.9406564584124654e-324)
+ (#x000fffffffffffff . 2.2250738585072009e-308)
+ (#x0010000000000000 . 2.2250738585072014e-308)
+ (#x7fefffffffffffff . 1.7976931348623157e308)
+ (#x0000000000000000 . +0.0)
+ (#x8000000000000000 . -0.0)
+ (#x7ff0000000000000 . +1e+INF)
+ (#xfff0000000000000 . -1e+INF)
+ (#x3fd5555555555555 . ,(/ 1.0 3.0))
+ (#x400921fb54442d18 . ,float-pi)))
+
+(defun xelb-test--test-conversion (a-to-b b-to-a cases)
+ "Test the bidirectional conversion functions A-TO-B and B-TO-A against CASES.
+CASES is an alist of (A . B) pairs."
+ (pcase-dolist (`(,a . ,b) cases)
+ (let* ((act-a (funcall b-to-a b))
+ (act-b (funcall a-to-b a))
+ (round-trip-a (funcall b-to-a act-b))
+ (round-trip-b (funcall a-to-b act-a)))
+ (should (= b act-b round-trip-b))
+ (should (= a act-a round-trip-a)))))
+
+(ert-deftest xelb-test-binary32 ()
+ (xelb-test--test-conversion
+ #'xcb:-binary32-to-f32
+ #'xcb:-f32-to-binary32
+ xelb-test-binary32-cases))
+
+(ert-deftest xelb-test-binary64 ()
+ (xelb-test--test-conversion
+ #'xcb:-binary64-to-f64
+ #'xcb:-f64-to-binary64
+ xelb-test-binary64-cases))
+
+(provide 'xelb-test)
+
+;;; xelb-test.el ends here
diff --git a/elpa/xelb-0.20/xelb-test.elc b/elpa/xelb-0.20/xelb-test.elc
new file mode 100644
index 0000000..aa4e8cc
--- /dev/null
+++ b/elpa/xelb-0.20/xelb-test.elc
Binary files differ
diff --git a/elpa/xelb-0.20/xelb.el b/elpa/xelb-0.20/xelb.el
new file mode 100644
index 0000000..c3ab170
--- /dev/null
+++ b/elpa/xelb-0.20/xelb.el
@@ -0,0 +1,70 @@
+;;; xelb.el --- X protocol Emacs Lisp Binding -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
+
+;; Author: Chris Feng <chris.w.feng@gmail.com>
+;; Maintainer: Adrián Medraño Calvo <adrian@medranocalvo.com>, Steven Allen <steven@stebalien.com>, Daniel Mendler <mail@daniel-mendler.de>
+;; Version: 0.20
+;; Package-Requires: ((emacs "27.1") (compat "29.1"))
+;; Keywords: unix
+;; URL: https://github.com/emacs-exwm/xelb
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Overview
+;; --------
+;; XELB (X protocol Emacs Lisp Binding) is a pure Elisp implementation of X11
+;; protocol based on the XML description files from XCB project. It features
+;; an object-oriented API and permits a certain degree of concurrency. It
+;; should enable you to implement some low-level X11 applications.
+
+;; How it works
+;; ------------
+;; As is well known, X11 is a network-transparent protocol. All its messages,
+;; including requests, replies, events, errors, etc are transported over
+;; network. Considering that Emacs is powerful enough to do network
+;; communication, it is also possible to use Emacs to send / receive those X11
+;; messages. Here we fully exploit the asynchronous feature of network
+;; connections in Emacs, making XELB concurrent in a sense.
+
+;; X11 protocol is somewhat complicated, especially when extension protocols
+;; are also concerned. Fortunately, XCB project has managed to describe these
+;; protocols as XML files, which are language-neutral and can be used to
+;; generate language-specific bindings. In XELB, X messages are represented as
+;; 'classes', and their 'methodes' are provided to translate them to / from raw
+;; byte arrays conveniently.
+
+;; Usage
+;; -----
+;; Interfaces are mainly defined in 'xcb.el'. Please refer to that file on how
+;; to use them. Most of other files are either X11 core / extension protocol
+;; libraries (e.g. xcb-randr.el) or utility libraries (e.g. xcb-keysyms.el).
+;; Please check the corresponding files for more details.
+
+;;; Code:
+
+(require 'xcb)
+
+;; DO NOT load this library; load 'xcb.el' instead.
+;; This dummy file is created as a placeholder as it is required by GNU ELPA.
+
+
+
+(provide 'xelb)
+
+;;; xelb.el ends here
diff --git a/elpa/xelb-0.20/xelb.elc b/elpa/xelb-0.20/xelb.elc
new file mode 100644
index 0000000..ba62603
--- /dev/null
+++ b/elpa/xelb-0.20/xelb.elc
Binary files differ