On Sat, May 16, 2009 at 9:58 AM, Peter Åstrand <astrand@cendio.se> wrote:

The database is not a standard. Assuming that any XKB layout that names itself "us" gonna look the same is technically incorrect. That's why I'm against
pregenerating keymaps offline. We should look at what the user has in runtime (through the XKB API), instead of assuming everyone who has "us" or "ru"
keyboard layout necessarily loaded it from the Xorg 7.0 database.

Yes, if "pregenerating keymaps offline" means that we at runtime tries to interpret the keycodes, then I agree with you that this is wrong.

That's what I'm saying all along. Marc's idea, if I understand him correctly, is to leverage Xorg's XKB database as a rich database of keyboard layouts. It's not really "using XKB" in the technical sense.
Also, XKB layouts can be tricky. It can be "us", it can be "us+ru" or "us+ru+il(pc105)" or whatever. Again, we're trying to be too smart here, instead of doing the RIGHT thing and asking the server, in runtime.

Yes, using the XKB API to get the key names at runtime is in principle a sound design. The problem is just that I believe that relying on XKB and having two different implementations will be a pain.

I believe that since the vast majority of our X11 users are modern Xorg installations, once we have an XKB-aware key mapper, it'll be the "main" implementation.

We'll have two code paths, both receiving the same input (XKeyEvent) and emitting the same output (AT scancode), so while more code is always a pain, having both implementations doesn't make the code *around* them any more complicated.
What is the status of your XKB patch, is it up to date and complete?

See, that's where my proposal runs thin :) I've never implemented what I'm talking about here, not in any complete form. I hate to be all-talk, and I hate to put all this STOP ENERGY into Marc's work, seeing he's so eager to help and contribute his time.

I haven't contributed much code to rdesktop the last year, since I moved to a Mac (and, to be frank, I'm using Microsoft's own Mac client for my RDP needs) but if you guys want me to, I'll whip up my Linux VM and put code where my mouth is.