Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/01/2009, à 09:40

ericwb

Redéfinir une touche du clavier

Ça faisait longtemps que je cherchais un moyen de redéfinir une des touches de mon clavier ; après avoir « googlé » un peu partout, j'ai fini par trouver une solution que je vous livre ici. (Ce post n'est pas une question, c'est juste au cas où ça pourrait servir à quelqu'un qui aurait le même problème.)

Quand on utilise régulièrement un symbole qui n'est pas présent sur le clavier, on peut avoir envie de redéfinir une touche qui sert rarement voire jamais. Par exemple, je voulais pouvoir utiliser le caractère « Ç » sans avoir à taper [Alt Gr]+[Shift]+[ç] ou [Compose], [,], [Shift]+[C]. Je voulais redéfinir une des touches qui ne me sert jamais, par exemple « µ » ou « § ».

Pour changer la définition d'une touche, on peut modifier un fichier texte qui se trouve dans le répertoire /usr/share/X11/xkb/symbols (nota: ce répertoire a changé depuis Intrepid Ibex; avant, c'était /etc/X11/xkb/symbols si je me souviens bien). Ce répertoire contient des fichiers texte dont le nom correspond aux différentes dispositions de claviers, tels que us, en, fr, etc. Ces fichiers sont commentés et sont assez simples à comprendre. En gros, il suffit de modifier le fichier avec un éditeur de texte, par exemple :

cd /usr/share/X11/xkb/symbols
sudo gedit fr

Il faut évidemment remplacer « fr » par le nom de la disposition de clavier qu'on utilise. Le fichier comprend plusieurs sections ; si on n'est pas sûr de la section que l'on doit modifier, on peut utiliser la commande setxkbmap -print, ce qui donne chez moi :

ledoc@Titou:~$ setxkbmap -print
xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(azerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+fr(oss)+gr(polytonic):2+fr(bepo):3+us(dvorak-intl):4+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+level3(ralt_switch_for_alts_toggle):3+level3(ralt_switch_for_alts_toggle):4+group(alts_toggle)+compose(lwin)"	};
	xkb_geometry  { include "pc(pc104)"	};
};

La partie intéressante ici est la ligne qui commence par xkb_symbols. L'expression « fr(oss) » indique qu'on utilise la section « oss » dans le fichier « fr ». Le début d'une section ressemble à ceci : xkb_symbols "oss" {. Chaque section comprend un certain nombre de lignes qui définissent les différentes touches. Par exemple :

    key <AB10>  { [ exclam, section, exclamdown, 0x1002212 ] }; // ! § ¡ −

Cette ligne décrit la touche <AB10>, qui produit seule le point d'exclamation [!], avec [Maj] le caractère « section » [§], avec [Alt Gr] le point d'exclamation inversé [¡], et avec [Maj]+[Alr Gr] le tiret semi-cadratin [−]. Comme je n'utilise jamais le caractère « § », je l'ai remplacé par « Ç » :

    key <AB10>  { [ exclam, Ç, exclamdown, 0x1002212 ] }; // ! Ç ¡ −

Il suffit ensuite de réinitialiser le serveur X en se déconnectant et en se reconnectant, et voilà. (Voir la mise à jour ci-dessous)

Ce n'est peut-être pas la meilleure solution, mais elle fonctionne pour moi. Si vous avez des suggestions, n'hésitez pas à laisser un commentaire.



Mise à jour (2013-11-09) : Depuis Ubuntu 13.10, des versions pré-compilées sont stockées en cache dans le répertoire /var/lib/xkb. Si vous modifiez un fichier symbol, il faudra effacer le ou les fichiers .xkm pour que la modification ait lieu :

sudo rm /var/lib/xkb/*.xkm

Dernière modification par ericwb (Le 09/11/2013, à 12:57)

Hors ligne

#2 Le 30/03/2011, à 12:36

neoramax

Re : Redéfinir une touche du clavier

Merci,

Ca m'a beaucoup aider.

Hors ligne

#3 Le 30/03/2011, à 15:39

Pizz

Re : Redéfinir une touche du clavier

Une autre solution, qui ne marche qu'en mode graphique :

On créé un fichier .xmodmaprc dans son home, qui contient des correspondance entre touches et caractères. Exemple :

keycode 49 = backslash
keycode 133 = Escape

Pour obtenir les keycodes et les valeurs, on utilise l'utilitaire xev. En pressant une touche dans la fenêtre de xev, on aura son keycode et sa fonction.

Il faut ensuite rajouter dans son bashrc :

xmodmap ~/.xmodmaprc

C'est expliqué plus en détails ici : http://www.commentcamarche.net/faq/6988 … du-clavier

Hors ligne