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

16

J'ai créé le ~/.Xmodmapfichier suivant selon cette réponse .

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

En d' autres termes, échange Deleteet Menu, et faire Caps Lockune somme supplémentaire Escape.

La prochaine fois que je me suis connecté, Ubuntu m'a demandé si je voulais charger ~/.Xmodmapcomme prévu. Je l'ai chargé, mais rien ne s'est produit (à ce moment-là ou lors des connexions suivantes). Si je lance manuellement xmodmap ~/.Xmodmap, cela fonctionne comme prévu.

Je sais que cela a fonctionné au début de la version bêta 10.10, mais cela échoue lors de ma nouvelle installation 10.10. Je n'ai rien essayé avant 10h10. Des idées?

Edit: j'ai mis quelques instructions de débogage /etc/gdm/Xsessionpour m'assurer du ~/.Xmodmapchargement, et tout a commencé 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 redémarré à nouveau. La chose la plus étrange que j'ai jamais vue.

Une chose que j'ai réalisée est que la partie "remapper le verrouillage des majuscules pour s'échapper" du Xmodmap fonctionnait toujours. C'est juste le swap 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 pourquoi le problème s'est arrêté.

Matthieu
la source
J'éprouve moi-même ce même problème, ça me rend dingue. Si je trouve la cause, je ne manquerai pas de poster une réponse.
Jorge Israel Peña

Réponses:

11

Je sais que c'est idiot mais comme solution de contournement, vous pouvez simplement démarrer automatiquement xmodmap ~/.Xmodmap.

Vous pouvez également vérifier /etc/gdm/Xsessionla ligne usermodmap="$HOME/.Xmodmap"et si elle n'est pas là, ajoutez-la simplement à la fin du fichier. Si vous êtes le seul utilisateur du système, insérez simplement vos modifications /etc/X11/Xmodmap.

turbo
la source
2
Comment "démarrer automatiquement" les commandes?
miguel.martin
Voir Démarrage automatique . Le plus simple est probablement d'ajouter simplement une entrée Settings->Session and Startupou quelque chose du genre.
Mateen Ulhaq
Ou par exemple, ajoutez-le à votre shell, donc si vous ouvrez souvent des shells, il s'exécutera. La première chose que je fais lorsque j'entre dans Gnome est d'ouvrir un shell la plupart du temps, c'est donc une façon qui fonctionne.
trusktr
3

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!

Ø bague
la source
L'édition de la confituration xkb a fonctionné pour moi: askubuntu.com/a/1090892/1021380
postrational
2

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

Vous devrez peut-être le modifier un peu pour travailler pour vous, mais les instructions sont toutes là.

Robert Massaioli
la source
1
Ces instructions sont pour KDE, mais si je regarde l'équivalent Gnome ( /etc/gdm/Xsession), les lignes que le lien dit d'ajouter sont déjà dedans.
Matthew
2

Vous avez peut-être une erreur de syntaxe dans votre ~/.Xmodmapfichier?

Essayez de courir:

$ xmodmap ~/.Xmodmap

Cela devrait déclencher une erreur s'il y en a.

gpmcadam
la source
0

J'ai eu le même problème étrange, en essayant de démarrer mon Xmodmap tout en me connectant à ma session (Ubuntu 13.04). Je l'ai finalement fait fonctionner avec un fichier .xinitrc dans mon dossier d'accueil où j'ai mis ma commande, mais avec des chemins absolus vers celui-ci, c'est-à-dire:

/ usr / bin / xmodmap /home/MYNAME/.Xmodmap

Ensuite, j'ai dû redémarrer (pas seulement me reconnecter) pour qu'il soit exécuté.

greguti
la source
2
Cela ne fonctionne pas sous Ubuntu 14.04, pour moi.
miguel.martin