[Xcb] Re: very first attempt of the keybinding

Jamey Sharp jamey at minilop.net
Fri May 6 19:14:28 PDT 2005

On Fri, 2005-05-06 at 21:09 +0200, Vincent Torri wrote:
> I create a tagged XCBKeySymbolsCookie structure
> XCBKeySymbols is a function that returns it. It calls
> XCBGetKeyboardMapping and init the structure.
> but what would return XCBKeySymbolsReply ? the XCBKeySymbolsCookie ? this
> one appears in the prototype and should not be passed as a reference
> (like a standard reply prototype).
> So, returning it is the only way that i have to get the reply. But then,
> the "cookie" would appear twice (in the prototype and as the returned
> value). In addition, the name is not good for the reply function.

I was suggesting exposing only one structure: no distinction between
"cookie" and "reply". Note that the tagged unions I mentioned each can
hold both a cookie and a reply (just not at the same time).

This structure would hold the state of the KeySymbols library, and a
pointer to it would be passed to each of the calls. Maybe it'd help to
think of it like the 'this' pointer in languages like C++ and Java?

So I'd propose function signatures like these:

XCBKeySymbols *XCBKeySymbolsAlloc(XCBConnection *c);
void XCBKeySymbolsFree(XCBKeySymbols *syms);

XCBKEYSYM XCBKeySymbolsGetKeysym(XCBKeySymbols *syms,
                                 XCBKEYCODE     keycode,
                                 int            col);
void XCBRefreshKeyboardMapping(XCBKeySymbols         *syms,
                               XCBMappingNotifyEvent *event);

Does that help?


More information about the xcb mailing list