Bug#523562: autodetected keyboard has massively mismapped keycodes
On Sat, 2009-04-11 at 09:46 -0500, Manoj Srivastava wrote:
> On Sat, Apr 11 2009, Julien Cristau wrote:
>
> > On Fri, 2009-04-10 at 23:08 -0500, Manoj Srivastava wrote:
> >> So, I let the server autodetect the keyboard, and it came up
> >> with:
> >> (**) AT Translated Set 2 keyboard
> >>
> >> Now, I have a Logitech Cordless Comfort Duo setup. After
> >> logging in, I discovered that my arrow keys, home, end, prior, next,
> >> print, pause, alt_r, control_r, kp_enter, KP_Divide, Super_r,
> >> multi_key had been randomly rearranged, and thus hitting up arrow
> >> tried to print the screen.
> >>
> >> There was an extensive session with xev, xbindkeys -mk, and
> >> xmodmap before I could start using the machine, and I suspect most
> >> users would not have the knowledge to do what I did.
> >>
> >> Oh, and Option "AllowEmptyInput" "false" gave me multiple
> >> input devices, I could not login as user sssrrriiivvvaaassstttaaa.
> >> (each keypress resulted in three characters)
> >
BTW, to go back to the previous behaviour, you want to set Option
"NoAutoAddDevices", rather than just disabling AllowEmptyInput, to avoid
getting the same keyboard added more than once :)
> > The evdev driver, which is used by default with input-hotplug, indeed
> > uses a different set of keycodes than the traditional kbd driver. I'm
> > not sure there's a way to make that transition not painful for people
> > using xbindkeys/xmodmap and assuming the previous set of keycodes... :(
>
> Fair enough. I understand how the transition is problematic,
> but perhaps something like this could be put into a NEWS.Debian file? I
> might have planned better had I been aware of the keycode issue.
>
Yeah, we should do that.
> I am using a new fangled keyboard, though from a popular
> manufacturer (Logitech) which is apparently no in the database, and the
> keycodes of different keyboards differ; in the long term, I should get
> this keyboard autodetected; this is evidently *NOT* AT Translated Set 2
> keyboard, whatever that generic set is.
>
can you run evtest (from the joystick package) on the /dev/input/event*
file corresponding to the keyboard, and send the output?
With evdev, the kernel unifies the scancodes sent by the hardware,
according to the definitions in /usr/include/linux/input.h. The X
keycodes are those KEY_* defines, plus 8 (to account for the fact that X
is stupid and min_keycode is always 8).
So for example, XF86AudioLowerVolume is keycode 122 (KEY_VOLUMEDOWN+8)
and XF86AudioRaiseVolume is 123 (KEY_VOLUMEUP+8).
Cheers,
Julien
Reply to: