IBM 3278 Keyboard to PS/2 interface

Everyone knows that the IBM model M is one of the best keyboard ever produced.

The buckling spring technology used in this keyboard is only surpassed by the beam spring technology used by IBM in their IBM 3277 and 3278/79 keyboards.
Unfortunately these keybaords have a parallel interface via a DB25 connecter and can't be connected with a IBM PC.
I have developed with a ATmega48/88/168 interface which converts the parallel scancode from the 3278 keyboard to a serial PS/2 scancode.
(For HW & SW download scroll down :-)

Some issues I had to overcome:
The 3278 keyboard needs -5V for the cmos keyboard encoder chip.
This is generated with a standard low power DC/DC convertor.
See: http://www.dickbest.nl/images/uploads/DC-DC-SIM1-0505.jpg

On the original PS/2 keyboard every key generates a make and a break code.
The 3278 generates only make and break codes for the following keys:
- Shift (Left & Right)
- Shift Lock
- Alt

The 3278 has inside 4 Key-Ident jumpers (0-3). The jumpers 0&1 are read in by the ATmega.
Currently:
    00 - debug mode. The IBM 3278 scan code is transmitted in hex over the UART (JP2 - TTL logic level !).
    01 - keyboard mapping 1
    10 - keyboard mapping 2
    11 - keyboard mapping 3
    0 = jumper present.

Currently only mapping 1 is implemented as a 'standard' mapping.
Besides a 'standard' mapping a special/custum mappings can be added for e.g. using the keyboard in combination with Hercules/390.
Update tables.c and recompile the AVR project.

The 3278 doesn't have a CNTL key. The 3278 "Reset" key is physically located in the same position as the PS/2 CNTL key.
Unfortunately this "Reset" key doesn't generate a break code.
When the Reset key is pressed you can press another key before the software generates a CNTL break scancode.
On an PS/2 keyboard Copy/Paste can be done by simply pressing and holding down CNTL and then C followed by V and releasing CNTL again.
On a 3278 it will be Reset then pressing C, releasing Reset, pressing Reset again followed by V.

An ESC key is missing. This is simply solved by assigning the most left upper key with an ESC scancode.

When using Linux, ALT / CNTL / F1-F6 is used to switch between virtual consoles.
This is simulated on the 3278 keyboard with only ALT / F1-F6.

On the 3278 you have now two 'Enter' keys: the one with "Enter" on it (right from the space bar) and the key with "down left" arrow on it.
The square brackets are not available on the 3278. (no idea why)
When typing ALT / { or ALT / SHIFT / } you will get [ and ].

ALT / CNTL / DEL is on the 3278: ALT / SHIFT / DEL .

The set typematic commands from the host (PC) to the keyboard are acknowleged but are completely ignored.

Experience with the 3278 keyboard connected with a PC.
The ALT / F1-F6 to switch between Linux console works very pleasant.
I do sometime miss the "Enter" key on the numeric pad section found on the original model M.
I have assigned PS/2 "Enter" scancodes to PF23 & PF24 to compensate for this abcense.

Typing the square brackets [ ] is a little bit cumbersome when coding C source code.

This keyboard doesn't have the Caps Lock / Num Lock / Scroll Lock LED's.
Sometimes I look on a PS/2 keyboard at the Caps Lock LED, rarely at the Scroll Lock (only when using Excel) and never at the Num Lock. Sofar I have not really missed these LED's.

Implementation:
I have designed a PCB that can be either connected with the original IBM DB25 connecter or be built into the keyboard under neath the IBM logic pcb.
For the last option you have to do some cable soldering. See schematic & picture.

The mounting holes on the PCB are suitable for mounting in the large 3278 keyboard with 24 PF keys. I have made the Eagle schematic and PCB design available including the C source code.

Henk 14 Jun 2015
Contact:  ibmsystem3 at hccnet dot nl