2002-10-03 06:54:05

by Tobias Ringstrom

[permalink] [raw]
Subject: 2.5.40: AT keyboard input problem

While 2.5 has worked better than I hoped for so far, I do have a problem
with the new input layer (I think) that is easily reproducible, and quite
irritating.

If I press and hold my left Alt key, press and release the right AltGr
key, and then release the left Alt key, I get one of the following
messages in dmesg:

atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x9d, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x9d, on isa0060/serio0) pressed.

The left Alt key is now stuck until I press and release it again.

The same thing happens for a few other combinations as well. I happens
both in X and in the console.

Please let me know if you need more info.

/Tobias


2002-10-03 07:10:13

by DevilKin

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thursday 03 October 2002 08:59, Tobias Ringstrom wrote:
> While 2.5 has worked better than I hoped for so far, I do have a problem
> with the new input layer (I think) that is easily reproducible, and quite
> irritating.

I have a similar problem, first noted when using the SysRQ.

With the 2.4.x kernels i can press Alt-SysRQ, and then press the keys I want
successively (e.g. S M O for Sync Umount Off). Now i have to release
Alt-SysRQ everytime, and 1/2 of the time it doesn't recognize the press i
gave.

Also, the Alt key tends to get stuck now and again, and sometimes for no
reason i get multiple chars when I only strike a key once.

Odd behaviour.

DK
--
You should never wear your best trousers when you go out to fight for
freedom and liberty.
-- Henrik Ibsen

2002-10-03 08:23:15

by jbradford

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

> While 2.5 has worked better than I hoped for so far, I do have a problem
> with the new input layer (I think) that is easily reproducible, and quite
> irritating.
>
> If I press and hold my left Alt key, press and release the right AltGr
> key, and then release the left Alt key, I get one of the following
> messages in dmesg:

[snip]

> The same thing happens for a few other combinations as well. I happens
> both in X and in the console.

I am getting similar odd behavior with 2.5.40 and a Japanese keyboard. Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I get unknown key messages in dmesg.

I posted about this a while ago, but I don't think anybody noticed :-)

John.

2002-10-03 08:43:37

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 09:36:05AM +0100, [email protected] wrote:
> > While 2.5 has worked better than I hoped for so far, I do have a problem
> > with the new input layer (I think) that is easily reproducible, and quite
> > irritating.
> >
> > If I press and hold my left Alt key, press and release the right AltGr
> > key, and then release the left Alt key, I get one of the following
> > messages in dmesg:
>
> [snip]
>
> > The same thing happens for a few other combinations as well. I happens
> > both in X and in the console.
>
> I am getting similar odd behavior with 2.5.40 and a Japanese keyboard. Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I get unknown key messages in dmesg.
>
> I posted about this a while ago, but I don't think anybody noticed :-)

Can you #define I8042_DEBUG_IO in i8042.h and send me the 'dmesg' output
of the unknown key message and data around it?

--
Vojtech Pavlik
SuSE Labs

2002-10-03 08:42:26

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 08:59:30AM +0200, Tobias Ringstrom wrote:
> While 2.5 has worked better than I hoped for so far, I do have a problem
> with the new input layer (I think) that is easily reproducible, and quite
> irritating.
>
> If I press and hold my left Alt key, press and release the right AltGr
> key, and then release the left Alt key, I get one of the following
> messages in dmesg:
>
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x9d, on isa0060/serio0) pressed.
> atkbd.c: Unknown key (set 2, scancode 0x9d, on isa0060/serio0) pressed.
>
> The left Alt key is now stuck until I press and release it again.
>
> The same thing happens for a few other combinations as well. I happens
> both in X and in the console.
>
> Please let me know if you need more info.

Yes, please try with #I8042_DEBUG_IO enabled, try all the suspicious key
combinations and add comments to the log file which is which. This will
allow me to fix it properly.

Thanks in advance. :)

--
Vojtech Pavlik
SuSE Labs

2002-10-03 10:00:25

by jbradford

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

>
> On Thu, Oct 03, 2002 at 09:36:05AM +0100, [email protected] wrote:
> > > While 2.5 has worked better than I hoped for so far, I do have a problem
> > > with the new input layer (I think) that is easily reproducible, and quite
> > > irritating.
> > >
> > > If I press and hold my left Alt key, press and release the right AltGr
> > > key, and then release the left Alt key, I get one of the following
> > > messages in dmesg:
> >
> > [snip]
> >
> > > The same thing happens for a few other combinations as well. I happens
> > > both in X and in the console.
> >
> > I am getting similar odd behavior with 2.5.40 and a Japanese keyboard. Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I get unknown key messages in dmesg.
> >
> > I posted about this a while ago, but I don't think anybody noticed :-)
>
> Can you #define I8042_DEBUG_IO in i8042.h and send me the 'dmesg' output
> of the unknown key message and data around it?

OK, that was fun - every time I managed to cause the error, by the time I'd switched to another VT, and typed dmesg, it was flooded with other keypresses :-). I should have used a serial terminal, but anyway, here goes:

i8042.c: fa <- i8042 (interrupt, kbd, 1) [694909]
i8042.c: f0 -> i8042 (kbd-data) [694909]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [694912]
i8042.c: 00 -> i8042 (kbd-data) [694912]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [694915]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [694916]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [694937]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [694943]
i8042.c: 38 <- i8042 (interrupt, kbd, 1) [696272]
i8042.c: 3d <- i8042 (interrupt, kbd, 1) [696372]
i8042.c: bd <- i8042 (interrupt, kbd, 1) [696440]
i8042.c: b8 <- i8042 (interrupt, kbd, 1) [696446]
i8042.c: 1c <- i8042 (interrupt, kbd, 1) [697112]

This was in the syslog:

Oct 3 10:54:59 darkstar kernel: atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.

I am unable to reproduce this by pressing any single key. Only by repeatedly pressing many keys, (I.E. bashing the keyboard like mad), does this occur, (and not always with the same scancode). Very odd.

This particular IBM Japanese keyboard seems to be even more exotic than most, in several ways, that might be relevant:

The Henkaku/Zenkaku key, which is in the top left, below escape, does not have a scancode by default, I.E. showkey -s reports nothing when it is pressed.

The three kana shift keys, (one between alt and the spacebar, and two between alt-gr and the spacebar), which are marked differently to any other Japanese keyboard I've ever seen, all report the keycode 57, and scancode 0x39 when pressed, and scancode 0xb9 when released - the same as the space bar. Therefore it doesn't seem possible to use them as independent keys.

The keyboard has a speaker in it, and a volume control, but it's never made a single noise, apart from a click when it's switched on, (so it does work).

This is a very strange keyboard :-). 94X1110 is the IBM part number.

John.

2002-10-03 10:08:08

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 11:14:02AM +0100, [email protected] wrote:
> >
> > On Thu, Oct 03, 2002 at 09:36:05AM +0100, [email protected] wrote:
> > > > While 2.5 has worked better than I hoped for so far, I do have a problem
> > > > with the new input layer (I think) that is easily reproducible, and quite
> > > > irritating.
> > > >
> > > > If I press and hold my left Alt key, press and release the right AltGr
> > > > key, and then release the left Alt key, I get one of the following
> > > > messages in dmesg:
> > >
> > > [snip]
> > >
> > > > The same thing happens for a few other combinations as well. I happens
> > > > both in X and in the console.
> > >
> > > I am getting similar odd behavior with 2.5.40 and a Japanese keyboard. Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I get unknown key messages in dmesg.
> > >
> > > I posted about this a while ago, but I don't think anybody noticed :-)
> >
> > Can you #define I8042_DEBUG_IO in i8042.h and send me the 'dmesg' output
> > of the unknown key message and data around it?
>
> OK, that was fun - every time I managed to cause the error, by the time I'd switched to another VT, and typed dmesg, it was flooded with other keypresses :-). I should have used a serial terminal, but anyway, here goes:
>
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [694909]
> i8042.c: f0 -> i8042 (kbd-data) [694909]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [694912]
> i8042.c: 00 -> i8042 (kbd-data) [694912]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [694915]
> i8042.c: 41 <- i8042 (interrupt, kbd, 1) [694916]
> input: AT Set 2 keyboard on isa0060/serio0
> i8042.c: 94 <- i8042 (interrupt, kbd, 1) [694937]
> i8042.c: a3 <- i8042 (interrupt, kbd, 1) [694943]
> i8042.c: 38 <- i8042 (interrupt, kbd, 1) [696272]
> i8042.c: 3d <- i8042 (interrupt, kbd, 1) [696372]
> i8042.c: bd <- i8042 (interrupt, kbd, 1) [696440]
> i8042.c: b8 <- i8042 (interrupt, kbd, 1) [696446]
> i8042.c: 1c <- i8042 (interrupt, kbd, 1) [697112]
>
> This was in the syslog:
>
> Oct 3 10:54:59 darkstar kernel: atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.

What's on the lines just before this one from i8042.c?

