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 xmodmap
commande à ~/.bashrc
travaillé, 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 xmodmap
pourrait également demander des modifications liées aux clés pour X, après avoir xkb
fait 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 .desktop
fichier 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.desktop
fichier et mettez-le:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
remplacez me
par votre nom d'utilisateur (notez que je n'ai pas pris la peine d'essayer ~/
ou $HOME
que 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 ~/.Xmodmap
fichier dans ce cas (ou utilisez l' -e
option, 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 xmodmap
semble 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 xkb
processus s'exécute tard dans le processus d'ouverture de session et peut se terminer après l' xmodmap
exécution. On dirait une condition de concurrence ... Donc, finalement, j'ai changé la exec
ligne de fichier de démarrage automatique du bureau en
Exec=$HOME/bin/mystart &
(notez le &
)
mystart
est un script dans un nouveau répertoire que bin
j'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!