Barcode Scanner Emulator
HID-näppäimistökiila selitettynä
Näppäimistökiila on ylivoimaisen enemmistön viivakoodinlukijoiden oletustila. Tämä opas kertoo, mitä se on, miten se toimii USB-tasolla ja mitä se merkitsee sovelluksesi testaamiselle.
Mikä on näppäimistökiila?
Termi on peräisin vanhemmista sarjaporttilukijoista, jotka asetettiin kirjaimellisesti näppäimistön ja tietokoneportin väliin, sieppasivat näppäimistösignaalin ja syöttivät siihen luetut merkit. Nykylukijat eivät enää tarvitse fyysistä väliin asettamista — ilmaus tarkoittaa nyt mitä tahansa lukijaa, joka esittää luetun datan ikään kuin se olisi tullut näppäimistöltä, yhteystavasta riippumatta.
USB HID ja näppäimistöemulointi
USB määrittelee Human Interface Device (HID) -luokan erityisesti näppäimistöille, hiirille ja vastaaville syötelaitteille. Kun lukija esittäytyy USB:ssä HID-näppäimistönä, käyttöjärjestelmä lataa yleisen sisäänrakennetun näppäimistöohjaimensa — lukijakohtaista ohjainta ei tarvita. Lukijan laiteohjelmisto muuntaa kunkin puretun merkin HID-näppäinkoodiksi, jonka fyysinen näppäimistö lähettäisi, ja raportit toimitetaan samalla keskeytysiirtomekanismilla kuin millä tahansa USB-näppäimistöllä.
Miten sovelluksesi näkee lukijasyötteen
Nopea näppäilypurkaus verrattuna ihmisen kirjoitukseen: lukija lähettää koko sisällön nopeana keydown/keyup-parien jonona ja saa sen yleensä valmiiksi alle sekunnissa viivakoodin pituudesta riippumatta.
Ei hiiritapahtumia: HID-näppäimistötilan lukijat eivät koskaan tuota osoitin-, napsautus- tai kohdistustapahtumia. Jos kenttäsi ei ole kohdistettuna luvun tapahtuessa, syöte katoaa tai päätyy siihen elementtiin, jolla kohdistus on.
Ei liittämistapahtumia: koska data saapuu yksittäisinä näppäilyinä eikä leikepöytätoimintona, paste-käsittelijät eivät näe lukijasyötettä, ja syötemaskit, jotka kuuntelevat vain paste-tapahtumaa, ohittavat sen hiljaa.
Näppäimistöasettelun ongelmat
Miksi vääriä merkkejä ilmestyy: lukija yhdistää puretut merkit HID-näppäinkoodeihin oman määritetyn näppäimistöasettelunsa mukaan. Jos asettelu ei vastaa käyttöjärjestelmän näppäimistöasettelua, merkit voivat vaihtua — klassinen oire on, että numerot tai välimerkit luetaan vääränä merkkinä QWERTY- ja AZERTY-järjestelmissä.
Alueasetuksen ristiriita: tämä on lukijan puolen määritysongelma, ei ohjelmistovirhe. Useimmat lukijat tukevat alueasetuksen vaihtoa käyttöoppaaseen painetuilla määritysviivakoodeilla, ja korjaus tarkoittaa lukijan uudelleenohjelmointia käyttöjärjestelmän alueasetusta vastaavaksi, ei sovelluskoodin muuttamista.
Etuliitteet ja päätteet
Lukijat tukevat yleisesti määritettäviä etu- ja jälkiliitteitä sisällön ympärillä. Yleisimmät päätearvot ovat ENTER (CR, 0x0D), TAB (0x09) ja toisinaan täysi CR+LF-pari. Etuliitteet ovat harvinaisempia, mutta niitä käytetään joskus ohjaamaan lukuja tiettyihin kenttiin vanhoissa päätesovelluksissa.
Selaintestauksen rajoitukset
Selain ei näe raakoja USB HID -paketteja, ei voi luetella kytkettyjä HID-laitteita nimenomaan lukijoina (WebHID-rajapintaa lukuun ottamatta, jonka kautta useimmat lukijat eivät tarjoa dataa) eikä erota HID-näppäimistötilan lukijaa oikeasta näppäimistöstä. JavaScriptille ovat käytettävissä vain selaimessa näkyvät näppäintapahtumat (keydown, keyup, keypress), ja juuri niitä tämän sivuston työkalut tarkastelevat.
Aiheeseen liittyvää
Käytä näppäimistötapahtumien testaajaa raakojen näppäintapahtumien tarkasteluun tai lue opas ENTER- ja TAB-päätteet päätteen määrityksen yksityiskohdista.