> I am unable to reproduce this by pressing any single key. Only by repeatedly pressing many keys, (I.E. bashing the keyboard like mad), does this occur, (and not always with the same scancode). Very odd.
>
> This particular IBM Japanese keyboard seems to be even more exotic than most, in several ways, that might be relevant:
>
> The Henkaku/Zenkaku key, which is in the top left, below escape, does not have a scancode by default, I.E. showkey -s reports nothing when it is pressed.

showkey -s doesn't return true rawmode anymore because of USB keyboards,
etc. So I'll need the dmesg log of these keys pressed.

> The three kana shift keys, (one between alt and the spacebar, and two between alt-gr and the spacebar), which are marked differently to any other Japanese keyboard I've ever seen, all report the keycode 57, and scancode 0x39 when pressed, and scancode 0xb9 when released - the same as the space bar. Therefore it doesn't seem possible to use them as independent keys.

Again, the dmesg log for these would be more interesting.

> The keyboard has a speaker in it, and a volume control, but it's never made a single noise, apart from a click when it's switched on, (so it does work).
>
> This is a very strange keyboard :-). 94X1110 is the IBM part number.
>
> John.

--
Vojtech Pavlik
SuSE Labs

2002-10-03 11:20:43

by jbradford

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

> On Thu, Oct 03, 2002 at 11:14:02AM +0100, [email protected] wrote:
> > >
> > > On Thu, Oct 03, 2002 at 09:36:05AM +0100, [email protected] wrote:
> > > > > While 2.5 has worked better than I hoped for so far, I do have a problem
> > > > > with the new input layer (I think) that is easily reproducible, and quite
> > > > > irritating.
> > > > >
> > > > > If I press and hold my left Alt key, press and release the right AltGr
> > > > > key, and then release the left Alt key, I get one of the following
> > > > > messages in dmesg:
> > > >
> > > > [snip]
> > > >
> > > > > The same thing happens for a few other combinations as well. I happens
> > > > > both in X and in the console.
> > > >
> > > > I am getting similar odd behavior with 2.5.40 and a Japanese keyboard.
> > > > Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I
> > > > get unknown key messages in dmesg.
> > > >
> > > > I posted about this a while ago, but I don't think anybody noticed :-)
> > >
> > > Can you #define I8042_DEBUG_IO in i8042.h and send me the 'dmesg' output
> > > of the unknown key message and data around it?
> >
> > OK, that was fun - every time I managed to cause the error, by the time I'd
> > switched to another VT, and typed dmesg, it was flooded with other keypresses
> > :-). I should have used a serial terminal, but anyway, here goes:
> >
> > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694909]
> > i8042.c: f0 -> i8042 (kbd-data) [694909]
> > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694912]
> > i8042.c: 00 -> i8042 (kbd-data) [694912]
> > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694915]
> > i8042.c: 41 <- i8042 (interrupt, kbd, 1) [694916]
> > input: AT Set 2 keyboard on isa0060/serio0
> > i8042.c: 94 <- i8042 (interrupt, kbd, 1) [694937]
> > i8042.c: a3 <- i8042 (interrupt, kbd, 1) [694943]
> > i8042.c: 38 <- i8042 (interrupt, kbd, 1) [696272]
> > i8042.c: 3d <- i8042 (interrupt, kbd, 1) [696372]
> > i8042.c: bd <- i8042 (interrupt, kbd, 1) [696440]
> > i8042.c: b8 <- i8042 (interrupt, kbd, 1) [696446]
> > i8042.c: 1c <- i8042 (interrupt, kbd, 1) [697112]
> >
> > This was in the syslog:
> >
> > Oct 3 10:54:59 darkstar kernel: atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
>
> What's on the lines just before this one from i8042.c?

Forget the above report, I've since done a more comprehensive one, (below):

> > I am unable to reproduce this by pressing any single key. Only by repeatedly
> > pressing many keys, (I.E. bashing the keyboard like mad), does this occur,
> > (and not always with the same scancode). Very odd.
> >
> > This particular IBM Japanese keyboard seems to be even more exotic than most,
> > in several ways, that might be relevant:
> >
> > The Henkaku/Zenkaku key, which is in the top left, below escape, does not have
> > a scancode by default, I.E. showkey -s reports nothing when it is pressed.
>
> showkey -s doesn't return true rawmode anymore because of USB keyboards,
> etc. So I'll need the dmesg log of these keys pressed.

Hmmm, but it's never worked since the 2.0.x days, (I've used this keyboard for over 5 years).

> > The three kana shift keys, (one between alt and the spacebar, and two between
> > alt-gr and the spacebar), which are marked differently to any other Japanese
> > keyboard I've ever seen, all report the keycode 57, and scancode 0x39 when
> > pressed, and scancode 0xb9 when released - the same as the space bar.
> > Therefore it doesn't seem possible to use them as independent keys.
>
> Again, the dmesg log for these would be more interesting.

OK, here goes. This is dmesg output from a serial terminal, showing a boot, (quite a lot of keyboard activity during boot, not sure if this is normal or not), and a single keypress of Henkaku/Zenkaku:

Linux version 2.5.40 (root@darkstar) (gcc version 2.95.3 20010315 (release)) #11 Thu Oct 3 10:37:32 BST 2002
Video mode to be used for restore is ffff
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000008000000 (usable)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
128MB LOWMEM available.
On node 0 totalpages: 32768
DMA zone: 4096 pages
Normal zone: 28672 pages
HighMem zone: 0 pages
Building zonelist for node : 0
Kernel command line: BOOT_IMAGE=linux-debug ro root=301
Initializing CPU#0
Detected 200.459 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 396.28 BogoMIPS
Memory: 127388k/131072k available (1104k kernel code, 3300k reserved, 335k data, 224k init, 0k highmem)
Security Scaffold v1.0.0 initialized
Dentry-cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode-cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Before vendor init, caps: 008001bf 00000000 00000000, vendor = 0
Intel Pentium with F0 0F bug - workaround enabled.
CPU: After vendor init, caps: 008001bf 00000000 00000000 00000000
CPU: After generic, caps: 008001bf 00000000 00000000 00000000
CPU: Common caps: 008001bf 00000000 00000000 00000000
CPU: Intel Pentium MMX stepping 03
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
PCI: PCI BIOS revision 2.10 entry at 0xfb460, last bus=0
PCI: Using configuration type 1
adding '' to cpu class interfaces
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
Starting kswapd
BIO: pool of 256 setup, 14Kb (56 bytes/bio)
biovec pool[0]: 1 bvecs: 246 entries (12 bytes)
biovec pool[1]: 4 bvecs: 246 entries (48 bytes)
biovec pool[2]: 16 bvecs: 246 entries (192 bytes)
biovec pool[3]: 64 bvecs: 246 entries (768 bytes)
biovec pool[4]: 128 bvecs: 123 entries (1536 bytes)
biovec pool[5]: 256 bvecs: 61 entries (3072 bytes)
aio_setup: sizeof(struct page) = 40
Capability LSM initialized
Limiting direct PCI/PCI transfers.
Activating ISA DMA hang workarounds.
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
block request queues:
128 requests per read queue
128 requests per write queue
8 requests per batch
enter congestion at 31
exit congestion at 33
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
PPP generic driver version 2.4.2
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX3: IDE controller at PCI slot 00:07.1
PIIX3: chipset revision 0
PIIX3: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
hda: Maxtor 90432D2, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: host protected area => 1
hda: 8440992 sectors (4322 MB) w/512KiB Cache, CHS=525/255/63, (U)DMA
hda: hda1
SCSI subsystem driver Revision: 1.00
scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.4
<Adaptec 2940A Ultra SCSI adapter>
aic7860: Ultra Single Channel A, SCSI Id=7, 3/253 SCBs

Vendor: NEC Model: CD-ROM DRIVE:462 Rev: 1.16
Type: CD-ROM ANSI SCSI revision: 02
(scsi0:A:1): 10.000MB/s transfers (10.000MHz, offset 15)
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 1, lun 0
sr0: scsi-1 drive
Uniform CD-ROM driver Revision: 3.12
input: PC Speaker
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: d3 -> i8042 (command) [0]
i8042.c: 5a -> i8042 (parameter) [0]
i8042.c: a5 <- i8042 (return) [0]
i8042.c: a9 -> i8042 (command) [0]
i8042.c: 00 <- i8042 (return) [0]
i8042.c: a7 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 76 <- i8042 (return) [1]
i8042.c: a8 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 56 <- i8042 (return) [1]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 74 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 54 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 56 -> i8042 (parameter) [2]
i8042.c: d4 -> i8042 (command) [2]
i8042.c: ed -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [56]
i8042.c: 54 -> i8042 (parameter) [56]
i8042.c: fe <- i8042 (interrupt, aux, 12, timeout) [57]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [57]
i8042.c: 44 -> i8042 (parameter) [57]
i8042.c: 60 -> i8042 (command) [57]
i8042.c: 45 -> i8042 (parameter) [57]
i8042.c: ed -> i8042 (kbd-data) [58]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [60]
i8042.c: 00 -> i8042 (kbd-data) [60]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [63]
i8042.c: f2 -> i8042 (kbd-data) [63]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [66]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [67]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [68]
i8042.c: f8 -> i8042 (kbd-data) [68]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [71]
i8042.c: f4 -> i8042 (kbd-data) [71]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [75]
i8042.c: ea -> i8042 (kbd-data) [75]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [78]
i8042.c: f0 -> i8042 (kbd-data) [78]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [81]
i8042.c: 02 -> i8042 (kbd-data) [81]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [83]
i8042.c: f0 -> i8042 (kbd-data) [83]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [86]
i8042.c: 00 -> i8042 (kbd-data) [86]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [89]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [90]
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
ip_conntrack version 2.1 (1024 buckets, 8192 max) - 292 bytes per conntrack
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 224k freed
i8042.c: ff <- i8042 (interrupt, kbd, 1) [60446]

