Estoy intentando configurar teclas de método abreviado para escribir signos diacríticos comunes. Puedo hacer que xdotool escriba el signo diacrítico en una terminal o desde la barra de comandos de icewm (o incluso desde gmrun):
xdotool key Aacute
Pero las siguientes asignaciones de teclas (en el archivo de claves icewm) no funcionan:
key "Ctrl+Alt+a" xdotool key Aacute
key "Ctrl+Alt+a" xdotool --delay 1000 key Aacute
En cambio, solo veo que el cursor parpadea una vez cuando escribo el acceso directo (si estoy en la terminal o en el editor de texto), pero no sucede nada más. Lo siguiente muestra una ventana emergente, por lo que el código clave en sí es correcto:
key "Ctrl+Alt+a" zenity --info --text="shortcut works"
¿Alguien tiene alguna forma de registrar la combinación de teclas, de modo que el signo diacrítico se escriba realmente en la aplicación activa?
Respuesta1
Usar setxkbmap
or xmodmap
parece ser lo correcto, pero FWIW y FTR descubrí que lo siguiente funcionó para mí después de encontrarme con esta pregunta. Espero que esto ayude a otros que quieran utilizar xdotool
.
He hecho que xdotool emule estas teclas ya que no las tengo en mi teclado. Tenga en cuenta el uso de &
para ejecutar el comando en segundo plano para que IceWM pueda regresar del manejo de la tecla de acceso rápido y evitar interferir con xdotool.
200 ms es el retraso más corto que podría usar y aún así hacer que funcione de manera confiable. No estoy seguro de si --clearmodifiers
tiene sentido para su caso de uso o no.
key "Ctrl+Up" xdotool sleep 0.2 key --clearmodifiers Page_Up &
key "Ctrl+Down" xdotool sleep 0.2 key --clearmodifiers Page_Down &
key "Ctrl+Shift+Up" xdotool sleep 0.2 key --clearmodifiers Home &
key "Ctrl+Shift+Down" xdotool sleep 0.2 key --clearmodifiers End &
También tenga en cuenta que mantener presionadas estas teclas no produce el comportamiento repetitivo esperado (porque las teclas de acceso rápido de IceWM no son la mejor opción para esto), pero está bien para mis propósitos.
Respuesta2
No pude hacer funcionar mi solución original, así que cambié la asignación del teclado. La asignación de teclado estadounidense predeterminada no tiene los signos diacríticos que necesito, pero la versión internacional sí. Para probarlo:
setxkbmap -layout 'us(intl)'
Pero la versión internacional usa componer de forma predeterminada para ciertas claves. Por ejemplo, el carácter ' ya no responde inmediatamente. Entonces, opté por crear mi propia asignación de teclado basada en el teclado estadounidense.
Creé un nuevo archivo:/usr/share/X11/xkb/symbols/erik
partial default alphanumeric_keys
xkb_symbols "basic" {
include "us"
include "eurosign(5)"
key <AC01> { [ a, A, aacute, Aacute ] };
key <AD03> { [ e, E, eacute, Eacute ] };
key <AD08> { [ i, I, iacute, Iacute ] };
key <AD09> { [ o, O, oacute, Oacute ] };
key <AD07> { [ u, U, uacute, Uacute ] };
key <RALT> { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ] };
modifier_map Mod5 { <RALT> };
};
para que xkb recoja los cambios:
sudo dpkg-reconfigure xkb-data
para probar la asignación de teclado:
setxkbmap -layout erik
Ahora alt_gr + [aeiou] debería escribir [áéíóú].
Hice los cambios permanentes llamando al comando anterior al inicio usando el archivo de inicio icewm. Creo que debería ser posible seleccionar el diseño usando el conmutador de teclado de su distribución, pero no lo he probado. Siéntete libre de nombrar el archivo con otro nombre, a menos que quieras darme el tremendo honor de ponerle mi nombre a tu asignación de teclado. Sólo asegúrese de evitar códigos de 2 letras, porque todas las asignaciones de países predeterminadas se denominan así.
notas:
Puede consultar los otros archivos de mapeo en el directorio de símbolos para ver ejemplos.
Algunos recursos para comprender el formato de archivo se pueden encontrar aquí:
https://www.x.org/wiki/XKB/