Definiowanie skrótów klawiaturowych z klawiszem Fn

17

Jestem przyzwyczajony do naciskania Fn+, Leftaby symulować Homeklawisz i Fn+ Rightdo End.

Na klawiaturze z fizycznym Homei Endklawiszami te Fnskróty klawiaturowe nie działają.

Jak zmapować niestandardowe Fnskróty klawiaturowe w systemie Ubuntu Linux?

mox
źródło
1
możliwy duplikat klawiszy multimedialnych Bind . Być może nie jest to dokładna kopia opisu problemu, ale rozwiązuje go ten sam podstawowy proces.
Daniel Andersson
Czy ktoś korzysta z nowoczesnych laptopów (2018), takich jak HP Spectre x360 (chociaż ma osobne klawisze PgUp itp.) I Dell XPS wie, czy klawisz funkcyjny zostanie wykryty tak jak inne klawisze?
MycrofD
1
Używam Lenovo Thinkpad X1 Carbon z Fnkluczem, który jest wykrywany jako kod klucza 151 przez xev. Gdy Fnjest wciśnięty, Lefta Rightklawisze nie generują żadnych zdarzeń. Fn+F2nie produkuje żadnych zdarzeń, ale działa zgodnie z oczekiwaniami - zmniejsza głośność.
Suor

Odpowiedzi:

16

W przeciwieństwie do modyfikatorów, takich jak Alt i Ctrl, naciśnięcie klawisza Fn nigdy nie jest przekazywane do systemu operacyjnego. Klawisz modyfikuje jedynie skancody innych klawiszy, więc naciśnięcie Fn+ Rightemuluje klawisz End, nawet jeśli fizycznie nie istnieje, ale są one nie do odróżnienia przez system operacyjny. To zachowanie jest kontrolowane wyłącznie przez elektronikę klawiatury i dlatego nie można go zmienić bez bałagania się w obwodach lub mikrokontrolerze.

Marcks Thomas
źródło
2
Istnieje jeden system operacyjny i komputer, który zdecydowanie stanowi wyjątek od tej reguły i są to laptopy Mac. Możesz zmodyfikować ten klucz za pomocą Karabinera. Thinkpady również wysyłają ten klucz do systemu operacyjnego, ale nie jest to klawisz modyfikujący, jak w Macach.
William
2
To nie jest prawda. xevpokazuje Fnnaciśnięcia klawiszy.
Suor
1
Cóż, na moim komputerze Dell z Debianem 10 xevnic nie pokazuje po naciśnięciu klawisza Fn.
Pierre
12

W większości systemów nie można wykryć samego Fnklucza, ale możesz spróbować użyć:

$ xev | grep --line-buffered keysym

aby dowiedzieć się, jakie klucze Fn-Lefti Fn-Rightwysłać. (To greppo prostu redukuje hałas.)

Jeśli masz szczęście, naciśnięcia tych klawiszy wyślą do komputera nieistotne naciśnięcia klawiszy, które możesz następnie ponownie przypisać.

Na przykład w moim systemie xevpokazuje, że moje Fn-Leftnaciśnięcie klawisza faktycznie wysyła XF86AudioPrevzdarzenie:

state 0x0, keycode 173 (keysym 0x1008ff16, XF86AudioPrev), same_screen YES,

Mogę z łatwością zmienić mapowanie, aby przełożyć je na Homekluczowe wydarzenie:

$ xmodmap -e 'keysym XF86AudioPrev = Home'

Mam nadzieję, że będziesz mógł zrobić to samo dla End, PageUp i PageDown.

Niestety, jeśli xev nie otrzyma niczego wyjątkowego po naciśnięciu, oznacza Fn-Leftto, że nie masz szczęścia.

Szkoda, że Fnnaciśnięcia klawiszy nie są wysyłane bezpośrednio, tak jak inne klawisze modyfikujące. Gdyby tak było, mielibyśmy znacznie więcej mocy, aby skonfigurować ich znaczenie za pomocą oprogramowania.

joeytwiddle
źródło
Niestety fn na moim laptopie nie rejestruje się przy zdarzeniach związanych ze zwiększaniem i zmniejszaniem klucza w taki sam sposób, jak inne klucze, uniemożliwiając poprawne działanie tego klawisza. Możesz jednak zmienić przypisanie do innych klawiszy.
William
5

Otworzyłem xevw terminalu. Wykrywa, kiedy nacisnąć przycisk Shift, Ctrl, Alt, i Win( Super), ale kiedy naciśnięty Fnklawisz to nie wykrywa go.

Oprogramowanie nie ma więc nic wspólnego z Fnkluczem; od sprzętu zależy decyzja, który klucz zostanie przesłany do oprogramowania (np. klucz Homelub End).

Aby klawiatura mogła to zrobić, musi już mieć twoją klawiaturę.

biggles5107
źródło