..and this is a boot followed by a press of the four keys - '???', 'space', '???', 'hiragana/romaji characters', (I can't read the text on the ones marked '???').

Linux version 2.5.40 (root@darkstar) (gcc version 2.95.3 20010315 (release)) #11 Thu Oct 3 10:37:32 BST 2002
Video mode to be used for restore is ffff
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000008000000 (usable)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
128MB LOWMEM available.
On node 0 totalpages: 32768
DMA zone: 4096 pages
Normal zone: 28672 pages
HighMem zone: 0 pages
Building zonelist for node : 0
Kernel command line: BOOT_IMAGE=linux-debug ro root=301
Initializing CPU#0
Detected 200.483 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 396.28 BogoMIPS
Memory: 127388k/131072k available (1104k kernel code, 3300k reserved, 335k data, 224k init, 0k highmem)
Security Scaffold v1.0.0 initialized
Dentry-cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode-cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Before vendor init, caps: 008001bf 00000000 00000000, vendor = 0
Intel Pentium with F0 0F bug - workaround enabled.
CPU: After vendor init, caps: 008001bf 00000000 00000000 00000000
CPU: After generic, caps: 008001bf 00000000 00000000 00000000
CPU: Common caps: 008001bf 00000000 00000000 00000000
CPU: Intel Pentium MMX stepping 03
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
PCI: PCI BIOS revision 2.10 entry at 0xfb460, last bus=0
PCI: Using configuration type 1
adding '' to cpu class interfaces
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
Starting kswapd
BIO: pool of 256 setup, 14Kb (56 bytes/bio)
biovec pool[0]: 1 bvecs: 246 entries (12 bytes)
biovec pool[1]: 4 bvecs: 246 entries (48 bytes)
biovec pool[2]: 16 bvecs: 246 entries (192 bytes)
biovec pool[3]: 64 bvecs: 246 entries (768 bytes)
biovec pool[4]: 128 bvecs: 123 entries (1536 bytes)
biovec pool[5]: 256 bvecs: 61 entries (3072 bytes)
aio_setup: sizeof(struct page) = 40
Capability LSM initialized
Limiting direct PCI/PCI transfers.
Activating ISA DMA hang workarounds.
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
block request queues:
128 requests per read queue
128 requests per write queue
8 requests per batch
enter congestion at 31
exit congestion at 33
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
PPP generic driver version 2.4.2
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX3: IDE controller at PCI slot 00:07.1
PIIX3: chipset revision 0
PIIX3: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
hda: Maxtor 90432D2, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: host protected area => 1
hda: 8440992 sectors (4322 MB) w/512KiB Cache, CHS=525/255/63, (U)DMA
hda: hda1
SCSI subsystem driver Revision: 1.00
scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.4
<Adaptec 2940A Ultra SCSI adapter>
aic7860: Ultra Single Channel A, SCSI Id=7, 3/253 SCBs

Vendor: NEC Model: CD-ROM DRIVE:462 Rev: 1.16
Type: CD-ROM ANSI SCSI revision: 02
(scsi0:A:1): 10.000MB/s transfers (10.000MHz, offset 15)
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 1, lun 0
sr0: scsi-1 drive
Uniform CD-ROM driver Revision: 3.12
input: PC Speaker
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: d3 -> i8042 (command) [0]
i8042.c: 5a -> i8042 (parameter) [0]
i8042.c: a5 <- i8042 (return) [0]
i8042.c: a9 -> i8042 (command) [1]
i8042.c: 00 <- i8042 (return) [1]
i8042.c: a7 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 76 <- i8042 (return) [1]
i8042.c: a8 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 56 <- i8042 (return) [1]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 74 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 54 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 56 -> i8042 (parameter) [2]
i8042.c: d4 -> i8042 (command) [2]
i8042.c: ed -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [56]
i8042.c: 54 -> i8042 (parameter) [56]
i8042.c: fe <- i8042 (interrupt, aux, 12, timeout) [57]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [57]
i8042.c: 44 -> i8042 (parameter) [57]
i8042.c: 60 -> i8042 (command) [57]
i8042.c: 45 -> i8042 (parameter) [57]
i8042.c: ed -> i8042 (kbd-data) [58]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [61]
i8042.c: 00 -> i8042 (kbd-data) [61]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [63]
i8042.c: f2 -> i8042 (kbd-data) [63]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [66]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [67]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [69]
i8042.c: f8 -> i8042 (kbd-data) [69]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [72]
i8042.c: f4 -> i8042 (kbd-data) [72]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [75]
i8042.c: ea -> i8042 (kbd-data) [75]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [78]
i8042.c: f0 -> i8042 (kbd-data) [78]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [81]
i8042.c: 02 -> i8042 (kbd-data) [81]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [84]
i8042.c: f0 -> i8042 (kbd-data) [84]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [87]
i8042.c: 00 -> i8042 (kbd-data) [87]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [89]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [90]
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
ip_conntrack version 2.1 (1024 buckets, 8192 max) - 292 bytes per conntrack
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 224k freed
i8042.c: 39 <- i8042 (interrupt, kbd, 1) [48100]
i8042.c: b9 <- i8042 (interrupt, kbd, 1) [48204]
i8042.c: 39 <- i8042 (interrupt, kbd, 1) [49910]
i8042.c: b9 <- i8042 (interrupt, kbd, 1) [50005]
i8042.c: 39 <- i8042 (interrupt, kbd, 1) [51453]
i8042.c: b9 <- i8042 (interrupt, kbd, 1) [51548]
i8042.c: 39 <- i8042 (interrupt, kbd, 1) [57544]
i8042.c: b9 <- i8042 (interrupt, kbd, 1) [57638]

..finally, this is the output of a 'bashing away at t, h, ; and @' session:

input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [202218]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [202228]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [202231]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202245]
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [202247]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [202254]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [202282]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202286]
i8042.c: 60 -> i8042 (command) [202286]
i8042.c: 44 -> i8042 (parameter) [202286]
i8042.c: 60 -> i8042 (command) [202286]
i8042.c: 45 -> i8042 (parameter) [202286]
i8042.c: ed -> i8042 (kbd-data) [202286]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202289]
i8042.c: 00 -> i8042 (kbd-data) [202289]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202292]
i8042.c: f2 -> i8042 (kbd-data) [202292]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202296]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [202297]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [202298]
i8042.c: f8 -> i8042 (kbd-data) [202298]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202301]
i8042.c: f4 -> i8042 (kbd-data) [202301]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202305]
i8042.c: ea -> i8042 (kbd-data) [202305]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [202308]
i8042.c: f0 -> i8042 (kbd-data) [202308]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202311]
i8042.c: 02 -> i8042 (kbd-data) [202311]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202313]
i8042.c: f0 -> i8042 (kbd-data) [202313]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202316]
i8042.c: 00 -> i8042 (kbd-data) [202316]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202319]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [202320]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [202333]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [202339]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [202355]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [202358]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202364]
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [202367]
i8042.c: a7 <- i8042 (interrupt, kbd, 1) [202418]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [202421]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [202431]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202434]
i8042.c: 60 -> i8042 (command) [202434]
i8042.c: 44 -> i8042 (parameter) [202434]
i8042.c: 60 -> i8042 (command) [202435]
i8042.c: 45 -> i8042 (parameter) [202435]
i8042.c: ed -> i8042 (kbd-data) [202435]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202439]
i8042.c: 00 -> i8042 (kbd-data) [202439]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202442]
i8042.c: f2 -> i8042 (kbd-data) [202442]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202445]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [202446]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [202447]
i8042.c: f8 -> i8042 (kbd-data) [202447]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202450]
i8042.c: f4 -> i8042 (kbd-data) [202450]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202454]
i8042.c: ea -> i8042 (kbd-data) [202454]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [202457]
i8042.c: f0 -> i8042 (kbd-data) [202457]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202460]
i8042.c: 02 -> i8042 (kbd-data) [202460]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202462]
i8042.c: f0 -> i8042 (kbd-data) [202462]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202465]
i8042.c: 00 -> i8042 (kbd-data) [202465]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202468]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [202469]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [202483]
atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [202495]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [202501]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [202510]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [202512]
i8042.c: a7 <- i8042 (interrupt, kbd, 1) [202555]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [202566]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202569]
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [202581]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [202587]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [202642]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [202644]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202652]
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [202654]
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [202665]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [202672]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [202692]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202695]
i8042.c: 60 -> i8042 (command) [202695]
i8042.c: 44 -> i8042 (parameter) [202695]
i8042.c: 60 -> i8042 (command) [202696]
i8042.c: 45 -> i8042 (parameter) [202696]
i8042.c: ed -> i8042 (kbd-data) [202696]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202699]
i8042.c: 00 -> i8042 (kbd-data) [202699]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202701]
i8042.c: f2 -> i8042 (kbd-data) [202701]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202705]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [202707]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [202708]
i8042.c: f8 -> i8042 (kbd-data) [202708]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202711]
i8042.c: f4 -> i8042 (kbd-data) [202711]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202714]
i8042.c: ea -> i8042 (kbd-data) [202714]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [202717]
i8042.c: f0 -> i8042 (kbd-data) [202717]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202720]
i8042.c: 02 -> i8042 (kbd-data) [202720]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202723]
i8042.c: f0 -> i8042 (kbd-data) [202723]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202726]
i8042.c: 00 -> i8042 (kbd-data) [202726]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202728]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [202729]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [202749]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [202754]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [202774]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [202776]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202783]
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [202786]
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [202815]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [202822]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [202832]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202836]
i8042.c: 60 -> i8042 (command) [202836]
i8042.c: 44 -> i8042 (parameter) [202836]
i8042.c: 60 -> i8042 (command) [202836]
i8042.c: 45 -> i8042 (parameter) [202836]
i8042.c: ed -> i8042 (kbd-data) [202836]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202839]
i8042.c: 00 -> i8042 (kbd-data) [202839]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202842]
i8042.c: f2 -> i8042 (kbd-data) [202842]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202846]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [202847]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [202848]
i8042.c: f8 -> i8042 (kbd-data) [202848]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202851]
i8042.c: f4 -> i8042 (kbd-data) [202851]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202855]
i8042.c: ea -> i8042 (kbd-data) [202855]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [202858]
i8042.c: f0 -> i8042 (kbd-data) [202858]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202861]
i8042.c: 02 -> i8042 (kbd-data) [202861]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202863]
i8042.c: f0 -> i8042 (kbd-data) [202863]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202866]
i8042.c: 00 -> i8042 (kbd-data) [202866]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202869]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [202870]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [202891]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [202901]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [202904]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202918]
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [202920]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [202926]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [202954]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [202958]
i8042.c: 60 -> i8042 (command) [202958]
i8042.c: 44 -> i8042 (parameter) [202958]
i8042.c: 60 -> i8042 (command) [202958]
i8042.c: 45 -> i8042 (parameter) [202958]
i8042.c: ed -> i8042 (kbd-data) [202958]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202961]
i8042.c: 00 -> i8042 (kbd-data) [202961]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202964]
i8042.c: f2 -> i8042 (kbd-data) [202964]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202967]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [202968]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [202969]
i8042.c: f8 -> i8042 (kbd-data) [202969]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202973]
i8042.c: f4 -> i8042 (kbd-data) [202973]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202977]
i8042.c: ea -> i8042 (kbd-data) [202977]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [202980]
i8042.c: f0 -> i8042 (kbd-data) [202980]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202983]
i8042.c: 02 -> i8042 (kbd-data) [202983]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202985]
i8042.c: f0 -> i8042 (kbd-data) [202985]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202988]
i8042.c: 00 -> i8042 (kbd-data) [202988]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [202991]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [202992]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [202998]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [203004]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [203020]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [203022]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203030]
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [203032]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [203072]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [203082]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203086]
i8042.c: 60 -> i8042 (command) [203086]
i8042.c: 44 -> i8042 (parameter) [203086]
i8042.c: 60 -> i8042 (command) [203086]
i8042.c: 45 -> i8042 (parameter) [203086]
i8042.c: ed -> i8042 (kbd-data) [203086]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203091]
i8042.c: 00 -> i8042 (kbd-data) [203091]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203093]
i8042.c: f2 -> i8042 (kbd-data) [203093]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203096]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [203097]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [203099]
i8042.c: f8 -> i8042 (kbd-data) [203099]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203102]
i8042.c: f4 -> i8042 (kbd-data) [203102]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203106]
i8042.c: ea -> i8042 (kbd-data) [203106]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [203109]
i8042.c: f0 -> i8042 (kbd-data) [203109]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203112]
i8042.c: 02 -> i8042 (kbd-data) [203112]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203115]
i8042.c: f0 -> i8042 (kbd-data) [203115]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203118]
i8042.c: 00 -> i8042 (kbd-data) [203118]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203120]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [203121]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [203136]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [203146]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [203149]
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [203163]
atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [203170]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [203207]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203210]
i8042.c: a7 <- i8042 (interrupt, kbd, 1) [203216]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [203236]
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [203246]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [203267]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [203270]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203276]
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [203278]
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [203317]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [203333]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [203343]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203347]
i8042.c: 60 -> i8042 (command) [203347]
i8042.c: 44 -> i8042 (parameter) [203347]
i8042.c: 60 -> i8042 (command) [203347]
i8042.c: 45 -> i8042 (parameter) [203347]
i8042.c: ed -> i8042 (kbd-data) [203347]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203350]
i8042.c: 00 -> i8042 (kbd-data) [203350]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203353]
i8042.c: f2 -> i8042 (kbd-data) [203353]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203356]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [203357]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [203358]
i8042.c: f8 -> i8042 (kbd-data) [203358]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203362]
i8042.c: f4 -> i8042 (kbd-data) [203362]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203366]
i8042.c: ea -> i8042 (kbd-data) [203366]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [203369]
i8042.c: f0 -> i8042 (kbd-data) [203369]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203372]
i8042.c: 02 -> i8042 (kbd-data) [203372]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203374]
i8042.c: f0 -> i8042 (kbd-data) [203374]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203377]
i8042.c: 00 -> i8042 (kbd-data) [203377]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203380]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [203381]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [203402]
i8042.c: 2a <- i8042 (interrupt, kbd, 1) [203412]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [203415]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203429]
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [203432]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [203438]
i8042.c: 83 <- i8042 (interrupt, kbd, 1) [203467]
i8042.c: aa <- i8042 (interrupt, kbd, 1) [203470]
i8042.c: 60 -> i8042 (command) [203470]
i8042.c: 44 -> i8042 (parameter) [203470]
i8042.c: 60 -> i8042 (command) [203470]
i8042.c: 45 -> i8042 (parameter) [203470]
i8042.c: ed -> i8042 (kbd-data) [203471]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203474]
i8042.c: 00 -> i8042 (kbd-data) [203474]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203476]
i8042.c: f2 -> i8042 (kbd-data) [203476]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203480]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [203481]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [203482]
i8042.c: f8 -> i8042 (kbd-data) [203482]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203486]
i8042.c: f4 -> i8042 (kbd-data) [203486]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203489]
i8042.c: ea -> i8042 (kbd-data) [203489]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [203492]
i8042.c: f0 -> i8042 (kbd-data) [203492]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203495]
i8042.c: 02 -> i8042 (kbd-data) [203495]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203497]
i8042.c: f0 -> i8042 (kbd-data) [203498]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203501]
i8042.c: 00 -> i8042 (kbd-data) [203501]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203503]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [203504]
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [203512]
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [203522]
i8042.c: 27 <- i8042 (interrupt, kbd, 1) [203549]
i8042.c: 23 <- i8042 (interrupt, kbd, 1) [203581]
i8042.c: 14 <- i8042 (interrupt, kbd, 1) [203591]
i8042.c: a7 <- i8042 (interrupt, kbd, 1) [203606]
i8042.c: 94 <- i8042 (interrupt, kbd, 1) [203663]
i8042.c: a3 <- i8042 (interrupt, kbd, 1) [203677]
i8042.c: 1d <- i8042 (interrupt, kbd, 1) [205982]
i8042.c: 11 <- i8042 (interrupt, kbd, 1) [206144]
i8042.c: 91 <- i8042 (interrupt, kbd, 1) [206284]
i8042.c: 9d <- i8042 (interrupt, kbd, 1) [206457]

