57 votes

Comment puis-je configurer Xmodmap à la connexion ?

Comme la disposition de mon clavier ne me convient pas, j'exécute xmodmap lors de la connexion. Le script est nommé .profile et ça marche bien, mais ça casse l'interface Unity.

Je veux savoir où mettre le xmodmap pour qu'il s'exécute lors de ma connexion et ne casse rien.

J'ai déjà essayé de le mettre dans le .bash_login y .bash_profile sans succès ( xmodmap ne règle pas mon clavier).

Quelles sont mes options ?

41voto

Le bon endroit pour mettre xmodmap ~/.Xmodmap (pour que vos modifications soient lues au démarrage) se trouve dans ~/.xinitrc (voir l'explication ci-dessous), bien que vous puissiez alternativement placer la balise xmodmap comme élément de démarrage ( /usr/bin/xmodmap /home/user/.Xmodmap ). Je peux dire que pour 12.04 (et vraisemblablement 12.10), ces deux alternatives fonctionnent définitivement, car dans les deux cas, elles sont lues de la manière suivante nach vous vous connectez avec lightdm . (J'ai changé Retourner à a Majuscule droite et la modification n'a pris effet qu'après avoir saisi mon mot de passe et m'être connecté).

Veuillez noter : si vous êtes sur Xfce, c'est noté sur la page d'accueil du site. FAQ officielle de Xfce que vous devrez peut-être créer un élément de démarrage au lieu d'utiliser ~/.xinitrc et que vous pourriez avoir à retarder l'exécution pour que la xmodmap ne sont pas écrasés par setxkbmap . Vous pouvez utiliser un délai pour y parvenir dans votre entrée de démarrage :

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(Pour l'entrée de démarrage il est nécessaire de spécifier des chemins absolus)

Chaque fois setxkbmap est exécuté pour changer la disposition du clavier, vous devrez exécuter xmodmap ~/.Xmodmap à nouveau dans le terminal.

Créer ~/.xinitrc

Créez un fichier dans votre dossier personnel appelé .xinitrc avec

touch .xinitrc

et la place qu'il occupe :

xmodmap ~/.Xmodmap

Votre Xmodmap Le fichier doit no ont des entrées dans le xmodmap -e " " comme celui qui est utilisé dans le terminal pour définir temporairement les valeurs. Il doit comporter des entrées dans ce format :

keycode 65 = Tab
keycode 23 = Space

Il est souvent difficile de savoir lequel des différents X (tels que .xprofile , .xinitrc etc) sont lues au démarrage, mais .xinitrc semble être encore lu sous 12.04, alors que .Xmodmap ou .xinputrc ne se lisent pas toutes seules.

17voto

kontrollanten Points 361

J'utilise ElementaryOS (avec son gestionnaire de fenêtre basé sur GNOME) et j'ai trouvé une solution en utilisant xdg autostart scripts. De nombreux gestionnaires de fenêtres utilisent xdg, donc je suppose que cette approche fonctionnera également dans d'autres environnements. Au moins, cela devrait fonctionner avec GNOME.

xdg run scripts en ~/.config/autostart lors de la connexion dans une session X. Pour charger la configuration de xmodmap lors de la connexion, ajoutez le script suivant à ~/.config/autostart/xmodmap.desktop :

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

Ensuite, déconnectez-vous et reconnectez-vous, et votre configuration Xmodmap devrait avoir été chargée.

Si cela ne fonctionne pas, essayez de lancer xmodmap dans le terminal pour voir si c'est xmodmap qui se plaint :

$ xmodmap ~/.Xmodmap

Si vous n'obtenez aucune erreur, exécutez la commande suivante pour déboguer :

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap

4voto

djeikyb Points 28025

Je n'ai pas l'interface de l'unité sous les yeux pour le moment, mais essayez de cliquer sur le bouton Applications du lanceur, puis tapez démarrage .

Il devrait y avoir une application appelée Applications de démarrage (ou autre). Cliquez dessus et ajoutez votre commande xmodmap (ex. xmodmap /home/thiago/.Xmodmap ).

Il est important de 使い道 chemin absolu , no ~/Xmodmap .
Si cela ne fonctionne toujours pas, vous pouvez essayer d'ajouter un peu de retard comme suggéré. par hxpax .

4voto

user385772 Points 31

Sur Mint 17/18, je peux réaliser cela bu mettre mes scripts dans l'application de démarrage, avec un délai de 1 seconde.

Comme Mint 18 est dérivé d'Ubuntu 1604, je pense que vous pouvez faire la même chose, ou installer le panneau de gestion des applications de démarrage d'abord s'il n'est pas là.

J'espère que cela vous aidera.

2voto

ETech Points 121

Pour gnome3 :

xinitrc commence par /etc/X11/xinit/xinitrc et ne contient qu'une seule commande : . /etc/X11/Xsession Ce fichier Xsession global définit les chemins qui sont en cours d'exécution :

    USERXSESSION=$HOME/.xsession
    USERXSESSIONRC=$HOME/.xsessionrc

J'ai mis echo $(date) >> ~/sesscheck en $USERXSESSIONRC pour vérifier si ce fichier est exécuté lors de la connexion de gnome. Cela fonctionne. Cependant, si vous mettez xmodmap ~/.Xmodmap au lieu de l'enregistrement du fichier de test, le mappage des clés reste par défaut. Cela signifie que le xmodmap par défaut prévaut sur les paramètres lorsque xinitrc est déjà lancé.

Comme indiqué ci-dessus par @kontrollanten, le moyen le plus fiable est de créer un fichier .desktop et le mettre dans ~/.config/autostart répertoire. Exemple d'entrée dans le bureau, modification de la keymap après la connexion de l'utilisateur Gnome :

[Desktop Entry]
Version=1.0
Type=Application
Encoding=UTF-8
Name=Correct keys layout
Exec=/usr/bin/xmodmap ~/.Xmodmap
Terminal=false
StartupNotify=false
Categories=Application;
X-GNOME-Autostart-enabled=true

Dans mon cas, j'ai perdu toute fonctionnalité du pavé numérique et j'ai dû faire correspondre les codes du pavé numérique à des chiffres exacts. Donc, ~/.Xmodmap est :

keycode  87 = 1 1 1 1 1 1
keycode  83 = 4 4 4 4 4 4
keycode  79 = 7 7 7 7 7 7
keycode  80 = 8 8 8 8 8 8
keycode  84 = 5 5 5 5 5 5
keycode  88 = 2 2 2 2 2 2
keycode  81 = 9 9 9 9 9 9
keycode  89 = 3 3 3 3 3 3
keycode  85 = 6 6 6 6 6 6
keycode  90 = 0 0 0 0 0 0
keycode  86 = plus plus plus plus plus plus
keycode  82 = minus minus minus minus minus minus
keycode  91 = period period period period period period

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