Comecei a brincar com computadores em 1987, mas eram clones de Sinclair e Apple II. Tive contato com o primeiro computador "sério" — um Polymax PC/XT — no segundo semestre de 1988. Devido à reserva de informática, os XTs foram minha principal plataforma até 1992.
O layout de teclado XT ocupa um lugar especial no coração, e nunca gostei muito do teclado PS/2 ou "Model M" de 101 teclas que veio a seguir. Sempre achei seu tamanho exagerado, com redundância de teclas como se fosse um órgão de igreja. Pela peculiaridade do mercado local, a troca de PC/XT por 386 ocorreu de forma concomitante com a adoção generalizada do Windows 3 e portanto do mouse, que compete por espaço com o teclado alargado em cima da mesa.
Mesmo assim, falhei em conservar um teclado da época. Tudo era empolgação com as novidades, e.g. multimídia, ninguém estava ligando para teclados. E hardware não era tão barato quanto hoje; meu primeiro XT eu vendi (para um ex-empregador!) a fim de inteirar os 1400 dólares do 386 contrabandeado.
Instigado por uma outra modinha dos tecladistas — ressuscitar teclados do tempo da onça usando Arduino para adaptar à interface USB — fui comprar um teclado layout XT. Mas não encontrei muita coisa no mercado nacional, e o que havia estava caro. No eBay, encontra-se bastante coisa, porém a maioria é dos EUA, cujo frete para objetos pesados é muito caro.
Mas acabei encontrando teclados XT lá na Bulgária, a terra natal dos antepassados da Dilma. E fabricados ainda na era comunista! Sim, o bloco comunista fabricava clones de IBM PC antes da queda do Muro de Berlim, assim como havia clones de outras plataformas de 8 bits ocidentais. O clone PC/XT chamava-se Pravetz 16. Pravetz era o nome do fabricante, sediado na cidade de mesmo nome.
O frete interncional era de apenas 15 euros, e o preço estava muito bom: 60 euros por dois teclados idênticos, um deles novo no plástico, com números de série consecutivos. O layout não seria um problema: é quase 100% fiel ao padrão ANSI e implementa o alfabeto cirílico sem criar conflitos com a camada "ocidental". A origem e a época pitorescas também ajudaram a motivar a compra.
A Bulgária era o "Vale do Silício" do bloco comunista. Algo como 40% do PIB de informática do bloco era gerado ali, e havia até algum comércio com países do outro lado do Muro, notoriamente a Alemanha Ocidental. Embora as fábricas de hardware tenham desaparecido em questão de meses depois da abertura da Cortina de Ferro, até hoje a Bulgária é um "celeiro" de informatas na Europa.
O Brasil viveu uma história muito semelhante, inclusive com desfecho semelhante. Apesar de em tese termos vivido sob uma ditadura de direita, o isolamento econômico foi provido pela reserva de mercado. Há quem diga que a reserva criou uma massa crítica de informatas que de outra forma não existiria (com o que não concordo, mas é uma afirmação verossímil).
Bem, já chega de reminiscências. Vamos falar do teclado em si. Como visto nas fotos anteriores, o layout é bem familiar, basta ignorar os caracteres cirílicos em azul. Há duas teclas adicionais "C/L" e "C/L Lock" que provavelmente funcionam como Shift e trava para o alfabeto cirílico. Estas teclas possuem scan codes apócrifos, não encontrei nenhuma documentação que os mencionasse. Mas elas acabam sendo úteis para implementar as teclas "Windows" ou "Command" que não existiam antes de 1995.
Não é exatamente um teclado mecânico; faz uso de copinhos de borracha como molas. Ao menos são copinhos individuais que podem ser trocados por molas de metal. Os teclados soviéticos construídos para fins militares são infinitamente melhores.
O teclado é fácil de desmontar, limpar e consertar. Todos os componentes das teclas são individuais, e os contatos são feitos diretamente sobre a placa de circuito impresso, fixada por parafusos. Nem mesmo o venerável IBM Model M é tão robusto, já que usa a famigerada membrana fixada por rebites de plástico derretido.
A placa é bem simples, com apenas uma face de trilhas, muitos componentes discretos, muito fácil de entender e consertar. O teclado é NKRO graças aos diodos, coisa incomum na época. O controlador é um chip CM650, cuja especificação não encontrei, mas também há um prosaico 74LS145 da Motorola.
Os teclados chegaram em boas condições. Obviamente a unidade usada estava mais amarelada e precisou de uma boa limpeza, foi um bom teste para um asmático. Ambas estavam funcionando, embora ambas falhassem algumas teclas, o que foi resolvido pela limpeza cuidadosa dos respectivos contatos. Se fossem teclados de membrana, a recuperação seria muito mais difícil.
A única parte em más condições era o conector DIN, estava preto. Deu um certo remorso cortar o conector e tirar a originalidade do teclado novo... curioso que a malha de blindagem de cobre também estava verde e se esfarelando, tal qual acontece quando vaza uma pilha. Talvez a combinação com aquele conector produziu corrosão eletrolítica. Os condutores internos estavam perfeitos, é um tipo de fio interessante com uma "alma" sintética, que não precisa ser removida, ela desaparece na hora de soldar e não prejudica o contato.
Comprei os teclados consciente que eram XT, o que seria um pouco mais desafiador para transcodificar para USB HID, mas para minha surpresa eles tinham um jumper interno XT/AT. No modo AT, torna-se compatível com qualquer conversor PS/2-USB.
O modo AT é mais fácil de interfacear com Arduino, pois há bibliotecas diretamente compatíveis, que quase não existem para modo XT. Assim que os teclados chegaram, obviamente estava curioso para ver se funcionavam. Usei um Mega328 que tinha por aqui, apenas para testar, sem interfacear ainda com USB.
O Mega328 não possui suporte de hardware para implementar/simular um dispositivo USB. Até se pode fazer isso via software (biblioteca V-USB) mas a solução "limpa" é usar um Arduino cujo chip implemente USB nativo. Por exemplo, os Pro Micro e os Teensy usam o chip AtMega32U4. A propósito, tendo o Arduino certo, você pode implementar qualquer tipo de dispositivo USB, não está limitado a dispositivos "simples" como teclados.
Outra consideração é como o Arduino vai interfacear com o teclado. Se o controlador estiver queimado ou implementar um protocolo totalmente desconhecido, é necessário controlar a matriz de teclas diretamente. Neste caso é preciso um bom número de linhas de I/O (para 100 teclas, é preciso 20 linhas no mínimo), o que limita ainda mais a escolha do Arduino.
Mas o controlador do Pravetz estava vivo e bem. Para interfacear com um teclado AT (ou XT) basta duas linhas de I/O. A outra decisão é como implementar o "firmware". Implementar o protocolo AT do zero poderia ser divertido, mas o projeto TMK já oferece um conversor PS/2-USB pronto para uso.
O conversor PS/2-USB do projeto TMK é pensado para o layout PS/2. Para um layout XT ficar minimamente produtivo, algumas adaptações ajudam bastante. Além do mais, o Mac não honra o Num Lock, o que deixaria o teclado XT sem setas, então é interessante implementar esta função no "firmware". Este é o mapa que estou usando no momento.
Finalmente, como o Arduino vai ser companheiro inseparável do teclado, montei-o na própria caixinha em que veio.