Com o teclado Logitech K290 via USB, as teclas F. não são acessíveis por padrão, e preciso pressionar Fnantes de usá-las, o que não é realmente utilizável.
A Fnchave sozinha não dispara nenhum evento xev
.
Pressionando F1sem Fnfogos dois eventos-chave, keycode 50 ( Shift_L
) e keycode 133 ( Super_L
) e exibe uma mensagem "Touchpad desactivado" no meu Kubuntu (a mesma mensagem para cada chaves F1através F4)
Embora a maioria das teclas de mídia funcione, prefiro ter acesso direto às teclas F. Você conhece alguma maneira de mudar o Fncomportamento?
Aqui está a saída para quando eu pressiono F1sem 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
E para F2(ainda não 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
F1com Fnfornece o resultado esperado:
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
novamente e colar a saída para duas teclas F diferentes?Respostas:
Obtive o mesmo resultado trocando os códigos de chave entre
Fn+Fx
eFx
onde x está1,2,...12
.xmodmap -pke
para obter uma lista dos códigos e símbolos das chaves atuais.xev
e pressioneF1
atravésF12
mantendo nota do seu código.~/.Xmodmap
arquivo.Por exemplo, no meu sistema, o resultado de (1):
Então eu troquei
~/.Xmodmap
:Então, para executar o efeito
xmodmap ~/.Xmodmap
.fonte
xev
não pode mostrar eventos capturados pelo ambiente da área de trabalho. Uma maneira melhor de testar chaves é usando oshowkey
comando (no console do Linux, não no X11). Suponho que o sistema operacional esteja realmente recebendo uma combinação de teclas Shift + Super +.Embora você possa remapear a combinação com apenas uma tecla F, provavelmente seria problemático: você teria que "liberar" a tecla Shift (porque o teclado simula pressioná-la), e fazer o Shift + F1 funcionar seria ainda mais complicado. , pois exigiria rastreamento se a tecla Shift fosse pressionada anteriormente.
Esse problema é muito comum em laptops, que geralmente possuem uma combinação de teclas para alternar teclas de atalho multimídia ou uma opção em seu BIOS / firmware. Mas como você mencionou que isso se refere a um modelo específico de teclado externo, procurando online, encontrei este projeto:
https://github.com/milgner/k290-fnkeyctl
A descrição do projeto afirma que "reconfigura a maneira como as teclas de função dos teclados Logitech K290 funcionam"; portanto, vale a pena tentar.
fonte