Re: bad scancode for USB keyboard

From: Fredrik Olausson
Date: Thu Jan 08 2004 - 19:33:36 EST


I have found a solution to the problem.
XFree86 has 2 keyboard drivers, the default one named "keyboard" and an alternative one named "kbd" which according to documentation on the XFree86 website is a new keyboard driver mostly written from scratch. With the kbd-driver the print-screen key and the |\-key got different keycodes and thus I could make the |\-key give me the proper characters.

So, to summarize. Simply changing the line:
Driver "keyboard"
to
Driver "kbd"
in the input-device section in the XF86Config file and fiddling a bit with xmodmap solved the problem for me.

Bernardo Innocenti wrote:
Vojtech Pavlik wrote:

On Wed, Jan 07, 2004 at 03:27:42AM +0100, Bernardo Innocenti wrote:

I have the same problem with a Logitech cordless desktop.
I can easily change the keycode to generate the right characters when in console-mode, but XFree gives that key and the Print Screen key the same keycode.
After changing the xmodmap I can get the unmodified character, but modifiers doesn't work, it just gives me the same character not matter what modifier I use (shift, alt, alt_gr etc.)


I had fixed my console keymap too, but I've not been able to
figure out how to change the X keymap. I've been looking in
the /usr/X11R6/lib/X11/xkb/ directory, but perhaps XKB is not
being used for old-style keyboard mapping?

Could you provide detailed instructions? C coding with missing
backslash and bar keys is quite hard :-)

Of course, I still thing its' a 2.6 kernel bug and it should be
fixed. Vojtech, do you have an idea why it's happening?


The reason is that this key is not the ordinary backslash-bar key, it's
the so-called 103rd key on some european keyboards. It generates a
different scancode.


Yes, I've found out it's 84 for the key besides/below the enter key.

2.4 used the same keycode for both the scancodes, 2.6 does not, so that
it's possible to differentiate between the keys on keyboards that have
both this one and also the standard backslash-bar.


I see... So it appears the fix has to be done in the kbd package and in
XFree86.

The default console keymap should be changed like this:

< keycode 84 = Last_Console
> keycode 84 = backslash bar

Andries Brouwer appears to be the current maintainer of kbd, so I've
pulled him into our thread. This is also being cross-postied to
the devel@xxxxxxxxxxx list.

In addition, I'm going to open two PRs for these packages in RedHat's
bugzilla to make sure the issue gets properly fixed before it hits the
masses.

fyi, this thread was started here:

http://www.ussg.iu.edu/hypermail/linux/kernel/0401.0/0485.html


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/