90 votes

xmodmap permanent dans Ubuntu 13.04

Je n'arrive pas à faire en sorte que xmodmap s'exécute à la connexion dans Ubuntu 13.04. J'ai cherché partout, y compris dans askubuntu et toutes les réponses que j'ai trouvées ne fonctionnent pas.

J'ai un fichier nommé .Xmodmap dans mon dossier personnel qui contient les mappings souhaités. Si je l'exécute manuellement, il fonctionne bien, il n'y a donc pas d'erreur. Pour le faire fonctionner au démarrage, j'ai essayé :

  1. En utilisant divers .xinitrc contenant l'une des commandes suivantes :

    • xmodmap .Xmodmap
    • xmodmap ~/.Xmodmap
    • /usr/bin/xmodmap /home/NAME/.Xmodmap
    • if [ -s ~/.Xmodmap ]; then
      xmodmap ~/.Xmodmap
      fi
  2. Utilisation de .Xresources au lieu de .xinitrc avec les mêmes variations.

  3. Le définir comme une application de démarrage.

Aucune des solutions ci-dessus ne fonctionne dans Ubuntu 13.04 (64 bits). J'ai également vu quelques idées pour modifier globalement les mappages de clavier, mais la plupart d'entre elles n'étaient pas applicables dans Ubuntu 13.04 (c'est-à-dire que les fichiers correspondants n'existaient pas à l'endroit spécifié) et je préfère de toute façon ne pas toucher aux paramètres globaux.

98voto

Daniel Points 1104

Ubuntu n'utilise plus xmodmap mais utilise plutôt xkb (d'après ce que j'ai compris, cela facilite les dispositions de clavier par fenêtre, entre autres choses).

Les fichiers de carte du système se trouvent dans

/usr/share/X11/xkb/symbols/

Les cartes semblent être chargées de manière hiérarchique, avec le fichier pc en tant que racine, et quel que soit le langage (par ex. en ) comme enfant de la racine.

Dans mon cas particulier, j'ai physiquement échangé la touche Page Up avec la touche Home et la touche Page Down avec la touche End sur mon clavier. pc comme suit :

 key <HOME> {    [  Prior        ]   };
 key <PGUP> {    [  Home         ]   };
 key  <END> {    [  Next         ]   };
 key <PGDN> {    [  End          ]   };

NOTE : Pour forcer Xorg à utiliser votre nouvelle carte de clavier, vous pouvez avoir à supprimer les cartes pré-compilées existantes (*.xkm) en

/var/lib/xkb/

et ensuite redémarrer Xorg.

Il existe diverses ressources sur xkb mais celui-ci est lié à Ubuntu.

20voto

izazueta Points 63

Pour moi, la configuration de xkb est trop compliquée si vous voulez remapper 1 ou 2 touches d'une manière qui n'est pas disponible dans les paramètres du système. De plus, la solution devrait rester du côté de l'utilisateur, sans avoir à éditer '/usr/share/X11/xkb/symbols/', etc. Forcer le chargement de 'xmodmap ~/.Xmodmap' en utilisant les applications de démarrage ne fonctionne que jusqu'à ce que vous suspendiez, changiez d'utilisateur ou modifiez la disposition du clavier. Donc, comme holocronweaver le suggère, avec des bouts de code que j'ai trouvé, j'ai fait un script Python à charger au démarrage de la session, qui recharge le '~/.Xmodmap' quand c'est nécessaire.

Vérifiez le rapport de bogue #1243642 (commentaire n° 6), et Téléchargez-le ici .

7voto

bagher Points 11

J'ai eu ce problème dans Ubuntu 14.04, et j'ai trouvé la solution aquí . Apparemment, Ubuntu n'est pas capable de configurer le clavier tout de suite après la connexion, mais un peu plus tard. Donc si vous ajoutez une commande

sleep 4 && xmodmap ~/.Xmodmap &

