Barcode Scanner Emulator
Wyjaśnienie klina klawiaturowego HID
Klin klawiaturowy jest domyślnym trybem pracy zdecydowanej większości skanerów kodów kreskowych. Ten przewodnik wyjaśnia, czym jest, jak działa na poziomie USB i co oznacza dla testowania aplikacji.
Czym jest klin klawiaturowy?
Termin pochodzi od starszych skanerów portu szeregowego, które dosłownie „klinowano” (wedged) między klawiaturą a portem komputera: przechwytywały sygnał klawiatury i wstrzykiwały zeskanowane znaki. Współczesne skanery nie potrzebują fizycznego klina. Określenie oznacza dziś każdy skaner, który przedstawia zeskanowane dane tak, jakby pochodziły z klawiatury, niezależnie od typu połączenia.
USB HID i emulacja klawiatury
USB definiuje klasę Human Interface Device (HID) właśnie dla klawiatur, myszy i podobnych urządzeń wejściowych. Gdy skaner wylicza się na USB jako klawiatura HID, system operacyjny ładuje ogólny, wbudowany sterownik klawiatury. Osobny sterownik skanera nie jest potrzebny. Oprogramowanie układowe skanera zamienia każdy zdekodowany znak na kod klawisza HID, który wysłałaby fizyczna klawiatura, a raporty są dostarczane tym samym mechanizmem transferu przerwań co w każdej klawiaturze USB.
Jak aplikacja widzi wprowadzanie ze skanera
Szybka seria naciśnięć zamiast pisania przez człowieka: skaner wysyła cały ładunek jako szybką sekwencję par keydown/keyup i zwykle kończy w czasie krótszym niż sekunda, niezależnie od długości kodu.
Brak zdarzeń myszy: skanery w trybie klawiatury HID nigdy nie generują zdarzeń wskaźnika, kliknięcia ani fokusu. Jeśli pole nie ma fokusu w chwili skanu, wprowadzanie ginie albo trafia do elementu, który fokus ma.
Brak zdarzeń wklejenia: dane przychodzą jako pojedyncze naciśnięcia klawiszy, a nie operacja schowka, więc procedury obsługi paste nie zobaczą wprowadzania ze skanera, a maski nasłuchujące wyłącznie paste po cichu je pominą.
Problemy z układem klawiatury
Dlaczego pojawiają się złe znaki: skaner mapuje zdekodowane znaki na kody klawiszy HID według własnego skonfigurowanego układu klawiatury. Jeśli ten układ nie zgadza się z układem systemu operacyjnego, znaki mogą się zamienić. Klasyczny objaw to cyfry lub znaki przestankowe skanowane jako zły znak na systemach QWERTY i AZERTY.
Niezgodność ustawień regionalnych: to problem konfiguracji po stronie skanera, a nie błąd oprogramowania. Większość skanerów pozwala zmienić ustawienia regionalne kodami konfiguracyjnymi wydrukowanymi w instrukcji, a naprawa polega na przeprogramowaniu skanera tak, by pasował do ustawień systemu, a nie na zmianie kodu aplikacji.
Prefiksy i sufiksy
Skanery zwykle obsługują konfigurowalne sekwencje prefiksu i sufiksu wokół ładunku. Najczęstsze sufiksy to ENTER (CR, 0x0D), TAB (0x09) i czasem pełna para CR+LF. Prefiksy są rzadsze, ale bywają używane do kierowania skanów do konkretnych pól w starszych aplikacjach terminalowych.
Ograniczenia testów w przeglądarce
Przeglądarka nie widzi surowych pakietów USB HID, nie może wyliczyć podłączonych urządzeń HID konkretnie jako skanera (poza API WebHID, przez które większość skanerów nie udostępnia danych) i nie odróżni skanera w trybie klawiatury HID od prawdziwej klawiatury. Dla JavaScript dostępne są tylko zdarzenia klawiatury widoczne dla przeglądarki (keydown, keyup, keypress) i właśnie je badają narzędzia na tej stronie.
Powiązane
Użyj testera zdarzeń klawiatury, aby zbadać surowe zdarzenia klawiatury, albo przeczytaj przewodnik Sufiksy ENTER i TAB o konfiguracji sufiksu.