[Projeto Fliperama] – Hackeando um teclado

Olá pessoal! Hoje vou falar um pouco sobre um problema(mais um) que encontramos e uma solução que encontramos para resolver este problema.

Como já foi citado inúmeras vezes aqui, nosso grande problema inicial foi encontrar um jogo em que conseguíssemos adaptar os controles sem grandes alterações, procurando manter ao máximo a originalidade das funções do fliperama. Além de ser um jogo divertido, teria de ser um jogo fácil de se adaptar aos controles, de preferência que oferecesse suporte a um joystick para facilitar um pouco o nosso trabalho de adaptação aos botões e palanca do fliperama.

Porém, como nem tudo é perfeito, existem algumas funções do jogo que escolhemos que só podem ser executadas via teclado, por exemplo: pausar o jogo, retornar a tela inicial para poder começar uma nova corrida e etc. No joystick, existe um botão que parece não ter uma função muito útil. Quando se está na tela inicial do jogo e este tal botão é pressionado, o jogo simplesmente fecha, retornando ao ambiente do Linux. Certo, este botão tem a função de retroceder em qualquer tela do jogo que ele estiver, exceto durante uma partida. Seria praticamente um botão com a função retornar, por assim dizer. Este botão do joystick não estará disponível aos usuários do fliperama por razões óbvias.

Mas e quando um jogar estiver em uma partida, e o tempo dele de jogo se encerrar, como o próximo jogador poderá iniciar uma nova partida, se ele não tem as opções de pausar e retroceder até a tela inicial?

Aí que entra a bruxaria do teclado!

Estudando as funções que o joystick nos oferece, percebemos que não é possível fazer tudo através dele. Em algum momento, precisamos das teclas de direção no teclado, da tecla ESC e da tecla ENTER, para fazer uma partida parar e voltar ao menu inicial.

O nosso problema então foi: Sabendo que os teclados baratos, são fabricados com uma película plástica interna e diferente do joystick que foi mostrado em uma postagem anterior, essa película dificulta a soldagem de fios (justamente por ser plástica) para que possamos aproveitar estas funções fora do teclado,  como faremos? Vamos deixar um teclado ao lado do fliperama para que o usuário, ao inserir uma nova ficha selecione com o teclado uma nova partida? Nem pensar!

Resolvemos então, abrir um teclado que eu levei para a sala da empresa pois continha algumas teclas que não funcionavam. É um teclado bem barato, desse que você encontra em lojas de produtos de informática por uns 15 ou 20 reais. Vejam abaixo algumas imagens dele aberto.

2013-07-13 16.21.27

2013-07-13 16.21.47

2013-07-13 16.26.22

2013-07-13 16.25.58

2013-07-13 16.26.12

Olhando assim parece uma coisa do outro mundo né? Explico: O Teclado contém duas películas, onde ao pressionarmos uma determinada tecla, ela exerce uma pressão sobre um ponto desses (uma ilha na verdade) e então as duas películas entram em contato neste determinado ponto. Notem que em cada uma das películas, um único ponto é ligado a diversos outros pontos, formando uma trilha. Cada uma dessas trilhas pode entrar em contato uma com a outra (uma trilha de cada película, no caso) uma única vez. De modo que a trilha que passa pelo botão ESC por exemplo, passa pelo botão de espaço e algumas letras do teclado.

2013-07-13 16.21.37

2013-07-13 16.22.11

2013-07-13 16.22.31

2013-07-13 16.23.10

2013-07-13 16.23.25

 

Mas o que impede que, uma vez que eu aperte a tecla ESC, não saia uma letra A na tela, por exemplo? O que impede isso é justamente a jogada que existe entre as duas películas. A trilha que passa na tecla ESC pode até ser a mesma que passa na tecla da letra A e uma das películas, porém, na outra película não. Na outra película, existe uma trilha para a tecla ESC e que passa pela tecla S por exemplo, e outra trilha que passa pela tecla A e passa por outras teclas, e não na tecla ESC. Dessa maneira, observando as duas películas, nunca uma mesma trilha vai se encontrar em mais do que um único ponto, e isso é o que define cada tecla do teclado. Parece meio confuso, mas se um dia você tiver um teclado velho ou estragado com estas películas, e for curioso o suficiente para abrir, você entenderá o que estou escrevendo.

Uma vez observado este detalhe importante das trilhas, ficou fácil mapear cada tecla que precisamos até a placa de circuito impresso que fica no canto superior direito do teclado, logo abaixo dos LED’s indicativos das funções num lock, scroll lock e caps lock.

2013-07-13 16.27.17

 

Notem na imagem acima, a quantidade de trilhas que chegam/saem da placa que possui o CI decodificador USB. Combinando essas diversas trilhas aos pares, é que temos todas as possibilidades de teclas do teclado comum.

Feito isso, poderemos criar uma placa auxiliar para o teclado e implementar mais algumas funções em nosso código do Arduino para que ele execute ao ser inserida uma ficha, as rotinas de entrar na tela de escolha de personagem do jogo e ao terminar o tempo de uma partida, retroceder à tela inicial do jogo e esperar até que uma nova ficha seja inserida. Tudo isso, executando uma sequência de teclas pré-determinada.

Legal né?

Até a próxima!

 

Comments Are Closed