Casa > C > Como Devo Fazer Um Teclado De Três Botões?

Como devo fazer um teclado de três botões?

Assumindo que existe uma boa razão para que tal coisa exista e que se está a referir a um teclado destinado à introdução de símbolos, não a um teclado musical:

Teclados totalmente funcionais com um pequeno número de teclas existem há muito tempo e foram construídos com uma grande variedade de designs interessantes. Como um grupo, eles são referidos como teclados acordeados, ou acorde, [1]. Em geral, eles funcionam interpretando o conjunto completo de estados das teclas como uma única entrada, ao invés de tratar cada tecla independentemente.

Assumindo teclas digitais (ou seja, apenas dois estados: on e off) e uma avaliação de entrada estritamente momentânea (ou seja: a entrada é interpretada com base no estado de todas as teclas em um único ponto no tempo), isto permite que você represente 2^n estados de entrada únicos (caracteres, sons, frases, etc: referidos a seguir como "bits" de espaço de entrada) dados n teclas. É por isso que não é provável que você encontre um exemplo de teclado de gravação com menos de 5 teclas (32 bits), e muito poucos com menos de 6 teclas (64 bits), já que (para a língua inglesa) você precisa de pelo menos 26 bits para representar a língua; de preferência mais para permitir a capitalização, números, espaçamento e pontuação.

Dado o acima, um teclado de três botões limitaria você a 8 (2^3) bits de espaço de entrada; não o suficiente para representar qualquer linguagem humana.

Mas digamos, por uma questão de argumento, que você queria fazer isso de qualquer maneira. O que você poderia fazer para fazer um teclado de três botões funcionar?

Existem duas abordagens gerais que você poderia fazer. A primeira seria usá-lo para inserir dados em octal[2] em vez de em inglês. Isto permite-lhe tirar o máximo partido dos 8 bits de espaço de entrada, mas tem o problema de ter de aprender uma linguagem completamente nova e quaisquer entradas provavelmente precisariam de ser traduzidas para algo mais para serem de alguma utilidade.

A segunda abordagem seria utilizar uma abordagem de gravação encadeada. Isto é, ao invés de ler um único estado de entrada, o teclado (ou o que quer que esteja ligado) leria múltiplos estados de entrada antes de interpretar a entrada. Se você fosse expandir o ciclo de leitura assim para interpretar dois estados de entrada consecutivos, isso lhe daria 64 bits (8 bits, duas instâncias: 8^2 == 64 bits), o que seria suficiente para cobrir A-Z, a-z, 0-9, e lhe daria mais dois caracteres para usar como você achar melhor (eu recomendaria espaço e ponto, se você estiver representando o inglês). Se você precisar de mais caracteres especiais, estenda seu ciclo de leitura para três estados, dando-lhe 512 bits de espaço de entrada.

[1] Chorded keyboard - Wikipedia

[2] Octal - Wikipedia

===EDIT===

Ocorre-me depois de escrever isso: isto também seria válido se você estivesse interessado em um teclado musical de três botões; no que diz respeito ao espaço de entrada, são todos os mesmos bits; a única diferença é o que a coisa que interpreta essas entradas faz com os dados.

Também existe uma terceira opção. Se você fez as teclas entradas analógicas (ou seja: mais de dois estados possíveis), você poderia obter um espaço de entrada muito maior com menos teclas. Se você fosse definir quatro estados possíveis para cada chave, isso lhe permitiria implementar um teclado de um único estado com três chaves, o que lhe daria 64 bits de espaço de entrada. Dito isto, controlar tal teclado seria...interessante.

De Hodges

Posso ligar a ROKU à ligação hdmi/mhl da minha TV? :: Porque é que o meu Chromecast não está ligado ao meu WiFi?