Dell 101 keyboard:
ACDEGIJLNRSTUVWY
Dell Latitude D600 keyboard:
ABDEFGHIJKLNOPQRSUW
Pretty cool. Even though a keyboard seems like a simple device, its actually quite complex to interface 80-110 keys (switches) to the embedded processor inside your keyboard. The processor probably has 20 or so I/O lines, not nearly enough to dedicate one to each key. So intead they arrange the keys into a logical square grid and use a very fast (~1ms) real-time interrupt (RTI) to "scan" they keyboard for button presses one row at a time. I actually built one of these systems in an embedded hardware class. We used 8 I/O lines to scan a 16-button keypad (4 rows + 4 columns). The downside to this approach is that its hard or impossible to detect multiple key presses simultaneously if they are, for example, both logically located on the same row in your grid.
My guess is that on a keyboard with this many keys, they make sure that certain buttons are always on separate rows in this grid (or even make more than one grid) so that multiple key presses can be detected simultaneously. Somehow, this logical grid layout results in the weird behavior that pressing both shift keys ties up a couple of rows on the grid, and those letters which don't get printed are also on that row.
Just a crazy theory--
If somebody mapped the letters which are typed to their location on the keyboard, I suspect we would find some kind of pattern. I'm at work now or else I would try this.
ACDEGIJLNRSTUVWY
Dell Latitude D600 keyboard:
ABDEFGHIJKLNOPQRSUW
Pretty cool. Even though a keyboard seems like a simple device, its actually quite complex to interface 80-110 keys (switches) to the embedded processor inside your keyboard. The processor probably has 20 or so I/O lines, not nearly enough to dedicate one to each key. So intead they arrange the keys into a logical square grid and use a very fast (~1ms) real-time interrupt (RTI) to "scan" they keyboard for button presses one row at a time. I actually built one of these systems in an embedded hardware class. We used 8 I/O lines to scan a 16-button keypad (4 rows + 4 columns). The downside to this approach is that its hard or impossible to detect multiple key presses simultaneously if they are, for example, both logically located on the same row in your grid.
My guess is that on a keyboard with this many keys, they make sure that certain buttons are always on separate rows in this grid (or even make more than one grid) so that multiple key presses can be detected simultaneously. Somehow, this logical grid layout results in the weird behavior that pressing both shift keys ties up a couple of rows on the grid, and those letters which don't get printed are also on that row.
Just a crazy theory--
If somebody mapped the letters which are typed to their location on the keyboard, I suspect we would find some kind of pattern. I'm at work now or else I would try this.