Bug 673

Summary: atkbd.c "Unknown key" message and Toshiba laptops
Product: Drivers Reporter: John Belmonte (john)
Component: Input DevicesAssignee: Vojtech Pavlik (vojtech)
Status: CLOSED DOCUMENTED    
Severity: normal    
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.5.69 Subsystem:
Regression: --- Bisected commit-id:

Description John Belmonte 2003-05-07 10:50:16 UTC
Distribution:  Debian unstable
Hardware Environment:  Toshiba Libretto L5 laptop

I have a Toshiba laptop with the spurious key-up hardware problem.  The 2.5
keyboard driver suppresses this well, but "Unknown key" messages are constantly
logged.

First, I would suggest changing the message to "Unknown or unexpected key",
which is more accurate.

Second, I would like to see a driver option to disable this message.  This would
be useful to Toshiba laptop users who don't want to have their system logs
filled with this message that they can do nothing about.

I can prepare a patch if necessary.
Comment 1 Vojtech Pavlik 2003-05-07 13:10:13 UTC
What unknown keys are seen (what scancodes)? Does it also happen
when you specify i8042_direct on the kernel command line?
Comment 2 John Belmonte 2003-05-07 14:19:42 UTC
If I use the i8042_direct kernel option, the messages don't occur.

Here is a sample of the scancodes:

atkbd.c: Unknown key (set 2, scancode 0xa4, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa0, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa0, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x9f, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa3, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb3, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa0, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa1, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa0, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x95, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xf3, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa0, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa7, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa7, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa4, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x9f, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa1, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x99, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x95, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x93, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa6, on isa0060/serio0) pressed.
Comment 3 Vojtech Pavlik 2003-05-07 14:31:11 UTC
Use that option, then - without it we cannot properly detect double release
which the buggy Toshiba keyboard also likes to generate in addition to double
presses.
Comment 4 John Belmonte 2003-05-07 20:51:18 UTC
I'm not sure I understand your comment.  I'm not proposing any change in the
functionality of your driver, only that an option be added to suppress the
"Unknown key" message.

Would you please explain exactly what the i8042_direct option does?
Comment 5 Vojtech Pavlik 2003-05-13 15:44:50 UTC
Actually I think that the message should not be suppresable, because when it
is printed it usually points to a problem either in the driver or the keyboard.

In your case the keyboard generates double releases of keys, which the 
un-translating engine in i8042.c cannot (and never will be able to) 
handle properly. Hence, using i8042_direct, which programs the i8042 chip
not to use translation at all (and thus un-translation isn't needed) is
the correct fix in this case.

Actually it'd be nice if i8042_direct could be the default, but there are many
systems which don't like that for different reasons.