Zeskanuj kod

W technologii komputerowej kod skanowania to liczba wysyłana z klawiatury komputera po naciśnięciu lub zwolnieniu klawisza.

Klawiatura PC / XT

W 1981 roku IBM wprowadził 83-klawiszową klawiaturę wraz z pierwszym komputerem IBM PC . Ponieważ pozostało to również niezmienione w IBM PC / XT , który został wydany w 1983 roku , jest dziś znany jako klawiatura XT .

Wcześniejsze klawiatury komputerowe często wysyłały kod ASCII lub kody z innego standardu zestawu znaków bezpośrednio do komputera. Aby jednak nie musieć generować różnych kodów dla każdego wariantu klawiatury specyficznego dla danego kraju w planowanym do sprzedaży w wielu krajach IBM PC , do każdego klawisza przypisano numer, tzw. Kod skanujący . Kod ASCII został następnie przypisany do kodu skanowania przez sterownik klawiatury w komputerze . W przypadku kodu skanowania klawisze były po prostu ponumerowane w rzędach od lewej do prawej zgodnie z ich pozycją na klawiaturze, w przeciwieństwie do kodu ASCII, który jest zgodny z kolejnością alfabetyczną.

Standardowy sterownik klawiatury do przydziału w USA został zintegrowany w BIOS - ie każdego komputera PC ; przypisania specyficzne dla kraju były wykonywane przez sterownik klawiatury programowej , który był ładowany jako program TSR podczas uruchamiania systemu. W systemie MS-DOS program ten nosi nazwę „KEYB.COM”, inne systemy operacyjne często używają tej samej nazwy.

W związku z tym IBM musiał tylko zainstalować różnie drukowane klawisze na klawiaturach komputerów PC do sprzedaży w różnych krajach, podczas gdy elektronika klawiatury mogła pozostać taka sama i nic nie trzeba było zmieniać w samym komputerze.

Klawiatura XT miała blok 10 klawiszy funkcyjnych po lewej stronie i klawisze alfanumeryczne z dołączonym blokiem numerycznym po prawej stronie. Nie istniały jeszcze diody sygnalizujące aktualny stan oraz osobny blok klawiszy ze strzałkami . Komunikacja odbywała się wyłącznie z klawiatury do komputera, więc komputer nie był jeszcze w stanie przesyłać żadnych poleceń do klawiatury. Podstawowa struktura interfejsu szeregowego jest opisana w sekcji Interfejs PS / 2 ; typowym złączem dla klawiatur PC i AT było jednak przez wiele lat 5-pinowe złącze DIN , znane w Niemczech jako złącze sygnałów LF („kabel transferowy”).

Klawiatura PC / AT

Logicznym dalszym rozwojem była 84-klawiszowa klawiatura AT wprowadzona w 1984 roku wraz z IBM PC / AT (oddzielne klawisze funkcyjne i blok 10). Fizyczny interfejs został tutaj zachowany, ale sygnalizacja została całkowicie przeprojektowana. Komunikacja między komputerem a klawiaturą była teraz dwukierunkowa , rozpoznawalna na przykład po tym, że komputer był w stanie przełączać diody LED stanu pod kontrolą programu. Przesyłane kody były zupełnie inne niż te z XT. Mały komputer jednoukładowy ( Intel 8042 ) na płycie głównej komputera, nieco niejednoznacznie nazywany „BIOS-em klawiatury”, konwertował faktycznie przesyłane kody na zgodne wartości. Pod względem oprogramowania klawiatura AT (z jej „BIOS-em klawiatury”) wyglądała bardzo podobnie do klawiatury XT; w ten sposób można by zachować ważną kompatybilność komputerów. Implementację kodu można było wyłączyć, a IBM spodziewał się, że normalnie zostanie on wyłączony, gdy tylko stanie się dostępny nowocześniejszy system operacyjny; w praktyce jednak MS-DOS lub PC-DOS był nadal używany prawie wszędzie, a implementacja była praktycznie zawsze włączona.

Konwersja XT do AT zwykle wymagała wymiany klawiatury; Ale były też klawiatury, które miały przełącznik na spodzie lub które mogły przełączać się automatycznie, aby dopasować.

Klawiatura MF2