My interpretation of all this is that Henkaku/Zenkaku is reporting a weird scancode, (FF), the characterset selection keys are all acting as a spacebar, and something is confusing it in to go in to a different 'mode' or something during the bashing session.

Incidently, I think there must be a secret key combination to switch the logic in this keyboard to something more Japanese - the key that I am using successfully as ALT, is labelled as follows on the keytop:

KANJI

KATAKANA

and on the front of the key, it says 'KANJI something' in green, (I can't understand all of it).

So, obviously this key is not supposed to be used as ALT, despite being in the position of ALT.

I suspect that they keyboard can emulate a US or Japanese keyboard, and it's stuck in US mode, but who knows?

> > The keyboard has a speaker in it, and a volume control, but it's never made a single noise,
> > apart from a click when it's switched on, (so it does work).
> >
> > This is a very strange keyboard :-). 94X1110 is the IBM part number.

John.

2002-10-03 11:26:34

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 12:34:15PM +0100, [email protected] wrote:
> > On Thu, Oct 03, 2002 at 11:14:02AM +0100, [email protected] wrote:
> > > >
> > > > On Thu, Oct 03, 2002 at 09:36:05AM +0100, [email protected] wrote:
> > > > > > While 2.5 has worked better than I hoped for so far, I do have a problem
> > > > > > with the new input layer (I think) that is easily reproducible, and quite
> > > > > > irritating.
> > > > > >
> > > > > > If I press and hold my left Alt key, press and release the right AltGr
> > > > > > key, and then release the left Alt key, I get one of the following
> > > > > > messages in dmesg:
> > > > >
> > > > > [snip]
> > > > >
> > > > > > The same thing happens for a few other combinations as well. I happens
> > > > > > both in X and in the console.
> > > > >
> > > > > I am getting similar odd behavior with 2.5.40 and a Japanese keyboard.
> > > > > Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I
> > > > > get unknown key messages in dmesg.
> > > > >
> > > > > I posted about this a while ago, but I don't think anybody noticed :-)
> > > >
> > > > Can you #define I8042_DEBUG_IO in i8042.h and send me the 'dmesg' output
> > > > of the unknown key message and data around it?
> > >
> > > OK, that was fun - every time I managed to cause the error, by the time I'd
> > > switched to another VT, and typed dmesg, it was flooded with other keypresses
> > > :-). I should have used a serial terminal, but anyway, here goes:
> > >
> > > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694909]
> > > i8042.c: f0 -> i8042 (kbd-data) [694909]
> > > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694912]
> > > i8042.c: 00 -> i8042 (kbd-data) [694912]
> > > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694915]
> > > i8042.c: 41 <- i8042 (interrupt, kbd, 1) [694916]
> > > input: AT Set 2 keyboard on isa0060/serio0
> > > i8042.c: 94 <- i8042 (interrupt, kbd, 1) [694937]
> > > i8042.c: a3 <- i8042 (interrupt, kbd, 1) [694943]
> > > i8042.c: 38 <- i8042 (interrupt, kbd, 1) [696272]
> > > i8042.c: 3d <- i8042 (interrupt, kbd, 1) [696372]
> > > i8042.c: bd <- i8042 (interrupt, kbd, 1) [696440]
> > > i8042.c: b8 <- i8042 (interrupt, kbd, 1) [696446]
> > > i8042.c: 1c <- i8042 (interrupt, kbd, 1) [697112]
> > >
> > > This was in the syslog:
> > >
> > > Oct 3 10:54:59 darkstar kernel: atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
> >
> > What's on the lines just before this one from i8042.c?
>
> Forget the above report, I've since done a more comprehensive one, (below):

