Hi Simon,
There is at least one solution using the analog approach by Carl at RetroText, "Non PS2 fignition Keyboard":
http://retrotext.blogspot.com/2011/12/non-ps2-fignition-keyboard.html
I would consider a simple microprocessor like ATTiny, used in two ways:
1. Decode PS/2 interface
There are numerous approaches, e.g.
- Arduino PS2Keyboard library
http://www.arduino.cc/playground/Main/PS2Keyboard
- Propeller TinyTwoWire Module (ATTiny exposing I2C to any MCU)
http://www.gadgetgangster.com/find-a-project/56?projectnum=333
- Adding a keyboard to an Atmel ATtiny or ATmega
http://avrprogrammers.com/example_avr_keyboard.php
- AVR313: Interfacing the PC AT Keyboard
http://www.atmel.com/Images/doc1235.pdf
2. Encode Fignition keyboard protocol
Based on The Keypad description
https://sites.google.com/site/libby8dev/fignition/documentation/understand-it
And assuming that the 6 keypad pins are broken out to the board pins.
- First, map input key code (ASCII or special scan code like Ctrl or arrow) to three bytes: (1) shift marker, (2) key 1: SW1-8 inverse mask, (3) key 2: SW1-8 inverse mask (SW1 in LSB)
- if shifted, wait until PB0 is 0, hold PC0 in 0 for SW5, release PC0
- for key 1: in a loop ~.5 sec
- if PD7 is 0, set PC0-3 to low 4 bits of key 1 ("press" SW1-4)
- if PB0 is 0, set PC0-3 to high 4 bits of key 1 ("press" SW5-8)
- for key 1+2: in a loop ~.5 sec
- if PD7 is 0, set PC0-3 to low 4 bits of key 1 OR low 4 bits of key 2
- if PB0 is 0, set PC0-3 to high 4 bits of key 1 OR high 4 bits of key 2
To get more insight here's from "nocommercialpotential"
- Reading C16 Keyboard - on handling keyboard matrices
http://nocommercialpotential.posterous.com/reading-the-c16-keyboard-part-1-from-the-jaws
- Interfacing the PS/2 Keyboard - on syncing reads (writes) with clock (mode key)
http://nocommercialpotential.posterous.com/interfacing-the-ps2-keyboard
Oleg