Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !



Page en élaboration

Comprendre la configuration du clavier

Rappelons que les informations transmises par une touche du clavier au système (pilote clavier, noyau Linux et serveur X) ne sont pas directement liées au symbole graphique ou à l'évènement attaché à cette touche. Par exemple, l'appui sur la touche A de votre clavier ne signifie pas que ce clavier adresse à l'ordinateur quelque code que ce soit représentant le caractère A.
Ce qui est envoyé à l'ordinateur est en réalité une suite de valeur hexadécimales appelées « scan-codes » qui représentent la position physique de la touche sur le clavier et des informations précisant s'il s'agit de l'actionnement ou du relâchement de la touche. C'est le système d'exploitation qui va interpréter ces codes plus ou moins directement et transmettre aux applications un symbole de touche 1).

Ces symboles de touche 2) envoyés aux applications représentent :

  • soit des caractères directement affichables, parmi lesquels les lettres et les chiffres ou divers symboles graphiques,
  • soit des codes d'évènement ou de fonction que chacune des applications doit interpréter à sa manière.

Dans le détail, les « scan-codes » sont d'abord transformés en codes de touches 3) puis en symboles de touches 4) .

La deuxième étape de l'interprétation fait appel à une table de correspondance entre les codes de touches (qui sont invariants) et les symboles de touches. Cette table de correspondance qui représente la disposition des caractères sur les touches est appelée « agencement de clavier5) » .
Ainsi, si l'agencement choisi est US, la touche marquée A sur votre clavier sera interprétée comme un Q ; si l'agencement choisi est FR la touche sera interprétée comme un A.

Codes de touches (keycodes)

Il existe dans Ubuntu une table (visible ici) qui associe les codes de touche à des noms symboliques censés aider à repérer la touche sur le clavier.
Une ligne de ce fichier sera de la forme :

<AE01> = 10;

Ici cela signifie que la touche alphanumérique (lettre A) est en première position (01) de la ligne E (les lignes sont numérotées de A à E en partant du coté de l'utilisateur et en allant vers l'écran 6) ) et a le code 50.

Une autre ligne de la forme :

<LFSH> = 50;

signifie que la touche majuscule de gauche a le code 50 (LF pour left = gauche et SH pour Shift =Maj) .

Pour faciliter l'utilisation des codes de touche 7) il existe également une table de correspondance (visible ici) qui associe au nom symbolique des touches un nom plus intelligible.
Voici un court extrait de la section "qwerty" de ce fichier:

xkb_keycodes "qwerty" {

   alias <LatQ> = <AD01>;
   alias <LatW> = <AD02>;
   

Pour autant que la section "qwerty" de ce fichier soit expressément spécifiée dans la configuration, la touche <AD01> pourra être désignée également par <LatQ>.

Il n'y a normalement pas lieu de toucher à ces fichiers.

Conversion codes de touche -> symboles de touche

Il existe dans le dossier /usr/share/X11/xkb/symbols, des fichiers qui définissent des tables de correspondance entre les codes de touches et les symboles de touches pour les différentes langues, et dont les sections traitent des différentes variantes de clavier connues, comme par exemple le fichier /usr/share/X11/xkb/symbols/fr pour la langue française.
Ces tables, découpées en sections, se combinent selon des règles d'inclusion et d'ajout bien précises afin que le système puisse ainsi faire face à une combinatoire importante entre types de clavier, langues, variantes.

Pour le cas précis de la redéfinition d'une table de correspondance pour un clavier donné, une table linéaire 8) reprenant l'ensemble des touches sera suffisante.

Par ailleurs, parmi les différentes tables évoquées ci-dessus, celles sélectionnées par l'utilisateur, dans le dialogue des préférences clavier, se combinent au démarrage du système pour former ure table plus vaste dénommée carte du clavier 9).

Si vous n'avez sélectionné qu'une seule table, c'est à dire un seul agencement de clavier, la carte du clavier lui correspondra strictement bien entendu.

Lire la carte du clavier

Si vous avez actuellement plusieurs agencements de clavier, et pour pouvoir faire les manipulations proposées ici, n'en conservez qu'un pour le moment. France Autre pour cet exemple. Supprimez les autres dans le dialogue des préférences de clavier.

Si vous voulez, voir la carte du clavier active correspondant à votre seul 10) agencement actuel, saisissez dans un terminal et entrez la commande suivante :

xmodmap -pke | less

Faites défilez les pages avec les flèches de changement de page.

Si vous désirez pouvoir examiner dans le détail cette carte, sauvegardez-là dans un fichier.
Par exemple, si vous souhaitez en disposer sur votre Bureau avec pour nom carte_active vous entrerez la commande :

xmodmap -pke > ~/Bureau/carte_active

.

Touches modificatrices (modifier keys)

Considérez la ligne suivante de la carte du clavier.

keycode  24 = a A æ Æ 

Mettez en regard la ligne correspondante issue de la table de correspondance correspondant à votre agencement actuel.
Par exemple pour le clavier français, il s'agira du fichier /usr/share/X11/xkb/symbols/fr dans lequel vous observerez à la section "Autre" :

    key <AD01>	{ [                a,                A,  æ,    Æ ] }; // a A æÆ

Elle sont très cohérentes entre elles et cela paraît normal.
Maintenant, dans un éditeur de texte saisissez au clavier la combinaison de touches suivante, en vous basant sur la marquage du clavier, avec les espaces mais sans les parenthèses :

(A) (⇧+A)  (Alt Gr+A)  (Alt Gr+⇧+A) 
⇧représente la touche majuscule et + indique que les deux ou trois touches doivent être pressées une par une et maintenues jusqu'à ce que la dernière soit frappée.

