aboutsummaryrefslogtreecommitdiff
path: root/libxcb/xcb-proto/src
diff options
context:
space:
mode:
Diffstat (limited to 'libxcb/xcb-proto/src')
-rw-r--r--libxcb/xcb-proto/src/present.xml10
-rw-r--r--libxcb/xcb-proto/src/render.xml118
-rw-r--r--libxcb/xcb-proto/src/screensaver.xml68
-rw-r--r--libxcb/xcb-proto/src/xcb.xsd24
-rw-r--r--libxcb/xcb-proto/src/xfixes.xml2
-rw-r--r--libxcb/xcb-proto/src/xinput.xml527
-rw-r--r--libxcb/xcb-proto/src/xprint.xml13
-rw-r--r--libxcb/xcb-proto/src/xproto.xml414
8 files changed, 982 insertions, 194 deletions
diff --git a/libxcb/xcb-proto/src/present.xml b/libxcb/xcb-proto/src/present.xml
index a9adc2ba8..95fee0181 100644
--- a/libxcb/xcb-proto/src/present.xml
+++ b/libxcb/xcb-proto/src/present.xml
@@ -199,7 +199,15 @@ OF THIS SOFTWARE.
<field type="CARD64" name="target_msc" />
<field type="CARD64" name="divisor" />
<field type="CARD64" name="remainder" />
- <list type="Notify" name="notifies"/>
+ <list type="Notify" name="notifies">
+ <op op="/">
+ <op op="-">
+ <fieldref>length</fieldref>
+ <value>18</value>
+ </op>
+ <value>2</value>
+ </op>
+ </list>
</event>
</xcb>
diff --git a/libxcb/xcb-proto/src/render.xml b/libxcb/xcb-proto/src/render.xml
index 55b73f7b8..c54608e72 100644
--- a/libxcb/xcb-proto/src/render.xml
+++ b/libxcb/xcb-proto/src/render.xml
@@ -280,16 +280,122 @@ for licensing information.
<field type="PICTURE" name="pid" />
<field type="DRAWABLE" name="drawable" />
<field type="PICTFORMAT" name="format" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CP"/>
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CP">Repeat</enumref>
+ <field type="CARD32" name="repeat" enum="Repeat"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaMap</enumref>
+ <field type="PICTURE" name="alphamap" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaXOrigin</enumref>
+ <field type="INT32" name="alphaxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaYOrigin</enumref>
+ <field type="INT32" name="alphayorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipXOrigin</enumref>
+ <field type="INT32" name="clipxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipYOrigin</enumref>
+ <field type="INT32" name="clipyorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipMask</enumref>
+ <field type="PIXMAP" name="clipmask" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">GraphicsExposure</enumref>
+ <field type="CARD32" name="graphicsexposure" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">SubwindowMode</enumref>
+ <field type="CARD32" name="subwindowmode" enum="SubwindowMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyEdge</enumref>
+ <field type="CARD32" name="polyedge" enum="PolyEdge"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyMode</enumref>
+ <field type="CARD32" name="polymode" enum="PolyMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">Dither</enumref>
+ <field type="ATOM" name="dither" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ComponentAlpha</enumref>
+ <field type="CARD32" name="componentalpha" />
+ </bitcase>
+ </switch>
</request>
<request name="ChangePicture" opcode="5">
<field type="PICTURE" name="picture" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CP"/>
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CP">Repeat</enumref>
+ <field type="CARD32" name="repeat" enum="Repeat"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaMap</enumref>
+ <field type="PICTURE" name="alphamap" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaXOrigin</enumref>
+ <field type="INT32" name="alphaxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaYOrigin</enumref>
+ <field type="INT32" name="alphayorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipXOrigin</enumref>
+ <field type="INT32" name="clipxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipYOrigin</enumref>
+ <field type="INT32" name="clipyorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipMask</enumref>
+ <field type="PIXMAP" name="clipmask" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">GraphicsExposure</enumref>
+ <field type="CARD32" name="graphicsexposure" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">SubwindowMode</enumref>
+ <field type="CARD32" name="subwindowmode" enum="SubwindowMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyEdge</enumref>
+ <field type="CARD32" name="polyedge" enum="PolyEdge"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyMode</enumref>
+ <field type="CARD32" name="polymode" enum="PolyMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">Dither</enumref>
+ <field type="ATOM" name="dither" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ComponentAlpha</enumref>
+ <field type="CARD32" name="componentalpha" />
+ </bitcase>
+ </switch>
</request>
<request name="SetPictureClipRectangles" opcode="6">
diff --git a/libxcb/xcb-proto/src/screensaver.xml b/libxcb/xcb-proto/src/screensaver.xml
index 491869e81..8d5abb43d 100644
--- a/libxcb/xcb-proto/src/screensaver.xml
+++ b/libxcb/xcb-proto/src/screensaver.xml
@@ -95,9 +95,71 @@ Draft Standard Version 1.1
<field type="BYTE" name="class" enum="WindowClass"/>
<field type="CARD8" name="depth"/>
<field type="VISUALID" name="visual"/>
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CW" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CW">BackPixmap</enumref>
+ <field type="PIXMAP" name="background_pixmap" altenum="BackPixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackPixel</enumref>
+ <field type="CARD32" name="background_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BorderPixmap</enumref>
+ <field type="PIXMAP" name="border_pixmap" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BorderPixel</enumref>
+ <field type="CARD32" name="border_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BitGravity</enumref>
+ <field type="CARD32" name="bit_gravity" enum="Gravity"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">WinGravity</enumref>
+ <field type="CARD32" name="win_gravity" enum="Gravity"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingStore</enumref>
+ <field type="CARD32" name="backing_store" enum="BackingStore"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingPlanes</enumref>
+ <field type="CARD32" name="backing_planes" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingPixel</enumref>
+ <field type="CARD32" name="backing_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">OverrideRedirect</enumref>
+ <field type="BOOL32" name="override_redirect" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">SaveUnder</enumref>
+ <field type="BOOL32" name="save_under" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">EventMask</enumref>
+ <field type="CARD32" name="event_mask" mask="EventMask"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">DontPropagate</enumref>
+ <field type="CARD32" name="do_not_propogate_mask" mask="EventMask"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">Colormap</enumref>
+ <field type="COLORMAP" name="colormap" altenum="Colormap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">Cursor</enumref>
+ <field type="CURSOR" name="cursor" altenum="Cursor"/>
+ </bitcase>
+ </switch>
+
</request>
<request name="UnsetAttributes" opcode="4">
diff --git a/libxcb/xcb-proto/src/xcb.xsd b/libxcb/xcb-proto/src/xcb.xsd
index 85f5bc2af..c1dce3e1e 100644
--- a/libxcb/xcb-proto/src/xcb.xsd
+++ b/libxcb/xcb-proto/src/xcb.xsd
@@ -146,6 +146,15 @@ authorization from the authors.
</xsd:complexType>
</xsd:element>
<xsd:element name="fieldref" type="xsd:string" />
+ <xsd:element name="paramref">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="type" use="required" type="xsd:string" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
<xsd:element name="enumref">
<xsd:complexType>
<xsd:simpleContent>
@@ -162,9 +171,13 @@ authorization from the authors.
</xsd:element>
<xsd:element name="sumof">
<xsd:complexType>
+ <xsd:sequence>
+ <xsd:group ref="expression" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
<xsd:attribute name="ref" use="required" type="xsd:string" />
</xsd:complexType>
</xsd:element>
+ <xsd:element name="listelement-ref" />
<xsd:element name="value" type="xsd:integer" />
<xsd:element name="bit" type="bitType" />
</xsd:choice>
@@ -182,15 +195,6 @@ authorization from the authors.
</xsd:complexType>
</xsd:element>
- <!-- BITMASK/LISTofVALUE parameter pairs. -->
- <xsd:element name="valueparam">
- <xsd:complexType>
- <xsd:attribute name="value-mask-type" type="xsd:string" use="required" />
- <xsd:attribute name="value-mask-name" type="xsd:string" use="required" />
- <xsd:attribute name="value-list-name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
-
<xsd:group name="fields">
<xsd:choice>
<xsd:element ref="pad" />
@@ -296,7 +300,6 @@ authorization from the authors.
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:group ref="fields" />
<xsd:element ref="exprfield" />
- <xsd:element ref="valueparam" />
</xsd:choice>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element ref="switch" />
@@ -306,7 +309,6 @@ authorization from the authors.
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:group ref="fields" />
- <xsd:element ref="valueparam" />
</xsd:choice>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element ref="switch" />
diff --git a/libxcb/xcb-proto/src/xfixes.xml b/libxcb/xcb-proto/src/xfixes.xml
index c5cba352a..0a3d5ffee 100644
--- a/libxcb/xcb-proto/src/xfixes.xml
+++ b/libxcb/xcb-proto/src/xfixes.xml
@@ -291,13 +291,13 @@ authorization from the authors.
<field type="ATOM" name="cursor_atom" altenum="Atom" />
<field type="CARD16" name="nbytes" />
<pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
<list type="CARD32" name="cursor_image">
<op op="*">
<fieldref>width</fieldref>
<fieldref>height</fieldref>
</op>
</list>
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
</reply>
</request>
diff --git a/libxcb/xcb-proto/src/xinput.xml b/libxcb/xcb-proto/src/xinput.xml
index 7f7b0a66d..c729f20fb 100644
--- a/libxcb/xcb-proto/src/xinput.xml
+++ b/libxcb/xcb-proto/src/xinput.xml
@@ -46,56 +46,10 @@ This will, e.g., be necessary for automatically generated byte-order conversion
which will, e.g., be necessary for server-side xcb.
This affects the following:
-* GetFeedbackControl reply field "feedbacks" ( structs FeedbackState, ... )
-* ChangeFeedbackControl request field "feedback" ( structs FeedbackCtl, ... )
-* QueryDeviceState reply field "classes" ( structs InputState, ... )
-* GetDeviceControl reply field "control" ( structs DeviceState, ... )
-* ChangeDeviceControl request field "control" ( structs ChangeDeviceControl, ... )
-* XIChangeHierarchy request field "changes" ( structs HierarchyChange, ... )
-* struct XIDeviceInfo field "classes" ( structs DeviceClass, ... )
* SendExtensionEvent member "events"
*****
-xml and generator have to support <popcount> of all members of a list
-
-This is needed for the following XI2-events ( and eventcopies thereof )
- KeyPress
- ButtonPress
- RawKeyPress
- RawKeyPress
- RawButtonPress
- TouchBegin
- RawTouchBegin
-
-
-*****
-
-<sumof> should support fields of listmembers.
-
-This is needed for request "ListInputDevices"
-
-*****
-
-xml and generator should support
-switch-case similar to switch-bitcase.
-
-(and maybe: variable sized unions with a mechanism to define
-which union-field is selected.)
-
-One of these features is needed for the InputInfo type
-which is used by request "ListInputDevices" for the list "input_infos".
-
-*****
-
-Parametrized structs
-
-This is needed for being able to use the value of the field
-"num_axes" of the GetDeviceMotionEvents-reply
-in struct DeviceTimeCoord.
-
-*****
-
-->
@@ -217,6 +171,29 @@ in struct DeviceTimeCoord.
<struct name="InputInfo">
<field type="CARD8" name="class_id" enum="InputClass" />
<field type="CARD8" name="len" />
+ <switch name="info">
+ <fieldref>class_id</fieldref>
+ <case name="key">
+ <enumref ref="InputClass">Key</enumref>
+ <field type="KeyCode" name="min_keycode" />
+ <field type="KeyCode" name="max_keycode" />
+ <field type="CARD16" name="num_keys" />
+ <pad bytes="2" />
+ </case>
+ <case name="button">
+ <enumref ref="InputClass">Button</enumref>
+ <field type="CARD16" name="num_buttons" />
+ </case>
+ <case name="valuator">
+ <enumref ref="InputClass">Valuator</enumref>
+ <field type="CARD8" name="axes_len" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <field type="CARD32" name="motion_size" />
+ <list type="AxisInfo" name="axes">
+ <fieldref>axes_len</fieldref>
+ </list>
+ </case>
+ </switch>
</struct>
<struct name="DeviceName">
@@ -234,9 +211,15 @@ in struct DeviceTimeCoord.
<list type="DeviceInfo" name="devices">
<fieldref>devices_len</fieldref>
</list>
- <!-- Uninterpreted: list (infos) of InputInfo structures,
- length is <sumof> all devices.num_class_info -->
- <!-- Uninterpreted: list (name) of DeviceName structures -->
+ <list type="InputInfo" name="infos">
+ <sumof ref="devices">
+ <fieldref>num_class_info</fieldref>
+ </sumof>
+ </list>
+ <list type="STR" name="names">
+ <fieldref>devices_len</fieldref>
+ </list>
+ <pad align="4" />
</reply>
</request>
@@ -346,8 +329,9 @@ in struct DeviceTimeCoord.
<struct name="DeviceTimeCoord">
<field type="TIMESTAMP" name="time" />
- <!-- Uninterpreted: list (axisvalues) of INT32,
- length is num_axes from GetDeviceMotionEvents -->
+ <list type="INT32" name="axisvalues">
+ <paramref type="CARD8">num_axes</paramref>
+ </list>
</struct>
<request name="GetDeviceMotionEvents" opcode="10">
@@ -361,7 +345,9 @@ in struct DeviceTimeCoord.
<field type="CARD8" name="num_axes" />
<field type="CARD8" name="device_mode" enum="ValuatorMode" />
<pad bytes="18" />
- <!-- Uninterpreted: list (events) of DeviceTimeCoord structures -->
+ <list type="DeviceTimeCoord" name="events">
+ <fieldref>num_events</fieldref>
+ </list>
</reply>
</request>
@@ -609,12 +595,56 @@ in struct DeviceTimeCoord.
<field type="CARD8" name="class_id" enum="FeedbackClass" />
<field type="CARD8" name="feedback_id" />
<field type="CARD16" name="len" />
- <list type="CARD8" name="uninterpreted_data">
- <op op="-">
- <fieldref>len</fieldref>
- <value>4</value>
- </op>
- </list>
+ <switch name="data">
+ <fieldref>class_id</fieldref>
+ <case name="keyboard">
+ <enumref ref="FeedbackClass">Keyboard</enumref>
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ <field type="BOOL" name="global_auto_repeat" />
+ <field type="CARD8" name="click" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="1" />
+ <list type="CARD8" name="auto_repeats">
+ <value>32</value>
+ </list>
+ </case>
+ <case name="pointer">
+ <enumref ref="FeedbackClass">Pointer</enumref>
+ <pad bytes="2" />
+ <field type="CARD16" name="accel_num" />
+ <field type="CARD16" name="accel_denom" />
+ <field type="CARD16" name="threshold" />
+ </case>
+ <case name="string">
+ <enumref ref="FeedbackClass">String</enumref>
+ <field type="CARD16" name="max_symbols" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
+ </case>
+ <case name="integer">
+ <enumref ref="FeedbackClass">Integer</enumref>
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="min_value" />
+ <field type="INT32" name="max_value" />
+ </case>
+ <case name="led">
+ <enumref ref="FeedbackClass">Led</enumref>
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </case>
+ <case name="bell">
+ <enumref ref="FeedbackClass">Bell</enumref>
+ <field type="CARD8" name="percent" />
+ <pad bytes="3" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ </case>
+ </switch>
</struct>
<request name="GetFeedbackControl" opcode="22">
@@ -696,12 +726,51 @@ in struct DeviceTimeCoord.
<field type="CARD8" name="class_id" enum="FeedbackClass" />
<field type="CARD8" name="feedback_id" />
<field type="CARD16" name="len" />
- <list type="CARD8" name="uninterpreted_data">
- <op op="-">
- <fieldref>len</fieldref>
- <value>4</value>
- </op>
- </list>
+ <switch name="data">
+ <fieldref>class_id</fieldref>
+ <case name="keyboard">
+ <enumref ref="FeedbackClass">Keyboard</enumref>
+ <field type="KeyCode" name="key" />
+ <field type="CARD8" name="auto_repeat_mode" />
+ <field type="INT8" name="key_click_percent" />
+ <field type="INT8" name="bell_percent" />
+ <field type="INT16" name="bell_pitch" />
+ <field type="INT16" name="bell_duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </case>
+ <case name="pointer">
+ <enumref ref="FeedbackClass">Pointer</enumref>
+ <pad bytes="2" />
+ <field type="INT16" name="num" />
+ <field type="INT16" name="denom" />
+ <field type="INT16" name="threshold" />
+ </case>
+ <case name="string">
+ <enumref ref="FeedbackClass">String</enumref>
+ <pad bytes="2" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
+ </case>
+ <case name="integer">
+ <enumref ref="FeedbackClass">Integer</enumref>
+ <field type="INT32" name="int_to_display" />
+ </case>
+ <case name="led">
+ <enumref ref="FeedbackClass">Led</enumref>
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </case>
+ <case name="bell">
+ <enumref ref="FeedbackClass">Bell</enumref>
+ <field type="INT8" name="percent" />
+ <pad bytes="3" />
+ <field type="INT16" name="pitch" />
+ <field type="INT16" name="duration" />
+ </case>
+ </switch>
</struct>
<enum name="ChangeFeedbackControlMask">
@@ -1025,12 +1094,53 @@ in struct DeviceTimeCoord.
<struct name="DeviceState">
<field type="CARD16" name="control_id" enum="DeviceControl" />
<field type="CARD16" name="len" />
- <list type="CARD8" name="uninterpreted_data">
- <op op="-">
- <fieldref>len</fieldref>
- <value>4</value>
- </op>
- </list>
+ <switch name="data">
+ <fieldref>control_id</fieldref>
+ <case name="resolution">
+ <enumref ref="DeviceControl">resolution</enumref>
+ <field type="CARD32" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_min">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_max">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </case>
+ <case name="abs_calib">
+ <enumref ref="DeviceControl">abs_calib</enumref>
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
+ </case>
+ <case name="core">
+ <enumref ref="DeviceControl">core</enumref>
+ <field type="CARD8" name="status" />
+ <field type="CARD8" name="iscore" />
+ <pad bytes="2" />
+ </case>
+ <case name="enable">
+ <enumref ref="DeviceControl">enable</enumref>
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </case>
+ <case name="abs_area">
+ <enumref ref="DeviceControl">abs_area</enumref>
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="CARD32" name="width" />
+ <field type="CARD32" name="height" />
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="following" />
+ </case>
+ </switch>
</struct>
<request name="GetDeviceControl" opcode="34">
@@ -1099,12 +1209,48 @@ in struct DeviceTimeCoord.
<struct name="DeviceCtl">
<field type="CARD16" name="control_id" enum="DeviceControl" />
<field type="CARD16" name="len" />
- <list type="CARD8" name="uninterpreted_data">
- <op op="-">
- <fieldref>len</fieldref>
- <value>4</value>
- </op>
- </list>
+ <switch name="data">
+ <fieldref>control_id</fieldref>
+ <case name="resolution">
+ <enumref ref="DeviceControl">resolution</enumref>
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <pad bytes="2" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </case>
+ <case name="abs_calib">
+ <enumref ref="DeviceControl">abs_calib</enumref>
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
+ </case>
+ <case name="core">
+ <enumref ref="DeviceControl">core</enumref>
+ <field type="CARD8" name="status" />
+ <pad bytes="3" />
+ </case>
+ <case name="enable">
+ <enumref ref="DeviceControl">enable</enumref>
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </case>
+ <case name="abs_area">
+ <enumref ref="DeviceControl">abs_area</enumref>
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="INT32" name="width" />
+ <field type="INT32" name="height" />
+ <field type="INT32" name="screen" />
+ <field type="CARD32" name="following" />
+ </case>
+ </switch>
</struct>
<request name="ChangeDeviceControl" opcode="35">
@@ -1205,30 +1351,26 @@ in struct DeviceTimeCoord.
<pad bytes="10" />
<switch name="items">
<fieldref>format</fieldref>
- <!-- <bitcase> is not correct, this would need <cases>s.
- It works in that case, because PropertyFormat items can be
- distinguished exactly as their values don't have equal bits.
- -->
- <bitcase>
+ <case>
<enumref ref="PropertyFormat">8Bits</enumref>
<list type="CARD8" name="data8">
<fieldref>num_items</fieldref>
</list>
<pad align="4" />
- </bitcase>
- <bitcase>
+ </case>
+ <case>
<enumref ref="PropertyFormat">16Bits</enumref>
<list type="CARD16" name="data16">
<fieldref>num_items</fieldref>
</list>
<pad align="4" />
- </bitcase>
- <bitcase>
+ </case>
+ <case>
<enumref ref="PropertyFormat">32Bits</enumref>
<list type="CARD32" name="data32">
<fieldref>num_items</fieldref>
</list>
- </bitcase>
+ </case>
</switch>
</reply>
</request>
@@ -1356,15 +1498,37 @@ in struct DeviceTimeCoord.
<struct name="HierarchyChange">
<field type="CARD16" name="type" enum="HierarchyChangeType" />
<field type="CARD16" name="len" />
- <list type="CARD8" name="uninterpreted_data">
- <op op="-">
- <op op="*">
- <fieldref>len</fieldref>
- <value>4</value>
- </op>
- <value>4</value>
- </op>
- </list>
+ <switch name="data">
+ <fieldref>type</fieldref>
+ <case name="add_master">
+ <enumref ref="HierarchyChangeType">AddMaster</enumref>
+ <field type="CARD16" name="name_len" />
+ <field type="BOOL" name="send_core" />
+ <field type="BOOL" name="enable" />
+ <list type="char" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ <pad align="4" />
+ </case>
+ <case name="remove_master">
+ <enumref ref="HierarchyChangeType">RemoveMaster</enumref>
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="CARD8" name="return_mode" enum="ChangeMode" />
+ <pad bytes="1" />
+ <field type="DeviceId" name="return_pointer" altenum="Device" />
+ <field type="DeviceId" name="return_keyboard" altenum="Device" />
+ </case>
+ <case name="attach_slave">
+ <enumref ref="HierarchyChangeType">AttachSlave</enumref>
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="DeviceId" name="master" altenum="Device" />
+ </case>
+ <case name="detach_slave">
+ <enumref ref="HierarchyChangeType">DetachSlave</enumref>
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <pad bytes="2" />
+ </case>
+ </switch>
</struct>
<request name="XIChangeHierarchy" opcode="43">
@@ -1560,16 +1724,56 @@ in struct DeviceTimeCoord.
<field type="CARD16" name="type" enum="DeviceClassType" />
<field type="CARD16" name="len" />
<field type="DeviceId" name="sourceid" />
- <pad bytes="2" />
- <list type="CARD8" name="uninterpreted_data">
- <op op="-">
- <op op="*">
- <fieldref>len</fieldref>
- <value>4</value>
- </op>
- <value>8</value>
- </op>
- </list>
+ <switch name="data">
+ <fieldref>type</fieldref>
+ <case name="key">
+ <enumref ref="DeviceClassType">Key</enumref>
+ <field type="CARD16" name="num_keys" />
+ <list type="CARD32" name="keys">
+ <fieldref>num_keys</fieldref>
+ </list>
+ </case>
+ <case name="button">
+ <enumref ref="DeviceClassType">Button</enumref>
+ <field type="CARD16" name="num_buttons" />
+ <list type="CARD32" name="state">
+ <op op="/">
+ <op op="+">
+ <fieldref>num_buttons</fieldref>
+ <value>31</value>
+ </op>
+ <value>32</value>
+ </op>
+ </list>
+ <list type="ATOM" name="labels">
+ <fieldref>num_buttons</fieldref>
+ </list>
+ </case>
+ <case name="valuator">
+ <enumref ref="DeviceClassType">Valuator</enumref>
+ <field type="CARD16" name="number" />
+ <field type="ATOM" name="label" />
+ <field type="FP3232" name="min" />
+ <field type="FP3232" name="max" />
+ <field type="FP3232" name="value" />
+ <field type="CARD32" name="resolution" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <pad bytes="3" />
+ </case>
+ <case name="scroll">
+ <enumref ref="DeviceClassType">Scroll</enumref>
+ <field type="CARD16" name="number" />
+ <field type="CARD16" name="scroll_type" enum="ScrollType" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ScrollFlags" />
+ <field type="FP3232" name="increment" />
+ </case>
+ <case name="touch">
+ <enumref ref="DeviceClassType">Touch</enumref>
+ <field type="CARD8" name="mode" enum="TouchMode" />
+ <field type="CARD8" name="num_touches" />
+ </case>
+ </switch>
</struct>
<struct name="XIDeviceInfo">
@@ -1776,28 +1980,24 @@ in struct DeviceTimeCoord.
<field type="CARD32" name="num_items" />
<switch name="items">
<fieldref>format</fieldref>
- <!-- <bitcase> is not correct, this would need <cases>s.
- It works in that case, because PropertyFormat items can be
- distinguished exactly as their values don't have equal bits.
- -->
- <bitcase>
+ <case>
<enumref ref="PropertyFormat">8Bits</enumref>
<list type="CARD8" name="data8">
<fieldref>num_items</fieldref>
</list>
- </bitcase>
- <bitcase>
+ </case>
+ <case>
<enumref ref="PropertyFormat">16Bits</enumref>
<list type="CARD16" name="data16">
<fieldref>num_items</fieldref>
</list>
- </bitcase>
- <bitcase>
+ </case>
+ <case>
<enumref ref="PropertyFormat">32Bits</enumref>
<list type="CARD32" name="data32">
<fieldref>num_items</fieldref>
</list>
- </bitcase>
+ </case>
</switch>
</request>
@@ -1828,30 +2028,26 @@ in struct DeviceTimeCoord.
<pad bytes="11" />
<switch name="items">
<fieldref>format</fieldref>
- <!-- <bitcase> is not correct, this would need <cases>s.
- It works in that case, because PropertyFormat items can be
- distinguished exactly as their values don't have equal bits.
- -->
- <bitcase>
+ <case>
<enumref ref="PropertyFormat">8Bits</enumref>
<list type="CARD8" name="data8">
<fieldref>num_items</fieldref>
</list>
<pad align="4" />
- </bitcase>
- <bitcase>
+ </case>
+ <case>
<enumref ref="PropertyFormat">16Bits</enumref>
<list type="CARD16" name="data16">
<fieldref>num_items</fieldref>
</list>
<pad align="4" />
- </bitcase>
- <bitcase>
+ </case>
+ <case>
<enumref ref="PropertyFormat">32Bits</enumref>
<list type="CARD32" name="data32">
<fieldref>num_items</fieldref>
</list>
- </bitcase>
+ </case>
</switch>
</reply>
</request>
@@ -2092,8 +2288,13 @@ in struct DeviceTimeCoord.
<list type="CARD32" name="valuator_mask">
<fieldref>valuators_len</fieldref>
</list>
- <!-- Uninterpreted: list (axisvalues) of FP3232,
- length is <popcount> on valuator_mask list -->
+ <list type="FP3232" name="axisvalues">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
</event>
<eventcopy name="KeyRelease" number="3" ref="KeyPress" />
@@ -2128,8 +2329,13 @@ in struct DeviceTimeCoord.
<list type="CARD32" name="valuator_mask">
<fieldref>valuators_len</fieldref>
</list>
- <!-- Uninterpreted: list (axisvalues) of FP3232,
- length is <popcount> on valuator_mask list -->
+ <list type="FP3232" name="axisvalues">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
</event>
<eventcopy name="ButtonRelease" number="5" ref="ButtonPress" />
@@ -2248,10 +2454,20 @@ in struct DeviceTimeCoord.
<list type="CARD32" name="valuator_mask">
<fieldref>valuators_len</fieldref>
</list>
- <!-- Uninterpreted: list (axisvalues) of FP3232,
- length is <popcount> on valuator_mask list -->
- <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
- length is <popcount> on valuator_mask list -->
+ <list type="FP3232" name="axisvalues">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
+ <list type="FP3232" name="axisvalues_raw">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
</event>
<eventcopy name="RawKeyRelease" number="14" ref="RawKeyPress" />
@@ -2269,10 +2485,20 @@ in struct DeviceTimeCoord.
<list type="CARD32" name="valuator_mask">
<fieldref>valuators_len</fieldref>
</list>
- <!-- Uninterpreted: list (axisvalues) of FP3232,
- length is <popcount> on valuator_mask list -->
- <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
- length is <popcount> on valuator_mask list -->
+ <list type="FP3232" name="axisvalues">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
+ <list type="FP3232" name="axisvalues_raw">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
</event>
<eventcopy name="RawButtonRelease" number="16" ref="RawButtonPress" />
@@ -2311,8 +2537,13 @@ in struct DeviceTimeCoord.
<list type="CARD32" name="valuator_mask">
<fieldref>valuators_len</fieldref>
</list>
- <!-- Uninterpreted: list (axisvalues) of FP3232,
- length is <popcount> on valuator_mask list -->
+ <list type="FP3232" name="axisvalues">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
</event>
<eventcopy name="TouchUpdate" number="19" ref="TouchBegin" />
@@ -2351,10 +2582,20 @@ in struct DeviceTimeCoord.
<list type="CARD32" name="valuator_mask">
<fieldref>valuators_len</fieldref>
</list>
- <!-- Uninterpreted: list (axisvalues) of FP3232,
- length is <popcount> on valuator_mask list -->
- <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
- length is <popcount> on valuator_mask list -->
+ <list type="FP3232" name="axisvalues">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
+ <list type="FP3232" name="axisvalues_raw">
+ <sumof ref="valuator_mask">
+ <popcount>
+ <listelement-ref/>
+ </popcount>
+ </sumof>
+ </list>
</event>
<eventcopy name="RawTouchUpdate" number="23" ref="RawTouchBegin" />
diff --git a/libxcb/xcb-proto/src/xprint.xml b/libxcb/xcb-proto/src/xprint.xml
index e32293f3b..dc23dd0da 100644
--- a/libxcb/xcb-proto/src/xprint.xml
+++ b/libxcb/xcb-proto/src/xprint.xml
@@ -209,21 +209,14 @@ authorization from the authors.
<request name="PrintSelectInput" opcode="15">
<field type="PCONTEXT" name="context" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="event_mask"
- value-list-name="event_list" />
+ <field type="CARD32" name="event_mask" />
</request>
<request name="PrintInputSelected" opcode="16">
<field type="PCONTEXT" name="context" />
<reply>
- <pad bytes="1" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="event_mask"
- value-list-name="event_list" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="all_events_mask"
- value-list-name="all_events_list" />
+ <field type="CARD32" name="event_mask" />
+ <field type="CARD32" name="all_events_mask" />
</reply>
</request>
diff --git a/libxcb/xcb-proto/src/xproto.xml b/libxcb/xcb-proto/src/xproto.xml
index bfb8a4cff..d50a4285a 100644
--- a/libxcb/xcb-proto/src/xproto.xml
+++ b/libxcb/xcb-proto/src/xproto.xml
@@ -57,6 +57,7 @@ authorization from the authors.
<type>GCONTEXT</type>
</xidunion>
+ <typedef oldname="CARD32" newname="BOOL32" />
<typedef oldname="CARD32" newname="VISUALID" />
<typedef oldname="CARD32" newname="TIMESTAMP" />
@@ -64,6 +65,8 @@ authorization from the authors.
<typedef oldname="CARD32" newname="KEYSYM" />
<typedef oldname="CARD8" newname="KEYCODE" />
+
+ <typedef oldname="CARD32" newname="KEYCODE32" />
<typedef oldname="CARD8" newname="BUTTON" />
@@ -1293,9 +1296,71 @@ parent's cursor will cause an immediate change in the displayed cursor.
<field type="CARD16" name="border_width" />
<field type="CARD16" name="class" enum="WindowClass" />
<field type="VISUALID" name="visual" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CW" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CW">BackPixmap</enumref>
+ <field type="PIXMAP" name="background_pixmap" altenum="BackPixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackPixel</enumref>
+ <field type="CARD32" name="background_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BorderPixmap</enumref>
+ <field type="PIXMAP" name="border_pixmap" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BorderPixel</enumref>
+ <field type="CARD32" name="border_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BitGravity</enumref>
+ <field type="CARD32" name="bit_gravity" enum="Gravity"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">WinGravity</enumref>
+ <field type="CARD32" name="win_gravity" enum="Gravity"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingStore</enumref>
+ <field type="CARD32" name="backing_store" enum="BackingStore"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingPlanes</enumref>
+ <field type="CARD32" name="backing_planes" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingPixel</enumref>
+ <field type="CARD32" name="backing_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">OverrideRedirect</enumref>
+ <field type="BOOL32" name="override_redirect" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">SaveUnder</enumref>
+ <field type="BOOL32" name="save_under" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">EventMask</enumref>
+ <field type="CARD32" name="event_mask" mask="EventMask"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">DontPropagate</enumref>
+ <field type="CARD32" name="do_not_propogate_mask" mask="EventMask"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">Colormap</enumref>
+ <field type="COLORMAP" name="colormap" altenum="Colormap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">Cursor</enumref>
+ <field type="CURSOR" name="cursor" altenum="Cursor"/>
+ </bitcase>
+ </switch>
+
<doc>
<brief>Creates a window</brief>
<description><![CDATA[
@@ -1374,9 +1439,71 @@ The X server could not allocate the requested resources (no memory?).
<request name="ChangeWindowAttributes" opcode="2">
<pad bytes="1" />
<field type="WINDOW" name="window" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CW" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CW">BackPixmap</enumref>
+ <field type="PIXMAP" name="background_pixmap" altenum="BackPixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackPixel</enumref>
+ <field type="CARD32" name="background_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BorderPixmap</enumref>
+ <field type="PIXMAP" name="border_pixmap" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BorderPixel</enumref>
+ <field type="CARD32" name="border_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BitGravity</enumref>
+ <field type="CARD32" name="bit_gravity" enum="Gravity"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">WinGravity</enumref>
+ <field type="CARD32" name="win_gravity" enum="Gravity"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingStore</enumref>
+ <field type="CARD32" name="backing_store" enum="BackingStore"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingPlanes</enumref>
+ <field type="CARD32" name="backing_planes" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">BackingPixel</enumref>
+ <field type="CARD32" name="backing_pixel" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">OverrideRedirect</enumref>
+ <field type="BOOL32" name="override_redirect" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">SaveUnder</enumref>
+ <field type="BOOL32" name="save_under" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">EventMask</enumref>
+ <field type="CARD32" name="event_mask" mask="EventMask"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">DontPropagate</enumref>
+ <field type="CARD32" name="do_not_propogate_mask" mask="EventMask"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">Colormap</enumref>
+ <field type="COLORMAP" name="colormap" altenum="Colormap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="CW">Cursor</enumref>
+ <field type="CURSOR" name="cursor" altenum="Cursor"/>
+ </bitcase>
+ </switch>
+
<doc>
<brief>change window attributes</brief>
<description><![CDATA[
@@ -1689,11 +1816,40 @@ The specified window does not exist.
<request name="ConfigureWindow" opcode="12">
<pad bytes="1" />
<field type="WINDOW" name="window" />
- <field type="CARD16" name="value_mask" />
+ <field type="CARD16" name="value_mask" mask="ConfigWindow" />
<pad bytes="2" />
- <valueparam value-mask-type="CARD16"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="ConfigWindow">X</enumref>
+ <field type="INT32" name="x" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="ConfigWindow">Y</enumref>
+ <field type="INT32" name="y" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="ConfigWindow">Width</enumref>
+ <field type="CARD32" name="width" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="ConfigWindow">Height</enumref>
+ <field type="CARD32" name="height" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="ConfigWindow">BorderWidth</enumref>
+ <field type="CARD32" name="border_width" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="ConfigWindow">Sibling</enumref>
+ <field type="WINDOW" name="sibling" altenum="Window"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="ConfigWindow">StackMode</enumref>
+ <field type="CARD32" name="stack_mode" enum="StackMode"/>
+ </bitcase>
+ </switch>
+
<doc>
<brief>Configures window attributes</brief>
<description><![CDATA[
@@ -3883,9 +4039,102 @@ TODO
<pad bytes="1" />
<field type="GCONTEXT" name="cid" />
<field type="DRAWABLE" name="drawable" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="GC" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="GC">Function</enumref>
+ <field type="CARD32" name="function" enum="GX"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">PlaneMask</enumref>
+ <field type="CARD32" name="plane_mask" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Foreground</enumref>
+ <field type="CARD32" name="foreground" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Background</enumref>
+ <field type="CARD32" name="background" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">LineWidth</enumref>
+ <field type="CARD32" name="line_width" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">LineStyle</enumref>
+ <field type="CARD32" name="line_style" enum="LineStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">CapStyle</enumref>
+ <field type="CARD32" name="cap_style" enum="CapStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">JoinStyle</enumref>
+ <field type="CARD32" name="join_style" enum="JoinStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">FillStyle</enumref>
+ <field type="CARD32" name="fill_style" enum="FillStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">FillRule</enumref>
+ <field type="CARD32" name="fill_rule" enum="FillRule"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Tile</enumref>
+ <field type="PIXMAP" name="tile" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Stipple</enumref>
+ <field type="PIXMAP" name="stipple" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">TileStippleOriginX</enumref>
+ <field type="INT32" name="tile_stipple_x_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">TileStippleOriginY</enumref>
+ <field type="INT32" name="tile_stipple_y_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Font</enumref>
+ <field type="FONT" name="font" altenum="Font"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">SubwindowMode</enumref>
+ <field type="CARD32" name="subwindow_mode" enum="SubwindowMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">GraphicsExposures</enumref>
+ <field type="BOOL32" name="graphics_exposures" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ClipOriginX</enumref>
+ <field type="INT32" name="clip_x_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ClipOriginY</enumref>
+ <field type="INT32" name="clip_y_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ClipMask</enumref>
+ <field type="PIXMAP" name="clip_mask" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">DashOffset</enumref>
+ <field type="CARD32" name="dash_offset" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">DashList</enumref>
+ <field type="CARD32" name="dashes" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ArcMode</enumref>
+ <field type="CARD32" name="arc_mode" enum="ArcMode"/>
+ </bitcase>
+ </switch>
<doc>
<brief>Creates a graphics context</brief>
<description><![CDATA[
@@ -3924,9 +4173,102 @@ The X server could not allocate the requested resources (no memory?).
<request name="ChangeGC" opcode="56">
<pad bytes="1" />
<field type="GCONTEXT" name="gc" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="GC" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="GC">Function</enumref>
+ <field type="CARD32" name="function" enum="GX"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">PlaneMask</enumref>
+ <field type="CARD32" name="plane_mask" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Foreground</enumref>
+ <field type="CARD32" name="foreground" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Background</enumref>
+ <field type="CARD32" name="background" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">LineWidth</enumref>
+ <field type="CARD32" name="line_width" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">LineStyle</enumref>
+ <field type="CARD32" name="line_style" enum="LineStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">CapStyle</enumref>
+ <field type="CARD32" name="cap_style" enum="CapStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">JoinStyle</enumref>
+ <field type="CARD32" name="join_style" enum="JoinStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">FillStyle</enumref>
+ <field type="CARD32" name="fill_style" enum="FillStyle"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">FillRule</enumref>
+ <field type="CARD32" name="fill_rule" enum="FillRule"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Tile</enumref>
+ <field type="PIXMAP" name="tile" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Stipple</enumref>
+ <field type="PIXMAP" name="stipple" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">TileStippleOriginX</enumref>
+ <field type="INT32" name="tile_stipple_x_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">TileStippleOriginY</enumref>
+ <field type="INT32" name="tile_stipple_y_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">Font</enumref>
+ <field type="FONT" name="font" altenum="Font"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">SubwindowMode</enumref>
+ <field type="CARD32" name="subwindow_mode" enum="SubwindowMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">GraphicsExposures</enumref>
+ <field type="BOOL32" name="graphics_exposures" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ClipOriginX</enumref>
+ <field type="INT32" name="clip_x_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ClipOriginY</enumref>
+ <field type="INT32" name="clip_y_origin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ClipMask</enumref>
+ <field type="PIXMAP" name="clip_mask" altenum="Pixmap"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">DashOffset</enumref>
+ <field type="CARD32" name="dash_offset" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">DashList</enumref>
+ <field type="CARD32" name="dashes" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="GC">ArcMode</enumref>
+ <field type="CARD32" name="arc_mode" enum="ArcMode"/>
+ </bitcase>
+ </switch>
<doc>
<brief>change graphics context components</brief>
<description><![CDATA[
@@ -4982,9 +5324,43 @@ sensitive!
<request name="ChangeKeyboardControl" opcode="102">
<pad bytes="1" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="KB" />
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="KB">KeyClickPercent</enumref>
+ <field type="INT32" name="key_click_percent" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">BellPercent</enumref>
+ <field type="INT32" name="bell_percent" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">BellPitch</enumref>
+ <field type="INT32" name="bell_pitch" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">BellDuration</enumref>
+ <field type="INT32" name="bell_duration" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">Led</enumref>
+ <field type="CARD32" name="led" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">LedMode</enumref>
+ <field type="CARD32" name="led_mode" enum="LedMode"/>
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">Key</enumref>
+ <field type="KEYCODE32" name="key" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="KB">AutoRepeatMode</enumref>
+ <field type="CARD32" name="auto_repeat_mode" enum="AutoRepeatMode"/>
+ </bitcase>
+ </switch>
+
</request>
<request name="GetKeyboardControl" opcode="103">