Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
tutoriel:comprendre_la_configuration_du_clavier [Le 03/03/2020, 13:46]
sefran Update link
tutoriel:comprendre_la_configuration_du_clavier [Le 11/09/2022, 12:24] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 9: Ligne 9:
  
 Ces symboles de touche (( //​keysymbols//​ )) envoyés aux applications représentent : Ces 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 **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.   * soit  des **codes d’événement ou de fonction** que chacune des applications doit interpréter à sa manière.
  
Ligne 37: Ligne 37:
  
 Lorsque l'on appuie **↓** sur la même touche «**A**» (AZERTY), soit B (BÉPO), soit Q (QWERTY), le scancode généré est alors : **0x10**. Lorsque l'on appuie **↓** sur la même touche «**A**» (AZERTY), soit B (BÉPO), soit Q (QWERTY), le scancode généré est alors : **0x10**.
-Lorsque l'on relâche la touche **↑** le scancode généré est alors : **0x90**. ​+Lorsque l'on relâche la touche **↑** le scancode généré est alors : **0x90**.
 La séquence de scancode «**0x10 0x90**» correspond alors au caractère A pour l'​Azerty. La séquence de scancode «**0x10 0x90**» correspond alors au caractère A pour l'​Azerty.
  
Ligne 283: Ligne 283:
 CtrlD = 128 CtrlD = 128
 VerMaj = 256</​file>​ VerMaj = 256</​file>​
-Pour gérer les touches "​Touche seule",​ Maj, AltGr, Maj+AltGr nous devrons définir au moins le keymaps suivant : +Pour gérer les touches "​Touche seule",​ Maj, AltGr, Maj+AltGr nous devrons définir au moins le keymaps suivant :
 <​file>​keymaps 0-3</​file>​ <​file>​keymaps 0-3</​file>​
-<note warning>​Si le keymaps défini ne correspond pas aux combinaisons renseignées dans le fichier ~/​mon-bepo.map,​ lors du chargement du fichier avec la commande loadkeys une erreur «**too many (//x//) entries on one line**» est affichée.</​note> ​+<note warning>​Si le keymaps défini ne correspond pas aux combinaisons renseignées dans le fichier ~/​mon-bepo.map,​ lors du chargement du fichier avec la commande loadkeys une erreur «**too many (//x//) entries on one line**» est affichée.</​note>​
 Exemple : Exemple :
 <​file>​keymaps 0-4,​8,​12</​file>​ <​file>​keymaps 0-4,​8,​12</​file>​
   * 0-4 : Touche seule, Maj, AltGr, Maj+AltGr et Ctrl   * 0-4 : Touche seule, Maj, AltGr, Maj+AltGr et Ctrl
-  * 8 : Alt, +  * 8 : Alt,
   * 12 : Alt+Ctrl.   * 12 : Alt+Ctrl.
 Ce qui nous donne pour la représentation d'une touche : Ce qui nous donne pour la représentation d'une touche :
Ligne 397: Ligne 397:
  
 === Modularisation du fichier d'​agencement mon-bepo.map ​ === === Modularisation du fichier d'​agencement mon-bepo.map ​ ===
-Maintenant on se propose de réaliser ce clavier de façon modulaire pour pouvoir réutiliser ces modules pour construire d'​autres claviers. ​+Maintenant on se propose de réaliser ce clavier de façon modulaire pour pouvoir réutiliser ces modules pour construire d'​autres claviers.
  
 Nous devons donc créer des fichiers avec une extension **.inc**. Pour les utiliser il suffira de les appeler avec la commande **include**. Nous devons donc créer des fichiers avec une extension **.inc**. Pour les utiliser il suffira de les appeler avec la commande **include**.
  
-Voici la structure que l'on se propose de mettre en place +Voici la structure que l'on se propose de mettre en place
 == Les touches systèmes == == Les touches systèmes ==
 {{ :​tutoriel:​asus_k93sm_systemkeys.png?​direct&​600 |}} {{ :​tutoriel:​asus_k93sm_systemkeys.png?​direct&​600 |}}
Ligne 416: Ligne 416:
 == Les touches bépo == == Les touches bépo ==
 {{ :​tutoriel:​asus_k93sm_bepokeys.png?​direct&​600 |}} {{ :​tutoriel:​asus_k93sm_bepokeys.png?​direct&​600 |}}
-bepo.inc ou bepo.map avec +bepo.inc ou bepo.map avec
 <​file>​Charset "​iso-8859-15"​ <​file>​Charset "​iso-8859-15"​
  
Ligne 425: Ligne 425:
  
 ... ...
-</​file> ​+</​file>​
 == Les touches Fn spéciales == == Les touches Fn spéciales ==
 {{ :​tutoriel:​asus_k93sm_fnkeys.png?​direct&​600 |}} {{ :​tutoriel:​asus_k93sm_fnkeys.png?​direct&​600 |}}
Ligne 434: Ligne 434:
 include "​bepo.map"​ include "​bepo.map"​
 ... ...
-</​file> ​+</​file>​
  
 ===== Configuration de l'​affichage et des actions clavier pour le serveur graphique ===== ===== Configuration de l'​affichage et des actions clavier pour le serveur graphique =====
Ligne 508: Ligne 508:
 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. 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 ((C'​est à dire ici sans combinaison avec d'​autres table par inclusion par exemple.)) reprenant l'​ensemble des touches peut suffire. ​+Pour le cas précis de la redéfinition d'une table de correspondance pour un clavier donné, une table linéaire ((C'​est à dire ici sans combinaison avec d'​autres table par inclusion par exemple.)) reprenant l'​ensemble des touches peut suffire.
    
 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 une table plus vaste dénommée **carte du clavier** ((keymap en anglais.)). 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 une table plus vaste dénommée **carte du clavier** ((keymap en anglais.)).
Ligne 547: Ligne 547:
 <note important>​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é faites par des commandes en ligne.\\ 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é.</​note>​ <note important>​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é faites par des commandes en ligne.\\ 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é.</​note>​
  
-Vous observerez 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 touche et que ces symboles de touche 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. +Vous observerez 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 touche et que ces symboles de touche 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** (( //modifier keys// )). 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// )).
Ligne 574: Ligne 574:
 keycode ​ 24 = a A q Q ae AE q Q adiaeresis Adiaeresis q Q guillemotleft guillemotright keycode ​ 24 = a A q Q ae AE q Q adiaeresis Adiaeresis q Q guillemotleft guillemotright
 </​file>​ </​file>​
-Ce qui en clair correspond à : +Ce qui en clair correspond à :
 ^keycode 24 | a | A | q | Q | æ | Æ | q | Q | ä | Ä | q | Q | « | » | ^keycode 24 | a | A | q | Q | æ | Æ | q | Q | ä | Ä | q | Q | « | » |
  
Ligne 607: Ligne 607:
  
 Ainsi, par exemple, pour que la touche //Alt gr// provoque la sélection du symbole de touche de niveau 3, il faut que soient écrites dans les tables de symboles les lignes suivantes : Ainsi, par exemple, pour que la touche //Alt gr// provoque la sélection du symbole de touche de niveau 3, il faut que soient écrites dans les tables de symboles les lignes suivantes :
- <​file>​ key <​RALT>​ { type[Group1]="​ONE_LEVEL",​ symbols[Group1] = [ ISO_Level3_Shift ]+ <​file>​key <​RALT>​ { type[Group1]="​ONE_LEVEL",​ symbols[Group1] = [ ISO_Level3_Shift ]
     };     };
   modifier_map Mod5  {ISO_Level3_Shift };   modifier_map Mod5  {ISO_Level3_Shift };
Ligne 657: Ligne 657:
  
 Le type de touche précise la manière dont sont pris en compte les modificateurs pour sélectionner le symbole de touche parmi tous ceux qui, classés par niveaux, font partie de sa définition.\\ Le type de touche précise la manière dont sont pris en compte les modificateurs pour sélectionner le symbole de touche parmi tous ceux qui, classés par niveaux, font partie de sa définition.\\
-Les différents types de touches sont définis dans les fichiers placés dans le dossier **/​usr/​share/​X11/​xkb/​types** et sont de la forme +Les différents types de touches sont définis dans les fichiers placés dans le dossier **/​usr/​share/​X11/​xkb/​types** et sont de la forme
 <​file>​type '​NomDeType '​{'​ Instructions '​};</​file>​. ​ Parmi les instructions,​ on peut rencontrer les instructions suivantes : <​file>​type '​NomDeType '​{'​ Instructions '​};</​file>​. ​ Parmi les instructions,​ on peut rencontrer les instructions suivantes :
   * modifiers = <liste de modificateurs>​ : il s'agit de la liste des modificateurs qui sont repris dans la définition du type.   * modifiers = <liste de modificateurs>​ : il s'agit de la liste des modificateurs qui sont repris dans la définition du type.
-  * map[<​combinaison de modificateurs>​] = <nom du niveau> : c'est la combinaison de modificateurs correspondant au nom du niveau indiqué. \\ Les noms reconnus par le programme xmodmap vont de Level1 à Level8. Au delà il faut utiliser une valeur numérique, mais il y a peu de chances que vous en ayez besoin. ​+  * map[<​combinaison de modificateurs>​] = <nom du niveau> : c'est la combinaison de modificateurs correspondant au nom du niveau indiqué. \\ Les noms reconnus par le programme xmodmap vont de Level1 à Level8. Au delà il faut utiliser une valeur numérique, mais il y a peu de chances que vous en ayez besoin.
   * level_name[<​nom normalisé>​] = <nom symbolique libre> : xkb ne fait aucun usage de ces noms symboliques,​ mais ils sont néanmoins requis. Ils servent dans l'​affichage des agencements.   * level_name[<​nom normalisé>​] = <nom symbolique libre> : xkb ne fait aucun usage de ces noms symboliques,​ mais ils sont néanmoins requis. Ils servent dans l'​affichage des agencements.
-  * preserve[...] = ... : Reportez vous aux documentations citées en référence (( Voir en bas de page)) pour des éclaircissements sur cette instruction dont la compréhension est difficile aux non programmeurs,​ et n'est pas indispensable ici.\\ +  * preserve[...] = ... : Reportez vous aux documentations citées en référence (( Voir en bas de page)) pour des éclaircissements sur cette instruction dont la compréhension est difficile aux non programmeurs,​ et n'est pas indispensable ici.
 Voici un exemple de définition de type : Voici un exemple de définition de type :
 <​file>​ <​file>​
Ligne 706: Ligne 706:
 <​file>​key codeDeTouche {description};</​file>​ <​file>​key codeDeTouche {description};</​file>​
 où //​codeDeTouche//​ est le code de la touche tel qu'​[[#​Codes de touches (keycodes) |expliqué plus haut]], de la forme **<​xxxx>​** et où la partie entre accolades comprend la définition proprement dite. Cette définition peut porter sur de nombreux paramètres qu'il est difficile de présenter tous ici sans entrer dans des considérations complexes qui dépassent le besoin de ce tutoriel.\\ où //​codeDeTouche//​ est le code de la touche tel qu'​[[#​Codes de touches (keycodes) |expliqué plus haut]], de la forme **<​xxxx>​** et où la partie entre accolades comprend la définition proprement dite. Cette définition peut porter sur de nombreux paramètres qu'il est difficile de présenter tous ici sans entrer dans des considérations complexes qui dépassent le besoin de ce tutoriel.\\
-Pour une présentation exhaustive reportez-vous aux documents cités en référence en fin de page. +Pour une présentation exhaustive reportez-vous aux documents cités en référence en fin de page.
  
 [[:​tutoriel:​comment_modifier_un_fichier|Ouvrez]] par exemple le fichier ​ **/​usr/​share/​X11/​xkb/​symbols/​latin** pour y trouver des définitions de touches sous la forme suivante : [[:​tutoriel:​comment_modifier_un_fichier|Ouvrez]] par exemple le fichier ​ **/​usr/​share/​X11/​xkb/​symbols/​latin** pour y trouver des définitions de touches sous la forme suivante :
Ligne 726: Ligne 726:
 type[Group1]="​ONE_LEVEL",​type[Group2]="​TWO_LEVEL",​ type[Group1]="​ONE_LEVEL",​type[Group2]="​TWO_LEVEL",​
 </​file>​ </​file>​
- <​note>​Si vous souhaitez inclure un type personnel dans une configuration particulière du clavier, prenez exemple sur les types décrits dans les fichiers du dossier **/​usr/​share/​X11/​xkb/​types**. ​+ <​note>​Si vous souhaitez inclure un type personnel dans une configuration particulière du clavier, prenez exemple sur les types décrits dans les fichiers du dossier **/​usr/​share/​X11/​xkb/​types**.
 Vous noterez par ailleurs que les fichiers de symboles ne comprennent en général qu'un seul groupe et que les différents groupes de la carte du clavier sont formés à partir de chacun de ces fichiers lors de la sélection des agencements dans l'​interface graphique. Néanmoins, plusieurs groupes peuvent être compris dans un seul fichier.</​note>​ Vous noterez par ailleurs que les fichiers de symboles ne comprennent en général qu'un seul groupe et que les différents groupes de la carte du clavier sont formés à partir de chacun de ces fichiers lors de la sélection des agencements dans l'​interface graphique. Néanmoins, plusieurs groupes peuvent être compris dans un seul fichier.</​note>​
   ​   ​
 Il existe également des lignes qui attribuent les symboles de touche aux différents niveaux des différents groupes Il existe également des lignes qui attribuent les symboles de touche aux différents niveaux des différents groupes
 <​file>​symbols[...] = ...</​file>​ <​file>​symbols[...] = ...</​file>​
-par exemple : +par exemple :
 <​file>​ <​file>​
 symbols[Group1] = [ ISO_Level3_Shift,​ ISO_Next_Group ], symbols[Group1] = [ ISO_Level3_Shift,​ ISO_Next_Group ],
Ligne 763: Ligne 763:
 |**xkb_types**| Fichiers décrivant les types de touche, en particulier leur nombre de niveaux et la relation entre ces niveaux et les modificateurs. Les fichiers de ce type sont placés dans le dossier ** /​usr/​share/​X11/​xkb/​types**| |**xkb_types**| Fichiers décrivant les types de touche, en particulier leur nombre de niveaux et la relation entre ces niveaux et les modificateurs. Les fichiers de ce type sont placés dans le dossier ** /​usr/​share/​X11/​xkb/​types**|
 |**xkb_symbols**|Fichiers décrivant, entre autres, le type et les symboles de touche de cette touche. Les fichiers de ce type sont placés dans le dossier **/​usr/​share/​X11/​xkb/​symbols**| |**xkb_symbols**|Fichiers décrivant, entre autres, le type et les symboles de touche de cette touche. Les fichiers de ce type sont placés dans le dossier **/​usr/​share/​X11/​xkb/​symbols**|
-|**xkb_compat**|Fichiers décrivant le comportement des modificateurs. Ceci renvoie à des notions complexes qui ne sont pas strictement nécessaires pour la compréhension de ce tutoriel. Pour une présentation exhaustive reportez-vous aux documents cités en référence en fin de page. Les fichiers de ce type sont placés dans le dossier **/​usr/​share/​X11/​xkb/​compat**|+|**xkb_compat**|Fichiers décrivant le comportement des modificateurs. Ceci renvoie à des notions complexes qui ne sont pas strictement nécessaires pour la compréhension de ce tutoriel. Pour une présentation exhaustive reportez-vous aux documents cités en référence en fin de page.Les fichiers de ce type sont placés dans le dossier **/​usr/​share/​X11/​xkb/​compat**|
 |**xkb_geometry**|Fichiers décrivant le placement physique des touches sur le clavier. Les fichiers de ce type sont placés dans le dossier **/​usr/​share/​X11/​xkb/​geometry**| |**xkb_geometry**|Fichiers décrivant le placement physique des touches sur le clavier. Les fichiers de ce type sont placés dans le dossier **/​usr/​share/​X11/​xkb/​geometry**|
  
Ligne 801: Ligne 801:
 signifie que les déclarations du fichier fr doivent être incluse en appliquant le mode //replace// et non pas le mode  par défaut //​override//​. Les déclarations internes peuvent néanmoins contredire ce principe. signifie que les déclarations du fichier fr doivent être incluse en appliquant le mode //replace// et non pas le mode  par défaut //​override//​. Les déclarations internes peuvent néanmoins contredire ce principe.
   * Pour finir, un appel interne à un mode de fusion, l'​emporte sur une déclaration antérieure,​ par exemple :   * Pour finir, un appel interne à un mode de fusion, l'​emporte sur une déclaration antérieure,​ par exemple :
-<​file> ​+<​file>​
  ​replace key <​HYPR>​ {  ​replace key <​HYPR>​ {
     vmods = NumLock,     vmods = NumLock,
Ligne 807: Ligne 807:
     actions[Group1] = [ SetMods(modifiers=NumLock) ]     actions[Group1] = [ SetMods(modifiers=NumLock) ]
   };   };
-</​file> ​+</​file>​
 signifie que cette nouvelle définition de la touche <​HYPR>​ annule et remplace toutes les définitions précédentes de cette touche. signifie que cette nouvelle définition de la touche <​HYPR>​ annule et remplace toutes les définitions précédentes de cette touche.
  
Ligne 816: Ligne 816:
 ===== Références bibliographiques ===== ===== Références bibliographiques =====
  
-Les bases théoriques de cette page sont accessibles sur le site de [[http://​pascal.tsu.ru/​en/​xkb/​| Ivan Pascal]], qui traite d'une manière exhaustive tout ce qui n'a pu être qu'​effleuré ici. Ce texte, bien écrit, requiert néanmoins une attention soutenue, en particulier,​ à qui n'est pas un programmeur. ​+Les bases théoriques de cette page sont accessibles sur le site de [[http://​pascal.tsu.ru/​en/​xkb/​| Ivan Pascal]], qui traite d'une manière exhaustive tout ce qui n'a pu être qu'​effleuré ici. Ce texte, bien écrit, requiert néanmoins une attention soutenue, en particulier,​ à qui n'est pas un programmeur.
  
  
  • tutoriel/comprendre_la_configuration_du_clavier.txt
  • Dernière modification: Le 11/09/2022, 12:24
  • par moths-art