Yes, that one is perfect. Now some more tests to do with the keyboard:

1) The same with i8042_direct on the kernel command line.
2) The same with i8042_direct and atkbd_set=3 on the kernel command line.

It may make the extra keyboards work and will definitely explain what's
happening in greater detail.

--
Vojtech Pavlik
SuSE Labs

2002-10-03 12:03:01

by Tobias Ringstrom

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, 3 Oct 2002, Vojtech Pavlik wrote:

> Yes, please try with #I8042_DEBUG_IO enabled, try all the suspicious key
> combinations and add comments to the log file which is which. This will
> allow me to fix it properly.

I hope this is enough. There are more combinations, I'm sure. I hope
that it is one bug causing them all, though.

/Tobias


Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 20 <- i8042 (interrupt, kbd, 1) [44928]
Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: a0 <- i8042 (interrupt, kbd, 1) [45011]
Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 32 <- i8042 (interrupt, kbd, 1) [45036]
Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: b2 <- i8042 (interrupt, kbd, 1) [45110]
Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 12 <- i8042 (interrupt, kbd, 1) [45114]
Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 92 <- i8042 (interrupt, kbd, 1) [45185]
Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 1f <- i8042 (interrupt, kbd, 1) [45274]
Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 22 <- i8042 (interrupt, kbd, 1) [45307]
Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 9f <- i8042 (interrupt, kbd, 1) [45329]
Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: a2 <- i8042 (interrupt, kbd, 1) [45373]
Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [45495]
Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [45547]
Oct 3 13:59:46 gtbdhcp105 kernel: i8042.c: 1d <- i8042 (interrupt, kbd, 1) [51078]
Oct 3 13:59:47 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [51315]
Oct 3 13:59:47 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [51484]
Oct 3 13:59:47 gtbdhcp105 kernel: i8042.c: 9d <- i8042 (interrupt, kbd, 1) [51764]
Oct 3 13:59:48 gtbdhcp105 kernel: i8042.c: 1d <- i8042 (interrupt, kbd, 1) [53237]
Oct 3 13:59:49 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [53459]
Oct 3 13:59:49 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [53640]
Oct 3 13:59:49 gtbdhcp105 kernel: i8042.c: 9d <- i8042 (interrupt, kbd, 1) [53905]
Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [54660]
Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [54751]
Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [54926]
Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [55022]
Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [56998]
Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57243]
Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57273]
Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57304]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57334]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57365]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57395]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [57410]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57415]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [57596]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [57605]
Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [57955]
Oct 3 13:59:53 gtbdhcp105 kernel: atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [59584]
Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [59683]
Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [59875]
Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [59974]
Oct 3 13:59:56 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [61228]
Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [61311]
Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [61721]
Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [61838]
Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [62137]
Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [62248]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [62980]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [62985]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [63229]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [63233]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [63263]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [63268]
Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [63283]
Oct 3 13:59:59 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [63505]
Oct 3 13:59:59 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [63932]
Oct 3 13:59:59 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [63941]
Oct 3 13:59:59 gtbdhcp105 kernel: atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [65563]
Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [65567]
Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [65676]
Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [65685]
Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [66281]
Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [66379]
Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [66501]
Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [66576]
Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [66680]
Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [66763]

2002-10-03 12:04:59

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 02:08:26PM +0200, Tobias Ringstrom wrote:
> On Thu, 3 Oct 2002, Vojtech Pavlik wrote:
>
> > Yes, please try with #I8042_DEBUG_IO enabled, try all the suspicious key
> > combinations and add comments to the log file which is which. This will
> > allow me to fix it properly.
>
> I hope this is enough. There are more combinations, I'm sure. I hope
> that it is one bug causing them all, though.

Perfect, thanks.

Are you possible to reproduce it when you use "i8042_direct" on the
kernel command line?

> /Tobias
>
>
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 20 <- i8042 (interrupt, kbd, 1) [44928]
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: a0 <- i8042 (interrupt, kbd, 1) [45011]
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 32 <- i8042 (interrupt, kbd, 1) [45036]
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: b2 <- i8042 (interrupt, kbd, 1) [45110]
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 12 <- i8042 (interrupt, kbd, 1) [45114]
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 92 <- i8042 (interrupt, kbd, 1) [45185]
> Oct 3 13:59:40 gtbdhcp105 kernel: i8042.c: 1f <- i8042 (interrupt, kbd, 1) [45274]
> Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 22 <- i8042 (interrupt, kbd, 1) [45307]
> Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 9f <- i8042 (interrupt, kbd, 1) [45329]
> Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: a2 <- i8042 (interrupt, kbd, 1) [45373]
> Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [45495]
> Oct 3 13:59:41 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [45547]
> Oct 3 13:59:46 gtbdhcp105 kernel: i8042.c: 1d <- i8042 (interrupt, kbd, 1) [51078]
> Oct 3 13:59:47 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [51315]
> Oct 3 13:59:47 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [51484]
> Oct 3 13:59:47 gtbdhcp105 kernel: i8042.c: 9d <- i8042 (interrupt, kbd, 1) [51764]
> Oct 3 13:59:48 gtbdhcp105 kernel: i8042.c: 1d <- i8042 (interrupt, kbd, 1) [53237]
> Oct 3 13:59:49 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [53459]
> Oct 3 13:59:49 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [53640]
> Oct 3 13:59:49 gtbdhcp105 kernel: i8042.c: 9d <- i8042 (interrupt, kbd, 1) [53905]
> Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [54660]
> Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [54751]
> Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [54926]
> Oct 3 13:59:50 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [55022]
> Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [56998]
> Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57243]
> Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57273]
> Oct 3 13:59:52 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57304]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57334]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57365]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57395]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [57410]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [57415]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [57596]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [57605]
> Oct 3 13:59:53 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [57955]
> Oct 3 13:59:53 gtbdhcp105 kernel: atkbd.c: Unknown key (set 2, scancode 0xb8, on isa0060/serio0) pressed.
> Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [59584]
> Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [59683]
> Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [59875]
> Oct 3 13:59:55 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [59974]
> Oct 3 13:59:56 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [61228]
> Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [61311]
> Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [61721]
> Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [61838]
> Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [62137]
> Oct 3 13:59:57 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [62248]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [62980]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [62985]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [63229]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [63233]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [63263]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [63268]
> Oct 3 13:59:58 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [63283]
> Oct 3 13:59:59 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [63505]
> Oct 3 13:59:59 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [63932]
> Oct 3 13:59:59 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [63941]
> Oct 3 13:59:59 gtbdhcp105 kernel: atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [65563]
> Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: 38 <- i8042 (interrupt, kbd, 1) [65567]
> Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: e0 <- i8042 (interrupt, kbd, 1) [65676]
> Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: b8 <- i8042 (interrupt, kbd, 1) [65685]
> Oct 3 14:00:01 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [66281]
> Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [66379]
> Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [66501]
> Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [66576]
> Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 1c <- i8042 (interrupt, kbd, 1) [66680]
> Oct 3 14:00:02 gtbdhcp105 kernel: i8042.c: 9c <- i8042 (interrupt, kbd, 1) [66763]