Vous obtenez le résultat suivant :

a A æ Æ

Ceci correspond bien à la ligne de définition pour la lettre A du fichier fr et à celle de la carte de clavier active.

La "carte du clavier", rangée dans le fichier carte_active, ne correspond à la table fr section "Autre" que si des réaffectations de touches n'ont pas été faite par des commandes en lignes.
Notez que cette façon de réaffecter les touches par des commandes en ligne est perturbante dans la mesure où elle désynchronise la perception que vous avez de votre agencement par les outils graphiques et la réalité.

Nous observons donc par cet exemple, et c'est vrai pour d' autres touches, qu'un même code de touche peut être associé à plusieurs (ici quatre) symboles de touches et que ces symboles de touches sont obtenus en accompagnant l'appui sur la touche par maintien préalable d'autres touches, telles que ⇧, Alt Gr ou la combinaison des deux.

Les touches ⇧ et Alt Gr, qui ne produisent pas d'effet en elles-mêmes mais qui modifient le symbole de touche envoyé par la touche qui les accompagne, sont appelées touches modificatrices 11).

En réalité, les touches ne sont pas modificatrices par elles-même. C'est plutôt le symbole de touche qui leur est attaché qui l'est. Aussi ces touches peuvent-elles être changées pour d'autres, mais ce n'est pas l'objet de cette page que de traiter de cet aspect. FIXME Est-ce traité sur une autre page ? Réponse : il le faudra certainement.

Ceci introduit la notion de niveau de touches avec ici :

  • symbole de niveau 1 : a → accessible sans touche modificatrice
  • symbole de niveau 2 : A → accessible avec la touche modificatrice ⇧
  • symbole de niveau 3 : æ → accessible avec la touche modificatrice Alt Gr
  • symbole de niveau 4 : Æ → accessible avec les touches modificatrice Alt Gr+⇧

L'mage suivante illustre cet aspect des choses :

Groupes

Pour comprendre la notion de groupe, allez maintenant dans le dialogue de préférence de clavier et ajoutez dans cet ordre :

  1. le clavier anglais US,
  2. le clavier US International
  3. le clavier Allemagne Macintosh.

L'indicateur de clavier s'affiche alors dans l'applet de notification général pour vous indiquer le clavier en usage et pour vous permettre d'en changer.

Fermez tous les fichiers précédemment ouvert (notamment le fichier /usr/share/X11/xkb/symbols/fr et votre fichier sauvegarde de carte de clavier ~/Bureau/carte_active ) puis dans un terminal saisissez de nouveau la commande :

xmodmap -pke > ~/Bureau/carte_active

Ouvrez cette sauvegarde de la nouvelle carte active et sélectionnez la ligne correspondant au keycode 24 pour visualiser ceci:

keycode  24 = a A q Q ae AE q Q adiaeresis Adiaeresis q Q guillemotleft guillemotright

Ce qui en clair correspond à :

keycode 24 a A q Q æ Æ q Q ä Ä q Q « »

Le principe de passage des tables de correspondance des différents agencements à la carte active dans le système est imagé ci-après:

Dans la terminologie du serveur X et de son extension XKB, un groupe correspond à l'ensemble des symboles d'un agencement, que l'on obtient par sélection avec l'indicateur de clavier ou une séquence de touche modificatrices. 12)

Notez au passage, que les niveaux 3 et 4 n'étant pas présent dans la table du clavier US, ces niveaux sont aussi omis dans la carte active. Ceci rend la lecture de cette carte un peu plus difficile.

Mis à part, la particularité signalée dans la note ci-dessus, et en notant GiNj, i étant la valeur du Groupe et j celle du Niveau, la carte présente les données dans cette ordre:

G1N1 G1N2 G2N1 G2N2 G1N3 G1N4 G2N3 G2N4 G3N1 G3N2 G4N1 G4N2 G3N3 G3N4 G4N3 G4N4

Le schéma simplifié de la gestion du clavier par le serveur X avec son module XKB est donné par la figure suivante :

Sur ce schéma, vous remarquerez que :

  • Le serveur X n'adresse pas lui même les symboles de touche aux applications. Ce sont Xlib et les toolkits qui le font en utilisant la carte du clavier vue précédemment et en se basant sur les "scancodes" et l'état du clavier contenus dans l'évènement transmis par le serveur X.
  • Le serveur X gère une variable appelée état du clavier et communique cette information aux librairies. En pratique, pour gérer cet état du clavier, il utilise le code de touche qui, rappelons le, ne représente pas que des caractères, mais aussi des fonctions à exécuter.

État du clavier et modificateurs

FIXME Partie à compléter

Types de touche

Une notion supplémentaire à connaître pour mieux comprendre la manière dont les tables de symboles de touche sont conçues, est la notion de type de touche.

FIXME À développer.

Contributeurs: jaaf64


1)
keysymbol
2)
keysymbols
3)
keycodes
4)
keysymbols
5)
keyboard layout
6)
Du moins pour ce qui est des caractères imprimables, c'est à dire en excluant les lignes qui ne comprennent que des caractères de contrôle.
7)
keycodes
8)
Ce qui veut dire ici sans combinaison avec d'autres table par inclusion par exemple.
9)
keymap en anglais.
10)
compte tenu de la note ci-dessus
11)
modifier keys
12)
Au démarrage du système il s'agit de ⇧+ Ver Maj. Si vous souhaitez changer cette combinaison, reportez-vous à la section Passer rapidement d'un agencement à l'autre de la page « Configurer le clavier ».
  • tutoriel/comprendre_la_configuration_du_clavier.1313589055.txt.gz
  • Dernière modification: Le 15/12/2011, 15:21
  • (modification externe)