[Xcb] [PATCH proto 2/2] xinput: rep QueryDeviceState struct InputState: full support
Daniel Martin
consume.noise at gmail.com
Tue Aug 26 01:16:23 PDT 2014
On 21 August 2014 22:32, Christian Linhart <chris at demorecorder.com> wrote:
> Full support for the QueryDeviceState reply.
> This has been done by changing the struct InputState
> with using switch-case and implicit-padding="false".
>
> Also fixed the type of field valuators of struct ValuatorState
> from CARD32 to INT32.
>
> spec:
> http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XIproto.txt?id=inputproto-2.3.1#n2082
> http://cgit.freedesktop.org/xorg/lib/libXi/tree/specs/encoding.xml?id=libXi-1.7.4#n1728
> ---
> src/xinput.xml | 39 +++++++++++++++++++++++++++++----------
> 1 file changed, 29 insertions(+), 10 deletions(-)
>
> diff --git a/src/xinput.xml b/src/xinput.xml
> index 95f0044..cf58a97 100644
> --- a/src/xinput.xml
> +++ b/src/xinput.xml
> @@ -858,30 +858,49 @@ <enum name="ValuatorStateModeMask">
> </enum>
>
> <struct name="ValuatorState">
> <field type="CARD8" name="class_id" enum="InputClass" />
> <field type="CARD8" name="len" />
> <field type="CARD8" name="num_valuators" />
> <field type="CARD8" name="mode" mask="ValuatorStateModeMask" />
> - <list type="CARD32" name="valuators">
> + <list type="INT32" name="valuators">
> <fieldref>num_valuators</fieldref>
> </list>
> </struct>
>
> - <struct name="InputState">
> + <struct name="InputState" implicit-padding="false">
Adding an explicit attribute to trigger implicit stuff where we
could use an explicit <pad align> at the end of the struct or
better: in the 2 cases where it's necessary doesn't sound
right to me.
> <field type="CARD8" name="class_id" enum="InputClass" />
> <field type="CARD8" name="len" />
> - <field type="CARD8" name="num_items" />
> - <pad bytes="1" />
> - <list type="CARD8" name="uninterpreted_data">
> - <op op="-">
> - <fieldref>len</fieldref>
> - <value>4</value>
> - </op>
> - </list>
> + <switch name="data">
> + <fieldref>class_id</fieldref>
> + <case>
> + <enumref ref="InputClass">Key</enumref>
> + <field type="CARD8" name="num_keys" />
> + <pad bytes="1" />
> + <list type="CARD8" name="keys">
> + <value>32</value>
> + </list>
> + </case>
> + <case>
> + <enumref ref="InputClass">Button</enumref>
> + <field type="CARD8" name="num_buttons" />
> + <pad bytes="1" />
> + <list type="CARD8" name="buttons">
> + <value>32</value>
> + </list>
> + </case>
> + <case>
> + <enumref ref="InputClass">Valuator</enumref>
> + <field type="CARD8" name="num_valuators" />
> + <field type="CARD8" name="mode" mask="ValuatorStateModeMask" />
> + <list type="INT32" name="valuators">
> + <fieldref>num_valuators</fieldref>
> + </list>
> + </case>
> + </switch>
> </struct>
>
> <request name="QueryDeviceState" opcode="30">
> <field type="CARD8" name="device_id" />
> <pad bytes="3" />
> <reply>
> <field type="CARD8" name="xi_reply_type" />
> --
> 2.0.1
>
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb
More information about the Xcb
mailing list