Hoppa till innehållet

Barcode Scanner Emulator

HID keyboard wedge förklarat

Keyboard wedge är standardläget för den överväldigande majoriteten av streckkodsläsare. Den här guiden förklarar vad det är, hur det fungerar på USB-nivå och vad det betyder när du testar ditt program.

Vad är en keyboard wedge?

Begreppet kommer från äldre läsare för serieport som bokstavligen ”kilades in” mellan ett tangentbord och datorns port, fångade tangentbordssignalen och injicerade de avlästa tecknen i den. Moderna läsare behöver ingen fysisk kil — uttrycket avser nu varje läsare som presenterar avlästa data som om de kom från ett tangentbord, oavsett anslutningstyp.

USB HID och tangentbordsemulering

USB definierar en klass för Human Interface Device (HID) särskilt för tangentbord, möss och liknande inmatningsenheter. När en läsare räknas upp på USB som ett HID-tangentbord läser operativsystemet in sin generiska, inbyggda tangentbordsdrivrutin — ingen läsarspecifik drivrutin behövs. Läsarens fasta programvara omvandlar varje avkodat tecken till den HID-tangentkod som ett fysiskt tangentbord skulle skicka, och rapporterna levereras med samma avbrottsöverföring som vilket USB-tangentbord som helst.

Så ser ditt program läsarinmatningen

Snabb skur av tangenttryckningar jämfört med mänsklig inskrivning: en läsare skickar hela nyttolasten som en snabb följd av par keydown/keyup och är vanligen klar på under en sekund oavsett streckkodens längd.

Inga mushändelser: läsare i HID-tangentbordsläge skapar aldrig pekar-, klick- eller fokushändelser. Om fältet inte har fokus när avläsningen sker försvinner inmatningen eller hamnar i det element som faktiskt har fokus.

Inga inklistringshändelser: eftersom data kommer som enskilda tangenttryckningar och inte som en urklippsåtgärd ser hanterare för händelsen paste inte läsarinmatningen, och en inmatningsmask som bara lyssnar på paste missar den tyst.

Problem med tangentbordslayout

Varför fel tecken visas: läsaren mappar avkodade tecken till HID-tangentkoder med sin egen konfigurerade tangentbordslayout. Om den layouten inte stämmer med operativsystemets tangentbordslayout kan tecken byta plats — ett klassiskt symtom är att siffror eller skiljetecken läses av som fel tecken på system med QWERTY respektive AZERTY.

Språkavvikelse: det här är ett konfigurationsfel på läsarsidan, inte en programvarubugg. De flesta läsare stöder språkbyte via konfigurationsstreckkoder som är tryckta i handboken, och åtgärden är att programmera om läsaren så att den matchar operativsystemets språk, inte att ändra programkoden.

Prefix och suffix

Läsare stöder ofta konfigurerbara prefix- och suffixföljder runt nyttolasten. De vanligaste suffixvärdena är ENTER (CR, 0x0D), TAB (0x09) och ibland ett helt par CR+LF. Prefix är mindre vanliga men används ibland för att styra avläsningar till bestämda fält i äldre terminalprogram.

Begränsningar vid test i webbläsaren

En webbläsare kan inte se råa USB HID-paket, kan inte räkna upp anslutna HID-enheter specifikt som en läsare (utanför WebHID API, som de flesta läsare inte exponerar data genom) och kan inte skilja en läsare i HID-tangentbordsläge från ett riktigt tangentbord. Bara tangentbordshändelser som webbläsaren kan se (keydown, keyup, keypress) är tillgängliga för JavaScript, och det är precis det som verktygen på den här webbplatsen granskar.

Relaterat

Använd tangentbordshändelsetestaren för att granska råa tangentbordshändelser, eller läs guiden Suffixen ENTER och TAB för detaljer om suffixkonfiguration.