à ~/.bash_profile alors cela devrait fonctionner (c'est le cas pour moi).

EDIT : Il semble que cela ne fonctionne qu'après la connexion, pas après le démarrage. Je vais devoir étudier ce point plus tard.

7voto

Serge Stroobandt Points 3924

Convertir Caps Lock sur Esc para vim utiliser

Voici ma variante de la mise en route d'une clé de mappage script. Il convertit Caps Lock sur Esc sur un clavier quelconque pour l'utiliser avec vi , vim ou gvim .

Contrairement à la réponse de q4w56 cette réponse n'utilise pas d'infini while; do boucle. Sinon, l'un des cœurs de mon processeur double cœur atteignait 42 % toutes les 5 secondes, ce qui réduisait considérablement la charge de la batterie de mon ordinateur portable.

#!/usr/bin/env bash
sleep 4
xmodmap -e "clear Lock"
xmodmap -e "keysym Caps_Lock = Escape"

Enregistrez-le comme un script. Rendez le fichier exécutable avec chmod +x . Ajoutez le nom et l'emplacement de script à Session and Startup Application Autostart (dans Xubuntu).

Le comportement du clavier de cet utilisateur sera maintenu lors du redémarrage et de la déconnexion, mais ne sera pas suspendu. La persistance par la suspension peut être réalisée mais, malheureusement, seulement au niveau du système, et pas facilement au niveau de l'utilisateur.

EDITAR

Je me suis éloigné de la solution ci-dessus en faveur de cette solution qui offre, outre le Esc fonction sur CapsLock ainsi que les touches fléchées et les clés PgUpHomeEndPgDn par le biais de CapsLock + HJKL respectivement CapsLock + UIOP .

Raison d'être de ce remappage de clavier

Dans le monde de l'informatique d'aujourd'hui, il reste très peu d'utilité à l'ordinateur. Caps Lock clé. En général, il faut éviter d'utiliser TOUTES LES MAJUSCULES en vertu des deux netiquette y la séparation de la présentation et du contenu . De plus, le fait de toucher accidentellement le Caps Lock tout en éditant du texte avec vim n'est pas toujours immédiatement remarqué, mais entraîne invariablement des conséquences plutôt ennuyeux vim comportement plus loin. Désactiver le Caps Lock de la clé et de la réaffecter en une clé facile à atteindre. Esc Le résultat est une double victoire pour vim utiliser.

4voto

Harald Points 912

La réponse de @Daniel m'a mis sur la bonne voie, mais j'aimerais la développer.

Cela fonctionne pour moi sur Linux Mint 17.2 et Ubuntu 16.04.

J'ai essayé toutes les torsions auxquelles je pouvais penser pour continuer à utiliser xmodmap mais ils échouent tous lorsque le système passe en mode veille. Il en va de même pour les scripts de démarrage d'application qui utilisent setxkbmap dans les cas où le *settings-daemon (pour moi c'est xfce4) s'exécute plus tard que le script --- et l'ordre ne peut pas vraiment être influencé.

Ce que j'ai finalement trouvé est composé des ingrédients suivants :

1) Ecrire un fichier minimal de mappage de clavier pour /usr/share/X11/xkb/symbols . Appelons le fichier mylayout Cela peut être aussi simple que

xkb_symbols "basic" {
  name[Group1] = "My Layout";
  include "us"
  key <AE03> { [ 3, numbersign, sterling, sterling] };
  include "level3(ralt_switch)"
}
  • basic est juste un nom, nous le retrouverons plus tard.
  • El name[Group1] Similaire n'est qu'un nom, semble-t-il, mais il ne jouera aucun rôle plus tard.
  • include "us" comprend le clavier us simple. En fait, us est un autre fichier dans le même répertoire. Il s'agit de la disposition du clavier que nous adaptons. Choisissez-en une autre si nécessaire. Note : pas de point-virgule pour terminer cette ligne.
  • El key est une adaptation du clavier, d'autres peuvent suivre. Le site <AE03> peuvent être trouvés dans les fichiers sous /usr/share/X11/xkb/keycodes . Utilisez le xev pour déterminer que la touche "3" a le code 12 et que dans le fichier des codes de touche Xfree86 il est mis en correspondance avec <AE03> .
  • Enfin un autre include pour activer une autre option de clavier, dans ce cas, je veux que la touche Alt de droite soit la touche shift de niveau 3, c'est-à-dire la touche qui donne accès à la fonction sterling signe que j'ai défini ci-dessus. level3 est juste un nom de fichier dans le même dossier avec ralt_switch une section de celui-ci. Jetez un coup d'œil et choisissez ce que vous devez inclure.

2) J'ai fait no mettre le mylayout dans le dossier système. Je n'ai fait qu'un lien logiciel du dossier système vers un dossier de mon choix pour voir immédiatement qu'il ne s'agit pas d'un logiciel standard.

3) En outre, j'ai fait no réparer evdev.xml pour éviter les problèmes de mise à jour. Mais il faudrait pour cela trouver mylayout dans l'éditeur de configuration du clavier (pour xfce4 c'est xfce4-keyboard-settings ). A la place, j'ai utilisé xfce4-settings-editor et a changé keyboard-layout->XkbLayout à mylayout (le nom du fichier) et XkbVariant à basic (voir ci-dessus). Après, mylayout/basic s'affiche également dans l'éditeur de paramètres du clavier. Une entrée dans evdev.xml semble être uniquement nécessaire pour pouvoir sélectionner la mise en page.

De cette façon, les paramètres du clavier survivent maintenant au mode veille et au redémarrage.

Pour en savoir plus, cliquez ici : http://www.charvolant.org/~doug/xkb/html/node5.html .

Une autre approche pour résoudre le problème du mode veille (que je n'ai pas essayé moi-même), peut être trouvée ici : https://www.vinc17.net/unix/xkb.en.html .

MISE À JOUR : cela a fonctionné avec Mint 18.3 au moment même où j'ai modifié les paramètres dans xfce4-settings-editor comme décrit ci-dessus.

MISE À JOUR : Avec 18.04, gdm3 comme gestionnaire d'affichage et XFCE4 comme gestionnaire de fenêtres, il semble que ~/.Xmodmap soit relu et que les paramètres semblent pour survivre à une suspension. (J'utilise rarement la mise en veille et je ne suis jamais sûr du mode dans lequel l'ordinateur portable est alors vraiment).

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