[Xcb] [PATCH proto 5/8] xinput: ev KeyPress: support list axisvalues

Christian Linhart chris at demorecorder.com
Thu Sep 4 08:48:59 PDT 2014

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.


 src/xinput.xml | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/xinput.xml b/src/xinput.xml
index 61aacb7..02a8597 100644
--- a/src/xinput.xml
+++ b/src/xinput.xml
@@ -2270,16 +2270,21 @@ <event name="KeyPress" number="2" xge="true">
         <field type="GroupInfo"    name="group" />
         <list type="CARD32" name="button_mask">
         <list type="CARD32" name="valuator_mask">
-        <!-- 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>
     <eventcopy name="KeyRelease" number="3" ref="KeyPress" />
     <enum name="PointerEventFlags">
         <item name="PointerEmulated"> <bit>16</bit> </item>

More information about the Xcb mailing list