Към съдържанието

Barcode Scanner Emulator

Обяснение на клавиатурния клин HID

Клавиатурният клин е подразбиращият се работен режим на огромното мнозинство баркод скенери. Това ръководство обяснява какво представлява, как работи на ниво USB и какво означава при тестване на приложението.

Какво е клавиатурен клин?

Терминът идва от по-стари скенери за сериен порт, които буквално са били „вклинени“ между клавиатурата и порта на компютъра, прихващали са сигнала на клавиатурата и са вмъквали в него сканираните знаци. Съвременните скенери вече не се нуждаят от физическо вклиняване — изразът днес означава всеки скенер, който представя сканираните данни така, сякаш идват от клавиатура, независимо от вида на връзката.

USB HID и емулация на клавиатура

USB определя клас Human Interface Device (HID) специално за клавиатури, мишки и подобни входни устройства. Когато скенерът се изброи по USB като клавиатура HID, операционната система зарежда общия си вграден драйвер за клавиатура — не е нужен драйвер, специфичен за скенера. Фърмуерът превръща всеки декодиран знак в кода на клавиш HID, който би изпратила физическа клавиатура, а отчетите се доставят по същия механизъм за прехвърляне по прекъсване, използван от всяка USB клавиатура.

Как приложението вижда въвеждането от скенера

Бърз пакет от натискания вместо човешко писане: скенерът изпраща целия полезен товар като бърза поредица от двойки keydown/keyup и обикновено приключва за под секунда, независимо от дължината на баркода.

Няма събития от мишката: скенерите в режим на клавиатура HID никога не генерират събития за показалец, щракване или фокус. Ако полето ви няма фокус в момента на сканирането, въвеждането се губи или отива при елемента, който има фокус.

Няма събития за поставяне: данните пристигат като отделни натискания, а не като операция с клипборда, затова обработчиците на събитието paste не виждат въвеждането от скенера, а входните маски, които слушат само paste, тихо го пропускат.

Проблеми с подредбата на клавиатурата

Защо се появяват грешни знаци: скенерът съпоставя декодираните знаци с кодове на клавиши HID според собствената си настроена подредба на клавиатурата. Ако тази подредба не съвпада с подредбата на операционната система, знаците могат да се разменят — класически симптом е цифри или пунктуация да се сканират като друг знак при QWERTY спрямо AZERTY.

Несъответствие на локала: това е проблем в конфигурацията на скенера, не софтуерен бъг. Повечето скенери поддържат смяна на локала чрез конфигурационни баркодове в ръководството, а поправката означава да препрограмирате скенера да съвпада с локала на операционната система, а не да променяте кода на приложението.

Представки и наставки

Скенерите често поддържат настройваеми поредици за представка и наставка около полезния товар. Най-честите стойности на наставката са ENTER (CR, 0x0D), TAB (0x09) и понякога пълна двойка CR+LF. Представките са по-редки, но понякога се използват, за да насочат сканиранията към конкретни полета в по-стари терминални приложения.

Ограничения при тестване в браузъра

Браузърът не вижда сурови пакети USB HID, не може да изброи свързаните HID устройства конкретно като скенер (извън API WebHID, през който повечето скенери не излагат данни) и не може да отличи скенер в режим на клавиатура HID от истинска клавиатура. За JavaScript са достъпни само клавишните събития, видими в браузъра (keydown, keyup, keypress), и точно тях разглеждат инструментите на този сайт.

Свързано

Използвайте тестера за клавишни събития, за да разгледате суровите клавишни събития, или прочетете ръководството Наставки ENTER и TAB за подробности по настройката на наставката.