J'ai créé le fichier ~/.Xmodmap
suivant comme cette réponse .
keysym Delete = Menu
keysym Menu = Delete
clear Lock
keycode 0x42 = Escape
En d’autres termes, permutez Delete
et Menu
et faites de Caps Lock
un Escape
supplémentaire.
La prochaine fois que je me suis connecté, Ubuntu m'a demandé si je voulais charger ~/.Xmodmap
comme prévu. Je l'ai chargé, mais rien ne s'est passé (à ce moment-là ou lors de connexions ultérieures). Si je lance manuellement xmodmap ~/.Xmodmap
, cela fonctionne comme prévu.
Je sais que cela a fonctionné tôt dans la version bêta de 10.10, mais cela échoue lors de la nouvelle installation de 10.10. Je n'ai rien essayé avant 10.10. Des idées?
Edit: J'ai mis quelques instructions de débogage dans /etc/gdm/Xsession
pour m'assurer que ~/.Xmodmap
était en cours de chargement et que tout a commencé à fonctionner comme par magie. Je n'ai rien changé sauf l'ajout d'échos, et cela fonctionne toujours maintenant que j'ai annulé mes modifications et que j'ai redémarré. La chose la plus étrange que j'ai jamais vue.
Je me suis rendu compte que la partie "remappage des majuscules pour échapper" de Xmodmap fonctionnait toujours. Ce n’est que l’échange Supprimer/Menu qui a échoué. Je laisse cette question ouverte pour le moment, au cas où quelqu'un d'autre aurait le même problème, car je ne sais pas réellement pourquoi le problème s'est arrêté.
Je sais que c'est idiot, mais comme solution de contournement, vous pouvez simplement lancer automatiquement xmodmap ~/.Xmodmap
.
Aussi, vous pouvez vérifier /etc/gdm/Xsession
pour la ligne usermodmap="$HOME/.Xmodmap"
et si ce n’est pas le cas, il suffit de l’ajouter à la fin du fichier. Si vous êtes le seul utilisateur du système, indiquez simplement vos modifications dans /etc/X11/Xmodmap
.
Peut-être avez-vous une erreur de syntaxe dans votre fichier ~/.Xmodmap
?
Essayez de courir:
$ xmodmap ~/.Xmodmap
Cela devrait déclencher une erreur s'il y en a.
En retard à la fête, mais cela m'a rendu fou aussi; et, têtu comme je suis, abandonner n'était pas une option.
En gros, c’est ce que j’ai essayé (en tant qu’utilisateur ou en tant que root si nécessaire)
(En fait, l'ajout de la commande xmodmap
à ~/.bashrc
a fonctionné, mais il est nécessaire de démarrer un terminal à chaque fois après la connexion.)
Il y a quelques années (?), xkb
a été choisi pour gérer le mappage et la configuration des clés (interface avec X), mais xmodmap
peut également demander des modifications liées à la clé de X, après que xkb
a effectué son travail lors de l'initialisation de la session X.
Le problème est de savoir quand ces paramètres xmodmap doivent-ils apparaître?
Il semble que les fichiers ci-dessus sont traités trop tôt dans le processus et soit X n'était pas prêt à accepter les modifications de xmodmap, soit xkb les écraserait.
Remarque: j'ai ajouté un "suivi" à ces fichiers pour m'assurer qu'ils étaient effectivement exécutés à un moment donné!
Une solution qui semble fonctionner
Je n'avais pas envie d'ajouter un fichier .desktop
au début (un simple script sur une ligne devait suffire), mais cela fonctionne, alors le voici.
La solution vient de Comment remapper ou échanger des touches spéciales du clavier sous Linux? "solution 1"
Généralement, créez le fichier ~/.config/autostart/my-xmodmap.desktop
et mettez-le dans:
[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
qui pourrait fonctionner aussi bien à la place de /home/me
, et le chemin d'accès 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 dans ce cas être dans un fichier ~/.Xmodmap
(ou utilisez l'option -e
, ou choisissez un autre nom de fichier!). Déconnexion et retour dans.
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 connexions, le xmodmap
semble toujours ne pas fonctionner - alors que la commande est en cours d'exécution (un outil de suivi le prouve). La seule conclusion à laquelle je puisse en venir pour l'instant est que le processus xkb
s'exécute en retard dans le processus d'ouverture de session et peut se terminer après l'exécution de xmodmap
. Cela ressemble à une situation de concurrence critique ... Alors, finalement, j'ai changé la ligne du fichier de bureau de démarrage automatique exec
en
Exec=$HOME/bin/mystart &
(notez le &
) mystart
est un script situé dans un nouveau répertoire bin
que j'ai créé et 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 indique le moment de son exécution (dans le fichier /tmp/xmodmap-has-run
).
Espérons que ce sera tout!
Voici peut-être une meilleure réponse alors: http://cweiske.de/howto/xmodmap/ar01s06.html
Vous devrez peut-être ajuster un peu pour travailler pour vous, mais les instructions sont toutes là.
J'ai eu le même problème étrange, en essayant de démarrer mon Xmodmap tout en vous connectant à ma session (Ubuntu 13.04). Je l'ai finalement fait fonctionner avec un fichier .xinitrc dans mon dossier de départ où j'ai placé ma commande, mais avec des chemins absolus, c'est-à-dire:
/ usr/bin/xmodmap /home/MYNAME/.Xmodmap
Ensuite, j'ai dû redémarrer (pas seulement reloguer) pour qu'il soit exécuté.