Image
Niemiecka klawiatura MF2 ze 105 klawiszami; podane liczby są numerami kluczy, a nie kodami skanowania

Zmiana następnej generacji nastąpiła w 1986 roku, kiedy IBM wprowadził 101-klawiszową klawiaturę MF2 ( wielofunkcyjną ) na rynek amerykański. Specyficzna dla kraju 102-klawiszowa klawiatura MF2 została zdefiniowana w ten sam sposób. Ostatecznie wszystkie dzisiejsze standardowe rozszerzenia, takie jak klawiatura Windows 104/105 z klawiszami, są oparte na tych dwóch układach klawiatury .

Klawiatura MF2 wykorzystywała ten sam interfejs i sygnalizację, co poprzednia klawiatura PC / AT. Od 1987 roku złącze do komputera IBM PS / 2 zostało zastąpione mniejszą wersją, ale sygnały elektryczne pozostały takie same.

Rozmieszczenie klawiszy zostało zmienione w taki sposób, że klawisze funkcyjne, których liczba została zwiększona jednocześnie o dwa, znajdują się teraz nad klawiszami alfanumerycznymi. Klawiatura numeryczna i specjalne klawisze do przesuwania kursora zostały oddzielone optycznie.

Zasadniczo po naciśnięciu klawisza wysyłany jest odpowiedni kod skanowania klawisza. W przypadku dłuższego naciśnięcia przycisku ten sam kod skanowania jest wysyłany wielokrotnie, a po zwolnieniu tak zwany kod przerwania $ F0 jest umieszczany przed kodem skanowania.

Jednak „BIOS klawiatury” nadal wdraża te wartości. Po tej konwersji najwyższy bit ma zwykle wartość 0 dla kodu tworzenia , ale 1 dla kodu przerwania .

Przykład: po wdrożeniu spacja ma kod roboczy $ 39 i kod podziału $ B9.

Aby była kompatybilna z klawiaturą XT z klawiaturą MF2, klawiszom nowego bloku kursora (po konwersji) nadano ten sam kod ze specjalnym kodem $ E0 lub $ E1 w celu ich rozróżnienia. Stare oprogramowanie zwykle ignorowało nieznany kod $ E0 lub $ E1 i przetwarzało tylko następujący kod, który był taki sam, jak dla odpowiedniego klawisza starego połączonego bloku cyfry / kursora. Z drugiej strony, nowe oprogramowanie mogło w razie potrzeby rozpoznać kod $ E0 lub $ E1, a następnie wiedziało, że został naciśnięty klawisz nowego bloku kursora, a nie jedna z połączonych cyfr / bloku kursora.

Amerykańska klawiatura MF2 ma 101 klawiszy; 102 klawisze specyficzne dla danego kraju. Na klawiaturach niemieckich dodatkowy klawisz ma trzy znaki „<”, „>” i „|”, w tym celu zmniejszono rozmiar lewego klawisza Shift.

