Como funciona um teclado emulado?

3

Eu li que alguns dispositivos USB emulam um teclado e as informações que esses dispositivos enviam serão como se as informações fossem digitadas em um teclado. Por exemplo: um leitor de cartão magnético pode usar um teclado emulado para fornecer informações sobre o cartão.

Esta é uma pergunta que fiz sobre teclado, teclado BT e stdin , que explica como eles funcionam.

Então, onde um aplicativo precisa ouvir a entrada gerada por um teclado emulado?

    
por user2555595 07.09.2014 / 13:27

2 respostas

2

Se você conectar dois teclados USB ao seu sistema ou um teclado USB a um laptop com teclado integrado, você poderá digitar caracteres alternativos¹ em cada um (ou usar a esquerda em um teclado e a direita no outro). Os dispositivos de emulação não têm mais nada a fazer além de dizer ao sistema que são um teclado, assim como um teclado faria e os caracteres vindos do dispositivo serão inseridos na fila da direita. O aplicativo apenas escuta como se fosse uma entrada normal do teclado. / p>

Existem outras maneiras de obter o mesmo resultado, eu costumava ter um scanner de código de barras antes da era USB, que tinha que ser fisicamente inserido entre o teclado e a placa-mãe (usando conectores PS / 2 fêmea e macho), a varredura funcionaria como se você tivesse pressionado a seqüência numérica do código de barras em uma rápida sucessão.

¹ Teclas especiais como Fn modificam o código de tecla de outras teclas enviadas pelo teclado, então você não pode pressionar Fn em um teclado e esperar que a tecla no teclado outro teclado a ser modificado.

    
por 07.09.2014 / 13:55
1

Se o próprio dispositivo USB apresentar uma interface de teclado HID, então, do ponto de vista do computador, ele é (ou "contém") um teclado. O driver HID correspondente é carregado. O dispositivo se comunica através dessa interface usando o protocolo HID correspondente.

Os dispositivos USB podem ter muitas interfaces. O próprio dispositivo envia informações para o sistema operacional descrevendo o que é, em descritores USB . Você pode ver essas informações na saída detalhada de lsusb ( lsusb -v ). Os valores relevantes são bDeviceClass , bDeviceSubClass bDeviceProtocol .

Aqui está uma das interfaces do meu mouse, por exemplo, apresentando-se como um teclado. Quando os botões atribuídos chaves ou macros são clicados o mouse "tipo" aqui:

Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        0
  bAlternateSetting       0
  bNumEndpoints           1
  bInterfaceClass         3 Human Interface Device
  bInterfaceSubClass      1 Boot Interface Subclass
  bInterfaceProtocol      1 Keyboard
  iInterface              0 

E é listado por xinput como um segundo teclado real.

Isso também tem o potencial de ser usado maliciosamente , já que algo não precisa parecer um teclado para digitar coisas para você (ou se apresenta como qualquer outro dispositivo).

    
por 07.09.2014 / 14:19