18 votes

Pourquoi mon fichier ~/.Xmodmap ne se charge-t-il pas à la connexion?

J'ai créé le fichier suivant ~/.Xmodmap conformément à cette réponse.

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

En d'autres termes, échanger Delete et Menu, et faire de Caps Lock un supplémentaire Escape.

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é (ni à ce moment-là ni lors des connexions suivantes). Si j'exécute manuellement xmodmap ~/.Xmodmap, ça fonctionne comme prévu.

Je sais que cela fonctionnait au début de la version bêta de 10.10, mais ça ne fonctionne pas sur mon installation fraîche de 10.10. Je n'ai pas essayé sur des versions antérieures à la 10.10. Des idées?

Édition : J'ai ajouté quelques instructions de débogage dans /etc/gdm/Xsession pour m'assurer que ~/.Xmodmap se chargeait, et tout a magiquement commencé à fonctionner. Je n'ai rien changé sauf ajouter quelques échos, et ça fonctionne toujours maintenant que j'ai rétabli mes changements et redémarré. La chose la plus étrange que j'aie jamais vue.

Une chose que j'ai réalisée, c'est que la partie "remapper Caps Lock en Escape" du Xmodmap fonctionnait toujours. C'était juste l'échange Delete/Menu qui a échoué. Je laisse cette question ouverte pour le moment au cas où quelqu'un d'autre rencontre le même problème, car je ne sais pas vraiment pourquoi le problème s'est arrêté.

12voto

Steve Points 2204

Je sais que c'est stupide mais comme solution de contournement, vous pourriez simplement utiliser l'autostart xmodmap ~/.Xmodmap.

Vous pourriez également vérifier /etc/gdm/Xsession pour la ligne usermodmap="$HOME/.Xmodmap" et si elle n'est pas là, il suffit de l'ajouter à la fin du fichier. Si vous êtes le seul utilisateur du système, mettez simplement vos modifications dans /etc/X11/Xmodmap.

7voto

gio Points 154

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!

4voto

Brian Gianforcaro Points 11985

Voici, peut-être une meilleure réponse alors: http://cweiske.de/howto/xmodmap/ar01s06.html

Vous devrez peut-être le personnaliser un peu pour qu'il fonctionne pour vous, mais les instructions sont toutes là.

3voto

user7305 Points 1558

Peut-être avez-vous une erreur de syntaxe dans votre fichier ~/.Xmodmap ?

Essayez d'exécuter :

$ xmodmap ~/.Xmodmap

Cela devrait renvoyer une erreur s'il y en a.

3voto

Pierre Lasorak Points 51

Malheureusement, il semble s'agir d'un problème (très) ancien, simplement parce qu'après Gnome 3.6, le support de xmodmap a été abandonné.

Ceci est discuté dans Remap keys on GNOME3.8 using xmodmap? et Bug 873656 - .Xmodmap file not loaded by Gnome 3.x .

La solution est de passer à xkb. Il y a un peu d'aide provenant du commentaire 29 dans le deuxième lien.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X