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.

Reply via email to