--
Vojtech Pavlik
SuSE Labs

2002-10-03 12:23:16

by Tobias Ringstrom

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, 3 Oct 2002, Vojtech Pavlik wrote:

> On Thu, Oct 03, 2002 at 02:08:26PM +0200, Tobias Ringstrom wrote:
> > On Thu, 3 Oct 2002, Vojtech Pavlik wrote:
> >
> > > Yes, please try with #I8042_DEBUG_IO enabled, try all the suspicious key
> > > combinations and add comments to the log file which is which. This will
> > > allow me to fix it properly.
> >
> > I hope this is enough. There are more combinations, I'm sure. I hope
> > that it is one bug causing them all, though.
>
> Perfect, thanks.
>
> Are you possible to reproduce it when you use "i8042_direct" on the
> kernel command line?

No, the problem went away.

/Tobias

2002-10-03 12:37:55

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 01:42:02PM +0100, [email protected] wrote:

> > 1) The same with i8042_direct on the kernel command line.
>
> OK, here is the dmesg output - I've cut out things not releating to
> the keyboard. This shows a boot followed by presses of -
> 'Henkaku/Zenkaku', '???', 'space', '???', and 'Hiragana/Romaji':

> i8042.c: 00 <- i8042 (interrupt, kbd, 1) [138631]
> atkbd.c: Unknown key (set 2, scancode 0x0, on isa0060/serio0) pressed.
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199889]
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [199972]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199974]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200469]
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [200554]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200555]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200922]
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201024]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201025]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201415]
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201516]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201518]

Obviously, the keyboard doesn't know how to send these keys in Set 2.

> > 2) The same with i8042_direct and atkbd_set=3 on the kernel command line.
> >
> > It may make the extra keyboards work and will definitely explain what's
> > happening in greater detail.
>
> Right, this one is interesting - same keypresses as above, and this
> time the keys work, (excellent :-) ), Henkaku/Zenkaku is mapped to
> backtick, (as expected, as I am using a Russian keymap), and the other
> extra keys are not mapped to anything, (again, as to be expected).
>
> i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37041]
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [37142]
> i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37143]
> i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41289]
> atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) pressed.
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [41382]
> i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41384]
> atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) released.
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42385]
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [42478]
> i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42480]
> i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43519]
> atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) pressed.
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [43596]
> i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43598]
> atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) released.
> i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45273]
> atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) pressed.
> i8042.c: f0 <- i8042 (interrupt, kbd, 1) [45366]
> i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45367]
> atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) released.

And it is happy in Set 3. Do you by any chance know the names of the
unknown keys so that I could add them to the Set 3 default scancode map?

> Interestingly, I wasn't able to reproduce the bashing multiple keys
> error, using i8042_direct or atkbd_set=3.

Yes, it can only happen without i8042_direct.

--
Vojtech Pavlik
SuSE Labs

2002-10-03 12:26:15

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 02:28:44PM +0200, Tobias Ringstrom wrote:
> On Thu, 3 Oct 2002, Vojtech Pavlik wrote:
>
> > On Thu, Oct 03, 2002 at 02:08:26PM +0200, Tobias Ringstrom wrote:
> > > On Thu, 3 Oct 2002, Vojtech Pavlik wrote:
> > >
> > > > Yes, please try with #I8042_DEBUG_IO enabled, try all the suspicious key
> > > > combinations and add comments to the log file which is which. This will
> > > > allow me to fix it properly.
> > >
> > > I hope this is enough. There are more combinations, I'm sure. I hope
> > > that it is one bug causing them all, though.
> >
> > Perfect, thanks.
> >
> > Are you possible to reproduce it when you use "i8042_direct" on the
> > kernel command line?
>
> No, the problem went away.

Good. You can use that for now, and I'll make a fix so that it works
even without it.

--
Vojtech Pavlik
SuSE Labs

2002-10-03 12:28:50

by jbradford

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

>
> On Thu, Oct 03, 2002 at 12:34:15PM +0100, [email protected] wrote:
> > > On Thu, Oct 03, 2002 at 11:14:02AM +0100, [email protected] wrote:
> > > > >
> > > > > On Thu, Oct 03, 2002 at 09:36:05AM +0100, [email protected] wrote:
> > > > > > > While 2.5 has worked better than I hoped for so far, I do have a problem
> > > > > > > with the new input layer (I think) that is easily reproducible, and quite
> > > > > > > irritating.
> > > > > > >
> > > > > > > If I press and hold my left Alt key, press and release the right AltGr
> > > > > > > key, and then release the left Alt key, I get one of the following
> > > > > > > messages in dmesg:
> > > > > >
> > > > > > [snip]
> > > > > >
> > > > > > > The same thing happens for a few other combinations as well. I happens
> > > > > > > both in X and in the console.
> > > > > >
> > > > > > I am getting similar odd behavior with 2.5.40 and a Japanese keyboard.
> > > > > > Specifically, if I bang away at repeatedly on 't', 'h', '@', and ';', I
> > > > > > get unknown key messages in dmesg.
> > > > > >
> > > > > > I posted about this a while ago, but I don't think anybody noticed :-)
> > > > >
> > > > > Can you #define I8042_DEBUG_IO in i8042.h and send me the 'dmesg' output
> > > > > of the unknown key message and data around it?
> > > >
> > > > OK, that was fun - every time I managed to cause the error, by the time I'd
> > > > switched to another VT, and typed dmesg, it was flooded with other keypresses
> > > > :-). I should have used a serial terminal, but anyway, here goes:
> > > >
> > > > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694909]
> > > > i8042.c: f0 -> i8042 (kbd-data) [694909]
> > > > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694912]
> > > > i8042.c: 00 -> i8042 (kbd-data) [694912]
> > > > i8042.c: fa <- i8042 (interrupt, kbd, 1) [694915]
> > > > i8042.c: 41 <- i8042 (interrupt, kbd, 1) [694916]
> > > > input: AT Set 2 keyboard on isa0060/serio0
> > > > i8042.c: 94 <- i8042 (interrupt, kbd, 1) [694937]
> > > > i8042.c: a3 <- i8042 (interrupt, kbd, 1) [694943]
> > > > i8042.c: 38 <- i8042 (interrupt, kbd, 1) [696272]
> > > > i8042.c: 3d <- i8042 (interrupt, kbd, 1) [696372]
> > > > i8042.c: bd <- i8042 (interrupt, kbd, 1) [696440]
> > > > i8042.c: b8 <- i8042 (interrupt, kbd, 1) [696446]
> > > > i8042.c: 1c <- i8042 (interrupt, kbd, 1) [697112]
> > > >
> > > > This was in the syslog:
> > > >
> > > > Oct 3 10:54:59 darkstar kernel: atkbd.c: Unknown key (set 2, scancode 0x94, on isa0060/serio0) pressed.
> > >
> > > What's on the lines just before this one from i8042.c?
> >
> > Forget the above report, I've since done a more comprehensive one, (below):
>
> Yes, that one is perfect. Now some more tests to do with the keyboard:
>
> 1) The same with i8042_direct on the kernel command line.

OK, here is the dmesg output - I've cut out things not releating to the keyboard. This shows a boot followed by presses of - 'Henkaku/Zenkaku', '???', 'space', '???', and 'Hiragana/Romaji':

