I wanted to report on a Micro Switch SD board which I'm building a USB interface for. It is an SD-16279 pcb, and the case has the label "ti BKBD002B-002". I think these keyboards were originally used with a Honeywell VIP 7200 or 7205 terminal; here is the manual:
https://archive.org/details/bitsavers_h ... 81_2667150
I found several similar keyboards on this forum. They are never quite identical, but I think lucar's in the following list has the same PCB:
snuci: viewtopic.php?f=62&t=15943
Firebolt1914: viewtopic.php?f=2&t=9970
lucar: viewtopic.php?f=2&t=18542
Most switches on my board are 4A3S (scan type, in contrast to snuci's above which uses pulse type 4A3B). The exceptions are the Caps lock, which is 5A3S (it physically stays down until you press it again to release it) and the bigger keys with a passive support "switch", these use 4A1S instead, which has less spring resistance.
Here is the board, there are many more better photos of the similar boards in the threads linked to above (the cable is hardly original, I think the wiring matches a bidirectional IBM PC parallel port):
Spoiler:
Spoiler:
First I wanted to see what I can get from the existing interface through the keyboard's 25-pins connector (it's 26 pins in my diagram, but the 26th pin doesn't exist physically). It is a parallell port with strobe. The strobe (pin 10) goes low when a key is pressed, and then an 8 bit code can be read (pins 19-25 plus 13). The code is the ASCII code for keys were this makes sense. Key release is not signalled in any way. SHIFT/CTL keys cannot be read directly, but SHIFT+key and CTL+key (and CAPS+key) produce codes pretty much as one would expect.
In addition, there are 4 special output lines (pins 8,9,11,12 on the connector). Each goes low when RPT, END-OF-MESSAGE, BREAK or the BLANK key is pressed. They stay low for the duration of the key press and go high only when the key is released. So the state of these four keys is fully available and independent of everything else.
In fact, the keys RPT, END-OF-MESSAGE and BREAK are not connected to the 8048 at all, but have their inputs hardwired to ground (=active) and the output directly wired to the connector. (In particular, the RPT key is not handled by the controller, it does not cause keys to repeat.) Although the BLANK key in practice behaves the same way, it is different in hardware: it is scanned by the 8048 just like all the other keys, and it is the 8048 that drives the corresponding line in the connector.
One could make a reasonable USB interface connecting only to the output port as it is, perhaps using the special keys RPT, END-OF-MESSAGE, BREAK and BLANK as modifiers. Somewhat better control of the keyboard's state is of course desirable, but I also wanted to keep the board as untouched as possible. I ended up to piggy back on the controller: I connected an Arduino Uno (for testing, eventually to be replaced by a Tweeny) and let the original controller do its thing with me spying:
Spoiler:
Unfortunately, two of the keys turned out to be dead. One 4A3S (the "6&") and one 4A1S (the ERASE). Bummer. I'll desolder them to confirm that they are indeed dead, but as they sit in the middle of the kbd matrix and all other keys work, I am not optimistic. I'll probably have to swap them with two keys I can live without.
Just hoping writing this up would be useful to someone. Do ask for clarification or further details (and contribute corrections; I wrote this somewhat quickly).
[Edit: The "In addition..." paragraph had somehow disappeared.]