Je ne peux pas exécuter xmodmap lors de la connexion dans Ubuntu 13.04. J'ai cherché autour, 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 mappages souhaités. Si je le lance manuellement, cela fonctionne bien, il n'y a donc pas d'erreur. Afin de le faire fonctionner au démarrage, j'ai essayé:
Utilisation de 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
Utiliser .Xresources
au lieu de .xinitrc
avec les mêmes variantes.
Définir comme une application de démarrage.
Aucune de ces solutions ne fonctionne dans Ubuntu 13.04 (64 bits). J'ai également vu quelques idées sur la modification globale des 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à où ils étaient spécifiés) et je préfère de toute façon ne pas toucher aux paramètres globaux.
Ubuntu n'utilise plus xmodmap
name__, mais plutôt xkb
(pour autant que je sache, cela facilite entre autres la disposition du clavier par fenêtre).
Les fichiers de carte du système sont en
/usr/share/X11/xkb/symbols/
Les mappes semblent être chargées hiérarchiquement, avec la mappe pc
en tant que racine et quelle que soit la langue (par exemple, en
name__) en tant qu'enfant de la racine.
Dans mon cas particulier, j'ai échangé physiquement Page Up avec Home et Page Down avec End sur mon clavier. J'ai donc apporté des modifications très grossières à la mappe pc
à l'échelle du système, comme suit:
key <HOME> { [ Prior ] };
key <PGUP> { [ Home ] };
key <END> { [ Next ] };
key <PGDN> { [ End ] };
REMARQUE: pour forcer Xorg à utiliser votre nouvelle carte de clavier, vous devrez peut-être supprimer les cartes pré-compilées existantes (* .xkm) dans
/var/lib/xkb/
puis redémarrez Xorg.
xkb
contient diverses ressources, mais celui-ci est lié à Ubuntu.
Pour moi, la configuration de xkb est trop compliquée si vous souhaitez remapper 1 ou 2 clés d’une manière non disponible dans les paramètres système. De plus, la solution doit rester du côté utilisateur, sans éditer '/ usr/share/X11/xkb/symboles /' etc. ou changez la disposition du clavier. Ainsi, comme Holocronweaver le suggère, avec des extraits de code que j'ai trouvés, j'ai créé un script python à charger au démarrage de la session, qui recharge le '~/.Xmodmap' lorsque cela est nécessaire.
Vérifiez les rapport de bogue # 1243642 (commentaire n ° 6), et téléchargez-le ici .
J'ai eu ce problème dans Ubuntu 14.04 et j'ai trouvé la solution ici . Apparemment, Ubuntu n'est pas capable de configurer le clavier immédiatement après s'être connecté, mais c'est un peu plus tard. Donc si vous ajoutez une commande
sleep 4 && xmodmap ~/.Xmodmap &
~/.bash_profile
alors ça devrait marcher (ça marche pour moi).
EDIT: Cela semble fonctionner uniquement après la connexion, pas après le démarrage. Je vais devoir enquêter plus tard.
vim
utiliserVoici ma variante d'un script de démarrage de mappage de clé. Il convertit Caps Lock dans Esc sur n'importe quel clavier à utiliser avec vi
name__, vim
ou gvim
name__.
Contrairement à la réponse de q4w56 , cette réponse n'utilise aucune boucle infinie while; do
. Sinon, un noyau de mon processeur double cœur atteindrait 42% toutes les 5 secondes, ce qui réduirait 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 en tant que script. Rendre le fichier exécutable avec chmod +x
. Ajoutez le nom et l'emplacement du script à Session and Startup → Application Autostart
(sous Xubuntu).
Le comportement du clavier pour cet utilisateur restera persistant lors du redémarrage et de la déconnexion, mais pas en suspension. La persistance par le biais de la suspension peut être réalisée , mais malheureusement uniquement au niveau du système, pas facilement au niveau de l'utilisateur.
Dans le monde informatique d’aujourd’hui, il reste très peu d’utilisation pour le Caps Lock clé. En général, on devrait s'abstenir d'utiliser ALL CAPS en vertu des deux netiquette et la séparation de la présentation et du conten . De plus, frapper accidentellement le Caps Lock lorsque vous modifiez du texte avec vim
n’est pas toujours immédiatement noté, mais il en résulte invariablement un comportement plutôt ennuyant vim
. Désactiver le Caps Lock clé tous ensemble et le réaffecter comme un facile à atteindre Esc key entraîne un double gain pour vim
use.
@ La réponse de Daniel m'a indiqué la bonne voie, mais je voudrais m'étendre sur celle-ci.
Fonctionne pour moi sur Linux Mint 17.2 et Ubuntu 16.04.
J'ai essayé tous les tournants auxquels je pouvais penser en utilisant toujours xmodmap
name__, mais ils échouent tous lorsque le système passe en mode veille. Il en va de même pour les scripts d’application de démarrage utilisant setxkbmap
dans les cas où le * settings-daemon (pour moi c’est xfce4) est postérieur au script --- et où l’ordre ne peut pas vraiment être influencé.
Ce que j'ai finalement trouvé contient les ingrédients suivants:
1) Écrivez un fichier de correspondance de clavier minimal pour /usr/share/X11/xkb/symbols
. Permet d’appeler le fichier mylayout
name__. 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.name[Group1]
n'est qu'un nom, mais il ne jouera aucun rôle plus tard.include "us"
inclut le clavier standard américain. En fait, us
est un autre fichier du même répertoire. C'est la disposition du clavier que nous adaptons. Choisissez-en un autre selon vos besoins. Remarque: pas de point-virgule pour terminer cette ligne.key
est une adaptation du clavier, d'autres peuvent suivre. Le <AE03>
se trouve dans les fichiers sous /usr/share/X11/xkb/keycodes
. Utilisez le programme xev
pour déterminer que la clé "3" a le code clé 12 et que, dans le fichier de codes clés Xfree86
, il est mappé à <AE03>
.include
pour activer une autre option du clavier. Dans ce cas, je souhaite que la touche Alt droite soit la touche Maj de niveau 3, c’est-à-dire la touche qui donne accès au signe sterling
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. Regardez autour de vous et choisissez ce que vous devez inclure.2) J'ai pas mis le mylayout
dans le dossier système. Au lieu de cela, je n’ai créé qu’un lien symbolique du dossier système vers un dossier de mon goût pour constater immédiatement qu’il ne s’agissait pas d’un logiciel standard.
3) En outre, j’ai pas corrigé evdev.xml
, encore une fois pour éviter les tracas liés à la mise à jour. Mais cela serait nécessaire pour trouver mylayout dans l'éditeur de configuration du clavier (pour xfce4, il s'agit de xfce4-keyboard-settings
). Au lieu de cela, j'ai utilisé xfce4-settings-editor
et changé keyboard-layout->XkbLayout
en mylayout
(le nom du fichier) et XkbVariant
en basic
(voir ci-dessus). Ensuite, mylayout/basic
s'affiche également dans l'éditeur de configuration du clavier. Une entrée dans evdev.xml
ne semble être nécessaire que pour pouvoir sélectionner la mise en page.
De cette façon, les paramètres du clavier survivent maintenant au mode veille et redémarrent.
Plus de fond peut être trouvé ici: http://www.charvolant.org/~doug/xkb/html/node5.html .
Une autre approche pour résoudre le problème du mode veille (non essayé moi-même), peut être trouvée ici: https://www.vinc17.net/unix/xkb.en.html .
UPDATE: a travaillé avec Mint 18.3 au même moment où j'ai modifié les paramètres dans xfce4-settings-editor comme décrit ci-dessus.
UPDATE: Avec 18.04, gdm3 en tant que gestionnaire d’affichage et XFCE4 en tant que gestionnaire de fenêtres, il semble que ~/.Xmodmap soit relu et les paramètres semblent pour survivre à une suspension. (J'utilise rarement suspendre et je ne suis jamais sûr du mode d'utilisation du portable alors).
J'ai eu le problème aussi sur Ubuntu 16.04 avec fcitx, et j'avais la solution sur le wiki de fcitx , mais il faut que fcitx soit à la version 4.2.7 ou ultérieure.
touch ~/.Xmodmap
Il y a aussi une explication pour la raison.
RÉVISION
Une mise à jour au début de 2018 a mis fin à la persistance - rechargement automatique du mappage de clavier après une suspension ou une mise en veille prolongée. Depuis que les méthodes utilisant les scripts /etc/pm/sleep.d ont cessé de fonctionner (obsolète?), Il ne reste que la méthode la plus récente, en utilisant/lib/systemd/system-sleep et des scripts légèrement différents (qui ont commencé à fonctionner sur des keymaps!).
Donc, cet article est mis à jour avec la méthode la plus récente pour la persistance et pour inclure le chargement normal du keymap initial, qui a également commencé à fonctionner. La routine de conversion d'un fichier .Xmodmap en .xkbmap reste inchangée.
Notez qu'il s'agit d'une solution par utilisateur. Pour une réponse par périphérique, voir comment appliquer une mappe de clavier à un seul périphérique . Cette méthode pourrait être adaptée pour être utilisée ici.
Commencez par modifier le fichier .Xmodmap comme vous le souhaitez. Celles-ci sont plus faciles à modifier directement que les fichiers .xkbmap. Quand il est chargé:
xmodmap .Xmodmap
puis convertissez-les en un fichier .xkb:
xkbcomp $ DISPLAY $ HOME/.xkbmap
Pour charger automatiquement au démarrage, ouvrez Applications de démarrage, cliquez sur Ajouter et, dans la ligne de commande, entrez:
xkbcomp /home/user/.xkbmap ": 0"
("utilisateur" est remplacé par le nom d'utilisateur actuel.) Pour Nom, entrez éventuellement Charger la carte du clavier. Ajoutez un commentaire si vous le souhaitez et cliquez sur Enregistrer.
Le clavier va maintenant se charger à chaque démarrage du système, mais ne survivra pas à une suspension ou une veille prolongée. Pour cela, créez un nouveau fichier dans/lib/systemd/system-sleep, éventuellement nommé 60_xkbmap, qui contient:
#!/bin/sh
case $1/$2 in
pre/*)
# Place pre-suspend commands here
exit 0
;;
post/*)
# Place post-suspend commands here
export DISPLAY=":0"
export XAUTHORITY="/home/user/.Xauthority"
su user -c "xkbcomp /home/user/.xkb/xkb-map $DISPLAY 2>/dev/null"
;;
esac
( Ref. ) Comme ci-dessus, remplacer "utilisateur" par le nom d'utilisateur actuel.
Le clavier devrait maintenant se charger automatiquement et rester persistant. Remarque:
Cela m'a également fait trébucher lorsque j'ai mis à jour Ubuntu 12.04 à 13.04.
Heureusement, ce paramètre est maintenant (ou a peut-être toujours été) facilement accessible dans les préférences Clavier et peut être modifié en quelques clics de souris.
Voilà: le contrôle gauche et le verrouillage majuscule ont changé de position.
N'oubliez pas de supprimer ~/.Xmodmap
une fois que vous avez effectué le changement.
Je trouve l’ajout de ce script au démarrage satisfaisant:
while true;do
xmodmap -e "keycode 87=Prior"
xmodmap -e "keycode 88=Next"
sleep 5
done
J'ai essayé d'utiliser xmodmap ./Xmodmap
, mais chaque fois qu'il est exécuté, un décalage perceptible se produira.