NOM
xmodmap - Modifier les tables de correspondance des touches et des
boutons du pointeur sous X
SYNOPSIS
xmodmap [-options ...] [nom_de_fichier]
Le programme xmodmap est utilisé pour éditer et afficher la table des
modificateurs du clavier et la table de correspondance utilisées par
les applications clientes pour convertir les keycodes (événements
clavier) en keysyms (symboles utilisés par les applications clientes).
Il est habituellement lancé par le script de démarrage de session de
l’utilisateur afin d’accorder le clavier à ses propres goûts.
OPTIONS
Les options suivantes peuvent être utilisées avec xmodmap :
-display display
Cette option spécifie l’hôte et le display à utiliser.
-help Cette option indique qu’une brève description des paramètres de
la ligne de commande doit être affichée sur la sortie d’erreur
standard. Cela se produit également dès qu’un paramètre
incorrect est passé à xmodmap.
-grammar
Cette option indique qu’un message d’aide décrivant la
grammaire des expressions utilisées dans les fichiers et avec
l’option -e doit être affichée sur la sortie d’erreur standard.
-verbose
Cette option (mode verbeux) indique que xmodmap doit afficher
les informations de journalisation pendant qu’il analyse ses
entrées.
-quiet Cette option désactive le mode verbeux. C’est le mode par
défaut.
-n Cette option indique que xmodmap ne doit pas changer les
correspondances mais doit juste afficher ce qu’il doit faire ;
de la même manière que make(1) quand on lui passe cette option.
-e expression
Cette option indique une expression à exécuter. En répétant -e,
on peut spécifier plusieurs expressions depuis la ligne de
commande.
-pm Cette option indique que la table des modificateurs doit être
affichée sur la sortie standard. Il s’agit du mode d’opération
par défaut si aucune option ne le change.
-pk Cette option indique que la table des correspondances en cours
doit être affichée sur la sortie standard.
-pke Cette option indique que la table des correspondances en cours
doit être affichée sur la sortie standard sous la forme
d’expressions pouvant être passées en paramètre à xmodmap.
-pp Cette option indique que la table du pointeur courante doit
être affichée sur la sortie standard.
- Un tiret seul signifie que l’entrée standard doit être utilisée
comme fichier d’entrée.
nom_de_fichier indique un fichier contenant les expressions devant être
exécutées par xmodmap. Ce fichier est en général conservé dans le
répertoire principal de l’utilisateur sous un nom tel que .xmodmaprc.
GRAMMAIRE DES EXPRESSIONS
Le programme xmodmap lit une liste d’expressions et les analyse toutes
avant de tenter d’exécuter l’une d’entre elles. Cela permet de se
référer à des keysyms qui ont été redéfinis d’une façon plus naturelle
sans avoir à se préoccuper des conflits de noms.
keycode NOMBRE = NOM_KEYSYM ...
La liste des keysyms est assignée au keycode indiqué (qui peut
être spécifié en décimal, hexadécimal ou octal et peut être
déterminé grâce au programme xev). On peut attacher jusqu’à 8
keysyms à une touche, mais les 4 derniers ne sont utilisées par
aucune implémentation majeur de serveurs X. Le premier keysym
est utilisé quand aucune touche de modificateur n’est pressée
en même temps que la touche, le second quand la touche
majuscule (Shift) est pressée, le troisième en combinaison avec
la touche Mode_switch et le quatrième en combinaison avec les
touches majuscule et Mode_switch.
keycode any = NOM_KEYSYM ...
Si aucune touche existante ne possède cette liste de keysyms,
une touche libre sur le clavier est sélectionnée et les keysyms
lui sont assignés. La liste des keysyms peut être spécifiée en
décimal, hexadécimal ou octal.
keysym NOM_KEYSYM = NOM_KEYSYM ...
Le NOM_KEYSYM de gauche est traduit en keycodes utilisés pour
effectuer l’ensemble des expressions keycode correspondantes.
La liste des noms des keysyms peut être trouvée dans le fichier
d’en-tête : <X11/keysymdef.h> (sans le prefix XK_) ou dans la
base de donnée des keysyms /usr/share/X11 /XKeysymDB. Notez
que si le même keysym est lié à plusieurs touches, l’expression
est exécutée pour chaque keycode correspondant.
clear NOM_MODIFICATEUR
Efface toutes les entrées dans la table de modificateurs pour
le modificateur donné, où les noms pris en charge sont : Shift,
Lock, Control, Mod1, Mod2, Mod3, Mod4 et Mod5 (la casse n’a pas
d’importance dans le nom des modificateurs bien qu’elle en ait
pour tous les autres noms). Par exemple, « clear Lock »
effacera toutes les touches qui étaient liées au modificateur
de verrouillage en majuscule.
add NOM_MODIFICATEUR = NOM_KEYSYM ...
Ajoute toutes les touches contenant les keysyms donnés à la
table de modificateurs indiquée. Les noms des keysyms sont
évalués après la lecture de toutes les expressions d’entrée
pour rendre plus facile l’écriture d’expressions d’échange de
touches (voir la section EXEMPLES).
remove NOM_MODIFICATEUR = NOM_KEYSYM ...
Cela supprime toutes les touches contenant les keysyms donnés
de la table du modificateur indiqué. Contrairement à add, les
noms des keysyms sont évalués au moment où la ligne est lue.
Cela permet de supprimer des touches d’un modificateur sans
avoir à se soucier de leur ré-assignement.
pointer = default
Cela repositionne la table du pointeur aux réglages par défaut
(le bouton 1 génère un code 1, le bouton 2 génère un 2, etc.).
pointer = NOMBRE ...
Configure la table du pointeur de telle manière qu’elle
contienne les codes boutons indiqués. La liste commence
toujours avec le premier bouton physique.
Les lignes qui commencent par un point d’exclamation (!) sont des
commentaires.
Si vous voulez changer le lien d’une touche de modificateur, vous devez
l’enlever de la table du modificateur appropriée.
EXEMPLES
De nombreux pointeurs (souris) sont conçus pour que le premier bouton
soit pressé avec l’index de la main droite. Les gauchers trouvent
généralement qu’il est plus confortable d’intervertir les codes de
boutons générés de manière à ce que le premier bouton soit pressé avec
l’index de la main gauche. Cela peut être fait sur une souris à 3
boutons de cette manière :
% xmodmap -e "pointer = 3 2 1"
Beaucoup d’applications supportent la notion de touche « Meta »
(équivalente à la touche Control, sauf que la touche Meta reste
enfoncée contrairement à la touche Control). Cependant certains
serveurs n’ont pas par défaut de keysym Meta dans la table de
correspondance des touches et celui-ci doit donc être ajouté
manuellement. La commande suivante attache Meta à la touche
Multi-langage (parfois indiquée par Compose). Cela tire avantage du
fait que les applications qui ont besoin d’une touche Meta nécessitent
simplement d’avoir le keycode et ne requièrent pas que le keysym soit
dans la première colonne de la table de correspondance des touches.
Cela signifie que les applications qui cherchent une touche Multi_key
(y compris la table de modificateur par défaut) n’y verront aucun
changement.
% xmodmap -e "keysym Multi_key = Multi_key Meta_L"
De la même manière, certain claviers ont une touche Alt, mais pas de
touche Meta. Dans ce cas, la commande suivante peut être utile :
% xmodmap -e "keysym Alt_L = Meta_L Alt_L"
Une des plus simples, mais pratique, utilisations de xmodmap est de
changer la touche « Suppr.E » (ou « delete ») pour générer un keysym
différent. Cela implique généralement d’échanger Backspace avec Delete
pour plus de confort d’utilisation. Si la ressource ttyModes dans xterm
est positionnée convenablement, toutes les fenêtres des émulateurs de
terminaux utiliseront la même touche pour effacer les caractères :
% xmodmap -e "keysym BackSpace = Delete"
% echo "XTerm*ttyModes: erase ^?" | xrdb -merge
Certains claviers ne génèrent pas automatiquement les caractères « plus
petit que < » et « plus grand que > » quand le point et la virgule sont
décalés. On peut remédier à cela avec xmodmap en ré-affectant les
touches point et virgule avec le script suivant :
!
! Changer shift- en < et shift-. en >
!
keysym comma = comma less
keysym period = period greater
L’une des plus irritantes différences ente les claviers est la position
des touches Control et CapsLock. Une utilisation habituelle de xmodmap
est d’échanger ces deux touches :
!
! Échanger Caps_Lock et Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
L’exemple peut être exécuté une nouvelle fois pour rétablir les
assignations précédentes des touches.
La commande keycode est utile pour assigner le même keysym à plusieurs
keycodes. Bien que non portable, cette méthode rend possible l’écriture
de scripts qui peuvent réinitialiser le clavier à un état connu. Le
script suivant définit la touche backspace pour générer Delete (comme
vu précédemment), efface tous les liens avec caps lock, fait de la
touche CapsLock une touche Control, fait que F5 génère Escape, et fait
que Break/Reset soit le verrouillage majuscule.
!
! sur HP, les keycodes suivants sont étiquetés :
!
! 101 Backspace
! 55 Caps
! 14 Ctrl
! 15 Break/Reset
! 86 Stop
! 89 F5
!
keycode 101 = Delete
keycode 55 = Control_R
clear Lock
add Control = Control_R
keycode 89 = Escape
keycode 15 = Caps_Lock
add Lock = Caps_Lock
ENVIRONNEMENT
DISPLAY pour avoir l’hôte par défaut et le numéro du display.
VOIR AUSSI
X(7x), xev(1), la documentation Xlib sur les touches et les événements
du pointeur
BOGUES
Chaque fois qu’une expression keycode est évaluée, le serveur génère un
événement MappingNotify sur chaque client. Cela peut causer quelques
crash. Tous les changements devraient être groupés et exécutés
ensembles. Les clients qui reçoivent une entrée clavier et ignorent les
événements MappingNotify ne serons pas prévenus des changement
effectués aux correspondances clavier.
Xmodmap devrait générer les expressions « add » et « remove »
automatiquement quand un keycode déjà lié à un modificateur est changé.
Il devrait y avoir un moyen pour que l’expression remove accepte les
keycodes aussi bien que les keysyms pour les fois où vous cassez
vraiment les correspondances.
AUTEUR
Jim Fulton (MIT X Consortium) ré-écrit à partir d’une précédente
version de David Rosenthal (Sun Microsystems).
TRADUCTION
Cette page de manuel a été traduite par Cyril Guilloud
<guilloud@lautre.net> en 2002.
La version présente dans Debian est dorénavant maintenue par les
membres de la liste <debian-l10n-french AT lists DOT debian DOT org>.
Veuillez signaler toute erreur de traduction par un rapport de bogue
sur le paquet manpages-fr-extra.