Tard à la fête, mais cela m'a rendu fou aussi; et, aussi têtu que je suis, abandonner n'était pas une option.
Fondamentalement, c'est ce que j'ai essayé (en tant qu'utilisateur ou root si nécessaire)
- ~ / .Xmodmap uniquement
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( fichiers de configuration, je n'y ai pas touché )
(En fait, l'ajout de la xmodmapcommande à ~/.bashrctravaillé, mais il nécessite de démarrer un terminal à chaque fois après la connexion)
Il y a quelques années (?), A xkbété choisi pour traiter le mappage et la configuration des clés (interface avec X), mais xmodmappourrait également demander des modifications liées aux clés pour X, après avoir xkbfait son travail lors de l'initialisation de la session X.
Le problème est quand ces paramètres xmodmap doivent-ils se produire?
Il semble que ces fichiers ci-dessus soient traités trop tôt dans le processus, et soit X n'était pas prêt à accepter les modifications de xmodmap, soit xkb les remplacerait.
Remarque: j'ai ajouté un peu de "suivi" à ces fichiers pour m'assurer qu'ils fonctionnaient bien à un moment donné!
Une solution qui semble fonctionner
Je n'avais pas envie d'ajouter un .desktopfichier au départ (un simple script d'une ligne devait suffire), mais cela fonctionne, alors le voici.
La solution vient de Comment remapper ou échanger des touches de clavier spéciales sous Linux? "solution 1"
Fondamentalement, créez un ~/.config/autostart/my-xmodmap.desktopfichier et mettez-le:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
remplacez mepar votre nom d'utilisateur (notez que je n'ai pas pris la peine d'essayer ~/ou $HOMEque cela peut fonctionner aussi bien à la place /home/me, et le chemin complet de xmodmap n'est probablement pas nécessaire ...), et ajoutez le bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
Les commandes xmodmap doivent être dans un ~/.Xmodmapfichier dans ce cas (ou utilisez l' -eoption, ou choisissez un autre nom de fichier!). Déconnectez-vous et reconnectez-vous.
Notez que vous pouvez créer le programme de démarrage à partir de "Applications de démarrage".
Une autre solution serait d'oublier xmodmap et d'apprendre à configurer xkb!
Modifier (encore)
Parfois, peut-être 25% des ouvertures de session, le xmodmapsemble toujours ne pas fonctionner - pendant que la commande est réellement exécutée (un tracker le prouve). La seule conclusion à laquelle je pourrais arriver en ce moment est que le xkbprocessus s'exécute tard dans le processus d'ouverture de session et peut se terminer après l' xmodmapexécution. On dirait une condition de concurrence ... Donc, finalement, j'ai changé la execligne de fichier de démarrage automatique du bureau en
Exec=$HOME/bin/mystart &
(notez le &)
mystartest un script dans un nouveau répertoire que binj'ai créé qui contient
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
et
chmod u+x ~/bin/mystart
Le script dort 5 secondes avant d'exécuter xmodmap et suit quand il s'est exécuté (dans le fichier /tmp/xmodmap-has-run).
Espérons que ce sera tout!