After some digging I found few good resources:
* https://sites.google.com/site/computerr ... icany-fk-1
* http://home.zcu.cz/~dudacek/Simicos/SIMICOS.htm
Basically keyboard runs on 5V (USB) and uses 8 pins for data, and one pin as a clock (strobe signal).
Because of that keyboard can register only single key at one time (1-KRO), and typing experience is horrible because of it.
Here is a simple code (for arduino ide):
Code: Select all
#define DATA0 5
#define DATA1 6
#define DATA2 7
#define DATA3 8
#define DATA4 9
#define DATA5 10
#define DATA6 11
#define DATA7 12
#define STROBE 3
void setup() {
Serial.begin(9600);
Serial.print("setup: ");
pinMode(DATA0, INPUT);
pinMode(DATA1, INPUT);
pinMode(DATA2, INPUT);
pinMode(DATA3, INPUT);
pinMode(DATA4, INPUT);
pinMode(DATA5, INPUT);
pinMode(DATA6, INPUT);
pinMode(DATA7, INPUT);
pinMode(STROBE, INPUT);
attachInterrupt(digitalPinToInterrupt(STROBE), key, RISING);
Serial.println("end");
}
// read key input code
unsigned char readInput() {
unsigned char value = 0;
value = (value << 1)| digitalRead(DATA7);
value = (value << 1) | digitalRead(DATA6);
value = (value << 1) | digitalRead(DATA5);
value = (value << 1) | digitalRead(DATA4);
value = (value << 1) | digitalRead(DATA3);
value = (value << 1) | digitalRead(DATA2);
value = (value << 1) | digitalRead(DATA1);
value = (value << 1) | digitalRead(DATA0);
return value;
}
// if key is pressed display information over serial
void key() {
unsigned char value = readInput();
unsigned short v = (1<<8)|value;
if ( value == 0xEF ) {
Serial.println("");
}
Serial.print(value, HEX);
Serial.print(" ");
}
// procrastinate
void loop() {
delay(1000);
}
Correct strobe and 8 data pin can be be easily checked out by tracking the traces on pcb with multimeter or by eye.
As far as I can say interface is very similar to as other "Gerkonic" keyboard like Consul, Zbrojovka Brno, Tesla 259 https://youtu.be/TNsyTSEFvrU, but pin ribbon cable is different (still it uses the 9 pins for communication, or opt for serial communication instead).