Hi, 2010/8/13 <olafbuddenha...@gmx.net>: > > > Not sure what you are saying here. Do you mean that the xkb driver > misses some functionality the ordinary pc_kbd driver has? >
At some point in it's history pc_kbd introduced support for GNU Mach v2, which is the oskit based kernel AFAIK. For that reason, pc_kbd now has two functions for reading scancodes and depending on the keyboard device name[#] one of them is selected at runtime. However, the scancodes the oskit kernel reports (set 2)[*] are different from what GNU Mach v1 uses (set 1). To use a unified set of scancodes, the routine used when v1 is present was modified to convert from set 1 to set 2. The source of the xkb driver has some traces of an attempt to follow this change but the code for oskit doesn't look correct. xkb still uses set 1 because that's what configuration files from Xorg are based on. But it doesn't provide any translation when oskit is detected. Thus, the conversion tables used by pc_kbd would need to be inverted. -- footnotes: [#] Used in calls to device_open. "@>=kbd" in oskit, "kbd" in GNU Mach v1. [*] I didn't have a look at the kernel drivers, but apparently the oskit driver won't instruct the keyboard controller to activate compatibility mode. So scancodes are not translated to set 1 by the keyboard controller. While GNU Mach v1 would activate that mode.