xinput: ev KeyPress: support list axisvalues

The length of list axisvalues is determined by the number of bits set in the
list valuator_mask.

This is computed using sumof over popcount of the list-elements of valuator_mask.
This uses the new expression type <listelement-ref/> which refers to the current
list-element iterated by sumof.

spec:
http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XI2proto.txt?id=inputproto-2.3.1#n2214

code:
http://cgit.freedesktop.org/xorg/proto/inputproto/tree/XI2proto.h?id=inputproto-2.3.1#n944

Message-ID: <1409845742-38797-5-git-send-email-chris@demorecorder.com>
Patch-Thread-Subject: [Xcb] support popcount of a list and associated xml changes
Patch-Set: PopcountList
Patch-Number: proto 5/8
Patch-Version: V1
Signed-off-by: Christian Linhart <chris@DemoRecorder.com>
This commit is contained in:
Christian Linhart 2014-09-04 17:48:59 +02:00
parent e0d5a80d9c
commit d2a80fed90

View file

@ -2306,8 +2306,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" />