various problems with the xkb protocol bindings
Submitted by Uli Schlachter
Assigned to xcb mailing list dummy
While looking at http://lists.freedesktop.org/archives/xcb/2012-June/007800.html, I noticed some more problems with the XKB bindings. Since they won't be fixed any time soon, let's make a meta-bug "xkb is ugly" to make sure that these issues don't get forgetten. So here it is.
The XKB extension has only a single event number. These events contain a xkbType field which then says which kind of event this actually is. The current xkb.xml describes these events as seperate events, but from the POV of the generator, they are just a single event.
<psychon> daniels: <event name="BellNotify" number="8"> <- doesn't the "8" here mean that the event is xkb-event-base + 8? [...] <daniels> so technically having them as separate <event>s is wrong i think <daniels> but i'm not sure how to cover loads of totally disparate events all having the same event type <pharris> daniels: One event, with a giant <switch>. [...] <pharris> daniels: Or possibly a <union>, but I dislike <union> as it doesn't represent well in non-C languages.
The second issue is:
<enum name="EventType"> [...] <item name="BellNotify"><bit>8</bit> </item>
This causes a
#define XCB_XKB_EVENT_TYPE_BELL_NOTIFY 256 to be generated, but this actually wants a define with value 8.
The above was noticed while looking at this for 2 minutes and comparing it with Xlib's src/xkb/XKBUse.c, function wire_to_event() and proto/kbproto's X11/extension/XKBproto.h, struct XkbStateNotifyEvent. I bet that a closer inspection would find more problems.