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!