[Xcb] XML description of XKB optional fields
Ian Osgood
iano at quirkster.com
Wed Nov 29 17:08:48 PST 2006
One or more of the requests also have valuelists that are sized based
on the bitcount of some combination of masks rather than just one
mask field. Is that currently expressable?
Ian
On Nov 29, 2006, at 4:48 PM, Jamey Sharp wrote:
> We've had a to-do item for a while to implement the XKB extension (bug
> #6684). Vincent Torri tried to do this in April 2005, but XKB does
> some
> strange things and he moved on to more productive tasks. :-) I
> think we
> can express almost all of XKB in our current XML tagset, and I'm
> hoping
> somebody will volunteer to give it a try.
>
> XKB presents two major challenges: Some fields are optional,
> conditional
> on the values of other fields; and some lists have a length that
> depends
> in complicated ways on a bitfield, and elements of varying types. I
> think these are both essentially the same problem, and we can express
> all these cases as lists of either 0 or 1 element.
>
> One of the two optional fields is described this way:
>
> 1 m nMapEntries
> 1 BOOL hasPreserve
> ...
> [4m] LISTofKB_MODDEF preserve
>
> Because BOOL values are required to be either 0 or 1, we can represent
> that this way in our XML:
>
> <field type="CARD8" name="map_entries_len" />
> <field type="BOOL" name="has_preserve" />
> <list type="KB_MODDEF">
> <op op="*">
> <fieldref>map_entries_len</fieldref>
> <fieldref>has_preserve</fieldref>
> </op>
> </list>
>
> That wasn't too bad. Now for the really ugly.
>
> 2 SETofKB_GBNDETAILMASK reported
> V LISTofITEMs replies
> (if this in reported:) (then this field is present:)
> XkbGBN_Types map
> XkbGBN_CompatMap compat
> XkbGBN_ClientSymbols map
> XkbGBN_ServerSymbols map
> XkbGBN_IndicatorMap indicators
> XkbGBN_KeyNames names
> XkbGBN_OtherNames names
> XkbGBN_Geometry geometry
> ITEMs
> M XkbGetMap reply map
> C XkbGetCompatMap reply compat
> I XkbGetIndicatorMap reply indicators
> N XkbGetNames reply names
> G XkbGetGeometry reply geometry
>
> Given some extensions of the XML, we can encode that this way:
>
> <field type="CARD16" name="reported" />
> <list type="reply:GetMap" name="map">
> <op op="&">
> <value>1</value>
> <op op="|">
> <fieldref>reported</fieldref>
> <op op=">>">
> <fieldref>reported</fieldref>
> <value>2</value>
> </op>
> <op op=">>">
> <fieldref>reported</fieldref>
> <value>3</value>
> </op>
> </op>
> </op>
> </list>
> <list type="reply:GetCompatMap" name="compat">
> <op op="&">
> <value>1</value>
> <op op=">>">
> <fieldref>reported</fieldref>
> <value>1</value>
> </op>
> </op>
> </list>
> ...
>
> ...Phew, I'm tired of typing already. But perhaps you get the idea.
>
> Now, it isn't too big of a deal to make the XSLT support right-
> shift and
> bitwise-or operators, in addition to the current left-shift and
> bitwise-and. Adding the ability to refer to a reply as a field type
> also
> isn't that hard, since fortunately we're already generating iterators
> for them. I can see that a couple more extensions will be needed along
> the way, but I have ideas for those too. Typing all this in is
> time-consuming, but manageable.
>
> Will somebody either go give it a try, or put forward a better
> proposal?
>
> --Jamey
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb
More information about the Xcb
mailing list