Ao pressionar a tecla no teclado, o sinal é enviado ao binário da CPU?

0

" Quando pressionamos uma tecla no teclado, ela empurra o botão de borracha em forma de cúpula que, por sua vez, conecta eletricamente a camada superior e inferior naquele ponto e o sinal é enviado para o COB IC. processa o sinal e o envia para o computador através de uma porta PS2 ou USB. "- EngineeringGarage (ctrl + f para encontrá-lo)

O signal é enviado para o binário da CPU? (por exemplo, letra "a" = 00000001)?

    
por kaneki 04.07.2018 / 11:51

2 respostas

2

Tudo enviado para a CPU é binário. Também é hexadecimal, decimal e octal. Binário é apenas a representação mais fácil para "trabalhar" com operações dentro da CPU e circuitos integrados. Os bits podem ser lado-a-lado como em um barramento paralelo ou tomados um de cada vez (serial), mas quando tomados como um grupo, os dados que eles representam podem ser mostrados da maneira que você quiser. A CPU usa representações binárias, aritméticas e lógicas, mas os dados reais nos quais ela trabalha serão ou um grupo de bits que quando visto de uma maneira é "apenas" uma série de 1s e 0s e de outra forma é a letra "a" .

Se você olhar para qualquer linha de dados na CPU em um dado momento, então ela será 1 ou 0, mas para ter alguma informação útil você precisa de um grupo ou série de bits que compõe um byte. ou uma série de bytes.

Quando você pressiona uma tecla, como você diz, o sinal é enviado através de vários circuitos integrados até que um sinal na CPU diga a key was pressed, can you run some code to find out what? , ponto no qual o processador informará o sistema operacional que, por sua vez, achará o driver responsável lendo o dispositivo de teclado que por sua vez irá embora e irá (através do processador e outros CIs) consultar o dispositivo perguntando qual código foi pressionado.

No que diz respeito ao que é retornado como "pressionamento de tecla", nada mais é do que dados. É simultaneamente hexadecimal, decimal, binário e "o caractere A".

    
por 04.07.2018 / 12:06
0

Em geral, a resposta é sim , mas é claro que uma resposta mais aprofundada não poderia ser tão fácil quanto "sim", poderia?

Primeiro, geralmente não há (exceto em teclados de rollover de n teclas) uma correlação direta entre pressionar uma tecla e um único "sinal". Normalmente, há pelo menos dois sinais. Por razões de custo, a maioria dos teclados é construída com algum tipo de matriz (dependente de implementação) de fios onde pressionar qualquer tecla resulta em dois sinais, e o IC então decodifica isso de alguma maneira particular. Normalmente, os teclados são feitos de tal forma que as teclas que são comumente pressionadas juntas (ou próximas umas das outras em tempo hábil) têm uma fiação suficiente para que o IC possa realmente descobrir corretamente, para uso normal.
Os teclados em que cada chave é conectada individualmente existem, mas são a exceção, não a norma.

Agora, a informação ("sinal") de que uma ou várias teclas estão inativas é codificada em alguns números no IC do teclado. Qual é, naturalmente, um número binário (não poderia ser nada diferente!). E ... nada está sendo enviado! Espere o que? Sim, está certo.

De vez em quando, o USB Master (um controlador IC no seu computador, geralmente na placa-mãe) pergunta ao Slave (o controlador USB do seu teclado) se há algo para contar. O padrão USB especifica que o escravo só pode enviar quando solicitado ("polled") pelo mestre. Os teclados normalmente são executados no modo de transferência de interrupções, de modo que o teclado tem a chance de informar ao computador com que freqüência seria ideal solicitar atualizações (mas ainda é necessário responder apenas a solicitações, não agir de acordo) e o tamanho dos frames de resposta é um pouco limitado (64 bytes em USB2, por um par de chaves que normalmente é bastante)). Normalmente, em teclados USB2, o melhor intervalo de pesquisa que você pode obter é de 1 ms, mas o USB3 permitiria 0,125 ms [1] .

O controlador em seu teclado agora encapsula o número (ou vários deles) em um pacote de tamanho limitado de um formato conhecido e específico que inclui um identificador, uma soma de verificação (CRC) e outras informações, e coloca tudo isso "no fio" pouco a pouco.
Essa transferência é estritamente binária, é claro, já que há apenas um cabo de dados (... para cada direção) que pode ter tensão ou, bem, não. Mas o sinal não se parece mais com o sinal original, e só faz sentido olhar para um pacote completo, não um único bit.

O teclado irá enviar e retransmitir até três vezes se o computador detectar um erro de CRC, então a transmissão também não é apenas de fogo e esqueça, mas um um pouco mais complicado protocolo .

Uma vez que algo foi recebido e o CRC foi bom, o controlador gera uma interrupção e o driver de dispositivo faz algo para extrair o código de varredura da mensagem recebida. Isso é então passado através de mecanismos de filtro e análise mais ou menos elaborados dentro do sistema operacional (possivelmente mantendo um conjunto de "chaves pressionadas atualmente" e possivelmente chamando ganchos, e qualquer coisa) até que finalmente algo sistema operacional) cai na fila de mensagens do programa que tem "o foco" (onde normalmente é traduzido para um caractere). Este algo é geralmente uma notificação do tipo "chave para baixo", emparelhado com as mensagens "chave para cima" correspondentes e possivelmente mensagens "repetidas" sendo geradas pelo sistema operacional de acordo com algum temporizador. O "sinal" é, obviamente, ainda binário, já que é a única coisa que a CPU entende. Mas parece, novamente, bem diferente agora. E com certeza, é muito mais complicado do que apenas um simples pequeno número enviado por um fio.

Quando a mensagem chave é traduzida para os caracteres, vários pressionamentos de tecla podem ser combinados em um único caractere (ou vice-versa, ou alguma codificação de tamanho variável ou outras coisas engraçadas). Mais uma vez, o "sinal" ainda é necessariamente binário, mas - de novo - parecerá muito diferente do que anteriormente.

[1] Isso pode ser interessante para jogadores super-super-hardcore que se preocupam com cada milissegundo de atraso. A pesquisa no máximo uma vez por milissegundo em um teclado USB2 significa uma latência média de 0,5ms (independentemente de qualquer tempo que seja necessário para processar o pressionamento de tecla ou enviar um pacote de rede). Em um teclado USB antigo, que é "exatamente o mesmo" superficialmente, o menor intervalo de pesquisa possível é de 10 ms!     
por 04.07.2018 / 15:21

Tags