Saltar para o conteúdo

Barcode Scanner Emulator

A cunha de teclado HID explicada

A cunha de teclado é o modo de funcionamento predefinido da esmagadora maioria dos leitores de códigos de barras. Este guia explica o que é, como opera ao nível USB e o que significa ao testar a aplicação.

O que é uma cunha de teclado?

A designação vem de leitores antigos de porta série que eram literalmente «encaixados» (wedged) entre o teclado e a porta do computador, interceptando o sinal do teclado e injetando os caracteres lidos. Os leitores atuais já não precisam desse encaixe físico. A expressão designa agora qualquer leitor que apresenta os dados lidos como se tivessem saído de um teclado, independentemente do tipo de ligação.

USB HID e emulação de teclado

O USB define uma classe Human Interface Device (HID) própria para teclados, ratos e dispositivos de introdução semelhantes. Quando um leitor se enumera no USB como teclado HID, o sistema operativo carrega o controlador genérico de teclado que já traz consigo. Não é necessário um controlador específico do leitor. O firmware converte cada carácter descodificado no código de tecla HID que um teclado físico enviaria, e os relatórios seguem o mesmo mecanismo de transferência por interrupção de qualquer teclado USB.

Como a aplicação vê a introdução do leitor

Rajada rápida de teclas em contraste com a escrita humana: o leitor envia a carga completa como uma sequência rápida de pares keydown/keyup e conclui, em regra, em menos de um segundo, seja qual for o comprimento do código.

Sem eventos de rato: os leitores em modo de teclado HID nunca geram eventos de ponteiro, clique ou foco. Se o campo não tiver foco no momento da leitura, a introdução perde-se ou segue para o elemento que detém o foco.

Sem eventos de colar: como os dados chegam em premidas individuais e não como operação da área de transferência, os gestores de paste não vêem a introdução do leitor, e as máscaras que apenas escutam paste ignoram-na em silêncio.

Problemas de disposição do teclado

Porque surgem caracteres errados: o leitor associa os caracteres descodificados a códigos de tecla HID segundo a disposição que tem configurada. Se essa disposição não coincidir com a do sistema operativo, os caracteres podem trocar-se. O sintoma clássico é um algarismo ou um sinal de pontuação lido como outro carácter em sistemas QWERTY e AZERTY.

Desajuste de locale: trata-se de uma questão de configuração do leitor, não de um erro de software. A maior parte dos leitores muda o locale através de códigos de configuração impressos no manual, e a correção consiste em reprogramar o leitor para coincidir com o locale do sistema, não em alterar o código da aplicação.

Prefixos e sufixos

Os leitores suportam, em geral, sequências configuráveis de prefixo e de sufixo em torno da carga. Os sufixos mais habituais são ENTER (CR, 0x0D), TAB (0x09) e, por vezes, um par CR+LF completo. Os prefixos são menos frequentes, mas servem ocasionalmente para encaminhar leituras para campos concretos em aplicações de terminal antigas.

Limitações dos testes no navegador

O navegador não vê pacotes USB HID em bruto, não consegue enumerar os dispositivos HID ligados especificamente como leitor (fora da API WebHID, através da qual a maioria dos leitores não expõe dados) e não distingue um leitor em modo de teclado HID de um teclado real. Apenas os eventos de teclado visíveis para o navegador (keydown, keyup, keypress) estão acessíveis ao JavaScript, e são precisamente esses que as ferramentas deste sítio inspeccionam.

Relacionado

Utilize o testador de eventos de teclado para inspecionar eventos de teclado em bruto, ou leia o guia Sufixos ENTER e TAB para pormenores da configuração do sufixo.