Re: multimedia keys not working in 2.6.0-test6

From: Vojtech Pavlik
Date: Tue Sep 30 2003 - 11:01:43 EST


On Tue, Sep 30, 2003 at 05:52:03PM +0200, Pau Aliagas wrote:
> On Tue, 30 Sep 2003, Vojtech Pavlik wrote:
>
> > On Tue, Sep 30, 2003 at 04:56:21PM +0200, Andries Brouwer wrote:
> >
> > > On Tue, Sep 30, 2003 at 01:54:59PM +0200, Pau Aliagas wrote:
> > >
> > > > These are the messages I get when pressing P1 and P2 in my laptop.
> > > >
> > > > kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x153, data 0x74, on isa0060/serio0).
> > > > kernel: atkbd.c: Unknown key released (translated set 2, code 0x153, data 0xf4, on isa0060/serio0).
> > > >
> > > > Email and browser keys report a correct code and I can bind thm to any app
> > > > using xbindkeys, but with thes two there's no way.
> > >
> > > These keys produce scancode e0 74. Untranslated e0 53.
> > > Entry 0x153 of atkbd_set2_keycode[] is 0, that is why
> > > the key is called unknown.
> > >
> > > The normal way of assigning a keycode is by using setkeycodes.
> > > This uses the KDSETKEYCODE ioctl, but it is broken at present.
> > >
> > > The reason is that it is written to use 0-127 for scancode xx
> > > and 128-255 for scancode pair e0 xx. (Translated set2, of course.)
> > > However, the current kernel untranslates what the keyboard sends
> > > and then uses a scancode-to-keycode mapping for untranslated set 2.
> > > That breaks this ioctl.
> > > Moreover, it uses a shift of 256 instead of 128 for e0.
> > > That also breaks this ioctl.
> >
> > It actually works pretty well on 2.6. You jsut have to pass a different
> > number on 2.6 than you do on 2.4 - that is:
> >
> > setkeycodes 153 148
> >
> > 153 is the reported scancode (e0 53 untranslated, e0 74 translated),
> > 148 is the keycode for KEY_PROG1
> >
> > (There is still a small bug in the bitmap setting, and I'll be fixing
> > that tonight, but unless you have more than one scancode generating the
> > same keycode, it won't bite you.)
>
> # setkeycodes 153 148
> setkeycode: code outside bounds
> usage: setkeycode scancode keycode ...
> (where scancode is either xx or e0xx, given in hexadecimal,
> and keycode is given in decimal)
>
> I tried xx153, 0e153, 0exx153 and no way.

Too bad. Your setkeycodes seems to do too clever input data checking.
Although the ioctl data type for scancode is an int, it insists on the
value fitting into a byte.

--
Vojtech Pavlik
SuSE Labs, SuSE CR
-
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/