Con el teclado Logitech K290 a través de USB, las teclas F. no son accesibles de manera predeterminada, y necesito presionar Fnantes de usarlas, lo cual no es realmente utilizable.
La Fnclave por sí sola no dispara ningún evento xev
.
Al pulsar F1sin Fnincendios dos eventos clave, código de tecla 50 ( Shift_L
) y el código de tecla 133 ( Super_L
) y muestra un mensaje "Panel táctil con discapacidad" en mi Kubuntu (el mismo mensaje para cada llaves F1a través de F4)
Si bien la mayoría de las teclas multimedia funcionan, prefiero tener acceso directo a las teclas F. ¿Conoces alguna forma de alternar el Fncomportamiento?
Aquí está la salida para cuando presiono F1sin 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
Y para F2(todavía no 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
F1con Fnda el 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
una vez más y pegar la salida para dos teclas F diferentes?Respuestas:
Obtuve el mismo resultado intercambiando los códigos clave entre
Fn+Fx
yFx
donde está x1,2,...12
.xmodmap -pke
para obtener una lista de los códigos de teclas y símbolos de teclas actuales.xev
y pulseF1
travésF12
manteniendo nota de su código clave.~/.Xmodmap
archivo.Por ejemplo, en mi sistema el resultado de (1):
Luego lo cambié
~/.Xmodmap
:Luego de tomar efecto correr
xmodmap ~/.Xmodmap
.fuente
xev
no puede mostrar eventos capturados por el entorno de escritorio. Una mejor manera de probar las teclas es usar elshowkey
comando (en la consola de Linux, no dentro de X11). Supongo que el sistema operativo realmente está recibiendo una combinación Shift + Super + alguna tecla.Aunque podría reasignar dicha combinación a solo una tecla F, probablemente sería problemático: tendría que "soltar" la tecla Shift (porque el teclado simula presionarla), y hacer que Shift + F1 funcione sería aún más complicado , ya que requeriría seguimiento si la tecla Mayús se mantuviera presionada anteriormente.
Este problema es muy común en las computadoras portátiles, que a menudo tienen una combinación de teclas para alternar teclas de acceso rápido multimedia o una opción en su BIOS / firmware. Pero como mencionó que se trata de un modelo específico de teclado externo, buscando en línea encontré este proyecto:
https://github.com/milgner/k290-fnkeyctl
La descripción del proyecto indica que "reconfigura la forma en que funcionan las teclas de función en los teclados Logitech K290", por lo que puede valer la pena intentarlo.
fuente