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 για λεπτομέρειες ρύθμισης της κατάληξης.