Szczegóły techniczne
Po naciśnięciu klawisza na klawiaturze kontroler klawiatury (mały
układ scalony w klawiaturze) wykrywa obwód elektryczny i przetwarza go w celu zdekodowania, który klawisz został naciśnięty, a następnie wysyła
skancode na płytę główną . System operacyjny otrzymuje scancode z BIOS - u, a następnie wykonuje wszelkie niezbędne działania, aby przetworzyć to naciśnięcie klawisza.
W przypadku większości kluczy jest to dość proste. Po naciśnięciu A
klawisza kontroler klawiatury wysyła scancode na płytę główną, która następnie przekazuje go do systemu operacyjnego, który z kolei zwykle drukuje „A”. (Jeśli system operacyjny wykryje, że jeden z klawiszy modyfikujących jest aktualnie wciśnięty, może zrobić coś innego. W rzeczywistości możesz go skonfigurować tak, aby robił co chcesz, gdy Aklawisz jest wciśnięty z modyfikatorami lub bez).
Teraz Fnklucz jest wyjątkowy. Gdy go naciśniesz sam, nic się nie dzieje, ponieważ jest to wyłącznie klawisz modyfikujący i nie jest (ogólnie) przeznaczony do robienia czegokolwiek samodzielnie. Po przytrzymaniu go i naciśnięciu innego klawisza kontroler klawiatury wykrywa to i przegląda wbudowaną tabelę, aby sprawdzić, czy jest to znana kombinacja. Jeśli kombinacji nie ma w tabeli, to po prostu ją ignoruje, ale jeśli ta kombinacja znajduje się w tabeli, wówczas wyszukuje skojarzony scancode i wysyła ją.
Co widzi system operacyjny? To nie nie patrz skanowego na Fnklucz i scancode dla drugiego klucza. Zamiast tego widzi pojedynczy scancode związany z jakąkolwiek funkcją, na którą ustawiono kombinację Fn. Na przykład, jeśli producent laptopów ustawił
kombinację Fn+, Down Arrowaby zmniejszyć głośność, wówczas system operacyjny widzi scancode powiązany z tym Volume Down, który faktycznie mają niektóre klawiatury.
Jądro posiada własny scancode
do
keycode
tabeli mapowania, więc odwzorowuje pewną skanowego do kodu klawisza. Możesz zajrzeć do /usr/include/linux/input.h, aby zobaczyć, czego używa twoje jądro do mapowania kodów SCANCOD do keycode - nazywa się to
keymap
.
scancode
powiązana na przykład z „kodem klucza 238”.scancode
dokeycode
tabeli mapowania, więc odwzorowuje pewną skanowego do keycode Możesz zajrzeć na /usr/include/linux/input.h, aby zobaczyć, co się używa jądra dla scancode do odwzorowania kodów klawiszy. - to się nazywakeymap
. ”