He estado trasteando un poco con teclados ps/2 (hasta que se haga la versión renovada del core) para comprobar la compatibilidad de los mismos.
Hoy he probado algunos de los que tengo y 2 no funcionaban en el ZX-UNO. Uno de ellos era un teclado ps/2 supuestamente genuino ps/2 (trae el conector ps/2 morado directamente, sin conversores) y es bastante moderno. El otro es un "dual" usb / ps/2, de los que necesitan adaptador ps/2 (este ya imaginaba que no funcionaría).
Así que he decidido hacer algunas pruebas en mi arduino para ver qué era lo mínimo necesario para hacerlos funcionar. Al final he conseguido hacer funcionar ambos en mi arduino. Evidentemente como no tengo ni pajolera de VHDL ni FPGAS, no sabría siquiera como empezar a "traspasar" eso a la misma.
- El caso de ambos teclados ha sido bastante parecido, el segundo requería algo más para "iniciarse" como ps/2, pero básicamente en ambos ha sido suficiente con amagar con empezar a enviarles algo desde el host. Según la imagen que pongo aquí debajo, sólo con hacer la parte no sombreada, ha sido suficiente (aproximadamente):

En el arduino, paso las señales de entrada a salida o de salida a entrada a voluntad según lo necesito. Primero las pongo como salida, para enviar el amago, y después las pongo como entradas y activo la interrupción externa para escuchar caracteres.
Partiendo de que el estado "Idle" es de ambas señales en alto, y antes de empezar a "escuchar":
- En el 1º teclado, simplemente ha habido que:
0- Poner CLK y DATA como salidas
1- Pasar CLK a nivel bajo durante al menos 60us.
2- Después, pasar DATA a nivel bajo (simulando un bit de comienzo)
3- "soltar" la señal CLK, es decir, ponerla en alto y ponerla ya como entrada, para que sea el teclado el que empiece a generar el reloj.
Entonces el teclado ya se pone a funcionar.
- En el 2º teclado, además de los pasos anteriores he tenido que añadir en un paso más, un while de espera leyendo CLK hasta que veamos nivel bajo. Sin añadir esta línea, el teclado dual (no se el motivo realmente) no funciona. Ni siquiera cambiándola por un delay equivalente...
Espero que se haya entendido algo, se que mi terminología es un poco novata
Quizá sirva para algo, aunque sea para parchear mínimamente lo que hay para ir tirando con algún teclado más... ? Supongo que en realidad lo mejor es esperar a la nueva versión reescrita de la parte del teclado, pero bueno, ahí quedan mis pruebas. Realmente lo ideal es una comunicación bidireccional completa (no solo parcial), aunque sólo serviría para 2 cosas extra que yo recuerde: el manejo de los LEDs del teclado (comando ED) y establecer el typematic rate (comando F3).