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

Ceci est une ancienne révision du document !



Comprendre la configuration du clavier

Page en élaboration

Rappelons que les informations transmises par une touche du clavier au système (pilote clavier, noyau Linux et serveur X) n'ont ne sont pas directement liées au symbole graphique ou à l'évènement attaché à cette touche.

Ce qui est envoyé à l'ordinateur est en réalité une suite de valeur hexadécimales, appelées « scan-codes » et représentant 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 ( keysymbol ).

Les symboles de touche (keysymbols) 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.

Le passage des "scan-codes" aux symboles de touche (keysymbols) se décompose en deux étapes principales. Les « scan-codes » sont d'abord transformés en codes de touches ( keycodes ) puis en symboles de touches ( keysymbols ) .

Codes de touches (keycodes)

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

<AE01> = 10;

signifie que la touche alphanumérique (lettre A) en première position (01) de la ligne E (les lignes sont numéroté de A à E en partant du coté de l'utilisateur) 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 (keycodes) il existe également une table de correspondance (aliases) 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 sont découpées en sections et se combinent selon des règles d'inclusion et d'ajout bien précises. Le système doit être capable de 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 reprenant l'ensemble des touches sera suffisante.

Par ailleurs, parmi les différentes tables évoquées ci-dessus, celles sélectionnée 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 1).

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 2) agencement actuel, ouvrez 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 nommé carte_active, sur votre Bureau avec 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 :

/usr/share/X11/xkb/symbols/fr (section Autre) du clavier français qui est utilisé dans cet exemple.

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

Elle sont très cohérentes entre elles et cela paraît normal.

Ouvrez un éditeur de texte, placez-y le pointeur de la souris, et saisissez au clavier la séquence 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, et nous pourrions l'observer 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 d'un appui maintenu 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 ("modifier keys").

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

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, le clavier anglais US, le clavier US International et 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 (fr et votre fichier sauvegardé), ouvrez un terminal et lancer à nouveau la commande :

xmodmap -pke > ~/Bureau/carte_active

Ouvrez ce fichier sauvegardé, qui correspond à la nouvelle carte active, et sélectionnez la ligne correspondant au keycode 24. Vous obtenez ceci :

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

Ce qui en clair correspond à :

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. 3)

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 difficile.

Mis à part, la particularité signalée dans la note ci-dessus, et en notant GiNj le niveau j du groupe i, 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

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. (à développer).


1)
keymap en anglais.
2)
comte tenu de la note ci-dessus
3)
Au démarrage du système il s'agit de ⇧+ Ver Maj mais l'option "Touche(s) changeant de disposition" du dialogue des préférences du clavier, permet de changer ce choix très facilement.
  • tutoriel/comprendre_la_configuration_du_clavier.1313215343.txt.gz
  • Dernière modification: Le 15/12/2011, 15:21
  • (modification externe)