Tarde a la fiesta, pero esto también me volvió loco; y, terco como soy, renunciar no era una opción.
Básicamente esto es lo que probé (como mi usuario o root si es necesario)
- ~ / .Xmodmap solamente
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( archivos de configuración, no lo toqué )
(En realidad, agregar el xmodmap
comando a ~/.bashrc
trabajado, pero requiere iniciar un terminal cada vez después de iniciar sesión)
Hace unos años (?), xkb
Fue elegido para ocuparse del mapeo y la configuración de las claves (interactuando con X), pero xmodmap
también podría solicitar cambios relacionados con las claves de X, después de xkb
hacer su trabajo durante la inicialización de la sesión X.
El problema es cuándo deberían ocurrir estas configuraciones de xmodmap
Se parece esos archivos anteriores se procesan demasiado pronto en el proceso, y, o bien X no estaba dispuesto a aceptar xmodmap cambios o xkb sobreescribiría ellos.
Nota: ¡Agregué algo de "seguimiento" a estos archivos para asegurarme de que realmente se estuvieran ejecutando en algún momento!
Una solución que parece funcionar.
No estaba interesado en agregar un .desktop
archivo inicialmente (un simple script de una línea tenía que ser suficiente), pero eso funciona, así que aquí está.
La solución viene de ¿Cómo reasignar o intercambiar teclas especiales de teclado en Linux? "solución 1"
Básicamente crea un ~/.config/autostart/my-xmodmap.desktop
archivo y ponlo en él:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
reemplace me
con su nombre de usuario (tenga en cuenta que no me molesté en intentarlo ~/
o $HOME
que puede funcionar igual de bien en lugar de /home/me
, y la ruta completa de xmodmap probablemente no sea necesaria ...), y agregue el bit de ejecución
chmod +x ~/.config/autostart/my-xmodmap.desktop
Los comandos xmodmap tienen que estar en un ~/.Xmodmap
archivo en este caso (¡o use la -e
opción, o elija otro nombre de archivo!). Cerrar sesión y volver a ingresar.
Tenga en cuenta que puede crear el programa de inicio desde "Aplicaciones de inicio".
¡Otra solución sería olvidar xmodmap y aprender a configurar xkb
!
Editar (nuevamente)
A veces, tal vez el 25% de los inicios de sesión, xmodmap
todavía parece no funcionar, mientras que el comando se ejecuta realmente (un rastreador lo demuestra). La única conclusión a la que podría llegar en este momento es que el xkb
proceso se ejecuta tarde en el proceso de inicio de sesión y puede finalizar después de que se xmodmap
haya ejecutado. Parece una condición de carrera ... Entonces, finalmente, cambié la exec
línea del archivo de escritorio de inicio automático a
Exec=$HOME/bin/mystart &
(tenga en cuenta que &
)
mystart
es un script en un nuevo directorio bin
que creé que contiene
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
y
chmod u+x ~/bin/mystart
El script duerme 5 segundos antes de ejecutar xmodmap, y rastrea cuándo se ejecutó (en el archivo /tmp/xmodmap-has-run
).
¡Ojalá eso sea todo!