Re: 2.6.0_test6: CONFIG_I8K produces wrong/no keycodes for specialbuttons

From: Jan Schubert
Date: Mon Oct 06 2003 - 06:00:58 EST


Massimo Dal Zotto wrote:

The inspiron 8000 has 4 multimedia buttons, 2 volume buttons and 3 Fn-key
combinations. Other Dell laptops have only one or two buttons.

The multimedia buttons generate the following raw scancodes which can be
dumped with showkey -s:

0xe0 0x01 play
0xe0 0x02 stop
0xe0 0x03 back
0xe0 0x04 forward

Since the raw scancodes are generate by the keyboard like any other key
they should be handled by the 2.6.0 kernel as in 2.4.x. If this doesn't
work it is a bug in the kernel. Did you try showkey -s with 2.6.0?

This is what i get:
play - <nothing>
Stop -
0xe0 0x22
0xe0 0xa2
back - <nothing>
forward-
0x6a
0xea

For some obscure reason known only to Dell the volume buttons and the Fn-
keys are trapped by the SMM BIOS and can be read only by the i8k driver
which under kernel 2.4.x can be programmed to generate the original raw
scancodes generated by the keyboard:

0xe0 0x20 fn+vol_mute
0xe0 0x2e vol_up, fn+vol_down
0xe0 0x30 vol_up, Fn+vol_up

These keys seems to work, but don't produce any keycodes. The same happens when pressing the (special) Volume-keys.

(SMM BIOS can be programmed to handle volume buttons as normal keys
by disabling the Fn- key but then you don't have the Fn- function,
including bios access and suspend)

Suspend and Bios-Setup will work (when accessing the Bios-Setup there is no way to come back to my system - this worked some time ago).

Unfortunately the keyboard interface has changed in 2.6.0 and it is not
possible to generate the 0xe0, 0x0N sequence as in 2.4.x, so this feature
has been disabled and you must use i8kbuttons instead. If anybody knows
how to generate the corresponding scancodes in kernel 2.6.0 please let
me know.

Is i8kbuttons usable for the play, stop, back and forward-button? This would be new to me, AFAIK you can only map the volume-keys.

toral distfiles # i8kbuttons --help
Usage: i8kbuttons [<option>...]

Options:

-v|--verbose
-u|--up <command>
-d|--down <command>
-m|--mute <command>
-r|--repeat <milliseconds>
-t|--timeout <milliseconds>

Thx, Jan

-
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/