input: PC Speaker
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 16 -> i8042 (parameter) [0]
i8042.c: d3 -> i8042 (command) [0]
i8042.c: 5a -> i8042 (parameter) [0]
i8042.c: a5 <- i8042 (return) [0]
i8042.c: a9 -> i8042 (command) [1]
i8042.c: 00 <- i8042 (return) [1]
i8042.c: a7 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 36 <- i8042 (return) [1]
i8042.c: a8 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [2]
i8042.c: 16 <- i8042 (return) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 34 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 14 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 16 -> i8042 (parameter) [2]
i8042.c: d4 -> i8042 (command) [2]
i8042.c: ed -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [56]
i8042.c: 14 -> i8042 (parameter) [56]
i8042.c: fe <- i8042 (interrupt, aux, 12, timeout) [57]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [57]
i8042.c: 04 -> i8042 (parameter) [57]
i8042.c: 60 -> i8042 (command) [57]
i8042.c: 05 -> i8042 (parameter) [57]
i8042.c: ed -> i8042 (kbd-data) [58]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [61]
i8042.c: 00 -> i8042 (kbd-data) [61]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [63]
i8042.c: f2 -> i8042 (kbd-data) [63]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [66]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [67]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [68]
i8042.c: f8 -> i8042 (kbd-data) [68]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [71]
i8042.c: f4 -> i8042 (kbd-data) [71]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [75]
i8042.c: ea -> i8042 (kbd-data) [75]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [78]
i8042.c: f0 -> i8042 (kbd-data) [78]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [81]
i8042.c: 02 -> i8042 (kbd-data) [81]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [83]
i8042.c: f0 -> i8042 (kbd-data) [83]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [86]
i8042.c: 00 -> i8042 (kbd-data) [86]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [89]
i8042.c: 02 <- i8042 (interrupt, kbd, 1) [90]
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
ip_conntrack version 2.1 (1024 buckets, 8192 max) - 292 bytes per conntrack
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 224k freed
i8042.c: 00 <- i8042 (interrupt, kbd, 1) [138631]
atkbd.c: Unknown key (set 2, scancode 0x0, on isa0060/serio0) pressed.
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199889]
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [199972]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199974]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200469]
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [200554]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200555]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200922]
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201024]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201025]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201415]
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201516]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201518]

> 2) The same with i8042_direct and atkbd_set=3 on the kernel command line.
>
> It may make the extra keyboards work and will definitely explain what's
> happening in greater detail.

Right, this one is interesting - same keypresses as above, and this time the keys work, (excellent :-) ), Henkaku/Zenkaku is mapped to backtick, (as expected, as I am using a Russian keymap), and the other extra keys are not mapped to anything, (again, as to be expected).

input: PC Speaker
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 16 -> i8042 (parameter) [0]
i8042.c: d3 -> i8042 (command) [1]
i8042.c: 5a -> i8042 (parameter) [1]
i8042.c: a5 <- i8042 (return) [1]
i8042.c: a9 -> i8042 (command) [1]
i8042.c: 00 <- i8042 (return) [1]
i8042.c: a7 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 36 <- i8042 (return) [1]
i8042.c: a8 -> i8042 (command) [2]
i8042.c: 20 -> i8042 (command) [2]
i8042.c: 16 <- i8042 (return) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 34 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 14 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [3]
i8042.c: 16 -> i8042 (parameter) [3]
i8042.c: d4 -> i8042 (command) [3]
i8042.c: ed -> i8042 (parameter) [3]
i8042.c: 60 -> i8042 (command) [56]
i8042.c: 14 -> i8042 (parameter) [56]
i8042.c: fe <- i8042 (interrupt, aux, 12, timeout) [57]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [58]
i8042.c: 04 -> i8042 (parameter) [58]
i8042.c: 60 -> i8042 (command) [58]
i8042.c: 05 -> i8042 (parameter) [58]
i8042.c: ed -> i8042 (kbd-data) [58]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [61]
i8042.c: 00 -> i8042 (kbd-data) [61]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [63]
i8042.c: f2 -> i8042 (kbd-data) [63]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [66]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [67]
i8042.c: 90 <- i8042 (interrupt, kbd, 1) [68]
i8042.c: f8 -> i8042 (kbd-data) [68]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [71]
i8042.c: f4 -> i8042 (kbd-data) [71]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [75]
i8042.c: ea -> i8042 (kbd-data) [75]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [78]
i8042.c: f0 -> i8042 (kbd-data) [78]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [81]
i8042.c: 03 -> i8042 (kbd-data) [81]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [83]
i8042.c: f0 -> i8042 (kbd-data) [83]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [86]
i8042.c: 00 -> i8042 (kbd-data) [86]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [89]
i8042.c: 03 <- i8042 (interrupt, kbd, 1) [90]
input: AT Set 3 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
ip_conntrack version 2.1 (1024 buckets, 8192 max) - 292 bytes per conntrack
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 224k freed
i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37041]
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [37142]
i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37143]
i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41289]
atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) pressed.
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [41382]
i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41384]
atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) released.
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42385]
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [42478]
i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42480]
i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43519]
atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) pressed.
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [43596]
i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43598]
atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) released.
i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45273]
atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) pressed.
i8042.c: f0 <- i8042 (interrupt, kbd, 1) [45366]
i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45367]
atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) released.

Interestingly, I wasn't able to reproduce the bashing multiple keys error, using i8042_direct or atkbd_set=3.

John.

2002-10-03 12:43:06

by Jon Portnoy

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

Reproduced with an AT keyboard here, too.


On Thu, 3 Oct 2002, Tobias Ringstrom wrote:

[snip]
>
> If I press and hold my left Alt key, press and release the right AltGr
> key, and then release the left Alt key, I get one of the following
> messages in dmesg:
>
> atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
[snip]
>
> The left Alt key is now stuck until I press and release it again.
>
> The same thing happens for a few other combinations as well. I happens
> both in X and in the console.
>
> Please let me know if you need more info.
>
> /Tobias

2002-10-03 13:12:04

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 02:20:48PM +0100, [email protected] wrote:
> > > i8042.c: 00 <- i8042 (interrupt, kbd, 1) [138631]
> > > atkbd.c: Unknown key (set 2, scancode 0x0, on isa0060/serio0) pressed.
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199889]
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [199972]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199974]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200469]
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [200554]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200555]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200922]
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201024]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201025]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201415]
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201516]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201518]
> >
> > Obviously, the keyboard doesn't know how to send these keys in Set 2.
>
> Ah, OK, so I need to force it to use Set 3 by default. Passing atkbd_set=3 on it's own didn't seem to work, (only works with i8042_direct).

Yes, set 3 can only work correctly with atkbd_direct also specified.

> > > i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37041]
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [37142]
> > > i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37143]
> > > i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41289]
> > > atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) pressed.
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [41382]
> > > i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41384]
> > > atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) released.
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42385]
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [42478]
> > > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42480]
> > > i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43519]
> > > atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) pressed.
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [43596]
> > > i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43598]
> > > atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) released.
> > > i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45273]
> > > atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) pressed.
> > > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [45366]
> > > i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45367]
> > > atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) released.
> >
> > And it is happy in Set 3.
>
> Seems like it, yes.
>
> > Do you by any chance know the names of the unknown keys so that I could
> > add them to the Set 3 default scancode map?
>
> All I can tell you is a translation of what is written on the scancode 0x87 key on this particular keyboard:
>
> 'Hiragana/Roma_characters'
>
> I can't translate the characters on the other keys.
>
> However, somebody else might be able to - I found this diagram of the keyboard:
>
> http://www.pfu.co.jp/hhkeyboard/kb_collection/ibm5576-002.gif
>
> The legends on the bottom row of keys are exactly the same as on my keyboard, and from left to right, they have the following functions:
>
> Control
> ALT, (it says, 'Kanji/Katakana/Kanji???', but works as ALT)
> Scancode 0x85
> Space bar
> Scancode 0x86
> Scancode 0x87, (it says, 'Hiragana/Roma characters')
> ALT GR
> Control
>
> Sorry I can't be more help than that :-).

Well, I maybe just will use the keycodes KEY_INTL1,2,... or KEY_LANG1,2,.. :)

Thanks!

> > > Interestingly, I wasn't able to reproduce the bashing multiple keys
> > > error, using i8042_direct or atkbd_set=3.
> >
> > Yes, it can only happen without i8042_direct.
>
> Ah, OK, cool.

--
Vojtech Pavlik
SuSE Labs

2002-10-03 12:46:27

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 08:48:19AM -0400, Jon Portnoy wrote:

> Reproduced with an AT keyboard here, too.

I know where the problem is now - it's pressing two keys, one with
scancode 'e0 xx', the other 'yy' where xx == yy at the same time.

Now I'm looking for a nice clean way to fix it.

> On Thu, 3 Oct 2002, Tobias Ringstrom wrote:
>
> [snip]
> >
> > If I press and hold my left Alt key, press and release the right AltGr
> > key, and then release the left Alt key, I get one of the following
> > messages in dmesg:
> >
> > atkbd.c: Unknown key (set 2, scancode 0x1b8, on isa0060/serio0) pressed.
> [snip]
> >
> > The left Alt key is now stuck until I press and release it again.
> >
> > The same thing happens for a few other combinations as well. I happens
> > both in X and in the console.
> >
> > Please let me know if you need more info.
> >
> > /Tobias

--
Vojtech Pavlik
SuSE Labs

2002-10-03 13:07:52

