Possibly buggy PS/2 keyboards when using scancode set 1?
Posted: Wed Sep 26, 2012 8:50 pm
Hi, I'm developing something that isn't an OS, per-se, but I figured I could get the most help here.
Basically, I have a small ARM processor that is accessing a PS/2 keyboard. I'm about 99% sure my driver for it is fully working and bug free. Now, I've experienced a very weird issue.
I copied my scancode-ASCII translation table from one of my old PC OS projects. This project assumed a scancode set of 1.
Modern keyboards appear to startup in scancode set 2 however. So, I did what I thought was reasonable and set my initialization code to set the scancode set to 1. It appears though that scancode set 1 only sorta works and is really buggy on every keyboard I've found so far. Basically, I'll mash keys and every so often my driver will actually receive a (correct) scancode. Typomatic repeat works flawlessly however.
Has anyone experienced this problem with PS/2 keyboards? I know that the PC keyboard controller by default does translation from scancode set 2 to 1, though the wikipedia page for scancodes appears to indicate that all keyboards should support sets 1 and 2.
Basically, before I go through the hassle of changing my translation table, has anyone else experienced this problem or have any ideas what could cause this?
My initialization code is very simple:
That translates to: Reset, Set defaults and disable keyboard, Set scancode set 1, enable keyboard
Basically, I have a small ARM processor that is accessing a PS/2 keyboard. I'm about 99% sure my driver for it is fully working and bug free. Now, I've experienced a very weird issue.
I copied my scancode-ASCII translation table from one of my old PC OS projects. This project assumed a scancode set of 1.
Modern keyboards appear to startup in scancode set 2 however. So, I did what I thought was reasonable and set my initialization code to set the scancode set to 1. It appears though that scancode set 1 only sorta works and is really buggy on every keyboard I've found so far. Basically, I'll mash keys and every so often my driver will actually receive a (correct) scancode. Typomatic repeat works flawlessly however.
Has anyone experienced this problem with PS/2 keyboards? I know that the PC keyboard controller by default does translation from scancode set 2 to 1, though the wikipedia page for scancodes appears to indicate that all keyboards should support sets 1 and 2.
Basically, before I go through the hassle of changing my translation table, has anyone else experienced this problem or have any ideas what could cause this?
My initialization code is very simple:
Code: Select all
char txdat[6] = "\xFF\xF5\xF0\x01\xF4";