Estoy tratando de usar xmodmappara reasignar Alt/ Superteclas en el teclado Dell L100, y tengo problemas para obtener los códigos de teclas.
Por ejemplo, usar xevno me da el código clave paraAlt
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 Right Superclave, xevy showkeyproporcione diferentes códigos clave, 134y 126respectivamente.
¿Qué está pasando con estos códigos clave?
Intenté obtener códigos clave showkey -ky usar el xmodmaparchivo a continuación, pero eso dio un mapa extraño que reasignó la bclave:
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

Respuestas:
Hay muchos jugadores entre su teclado y el proceso que finalmente maneja el evento del teclado. Entre las piezas principales del panorama se encuentra el hecho de que el sistema X tiene su propia capa de manejo de teclado, y X asocia diferentes "códigos de teclas" con las teclas que su sistema base Linux. El
showkeycomando le muestra los códigos clave en la jerga del sistema base de Linux. Paraxmodmapusted necesita los códigos de teclas X, que son lo quexevse muestra. Siempre que planee trabajar en X yxmodmapvolver a vincular su clave , ignoreshowkeysy escuche lo quexevdice.Lo que desea buscar en su
xevsalida son bloques como este:xevtiende a generar una gran cantidad de resultados, especialmente cuando mueve el mouse. Puede que tenga que desplazarse un poco hacia atrás para encontrar la salida que está buscando. En la salida anterior, vemos que lakeysym Alt_Lestá asociada con el código de tecla X64.fuente
xev -event keyboardsería suficiente para eliminar la mayor parte del ruido.xev debería funcionar
Extraño, mi xev ofrece un evento KeyPress y KeyRelease para alt (y para la tecla de Windows, aquí llamada "super"):
Y el de la derecha:
Puedo ver dos posibilidades:
xinit -- :1, lo que debería proporcionarle un servidor X con solo un xterm; ni siquiera habrá un administrador de ventanas ejecutándose. Salir de xterm cerrará la sesión).Una manera fácil, si sabes el nombre clave
Otra posibilidad: solo obtenga los códigos de clave de xmodmap:
Hay 64 y 108 de nuevo.
xmodmap -pmle mostrará solo el mapa modificador, que también le da los números (aunque, esta vez, en hexadecimal).fuente
"Detecto" tres problemas en su pregunta:
xeveshowkeyinformar diferentes códigos de tecla para una clave?xevno muestra Altser presionado correctamente?Con respecto a la primera pregunta: en estos días, donde el "controlador" del teclado en X realmente no maneja el hardware, podría simplemente pasar los códigos clave desde el núcleo al núcleo X, pero no lo hace. Agrega 8 al código clave antes de pasarlo.
Segundo: Algo en tu sesión X está tomando el Altevento. Las otras respuestas cubren esto ya. (Es decir
xev, no obtiene el evento que le gustaría ver). El culpable podría estar relacionado con su administrador de ventanas. Prueba una sesión X más desnuda.Tercero: no usar
xmodmap. Ha estado desactualizado por una década. Los nuevos chicos son XKB y su herramientasetxkbmap.Para intercambiar Alty Winya hay una opción preparada en XKB. Solo agrégalo:
fuente
setxkbmapcambio sea permanente?~/.xinitrc.Como root, ejecuta:
... para ver cuál es el código de escaneo para su clave misteriosa. Tengo algo como esto:
No estoy seguro de por qué parece que una clave genera dos códigos de escaneo. No es una cuestión de keydown / keyup, por lo que pude ver por el patrón. Tenga en cuenta la advertencia, por lo que es posible que desee ejecutar esto en modo de usuario único.
Supuse que 0x46 era mi código de escaneo.
A continuación, encuentre un código clave no utilizado con:
Aquí puede ver que el código clave 97 no se usa en mi sistema:
El código clave que usa X y el código clave que usa el núcleo están APAGADOS POR 8 por "razones históricas". Entonces tome 97 - 8 = 89 y use 89 con el comando setkeycodes (nuevamente como root):
Y deberías estar listo. Confirme con xev que está obteniendo un evento Keypress Event con el código clave de 97. (aunque una vez que le dije al archivo de claves Fluxbox que usara ese código clave ya no recibí eventos KeyPress, ¿tal vez porque Fluxbox los traga cuando los usa?)
Tenga en cuenta que los 'setkeycodes' no sobrevivirán al reinicio, por lo que deberá agregarlo a sus scripts de inicio (por ejemplo, en /etc/rc.local)
fuente
Estaba tratando de resolver esto por mí mismo y lo descubrí.
El principal problema es que no está obteniendo el evento para presionar la tecla. Mirando el registro que publicó, el motivo es evidente.
Puedes ver los
Focus{In,Out}eventos tienen unamodedeNotify{Grab,Ungrab}. Esto indica que una clave fue manejada por otro proceso (probablemente una aplicación de atajo / combinación de teclas).En mi caso, fueron xbindkeys, pero si está utilizando un entorno de escritorio, probablemente tengan un sistema de combinación de teclas. Para ver estos eventos es xev, deberá detener / deshabilitar el otro programa.
Si no puede determinar qué programa está robando los eventos clave, la mejor solución es iniciar otra sesión X sin que se ejecute. Ejecute el siguiente comando para iniciar otra sesión de X en la pantalla
:1, si ya está tomada, aumente el número al final. Por supuesto, puede cambiar el terminal a lo que prefiera o tenga instalado en su sistema.Luego corre de
xevnuevo. Eso debería darte el resultado sin que otros programas lo capturen. Tenga en cuenta que el administrador de ventanas que se inicia es el enfoque de desplazamiento, por lo que deberá colocar el cursor sobre la ventana xev para que se capturen las teclas.Como se dijo en esta excelente respuesta de dubiousjim , el código clave es diferente porque hay muchas capas entre xev y el núcleo.
fuente
Tuve el mismo problema con la
Alt_Ldesaparición en XUbuntu 14.04 (Alt_Restaba bien). Después de mucho jugar, observé queshowkeygrabé el golpe de teclado, peroxevno lo hice --- tenía que ser algo en el sistema de ventanas. Recorrí todas las configuraciones "Window Manager" y "Window Manager Tweaks", y no encontré nada. Finalmente, encontré un parásitoAlt_Len la lista de atajos de teclado (xfce4-keyboard-shortcuts) en el "Editor de configuraciones". Yo "reinicio" eso, ¡y estoy deAlt_Lespaldas! ElAlt_Lacceso directo perdido no apareció en ningún otro lugar excepto en el "Editor de configuraciones".fuente