Skróty klawiszowe

  • Jeśli klawiatura jest zresetowana (komputer wysyła Reset = $ FF ), odpowiada na pomyślny test Basic Assurance z Bat = $ AA
  • Jeśli klawiatura jest zresetowana i występuje błąd, na przykład blokuje się klawisz, odpowiada BatE1 = $ FC lub BatE2 = $ FD .
  • Test komunikacji jest przeprowadzany przez komputer PC z echo = $ EE, a klawiatura odpowiada również za pomocą echo = $ EE .
  • Ogólnie wszystkie polecenia klawiaturowe są potwierdzane przez klawiaturę za pomocą Acknowledge Ack = $ FA . Jeśli z danymi jest coś nie tak, oznacza to nieporozumienie Misu = $ FE .
  • Jeśli klawiatura jest pytana o jej typ z Read ID = $ F2 , klawiatura MF2 odpowiada 2 bajtami ID1 = $ AB i ID2 = 83 $ . Ze względu na kompatybilność nigdy nie zmieniono tego dla nowszych klawiatur, więc w praktyce nie można zapytać o typ za pomocą oprogramowania (z wyjątkiem klawiatur USB, patrz poniżej).
  • Jeśli bufor klawiatury jest pełny, klawiatura odpowiada Full = $ FF .
  • Polecenie Set LED = $ ED z komputera PC, po którym następuje bajt, steruje diodami LED (Bit 0..2 = ScrlLock, NumLock, CapsLock; Bit 3..7 = 0).
  • Ustaw kod set = $ F0 przychodzący z komputera, po którym następuje bajt wybiera zestaw kodów 1..3.
  • Set code set = $ F0, a następnie 0 przychodzące z komputera pyta, który zestaw kodów jest aktywny.
  • Command Set Speed ​​= $ F3 z komputera PC, po którym następuje bajt, kontroluje czas opóźnienia między naciśnięciem klawisza a rozpoczęciem automatycznego powtarzania klawisza (bity 5, 6) oraz częstotliwość powtarzania (bit 0..4).
  • Enable = $ F4 pochodzące z komputera aktywuje proces skanowania, a Disable = $ F5 dezaktywuje proces skanowania, dzięki czemu żadne naciśnięcia klawiszy nie są rozpoznawane.
  • Ustaw wartość domyślną = $ F6 pochodzące z komputera ustawia wszystko na standardowe wartości.
  • Resend = $ FE przychodzące z komputera PC monituje klawiaturę o powtórzenie ostatniego kodu odpowiedzi. Resend = $ FE wychodzące z klawiatury odwrotnie monituje komputer o powtórzenie. Kody te są wysyłane, jeśli z powodu błędu linii zostaną odebrane błędy parzystości lub niepełne bajty.

Zestawy kodów

Tablica kodów klawiatury PC jest złożona; w samej klawiaturze MFM znajdują się trzy tabele z kodami skanowania, które można wybrać wysyłając kody poleceń na klawiaturę.

  • Zeskanuj zestaw kodów 1 (zasadniczo odpowiada klawiaturze XT)
  • Scancode zestaw 2 (zasadniczo odpowiada klawiaturze AT, dzisiejszemu standardowi)
  • Scancode-Set 3 (nowy, bardziej logicznie zorganizowany zestaw kodów klawiatury MF2, ale który nigdy się nie przyjął)

Dodatkowo konwersję kodów klawiatury można włączać i wyłączać za pomocą „Keyboard BIOS” umieszczonego w obudowie komputera (dzisiejszy standard: włączony); Daje to w sumie sześć możliwych wariantów kodu z perspektywy oprogramowania układowego i oprogramowania, które ostatecznie otrzymuje kody.

W klawiaturach innych producentów niż IBM czasami nie udało się zaimplementować zestawów kodów skanowania 1 i 3 lub nieprawidłowo je zaimplementować. Podobnie dezaktywacja konwersji kodu skanowania nie działa poprawnie na niektórych płytach głównych. Istniejące emulatory komputerów PC również nie implementują tych wariantów. Z tego powodu wszystkie dzisiejsze systemy operacyjne dla komputerów osobistych używają tylko zestawu kodów skanowania 2 z włączoną konwersją. Kontroler w klawiaturze przesyła kody do „BIOS klawiatury” w komputerze PC za pomocą zestawu kodów skanowania 2, a następnie konwertuje je na zestaw kodów skanowania 1, dlatego oprogramowanie zwykle pobiera tylko najstarszą wersję, zestaw 1, na wszystkich komputerach PC Face - na oryginalnym komputerze i bezpośrednio na XT, na komputerach AT i wszystkich nowszych komputerach PC poprzez implementację.

Klawiatury USB

Klawiatury USB używają nowego zestawu kodów skanowania niezwiązanych z różnymi starszymi systemami; odpowiednie sterowniki nowych systemów operacyjnych mogą przetwarzać te kody. W przypadku programów ładujących rozruch i starszych systemów operacyjnych ich kody skanowania są mapowane na stare kody skanowania przez oprogramowanie z systemu BIOS komputera. Emulowany jest tylko kod skanowania zestaw 2 z włączoną konwersją. Niektóre BIOS-y wykonują tę konwersję niekompletnie. B. czasami klawisz AltGr nie różni się od klawisza Alt, co jest problematyczne w przypadku klawiatur niemieckich.

Kody skanowania klawiatur USB są jednakowe we wszystkich architekturach. Klawiatury USB do serii Apple Macintosh używają tych samych kodów skanowania, co klawiatury USB do komputerów PC.

linki internetowe