Перейти до вмісту

Barcode Scanner Emulator

Пояснення HID keyboard wedge

Keyboard wedge — типовий режим роботи переважної більшості сканерів штрихкодів. Цей посібник пояснює, що це таке, як воно працює на рівні USB і що це означає для тестування застосунку.

Що таке keyboard wedge?

Термін походить від старіших сканерів послідовного порту, які буквально «вклинювали» між клавіатурою та портом комп’ютера, перехоплювали сигнал клавіатури й вставляли в нього зчитані символи. Сучасним сканерам фізичне вклинення не потрібне: вираз тепер означає будь-який сканер, який подає зчитані дані так, ніби вони надійшли з клавіатури, незалежно від типу з’єднання.

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 саме як сканер (поза WebHID API, через який більшість сканерів не надає дані) і не може відрізнити сканер у режимі клавіатури HID від справжньої клавіатури. Для JavaScript доступні лише події клавіатури, видимі в браузері (keydown, keyup, keypress), і саме їх досліджують інструменти на цьому сайті.

Пов’язане

Перегляньте сирі події клавіатури за допомогою тестера подій клавіатури або прочитайте посібник Суфікси ENTER і TAB, щоб дізнатися про налаштування суфікса.