Jak działają klawisze Fn?


26

Lubię wiedzieć, jak Fndziałają klucze w moim laptopie. Myślę, że istnieje moduł jądra, który łapie Fnklucz i wywołuje niektóre skrypty, aby coś zrobić. W moim laptopie Fn+ F2przełącz moc sieci bezprzewodowej i niebieskiego zęba.

jest to generowane acpi_listen, gdy naciskam Fn+F2

hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009

i śledzenie jest wyprowadzane xevdla Fn+F2

keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release

Chyba za każdym razem, gdy naciskałem Fn+ F2dwa zdarzenia są wyskakiwane. Próbowałem znaleźć, jakie akcje są wykonywane dla tego klucza. doceniam każdy pomysł;)

Odpowiedzi:


26

Synetech daje bardzo czytelnego wyjaśnienia na temat Fnkluczy tutaj

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.

Należy również pamiętać, że Fnklucz działa niezależnie od systemu operacyjnego.

Ponadto ten artykuł może pomóc Ci wskazać właściwy kierunek:

Jądro posiada własny scancodedo keycodetabeli 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.


Postscriptum

Być może będę musiał nieco zrezygnować z wcześniejszego twierdzenia, że Fnklucze działają całkowicie niezależnie od systemu operacyjnego; bez wchodzenia w bardziej szczegółowe szczegóły techniczne wydaje się, że system operacyjny może nie „obsługiwać” wszystkich lub niektórych Fnklawiszy klawiatury, zobacz na przykład:


1
Dzięki, ciekawe informacje o klawiszach Fn. Właściwie chcę dowiedzieć się, która część uchwytu systemu operacyjnego jest scancodepowiązana na przykład z „kodem klucza 238”.
soroosh,

3
Może ten artykuł pomoże Ci skierować Cię w dobrym kierunku? „Jądro posiada własny scancodedo keycodetabeli 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ę nazywa keymap. ”
orzechowy o natty

1
Ten artykuł jest idealny, właśnie tego szukam
soroosh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.