W przypadku klawiatury Logitech K290 przez USB klawisze F. nie są domyślnie dostępne i muszę je nacisnąć Fnprzed użyciem, co tak naprawdę nie jest użyteczne.
Sam Fnklucz nie uruchamia żadnego zdarzenia xev
.
Naciśnięcie F1bez Fnwyzwalania dwóch kluczowych zdarzeń, kodu 50 ( Shift_L
) i kodu 133 ( Super_L
) i wyświetla komunikat „Touchpad wyłączony” na moim Kubuntu (ten sam komunikat dla każdego klawisza F1przez F4)
Chociaż większość klawiszy multimediów działa, wolałbym mieć bezpośredni dostęp do klawiszy F. Czy znasz jakiś sposób zmiany Fnzachowania?
Oto wynik, gdy naciskam F1bez Fn:
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
state 0x11, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 40, synthetic NO, window 0x0,
keys: 4294967238 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
state 0x51, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 40, synthetic NO, window 0x0,
request MappingPointer, first_keycode 0, count 0
I dla F2(wciąż nie Fn):
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
state 0x18, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 40, synthetic NO, window 0x0,
keys: 4294967238 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
state 0x58, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
F1z Fndaje oczekiwany wynik:
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64820204, (-856,-213), root:(1097,247),
state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64820284, (-856,-213), root:(1097,247),
state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
xev
ponownie uruchomić i wkleić dane wyjściowe dla dwóch różnych klawiszy funkcyjnych?Odpowiedzi:
Ten sam wynik uzyskałem, zamieniając kody klawiszy pomiędzy
Fn+Fx
iFx
gdzie x jest1,2,...12
.xmodmap -pke
aby uzyskać listę bieżących kodów klawiszy i symboli kluczy.xev
i naciśnijF1
poprzezF12
utrzymywanie uwagę jego kodu dostępu.~/.Xmodmap
pliku.Na przykład w moim systemie wynik (1):
Potem zamieniłem
~/.Xmodmap
:Następnie wziąć wpływ na bieg
xmodmap ~/.Xmodmap
.źródło
xev
nie można wyświetlić zdarzeń przechwyconych przez środowisko pulpitu. Lepszym sposobem testowania kluczy jest użycieshowkey
polecenia (w konsoli Linux, a nie w X11). Domyślam się, że system operacyjny otrzymuje kombinację Shift + Super + jakaś kombinacja klawiszy.Chociaż możliwe jest ponowne przypisanie tej kombinacji do klawisza F, prawdopodobnie byłoby to kłopotliwe: trzeba by było „zwolnić” klawisz Shift (ponieważ klawiatura symuluje jego naciśnięcie), a sprawienie, aby Shift + F1 działało, byłoby jeszcze bardziej skomplikowane , ponieważ wymagałoby to uprzedniego przytrzymania klawisza Shift.
Ten problem jest bardzo powszechny na laptopach, które często mają kombinację klawiszy do przełączania skrótów multimedialnych lub opcję w BIOS / firmware. Ale jak wspomniałeś, że chodzi o konkretny model klawiatury zewnętrznej, patrząc online, znalazłem ten projekt:
https://github.com/milgner/k290-fnkeyctl
Opis projektu stwierdza, że „zmienia on sposób działania klawiszy funkcyjnych na klawiaturach Logitech K290”, więc warto spróbować.
źródło