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
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.