En retard à la fête, mais cela m'a aussi rendu fou ; et, aussi têtu que je suis, abandonner n'était pas une option.
Essentiellement, voici ce que j'ai essayé, (en tant que mon 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, ajouter la commande xmodmap
à ~/.bashrc
a fonctionné, mais cela nécessite de lancer un terminal à chaque fois après la connexion)
Il y a quelques années(?), xkb
a été choisi pour gérer la cartographie et la configuration des touches (interagissant avec X), mais xmodmap
pourrait également demander des modifications liées aux touches à X, après que xkb
ait fait son travail lors de l'initialisation de la session X.
Le problème est de savoir quand ces réglages xmodmap doivent se produire?
Il semble que ces fichiers ci-dessus sont traités trop tôt dans le processus, et soit X n'était pas prêt à accepter les changements de xmodmap, soit xkb les écrasait.
Note : J'ai ajouté un peu de "traçage" à ces fichiers pour m'assurer qu'ils s'exécutaient effectivement à un moment donné!
Une solution qui semble fonctionner
Je n'étais pas enthousiaste à l'idée d'ajouter un fichier .desktop
initialement (un simple script d'une ligne devait suffire), mais cela fonctionne, donc le voici.
La solution vient de Comment remapper ou échanger des touches de clavier spéciales dans Linux? "solution 1"
Créez essentiellement le fichier ~/.config/autostart/my-xmodmap.desktop
et mettez-y :
[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 ne me suis pas embêté à essayer ~/
ou $HOME
qui peuvent également fonctionner à la place de /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 fichier ~/.Xmodmap
dans ce cas (ou utilisez l'option -e
, ou choisissez un autre nom de fichier!). Déconnectez-vous et reconnectez-vous.
Notez que vous pourriez créer le programme de démarrage depuis "Applications au démarrage".
Une autre solution serait d'oublier xmodmap et d'apprendre à configurer xkb
!
Modifier (encore)
Parfois, peut-être 25% des connexions, le xmodmap
semble encore ne pas fonctionner - alors que la commande est effectivement exécutée (un suivi le prouve). La seule conclusion à laquelle je pourrais arriver à ce moment est que le processus xkb
s'exécute tard dans le processus de connexion, et peut se terminer après que le xmodmap
ait été exécuté. On dirait une condition de concurrence... Donc, finalement, j'ai modifié la ligne exec
du fichier de bureau autostart en
Exec=$HOME/bin/mystart &
(notez le &
) mystart
est un script dans un nouveau répertoire bin
que j'ai créé qui contient
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-a-ete-executé
et
chmod u+x ~/bin/mystart
Le script dort 5 secondes avant d'exécuter xmodmap, et suit quand il a été exécuté (dans le fichier /tmp/xmodmap-a-ete-executé
).
En espérant que cela suffira!