J'ai créé le ~/.Xmodmap
fichier suivant selon cette réponse .
keysym Delete = Menu
keysym Menu = Delete
clear Lock
keycode 0x42 = Escape
En d' autres termes, échange Delete
et Menu
, et faire Caps Lock
une somme 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 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/Xsession
pour m'assurer du ~/.Xmodmap
chargement, 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é.
Réponses:
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/Xsession
la ligneusermodmap="$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
.la source
Settings->Session and Startup
ou quelque chose du genre.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)
(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), maisxmodmap
pourrait également demander des modifications liées aux clés pour X, après avoirxkb
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: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 execLes 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 lexkb
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é laexec
ligne de fichier de démarrage automatique du bureau en(notez le
&
)mystart
est un script dans un nouveau répertoire quebin
j'ai créé qui contientet
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!
la source
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à.
la source
/etc/gdm/Xsession
), les lignes que le lien dit d'ajouter sont déjà dedans.Vous avez peut-être une erreur de syntaxe dans votre
~/.Xmodmap
fichier?Essayez de courir:
Cela devrait déclencher une erreur s'il y en a.
la source
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é.
la source