[Xquartz-dev] XKB in XQuartz
Jeremy Huddleston
jeremyhu at apple.com
Mon May 19 00:21:46 PDT 2008
I'm having a bit of trouble now with the "use XKB" conditional #ifdef
in the XQuartz keymap handling (I reverted back to the old way for
now). It was "working" before simply because xkeyboard-config wasn't
installed (I installed xkbdata, it errored, and we kept our default
mappings). Now that I install xkeyboard-config, we get an ugly
mapping. Here's our modifier keys for example:
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift backslash (0x32), BadKey (0x3e)
lock Alt_L (0x42)
control 0 (0x25), F9 (0x6d)
mod1 Alt_L (0x42), Alt_R (0x45)
mod2 KP_Add (0x4d)
mod3
mod4 End (0x7f), F2 (0x80)
mod5 KP_3 (0x5d), Prior (0x7c)
And if I revert back to the old way or just move the share/X11/xkb
directory out of the way (which causes the fallback to the old way), I
get a good mapping:
xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x40), Shift_R (0x44)
lock Caps_Lock (0x41)
control Control_L (0x43), Control_R (0x46)
mod1 Alt_L (0x42), Alt_R (0x45)
mod2 Meta_L (0x3f), Meta_R (0x47)
mod3
mod4
mod5
So I dug around a bit and figured this was resulting from this line
picking an invalid rule set for our keyboard:
XkbSetRulesDflts("base", "pc105", "us", NULL, NULL);
Now, how should we go about creating rules for our keyboards? I've
done some keyboard config writing for the Sun Type 6 USB keyboard, so
I'm a little familiar with that, but in that case I had a "real"
keyboard to work with and I didn't need to worry about international
variants, etc. I'm a bit fuzzy on exactly how the keyboard data is
provided to us by Quartz and how to make that play nice with xkb. For
one thing, QuartzReadSystemKeymap() (the old way) gets the keymapping
data (keycode -> unicode character) dynamically from the system. From
what I see, xkb gets its data from the config files... it seems like
a bad idea to try generating files in xkeyboard-config for all the
possible keyboards that can be available.
Is there a way we can still use xkb but not rely on xkeyboard-config?
Should we just setup a very basic generic profile (maybe just the
modifier keys) for the quartz keyboard and programatically setup the
rest of the bindings? Daniel, is there a better option that you can
think of?
Thanks,
Jeremy
More information about the Xquartz-dev
mailing list