xmodmap (Français)

État de la traduction:
Cet article est la version francophone de
Xmodmap
. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
Xorg (Français)
Xorg (Français)/Keyboard configuration (Français)
Keyboard input
Linux console (Français)/Keyboard configuration (Français)#Création d'une keymap personnalisé
Xbindkeys (Français)
xmodmap
est un utilitaire permettant de modifier les mappages des touches et des boutons du pointeur dans
Xorg
.
xmodmap
n'est pas directement lié à
X keyboard extension
. (XKB), car il utilise des idées différentes (pré-XKB) sur la façon dont les
keycodes
sont traités dans X. En général, il n'est recommandé que pour les tâches les plus simples. Consultez
X keyboard extension
pour une configuration avancée de la disposition.
Note
Les paramètres
xmodmap
sont réinitialisés par
setxkbmap
, qui non seulement modifie les touches alphanumériques aux valeurs données dans la carte, mais réinitialise également toutes les autres touches aux valeurs par défaut du démarrage (consultez
LQWiki:Configuring keyboards
).
En raison d'une limitation d'Xorg, les paramètres
xmodmap
ne sont pas appliqués automatiquement aux périphériques branchés à chaud. Si un clavier est ajouté à un système après qu'une table personnalisée ait été appliquée, la table personnalisée devra être appliquée à nouveau.
[1]
Introduction
Il existe deux types de valeurs de clavier dans
Xorg
: les
keycodes
et les
keysyms
.
keycode
Le
keycode
est la représentation numérique reçue par le noyau lorsqu'une touche ou un bouton de souris est pressé.
keysym
Le
keysym
est la valeur assignée au
keycode
. Par exemple, appuyer sur
a
génère le
keycode 38
, qui est mis en correspondance avec le
keysym 0×61
, qui correspond à
a
dans la table
ASCII
.
Les
keysyms
sont gérés par
Xorg
dans une table de
keycodes
définissant les relations
keycode
-
keysym
, qui est appelée le
tableau des touches de clavier (keymap table en anglais)
. Ceci peut être montré en exécutant
xmodmap
.
Installation
xmodmap
peut être
installé
par le paquet
xorg-xmodmap
.
En option, installez
xkeycaps
, qui est une interface graphique pour
xmodmap
.
Tableau des touches de clavier
Imprimer le tableau des touches de clavier actuel formaté en expressions :
$ xmodmap -pke
[...]
keycode 57 = n N
[...]
Chaque
keycode
est suivi de la
keysym
à laquelle il est associé. L'exemple ci-dessus indique que le
keycode
57
est associé à la minuscule
n
, tandis que la majuscule
N
est associée au
keycode
57
plus
Shift
.
Chaque colonne
keysym
du tableau correspond à une combinaison particulière de touches de modification :
Key
Shift+Key
Mode_switch+Key
Mode_switch+Shift+Key
ISO_Level3_Shift+Key
ISO_Level3_Shift+Shift+Key
Il n'est pas nécessaire de définir tous les
keysyms
, mais pour n'attribuer qu'un dernier
keysym
, utilisez la valeur
NoSymbol
.
Pour consulter le
keycode
correspondant à une touche, consultez
Keyboard input#Identifying keycodes in Xorg
pour plus de détails sur l'utilitaire
xev
qui affichera les informations relatives au keycode/keysym d'une touche lorsque vous appuyez dessus.
Astuce
Il existe des
keysyms
descriptifs prédéfinis pour les touches multimédia, par exemple
XF86AudioMute
ou
XF86Mail
. Ces
keysyms
se trouvent dans
/usr/include/X11/XF86keysym.h
. De nombreux programmes multimédias sont conçus pour fonctionner avec ces
keysyms
prêts à l'emploi, sans qu'il soit nécessaire de configurer une application tierce.
Notez que xmodmap est influencé par les paramètres xkbd, ainsi les huit keysym sont disponibles pour la disposition xkbd US(intl) mais pas pour la disposition US par défaut (il manque le symbole ralt_switch défini dans level3). Pour avoir les 8 keysyms disponibles, vous devez configurer la variante
(intl)
du clavier.  En utilisant la disposition US comme exemple,
$ setxkbmap -layout 'us(intl)'
avant d'appeler xmodmap pour tester vos changements dans la session X actuelle. Pour effectuer ce changement de manière permanente, modifiez la configuration xorg ou votre fichier .xprofile ou .xinitrc.  Consultez
Xorg (Français)/Keyboard configuration (Français)#Configurer la disposition du clavier
pour une explication complète.
Table personnalisée
Pour créer une «keymap» (i.e.
~/.Xmodmap
) :
$ xmodmap -pke > ~/.Xmodmap
Pour tester les changements :
$ xmodmap ~/.Xmodmap
Activation de la table personnalisée
Avec
GDM
,
XDM
ou
LightDM
, il n'est pas nécessaire de créer la source
~/.Xmodmap
. Pour
startx
, utilisez :
~/.xinitrc
[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
Alternativement, éditez le script de démarrage global
/etc/X11/xinit/xinitrc
.
Tester les modifications
Pour effectuer des changements temporaires :
$ xmodmap -e "keycode 46 = l L l L lstroke Lstroke lstroke"
$ xmodmap -e "keysym a = e E"
Touches de modification
xmodmap
peut également être utilisé pour remplacer les
touches de combinaison
, par exemple pour permuter
Control
et
Super
(la
«touche Windows»
).
Imprimer la table des modificateurs actuels de manière verbeuse (exemple complet) :
$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x94)
mod3      
mod4        Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  ISO_Level3_Shift (0x6c),  Mode_switch (0x85),  Mode_switch (0xcb)
Trouver les touches de modification de la colonne keysym
ISO_Level3_Shift
La touche AltGr sur les claviers non américains appelle le modificateur ISO_Level3_Shift. (Sur les claviers américains, l'altération de droite
Alt_R
a la même fonction que l'altération de gauche
Alt_L
, ce qui fait qu'il est préférable de définir la disposition comme internationale américaine. Consultez le
#Tableau des touches de clavier
.)
Mode_switch
Le modificateur Mode_switch peut être mappé par défaut sur une touche qui n'est pas sur votre clavier.
Note
L'utilisation des noms de modificateurs
ISO_Level3_Shift
et
Mode_switch
est différente entre xmodmap et
X Keyboard Extension
. Consultez également
[2]
.
Réaffectation des modificateurs aux touches de votre clavier
Note
xmodmap est
sensible à la casse
. L'utilisation d'une casse incorrecte, telle que
Mode_Switch
au lieu de la bonne
Mode_switch
, entraînera des erreurs.
Avant l'affectation, les touches de modification doivent être effacées. Cela s'applique à la fois aux modificateurs que vous avez l'intention d'assigner et aux modificateurs des touches que vous avez l'intention d'utiliser.  Par exemple, si vous avez l'intention d'attribuer
Caps_Lock
à votre touche A et
B
à votre touche NumLock, vous devez d'abord effacer les modificateurs pour
Caps_Lock
et
Num_Lock
, puis attribuer les keysyms et enfin ajouter à nouveau les modificateurs.
~/.Xmodmap
[...]
clear lock
clear mod2
keycode  38 = Caps_Lock
keycode  77 = Num_Lock
add lock = Caps_Lock
add mod2 = Num_Lock
!
est un commentaire, donc seuls les modificateurs
Control
et
Mod4
sont effacés dans l'exemple suivant. Ensuite, les
keysyms
Control_L
,
Control_R
,
Super_L
et
Super_R
sont assignés au modificateur opposé. L'affectation de la gauche et de la droite au même modificateur signifie que les deux touches sont traitées de la même manière.
~/.Xmodmap
[...]
!clear Shift
!clear Lock
clear Control
!clear Mod1
!clear Mod2
!clear Mod3
clear Mod4
!clear Mod5
!add Shift   = Shift_L Shift_R
!add Lock    = Caps_Lock
add Control = Super_L Super_R
!add Mod1    = Alt_L Alt_R
!add Mod2    = Mode_switch
!add Mod3    =
add Mod4    = Control_L Control_R
!add Mod5    =
Note
L'exemple suppose que les keysyms
Control_L
et
Control_R
ont été affectés au modificateur
Control
, et les keysyms
Super_L
et
Super_R
au modificateur
Mod4
. Si vous obtenez le message d'erreur suivant
X Error of failed request: BadValue (integer parameter out of range for operation)
, vous devrez vous adapter en conséquence. L'exécution de
xmodmap
produit une liste des modificateurs et des touches qui leur sont affectées.
L'exemple suivant modifie
CapsLock
en
Control
, et
Shift+CapsLock
en
CapsLock
:
~/.Xmodmap
clear lock
clear control
add control = Caps_Lock Control_L Control_R
keycode 66 = Control_L Caps_Lock NoSymbol NoSymbol
Touche de composition
Une
touche de composition
sert à créer des caractères spéciaux et des symboles qui peuvent ne pas être directement accessibles sur le clavier. Cela est particulièrement utile pour taper des lettres accentuées provenant de langues non anglaises. Par exemple, si vous appuyez sur la touche
Compose
e
'
successivement pour obtenir é. Certains caractères nécessitent d'appuyer sur plus de deux touches après
Compose
.
En général, une touche de modification de votre choix est affectée à
Compose
. La touche de composition peut être définie dans les paramètres de l'interface graphique de la plupart des environnements de bureau, mais ces options ne fonctionneront pas si une table de correspondance des touches personnalisée est utilisée comme décrit dans cet article.
Pour définir la touche de composition à l'aide de
Xmodmap
, utilisez l'identifiant
Multi_key
. Par exemple, pour associer la touche alt droite (
AltGr
) à la touche de composition :
~/.Xmodmap
[...]
keycode 108 = Multi_key Alt_R Meta_R Alt_R Meta_R
Le numéro du keycode peut varier en fonction des modèles de clavier.
Défilement inversé
La fonction de
défilement naturel
disponible dans OS X Lion (imitant le défilement des smartphones ou des tablettes) peut être
reproduite
avec
xmodmap
. Comme le pilote synaptique utilise les boutons 4/5/6/7 pour le défilement haut/bas/gauche/droite, il suffit d'intervertir l'ordre dans lequel les boutons sont déclarés dans
~/.Xmodmap
:
~/.Xmodmap
pointer = 1 2 3
5 4
7 6 8 9 10 11 12
Puis mettez à jour
xmodmap
:
$ xmodmap ~/.Xmodmap
Échanger les boutons de la souris
Les boutons gauche, central et droit de la souris correspondent respectivement aux boutons 1, 2 et 3 du pilote synaptique. Pour échanger les boutons gauche et droit de la souris, il suffit d'inverser l'ordre dans lequel ils sont listés dans votre
~/.Xmodmap
:
~/.Xmodmap
pointer =
3 2 1
Cela devrait suffire pour une configuration simple de la souris. Encore une fois, mettez à jour
xmodmap
:
$ xmodmap ~/.Xmodmap
Modèles
Espagnol
~/.Xmodmap
keycode  24 = a A aacute Aacute ae AE ae
keycode  26 = e E eacute Eacute EuroSign cent EuroSign
keycode  30 = u U uacute Uacute downarrow uparrow downarrow
keycode  31 = i I iacute Iacute rightarrow idotless rightarrow
keycode  32 = o O oacute Oacute oslash Oslash oslash
keycode  57 = n N ntilde Ntilde n N n
keycode  58 = comma question comma questiondown dead_acute dead_doubleacute dead_acute
keycode  61 = exclam section exclamdown section dead_belowdot dead_abovedot dead_belowdot
!Maps the Mode key to the Alt key
keycode 64 = Mode_switch
Esperanto
~/.Xmodmap
keycode 54 = c C c C ccircumflex Ccircumflex
keycode 42 = g G g G gcircumflex Gcircumflex
keycode 43 = h H h H hcircumflex Hcircumflex
keycode 44 = j J j J jcircumflex Jcircumflex
keycode 39 = s S s S scircumflex Scircumflex
keycode 30 = u U u U ubreve Ubreve
Transformer CapsLock en Control
Exemple le plus simple pour transformer
CapsLock
en
Control
.
~/.Xmodmap
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R
Transformer CapsLock en Control, et LeftControl en Hyper
Les utilisateurs d'ordinateurs portables peuvent préférer avoir
CapsLock
comme
Control
. La touche
Control
gauche peut être utilisée comme modificateur
Hyper
(un modificateur supplémentaire pour
emacs
,
openbox
ou
i3
).
~/.Xmodmap
clear      lock 
clear   control
clear      mod1
clear      mod2
clear      mod3
clear      mod4
clear      mod5
keycode      37 = Hyper_L
keycode      66 = Control_L
add     control = Control_L Control_R
add        mod1 = Alt_L Alt_R Meta_L
add        mod2 = Num_Lock
add        mod3 = Hyper_L
add        mod4 = Super_L Super_R
add        mod5 = Mode_switch ISO_Level3_Shift
Transformer Super_R en Hyper_R
Les utilisateurs qui souhaitent avoir une touche
Hyper
sur un clavier complet peuvent utiliser la touche
Super
droite comme
Hyper
.
~/.Xmodmap
remove  mod4 = Super_R
keycode  134 = Hyper_R
add     mod3 = Hyper_R
Intervertir chaque touche numérique N avec Shift-N et vice-versa, pour la disposition croate
Cela devrait également fonctionner pour les dispositions similaires à la disposition croate.
~/.Xmodmap
keycode 10 = exclam 1 1 exclam asciitilde dead_tilde asciitilde
keycode 11 = quotedbl 2 2 quotedbl dead_caron caron dead_caron
keycode 12 = numbersign 3 3 numbersign asciicircum dead_circumflex asciicircum
keycode 13 = dollar 4 4 dollar dead_breve breve dead_breve
keycode 14 = percent 5 5 percent degree dead_abovering degree
keycode 15 = ampersand 6 6 ampersand dead_ogonek ogonek dead_ogonek
keycode 16 = slash 7 7 slash grave dead_grave grave
keycode 17 = parenleft 8 8 parenleft dead_abovedot abovedot dead_abovedot
keycode 18 = parenright 9 9 parenright dead_acute apostrophe dead_acute
keycode 19 = equal 0 0 equal dead_doubleacute doubleacute dead_doubleacute
Voir aussi
xmodmap(1)
Multimediakeys with .Xmodmap HOWTO
par Christian Weiske
Mapping unsupported keys with xmodmap
par Pascal Bleser
LQWiki:List of Keysyms Recognised by Xmodmap