by jbradford

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

> > i8042.c: 00 <- i8042 (interrupt, kbd, 1) [138631]
> > atkbd.c: Unknown key (set 2, scancode 0x0, on isa0060/serio0) pressed.
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199889]
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [199972]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [199974]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200469]
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [200554]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200555]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [200922]
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201024]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201025]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201415]
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [201516]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [201518]
>
> Obviously, the keyboard doesn't know how to send these keys in Set 2.

Ah, OK, so I need to force it to use Set 3 by default. Passing atkbd_set=3 on it's own didn't seem to work, (only works with i8042_direct).

> > i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37041]
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [37142]
> > i8042.c: 0e <- i8042 (interrupt, kbd, 1) [37143]
> > i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41289]
> > atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) pressed.
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [41382]
> > i8042.c: 85 <- i8042 (interrupt, kbd, 1) [41384]
> > atkbd.c: Unknown key (set 3, scancode 0x85, on isa0060/serio0) released.
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42385]
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [42478]
> > i8042.c: 29 <- i8042 (interrupt, kbd, 1) [42480]
> > i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43519]
> > atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) pressed.
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [43596]
> > i8042.c: 86 <- i8042 (interrupt, kbd, 1) [43598]
> > atkbd.c: Unknown key (set 3, scancode 0x86, on isa0060/serio0) released.
> > i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45273]
> > atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) pressed.
> > i8042.c: f0 <- i8042 (interrupt, kbd, 1) [45366]
> > i8042.c: 87 <- i8042 (interrupt, kbd, 1) [45367]
> > atkbd.c: Unknown key (set 3, scancode 0x87, on isa0060/serio0) released.
>
> And it is happy in Set 3.

Seems like it, yes.

> Do you by any chance know the names of the unknown keys so that I could
> add them to the Set 3 default scancode map?

All I can tell you is a translation of what is written on the scancode 0x87 key on this particular keyboard:

'Hiragana/Roma_characters'

I can't translate the characters on the other keys.

However, somebody else might be able to - I found this diagram of the keyboard:

http://www.pfu.co.jp/hhkeyboard/kb_collection/ibm5576-002.gif

The legends on the bottom row of keys are exactly the same as on my keyboard, and from left to right, they have the following functions:

Control
ALT, (it says, 'Kanji/Katakana/Kanji???', but works as ALT)
Scancode 0x85
Space bar
Scancode 0x86
Scancode 0x87, (it says, 'Hiragana/Roma characters')
ALT GR
Control

Sorry I can't be more help than that :-).

> > Interestingly, I wasn't able to reproduce the bashing multiple keys
> > error, using i8042_direct or atkbd_set=3.
>
> Yes, it can only happen without i8042_direct.

Ah, OK, cool.

John.

2002-10-03 13:35:13

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 02:20:48PM +0100, [email protected] wrote:

> Control
> ALT, (it says, 'Kanji/Katakana/Kanji???', but works as ALT)
> Scancode 0x85
> Space bar
> Scancode 0x86
> Scancode 0x87, (it says, 'Hiragana/Roma characters')
> ALT GR
> Control

0x85 - Intl5 - Muhenkan
0x86 - Intl4 - Henkan
0x87 - Intl2 - Hiragana/Katakana

Added, patch:

diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c Thu Oct 3 15:38:22 2002
+++ b/drivers/input/keyboard/atkbd.c Thu Oct 3 15:38:22 2002
@@ -73,7 +73,7 @@
113,114, 40, 84, 26, 13, 87, 99,100, 54, 28, 27, 43, 84, 88, 70,
108,105,119,103,111,107, 14,110, 0, 79,106, 75, 71,109,102,104,
82, 83, 80, 76, 77, 72, 69, 98, 0, 96, 81, 0, 78, 73, 55, 85,
- 89, 90, 91, 92, 74, 0, 0, 0, 0, 0, 0,125,126,127,112, 0,
+ 89, 90, 91, 92, 74,185,184,182, 0, 0, 0,125,126,127,112, 0,
0,139,150,163,165,115,152,150,166,140,160,154,113,114,167,168,
148,149,147,140, 0, 0, 0, 0, 0, 0,251, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

--
Vojtech Pavlik
SuSE Labs

2002-10-03 13:38:39

by Bruce Harada

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, 3 Oct 2002 14:20:48 +0100 (BST)
[email protected] wrote:

> > Do you by any chance know the names of the unknown keys so that I could
> > add them to the Set 3 default scancode map?
>
> All I can tell you is a translation of what is written on the scancode 0x87
> key on this particular keyboard:
>
> 'Hiragana/Roma_characters'
>
> I can't translate the characters on the other keys.
>
> However, somebody else might be able to - I found this diagram of the
> keyboard:
>
> http://www.pfu.co.jp/hhkeyboard/kb_collection/ibm5576-002.gif
>
> The legends on the bottom row of keys are exactly the same as on my
> keyboard, and from left to right, they have the following functions:
>
> Control
> ALT, (it says, 'Kanji/Katakana/Kanji???', but works as ALT)
> Scancode 0x85
> Space bar
> Scancode 0x86
> Scancode 0x87, (it says, 'Hiragana/Roma characters')
> ALT GR
> Control

In the order you gave above, they are:

- Control

- Kanji/Hiragana (The smaller characters underneath are 'Kanji bango' [=
"Kanji number"])

- Muhenkan [="No conversion"] (The smaller characters underneath are
'Bunsetsu yomi' [="Sentence fragment reading"])

- Space

- Zenkoho [="Previous candidate"] / Henkan (Jikoho) [="Conversion (Next
candidate)"] / Zenkoho [="All candidates"]

- Hiragana (Underneath is 'Romaji', i.e. English characters)

- Zenmen ki [="Next screen key"]

- Control


Hope that helps,

Bruce

2002-10-03 17:38:14

by Andries Brouwer

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 02:20:48PM +0100, [email protected] wrote:

> > Do you by any chance know the names of the unknown keys so that I could
> > add them to the Set 3 default scancode map?
>
> All I can tell you is a translation of what is written on the scancode 0x87 key
> on this particular keyboard:
>
> 'Hiragana/Roma_characters'
>
> I can't translate the characters on the other keys.
>
> However, somebody else might be able to - I found this diagram of the keyboard:
>
> http://www.pfu.co.jp/hhkeyboard/kb_collection/ibm5576-002.gif
>
> The legends on the bottom row of keys are exactly the same as on my keyboard,
> and from left to right, they have the following functions:
>
> Control
> ALT, (it says, 'Kanji/Katakana/Kanji???', but works as ALT)
> Scancode 0x85
> Space bar
> Scancode 0x86
> Scancode 0x87, (it says, 'Hiragana/Roma characters')
> ALT GR
> Control

For an explanation of the other keys, see

http://www.win.tue.nl/~aeb/linux/kbd/scancodes-3.html

(muhenkan / henkan).

Andries

2002-10-07 12:26:00

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: 2.5.40: AT keyboard input problem

On Thu, Oct 03, 2002 at 02:43:04PM +0200, Tobias Ringstrom wrote:
> On Thu, 3 Oct 2002, Vojtech Pavlik wrote:
>
> > Good. You can use that for now, and I'll make a fix so that it works
> > even without it.
>
> Great, thanks!

Ok, here is the promised fix. I'll send it to Linus soon.

===================================================================

diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c Mon Oct 7 14:30:14 2002
+++ b/drivers/input/serio/i8042.c Mon Oct 7 14:30:14 2002
@@ -63,7 +63,7 @@

extern struct pt_regs *kbd_pt_regs;

-static unsigned long i8042_unxlate_seen[128 / BITS_PER_LONG];
+static unsigned long i8042_unxlate_seen[256 / BITS_PER_LONG];
static unsigned char i8042_unxlate_table[128] = {
0,118, 22, 30, 38, 37, 46, 54, 61, 62, 70, 69, 78, 85,102, 13,
21, 29, 36, 45, 44, 53, 60, 67, 68, 77, 84, 91, 90, 20, 28, 27,
@@ -407,14 +407,14 @@
}

if (data > 0x7f) {
- if (test_and_clear_bit(data & 0x7f, i8042_unxlate_seen)) {
+ if (test_and_clear_bit((data & 0x7f) | (i8042_last_e0 << 7), i8042_unxlate_seen)) {
serio_interrupt(&i8042_kbd_port, 0xf0, dfl);
if (i8042_last_e0 && (data == 0xaa || data == 0xb6))
- set_bit(data & 0x7f, i8042_unxlate_seen);
+ set_bit((data & 0x7f) | (i8042_last_e0 << 7), i8042_unxlate_seen);
data = i8042_unxlate_table[data & 0x7f];
}
} else {
- set_bit(data, i8042_unxlate_seen);
+ set_bit(data | (i8042_last_e0 << 7), i8042_unxlate_seen);
data = i8042_unxlate_table[data];
}


===================================================================

--
Vojtech Pavlik
SuSE Labs