[Xcb] GSoC 2009: XKB and XI2 support

Mariusz Ceier mceier at gmail.com
Tue Sep 15 02:55:16 PDT 2009


Julien Danjou pisze:
> Hi fellow developers,
> 
> As you may know, Marius Ceier has been a Google sponsored student
> working on XCB this summer.
> 
> He wrote XML files describing XKB and XI2 protocol. He also had to do
> XKB2, but since the spec were not finished in time, he was not able to
> do that. AFAIK, he also touched some other part needed to make XKB and
> XI2 work, mostly the Python C code generator.
> 
> Now, his work should be integrated into XCB, obviously. I don't have
> time currently to review and merge his work, so I hereby request some
> help. I don't know what are Marius plans and if he thinks like he will
> submit his work as a clear set of patches or not. But I think we should
> not wait for him and lose the job that have been done, and start merging
> this ASAP.
> 
> Everything is available at:
> http://github.com/mceier/input-protos-for-xcb/
> 
> There's 2 branches, one with libxcb modification, and one with X
> protocol added.
> 
> Cheers.

Hi :)
   I would need some RFC on new tags that I introduced for XKB, from the
point of view of code generators of different languages.
Now I will describe these tags here briefly:
 - enumref - it's a reference to already declared enum item e.g.
   <enumref ref="Const">MaxLegalKeyCode</enumref>

 - if - conditional inclusion of fields, based on expression, it always
is the last field of struct, e.g.
   <if name="ifHasPreserve">
       <!-- expression -->
       <fieldref>hasPreserve</fieldref>
       <!-- fields for inclusion -->
       <list > ...

  - bitcount - counts number of bits set or cleared, e.g.
      <bitcount value="1"> <fieldref>namesPresent</fieldref> </bitcount>

  - switch - conditional inclusion of fields, in 2 variants:
     - case - include exactly one set of fields that matches ( equaltity
comparison ) e.g.:
	<switch name="switchX">
             <value>3</value>
             <case>
                 <value>1</value>
                 <fieldref>x</fieldref>
             </case>
             <case>
                 <value>3</value>
                 <fieldref>y</fieldref>
             </case>
        </switch>
      in this example only y field will be included. This variant is a
bit redundant - it can be replaced by if tag, so I didn't use it ...
     - bitcase - include all that matches, in the example above, when
'case' is renamed to 'bitcase', x and y fields would be included in
struct. I used this a lot.

    switch is always the last field of struct ( if it is present )

 - neg - bit negation, e.g.
    <neg><fieldref>clear</fieldref></neg>

 - sumof - sumation of elements of list, e.g.
    <sumof ref="nLevelsPerType" type="CARD16" />

 - replyof - makes copy of reply of given request a field of other
request, e.g.
    <replyof request="GetMap" name="map" />

I hope that these are all new tags.

Mariusz Ceier


More information about the Xcb mailing list