domingo, 7 de junho de 2015

Tek - Mapeamento de teclas no emulador de teclado.

Fiz algumas mudanças no código a fim de facilitar a adaptação para teclados diferentes, afinal de contas o objetivo do circuito é ser genérico.

A mudança mais significativa foi trocar a maneira como os 'scancodes' extendidos eram tratados. Por se tratar de menos teclas eles eram tratados individualmente por um switch case() no loop principal do programa. Agora eles são tratados através de uma consulta por tabela.
 
Assim o loop principal ficou resumido a:

Loop principal do firmware do PIC



Com isso a personalização do teclado não requer mais mudança no código principal, mas apenas nas duas tabelas de um arquivo de header.

Tabela de caracteres extendidos

Tabela de caracteres normais.

 Notem que existe ainda uma outra matriz, que associa a tecla física do teclado emulado com o bit que é transmitido para a matriz de registradores de deslocamento. Esta matriz tem tantas teclas quanto as combinações possíveis no teclado a ser emulado. No caso no caso do TK85 e do TK90 (ZX81 e ZX Spectrum) são 40 entradas, e a tabela de 'Mapcodes' tem o seguinte formato:

Mapa de bits para o ZX81.

Os três bits menos significativos [2,1,0] determinam a linha da matriz e os bits [5,4,3] determinam a coluna. O bit mais significativo [7] foi reservado para sinalizar o pressionamento da tecla SHIFT em conjunto com outra tecla. Por exemplo, a função Backspace pode ser representada no TK85/ZX81 pelo pressionamento simultâneo das teclas SHIFT e "0" (zero)


Mapas das teclas para o ZX Spectrum

No caso do TK90/ZX Spectrum o mapeamento das teclas é praticamente idêntico ao do TK85/ZX81, porém o bit 6 foi usado para representar o pressionamento da tecla Symbol Shift. Dessa maneira pode-se por exemplo mapear alguns símbolos como "-", "+", ou as aspas, além de ser possível ir para o modo extendido usando uma tecla como "TAB".

Mas em resumo, uma vez que o arquivo dos mapas das teclas foi feito ele não precisa mais ser mexido, pois a associação fica inteira na tabela de Scancodes x Mapcodes.

Para terminar este post, segue abaixo como o ficou o mapeamento das teclas para o TK85:


Mapeamento das teclas para o TK85/ZX81




Nenhum comentário: