Pregunta:
Estoy tratando de usar xmodmap
para reasignar las teclas Alt / Super en el teclado Dell L100 y tengo problemas para obtener los códigos de teclas.
Por ejemplo, usar xev
no me da un código clave para Alt
FocusOut event, serial 36, synthetic NO, window 0x4a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 36, synthetic NO, window 0x4a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 36, synthetic NO, window 0x0,
keys: 122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Para la tecla Super derecha , xev
y showkey
dan diferentes códigos de showkey
: 134
y 126
respectivamente.
¿Qué está pasando con estos códigos clave?
Intenté obtener códigos de showkey -k
de showkey -k
y usar el archivo xmodmap
continuación, pero eso me dio un mapa extraño que reasignó la tecla b :
clear Mod1
clear Control
keycode 125 = Meta_L
keycode 126 = Meta_R
keycode 58 = Control_L
keycode 56 = Control_L
keycode 100 = Control_R
add Control = Control_L Control_R
add Mod1 = Meta_L Meta_R
Respuesta:
Hay muchos jugadores entre su teclado y el proceso que finalmente maneja el evento de teclado. Entre las principales piezas del panorama se encuentra el hecho de que el sistema X tiene su propia capa de manejo del teclado, y X asocia diferentes "códigos de teclas" con las teclas que su sistema base Linux. El comando showkey
le muestra los códigos de teclas en la jerga del sistema base Linux. Para xmodmap
, necesita los códigos de xmodmap
X, que son los que muestra xev
. Siempre que esté planeando trabajar en X y xmodmap
a xmodmap
su clave con xmodmap
, ignore las showkeys
y escuche lo que dice xev
.
Lo que desea buscar en su salida xev
son bloques como este:
KeyPress event, serial 27, synthetic NO, window 0x1200001, root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393), state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 27, synthetic NO, window 0x1200001, root 0x101, subw 0x0, time 6417474, (340,373), root:(342,393), state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
xev
tiende a generar una gran cantidad de resultados, especialmente cuando mueve el mouse. Puede que tenga que retroceder un rato para encontrar la salida que está buscando. En la salida anterior, vemos que el keysym Alt_L
está asociado con el código de tecla X 64
.