PS2?
YES. Thank you!
The problem is in the keyboard controller. Point blank, it's broken, the end. There is no argument here. For those of you who are playing along at home, let's review:
AT and PS/2 Key Stroke = Key Depressed -> Make Code -> Key Released -> Break Code
USB Key Stroke = Key Depressed -> Make Code -> Key Released -> Stop Sending
The symptoms you describe are, no surprise, consistent with the controller failing to send Break code. So the Poker's sending a proper or spurious Make and never sending a Break in PS/2 mode. (Oh, and the scancodes are completely different between the two.) There's any number of potential causes, from badly written code to hardware failure to uh.. badly written code. An i8042 will, by design, continue to transmit the keystroke until the Break code is sent. I'm suspecting it's firmware because frankly, the i8042 should see a second Make followed by a Break, and Break all for that scancode. (Since you can't hit "W" again while it's still held and the second Make should be considered spurious.)
My hunch given Sinzz had an identical problem is that it's bad firmware or bad clock generator or uC - because timing absolutely matters. A lot. If it's intermittently or
reliably sending a Break code on the RISING edge of clock? The i8042 will reject it. If the pulse rise is less than 5 microseconds? Rejected. Could also be that it's seeing inhibiting of transmission and NOT retransmitting. And even sniffing wires with an oscope will only confirm/disprove - won't give you root cause.
Also doesn't entirely rule out host - but it'd have to be two identical i8042 implementations with identical BIOS. The identical i8042, not so uncommon - probably ITE SuperIO on both. Identical BIOS? Highly unlikely since KBC's still somewhat frequently modified by ODM. Short of that, it'd have to be a problem common to the keyboard - which means identical failure mode in hardware or firmware bug. Either way, need more data.