Comment puis-je remapper de manière persistante des clés dans Ubuntu 16.04?

23

Cela fonctionne pour la session en cours:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

J'ai ensuite créé ce fichier de configuration:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

Mais cela ne fonctionne pas après un redémarrage. Comment pourrais-je forcer le remappage à survivre au redémarrage?

Costales
la source
Je viens de répondre à cette question en utilisant xkbici: askubuntu.com/a/960097/554991 .
danwild

Réponses:

15

J'utilise 16.04 depuis un petit moment et il semble utiliser sddm comme gestionnaire de bureau. Avant, c'était LightDM et GDM. Ses deux prédécesseurs sont documentés pour se charger ~/.Xmodmapautomatiquement, mais je ne trouve rien qui dit explicitement que sddm le fait.

Par conséquent, il peut être conseillé de le forcer à se charger avec un nouveau script. Vous avez juste besoin de courir xmodmap ~/.Xmodmapet vous pouvez le faire de plusieurs façons:

Il existe probablement quelques dizaines d'autres façons de gérer cela, essentiellement en faisant la même chose.

Oli
la source
2
Merci pour le conseil! Ajouter au démarrage n'a pas fonctionné et ~ / .xinitrc ne se ferme pas. Mais ajouter "xmodmap ~ / .Xmodmap" à ~ / .bashrc a fonctionné! :)
Costales
1
L'ajouter via les outils graphiques de démarrage (qui crée une nouvelle entrée dans ~/.config/autostart) fonctionne environ la moitié du temps. J'ai redémarré environ 10 fois maintenant et 5 fois la commande a été exécutée et les 5 autres fois non. :-(
Alexander Rechsteiner
1
@Alexander Rechsteiner: Cela semble être un problème dans Ubuntu 16.04. J'ai tripoté les commandes de démarrage et le remappage des touches, et le comportement semble très incohérent. Je ne suis pas un expert dans ce genre de choses, mais il semble tout à fait ridicule que cela se produise ...
nicorellius
6

J'ai ajouté un fichier /etc/X11/Xsession.d/80_xmodmapavec ces contenus:

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

Cela fonctionne à chaque fois.

Stuart K. Smith
la source
Il semble fonctionner, mais voici les messages que j'obtiens dans .xsessions-errors: .Xmodmap: 1: mauvais keyym dans la liste de modificateurs de suppression 'Caps_Lock', aucun code clé correspondant c'est mon .Xmodmap: $ cat .Xmodmap remove Lock = Caps_Lock keycode 9 = Escape keycode 66 = Escape
MaikoID
4

ouvrez gnome-session-properties. ajoutez la commande et le nom. le fichier de bureau sera créé dans ~ / .config / autostart.

rappel: utilisez le chemin absolu , par exemple /home/xxx/.Xmodmap. n'utilisez jamais '~' comme répertoire personnel.

eexpress utopique
la source
2

Dans ma longue expérience avec les touches remappage dans Ubuntu, la solution permanente est de modifier un fichier appelé evdevdans /usr/share/X11/xkb/keycodes.

Exécutez cette commande dans l'invite de commande.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

N'oubliez pas que gedit est un éditeur de texte Ubuntu, vous pouvez donc utiliser nano ou vim au lieu de gedit.

Le fichier est au format: ALIAS: CODE. Vous pouvez échanger des boutons en échangeant les codes de différentes clés. Par exemple, pour échanger RCONTROL avec RETURN, éditez deux lignes dans evdev dans ceci:

<RTRN> = 105;

<RCTL> = 36;

Pour connaître le code numérique d'un bouton exécuté xevsur le terminal.

Reportez-vous à la documentation pour plus d'informations. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf

GilbertS
la source
1

Aller vers

/usr/share/X11/xkb/symbols

Avec les privilèges sudo, dans un éditeur, ouvrez la mise en page que vous souhaitez modifier. Remplacez les valeurs.

Après le redémarrage, les modifications seront appliquées.


Voici un exemple que j'utilise pour remapper mon clavier en raison de problèmes matériels avec le clavier.

exemple de remappage du clavier

quaeched
la source
2
Ces modifications seront remplacées la prochaine fois que les packages propriétaires de ces fichiers seront mis à niveau.
muru
C'est peut-être vrai, mais je doute que ceux-ci soient mis à jour très souvent. Je suis satisfait de cette solution depuis quelques mois depuis que j'ai résolu le problème et pas une seule fois je n'ai dû faire quelque chose de plus. Et pour éviter cela, vous pouvez enregistrer le fichier et le remplacer dans le cas d'un tel événement ou, (ce qui semble plus sécurisé) simplement recréer le processus.
quaeched
1

Après une recherche sur Google, j'ai pu résoudre le remappage des clés défectueuses de mon ordinateur portable. Toutes les touches défectueuses de mon Thinkpad T400 fonctionnent correctement après le remappage. En outre, il est permanent sans charge supplémentaire sur le cœur du processeur.

  • Trouvez d'abord la disposition de votre clavier ou votre code clé à l'aide de la commande ci-dessous.

    xevv -event keyboard 
    
  • Par exemple, sur mon keypad Thinkpad T400 trouvé comme suit:

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • Remappage des touches de caractères "z" "x" "c" "v" en affectant les touches de fonction "F6" "F10" "F11" "F12".

  • Modifiez les lignes comme ci-dessous (fichier de sauvegarde avant d'apporter des modifications à la restauration facilement en cas de problème).

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • Recherchez les lignes et modifiez la valeur comme ci-dessous:

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • Commentez ces lignes ou supprimez les lignes:

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • Sauvegarder et quitter.

  • Remappage de touches spéciales.

  • Fichier de sauvegarde avant d'apporter des modifications à la restauration en cas de problème.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • Ajoutez ou modifiez les lignes ci-dessous dans la fonction "xkb_symbols" éditant "{"

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • Sauvegarder et quitter.

  • Vider le cache.

    sudo rm -rf /var/lib/xkb/*
    
  • Redémarrez.

Sanalgorithm
la source
J'ai remappé une touche de flèche cassée (curseur) à une autre clé en utilisant cette technique. C'est simplement (xev) et appuyez sur la nouvelle touche pour obtenir son scancode, puis éditez / usr / share / X11 / xkb / keycodes / evdev pour remplacer le code clé d'origine de la touche flèche par le nouveau code clé et pour supprimer la ligne de la nouvelle touche flèche avec son original scancode. J'ai commenté chaque fois que je faisais un changement et gardais une sauvegarde du fichier. Après un redémarrage, cela fonctionne parfaitement, y compris les combinaisons Maj / Ctrl / Alt avec la nouvelle touche fléchée. Et le changement doit être laissé en place même lors de la mise à niveau des packages et des mises à niveau de la version du système d'exploitation.
Matthew
1

Editeur graphique

gnome-tweaks > Clavier et souris> Options de mise en page supplémentaires

Cartes clés

Jonathan
la source
0

Parce que les fichiers .Xmodmap sont beaucoup plus faciles à modifier que xkb, je j'utilise .Xmodmap comme fichier «source», puis le convertis en xkb (la norme actuelle) et le chargement automatique au démarrage à l'aide de la méthode .bashrc.

Il s'agit de quelques étapes simples affichées ici .

Fonctionne parfaitement et utilise xkb à l'épreuve du temps lorsque la prise en charge de .Xmodmap est abandonnée.

u2n
la source