Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
tutoriel:comprendre_la_configuration_du_clavier [Le 16/05/2018, 09:30] sefran Mise en forme Windows |
tutoriel:comprendre_la_configuration_du_clavier [Le 03/03/2020, 13:46] sefran Update link |
||
---|---|---|---|
Ligne 24: | Ligne 24: | ||
<code>[user@ASUS-K93SM ~]$ showkey -s</code> | <code>[user@ASUS-K93SM ~]$ showkey -s</code> | ||
- | <code>kb mode was UNICODE | + | <code>le mode clavier était UNICODE |
- | [ if you are trying this under X, it might not work | + | [ si vous essayez cela sous X Window, cela peut ne pas fonctionner |
- | since the X server is also reading /dev/console ] | + | étant donné que le serveur X utilise également /dev/console ] |
- | press any key (program terminates 10s after last keypress)... | + | Appuyez sur n'importe quelle touche (le programme terminera 10s après la dernière touche enfoncée)... |
0x10 0x90 | 0x10 0x90 | ||
0x11 0x91 | 0x11 0x91 | ||
Ligne 36: | Ligne 36: | ||
0x15 0x95</code> | 0x15 0x95</code> | ||
- | Lorsque l'on appui **↓** 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. | ||
- | Lorsque l'on appui **↓** sur la touche «**Alt Gr**» la séquence de code générée est : **0xe0 0x38**. Lorsque l'on relâche la touche **↑** le scancode généré est alors : **0xe0 0xb8**. | + | Lorsque l'on appuie **↓** sur la touche «**Alt Gr**» la séquence de code générée est : **0xe0 0x38**. Lorsque l'on relâche la touche **↑** le scancode généré est alors : **0xe0 0xb8**. |
La séquence de scancode «**0xe0 0x38 0xe0 0xb8**» correspond alors à une fonction. | La séquence de scancode «**0xe0 0x38 0xe0 0xb8**» correspond alors à une fonction. | ||
Ligne 52: | Ligne 52: | ||
Exemple pour AZERTY/BÉPOÈ!/QWERTY | Exemple pour AZERTY/BÉPOÈ!/QWERTY | ||
- | <code>[user@ASUS-K93SM ~]$ showkey -s</code> | + | <code>[user@ASUS-K93SM ~]$ showkey -k</code> |
- | <code>kb mode was UNICODE | + | <code>le mode clavier était UNICODE |
- | [ if you are trying this under X, it might not work | + | [ si vous essayez cela sous X Window, cela peut ne pas fonctionner |
- | since the X server is also reading /dev/console ] | + | étant donné que le serveur X utilise également /dev/console ] |
- | press any key (program terminates 10s after last keypress)... | + | Appuyez sur n'importe quelle touche (le programme terminera 10s après la dernière touche enfoncée)... |
- | keycode 16 press | + | code clavier 16 appuyé |
- | keycode 16 release | + | code clavier 16 relâché |
- | keycode 17 press | + | code clavier 17 appuyé |
- | keycode 17 release | + | code clavier 17 relâché |
- | keycode 18 press | + | code clavier 18 appuyé |
- | keycode 18 release | + | code clavier 18 relâché |
- | keycode 19 press | + | code clavier 19 appuyé |
- | keycode 19 release | + | code clavier 19 relâché |
- | keycode 20 press | + | code clavier 20 appuyé |
- | keycode 20 release | + | code clavier 20 relâché |
- | keycode 21 press | + | code clavier 21 appuyé |
- | keycode 21 release</code> | + | code clavier 21 relâché</code> |
La séquence de scancode «0x10 0x90» du caractère «**A**» (AZERTY), soit B (BÉPO), soit Q (QWERTY), correspond alors au keycode **16**. | La séquence de scancode «0x10 0x90» du caractère «**A**» (AZERTY), soit B (BÉPO), soit Q (QWERTY), correspond alors au keycode **16**. | ||
Ligne 80: | Ligne 80: | ||
Exemple de codes clavier pour un portable ASUS K93SM : | Exemple de codes clavier pour un portable ASUS K93SM : | ||
{{ :tutoriel:asus_k93sm_keycodes.png?direct&600 |}} | {{ :tutoriel:asus_k93sm_keycodes.png?direct&600 |}} | ||
- | ===== Configuration de l'affichage et des actions clavier dans la console ===== | + | ===== Configuration de l'affichage et des actions clavier dans la console de codage Unicode ===== |
- | L'interprétation fait appel à une table de correspondance entre les codes de touches keycodes (qui sont invariantes) et les symboles de touches. Cette table de correspondance, qui représente la disposition des caractères sur les touches l'**agencement du clavier**, se trouve dans le répertoire «**/usr/share/keymap/**». | + | Vérifiez que vous avez le paquet console-setup-linux installé : |
+ | <code>apt-cache policy console-setup-linux</code> | ||
+ | Retourne si installé : | ||
+ | <code>Installé : 1.178ubuntu2 | ||
+ | Candidat : 1.178ubuntu2 | ||
+ | Table de version : | ||
+ | *** 1.178ubuntu2 500 | ||
+ | 500 http://fr.archive.ubuntu.com/ubuntu bionic/main amd64 Packages | ||
+ | 500 http://fr.archive.ubuntu.com/ubuntu bionic/main i386 Packages | ||
+ | 100 /var/lib/dpkg/status | ||
+ | </code> | ||
+ | |||
+ | La configuration de l'agencement du clavier se fait avec le fichier de configuration du serveur graphique | ||
+ | ===== Configuration de l'affichage et des actions clavier dans une console de codage ASCII ===== | ||
+ | L'interprétation fait appel à une table de correspondance entre les codes de touches keycodes (qui sont invariantes) et les symboles de touches. Cette table de correspondance, qui représente la disposition des caractères sur les touches correspondant à l'**agencement du clavier**, se trouve dans le répertoire «**/usr/share/keymaps/**». | ||
Pour charger la table de l'agencement du clavier il faut utiliser la commande «**loadkeys**». | Pour charger la table de l'agencement du clavier il faut utiliser la commande «**loadkeys**». | ||
Exemple de chargement d'un clavier bépo : | Exemple de chargement d'un clavier bépo : | ||
<code>sudo loadkeys dvorak-fr-bepo</code> | <code>sudo loadkeys dvorak-fr-bepo</code> | ||
+ | |||
+ | <note warning>Si cette commande ne fonctionne pas commencez par la [[tutoriel:comprendre_la_configuration_du_clavier#configuration_initiale|Configuration initiale]]</note> | ||
Le fichier chargé pour la gestion du clavier est alors /usr/share/keymap/i386/dvorak-fr-bepo.kmap.gz | Le fichier chargé pour la gestion du clavier est alors /usr/share/keymap/i386/dvorak-fr-bepo.kmap.gz | ||
Ligne 93: | Ligne 109: | ||
La console [[http://blog.securite.free.fr/index.php/difference-les-terminaux-sous-linux-ttypts|TeleTYpewriter agetty]] utilise les polices Unicode, mais elle ne gère pas vraiment l’Unicode avec tous ses caractères. | La console [[http://blog.securite.free.fr/index.php/difference-les-terminaux-sous-linux-ttypts|TeleTYpewriter agetty]] utilise les polices Unicode, mais elle ne gère pas vraiment l’Unicode avec tous ses caractères. | ||
- | Pour cela il faudra installer [[https://github.com/dvdhrm/kmscon|KMSCON]]. KMSCON se base sur la configuration clavier de Xorg. | ||
Vous pouvez afficher le jeux de caractères présent dans le terminal TTY avec la commande : | Vous pouvez afficher le jeux de caractères présent dans le terminal TTY avec la commande : | ||
Ligne 100: | Ligne 115: | ||
Vous pouvez choisir la police à afficher dans votre terminal avec la commande : | Vous pouvez choisir la police à afficher dans votre terminal avec la commande : | ||
<code>setfont Uni2-Fixed16</code> | <code>setfont Uni2-Fixed16</code> | ||
+ | {{ :tutoriel:showconsolefont_uni2_fixed16.png?direct&600 |}} | ||
+ | Où vous pouvez trouver [[https://www.zap.org.au/projects/console-fonts-distributed/psftx-debian-9.4/Uni2-Fixed16.psf.png|le jeux complet de la police ici]]. | ||
+ | |||
+ | ==== Configuration initiale ==== | ||
+ | Vérifiez que le paquet console-data est installé | ||
+ | <code>apt-cache policy console-data</code> | ||
+ | Retourne si installé : | ||
+ | <code>Installé : 2:1.12-5.1 | ||
+ | Candidat : 2:1.12-5.1 | ||
+ | Table de version : | ||
+ | *** 2:1.12-5.1 500 | ||
+ | 500 http://fr.archive.ubuntu.com/ubuntu artfull/main amd64 Packages | ||
+ | 500 http://fr.archive.ubuntu.com/ubuntu artfull/main i386 Packages | ||
+ | 100 /var/lib/dpkg/status | ||
+ | </code> | ||
+ | |||
+ | et si pas installé : | ||
+ | <code> Installé : (aucun) | ||
+ | Candidat : 2:1.12-5.1 | ||
+ | Table de version : | ||
+ | 2:1.12-5.1 500 | ||
+ | 500 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages | ||
+ | 500 http://fr.archive.ubuntu.com/ubuntu bionic/universe i386 Packages | ||
+ | </code> | ||
+ | |||
+ | S'il n'est pas installé, installez-le : | ||
+ | <code>sudo apt-get install console-data</code> | ||
- | Où vous pouvez trouver [[https://www.zap.org.au/software/fonts/console-fonts-distributed/psftx-ubuntu-17.04/Uni2-Fixed16.psf.pdf|le jeux complet de la police ici]]. | + | Paramétrez le terminal pour fonctionner avec un clavier bépo |
+ | <code>sudo dpkg-reconfigure console-data</code> | ||
+ | {{ :tutoriel:console-data1.png?direct&600 |}} | ||
+ | {{ :tutoriel:console-data2.png?direct&600 |}} | ||
==== Correction du clavier bépo ==== | ==== Correction du clavier bépo ==== | ||
{{ :tutoriel:asus_k93sm_bepo.png?direct&600 |}} | {{ :tutoriel:asus_k93sm_bepo.png?direct&600 |}} | ||
- | Pour générer un caractère au clavier, soit on appuis directement sur la touche (Défaut), soit on la compose avec la touche ⇑ {{:tutoriel:Keyboard_White_Shift_Alt.png?direct&48}}, soit on la compose avec la touche Alt Gr {{:tutoriel:keyboard_white_alt_gr.png?direct&48}}, soit on la compose avec les deux ⇑{{:tutoriel:Keyboard_White_Shift_Alt.png?direct&48}}+Alt Gr{{:tutoriel:keyboard_white_alt_gr.png?direct&48}}. | + | Pour générer un caractère au clavier, soit on appuie directement sur la touche (Défaut), soit on la compose avec la touche ⇑ {{:tutoriel:Keyboard_White_Shift_Alt.png?direct&48}}, soit on la compose avec la touche Alt Gr {{:tutoriel:keyboard_white_alt_gr.png?direct&48}}, soit on la compose avec les deux ⇑{{:tutoriel:Keyboard_White_Shift_Alt.png?direct&48}}+Alt Gr{{:tutoriel:keyboard_white_alt_gr.png?direct&48}}. |
- | Par exemple comme on peut le voir avec la touche de **keycode 5** {{:tutoriel:bepo_touch_meta_keys.png?direct&200}}, l'appui direct devrait généré le caractère **(**, l'appui simultané de la touche **⇑** avec la touche doit générer le caractère **4**, l'appui simultané de la touche **Altr Gr** avec la touche doit générer le caractère **[**, et enfin l'appui simultané de **⇑** avec **Alt Gr** puis avec le caractère doit générer le caractère **≤**. | + | Par exemple comme on peut le voir avec la touche de **keycode 5** {{:tutoriel:bepo_touch_meta_keys.png?direct&200}}, l'appui direct devrait générer le caractère **(**, l'appui simultané de la touche **⇑** avec ensuite la touche doit générer le caractère **4**, l'appui simultané de la touche **Altr Gr** avec ensuite la touche doit générer le caractère **[**, et enfin l'appui simultané de **⇑** avec **Alt Gr** puis ensuite avec le caractère doit générer le caractère **≤**. |
=== Création d'un fichier clavier de test === | === Création d'un fichier clavier de test === | ||
- | Copier le fichier dvorack-fr-bepo-utf8.kmap.gz pour travailler avec : | + | Copiez le fichier dvorack-fr-bepo-utf8.kmap.gz pour travailler avec : |
<code>zcat /usr/share/keymaps/i386/dvorak/dvorak-fr-bepo-utf8.kmap.gz > ~/mon-bepo.map</code> | <code>zcat /usr/share/keymaps/i386/dvorak/dvorak-fr-bepo-utf8.kmap.gz > ~/mon-bepo.map</code> | ||
- | Basculé sur une console tty (Ctlr+Alt+Fx), se connecter si nécessaire, puis saisissez une fonte de police de terminal compatible comme Uni2-Fixed16: | + | Basculez sur une console tty (Ctlr+Alt+Fx), se connecter si nécessaire, puis saisissez une fonte de police de terminal compatible comme Uni2-Fixed16: |
<code>setfont Uni2-Fixed16</code> | <code>setfont Uni2-Fixed16</code> | ||
Ligne 354: | Ligne 399: | ||
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**. | + | 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 == | ||
Ligne 364: | Ligne 410: | ||
== Les touches de fonctions == | == Les touches de fonctions == | ||
{{ :tutoriel:asus_k93sm_functionskeys.png?direct&600 |}} | {{ :tutoriel:asus_k93sm_functionskeys.png?direct&600 |}} | ||
- | Fichier function.inc | + | Fichier functions.inc |
== Les touches du pavé numérique == | == Les touches du pavé numérique == | ||
{{ :tutoriel:asus_k93sm_numpadkeys.png?direct&600 |}} | {{ :tutoriel:asus_k93sm_numpadkeys.png?direct&600 |}} | ||
Ligne 370: | 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 | + | bepo.inc ou bepo.map avec |
+ | <file>Charset "iso-8859-15" | ||
+ | |||
+ | include "system.inc" | ||
+ | include "edit.inc" | ||
+ | include "functions.inc" | ||
+ | include "numpad.inc" | ||
+ | |||
+ | ... | ||
+ | </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 |}} | ||
bepo_asus_k93sm.map | bepo_asus_k93sm.map | ||
+ | Avec | ||
+ | <file>Charset "iso-8859-15" | ||
+ | |||
+ | include "bepo.map" | ||
+ | ... | ||
+ | </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 ===== | ||
+ | ==== Voir la configuration du clavier ==== | ||
+ | <code>[user@ASUS-K93SM ~]$ setxkbmap -print -verbose 10</code> | ||
+ | |||
+ | <code>Setting verbose level to 10 | ||
+ | locale is C | ||
+ | Trying to load rules file ./rules/evdev... | ||
+ | Trying to load rules file /usr/share/X11/xkb/rules/evdev... | ||
+ | Success. | ||
+ | Applied rules from evdev: | ||
+ | rules: evdev | ||
+ | model: pc105 | ||
+ | layout: fr | ||
+ | variant: bepo_afnor | ||
+ | Trying to build keymap using the following components: | ||
+ | keycodes: evdev+aliases(azerty) | ||
+ | types: complete | ||
+ | compat: complete | ||
+ | symbols: pc+fr(bepo_afnor)+inet(evdev) | ||
+ | geometry: pc(pc105) | ||
+ | xkb_keymap { | ||
+ | xkb_keycodes { include "evdev+aliases(azerty)" }; | ||
+ | xkb_types { include "complete" }; | ||
+ | xkb_compat { include "complete" }; | ||
+ | xkb_symbols { include "pc+fr(bepo_afnor)+inet(evdev)" }; | ||
+ | xkb_geometry { include "pc(pc105)" };</code> | ||
+ | |||
+ | ==== Identifier les touches ==== | ||
+ | |||
+ | <code>[user@ASUS-K93SM ~]$ xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'</code> | ||
+ | |||
+ | Affiche une fenêtre de capture des événements claviers dans l’environnement graphique | ||
+ | |||
+ | {{ :tutoriel:xorgkeyboardeventtester.png?nolink&400 |La fenêtre de capture des événements claviers dans l’environnement graphique}} | ||
+ | |||
+ | Et lorsque la fenêtre est active et que l’on tape avec un clavier bépo «bépoè^». Dans le terminal où est exécuté la ligne de commande s’affiche le résultat : | ||
+ | <code> | ||
+ | 24 b | ||
+ | 25 eacute | ||
+ | 26 p | ||
+ | 27 o | ||
+ | 28 egrave | ||
+ | 29 dead_circumflex | ||
+ | </code> | ||
+ | ==== Principes de la gestion du clavier ==== | ||
+ | |||
Il existe dans Ubuntu une table qui associe les codes de touche à des **noms symboliques** censés aider à repérer la touche sur le clavier. Un exemple de ce type de table de correspondance est [[:tutoriel:comment_modifier_un_fichier|visible dans le fichier]] [[file:///usr/share/X11/xkb/keycodes/evdev|/usr/share/X11/xkb/keycodes/evdev]] et dans lequel vous verrez différentes lignes de la forme : | Il existe dans Ubuntu une table qui associe les codes de touche à des **noms symboliques** censés aider à repérer la touche sur le clavier. Un exemple de ce type de table de correspondance est [[:tutoriel:comment_modifier_un_fichier|visible dans le fichier]] [[file:///usr/share/X11/xkb/keycodes/evdev|/usr/share/X11/xkb/keycodes/evdev]] et dans lequel vous verrez différentes lignes de la forme : | ||
<file><AE01> = 10;</file> | <file><AE01> = 10;</file> | ||
- | Ici cela signifie que la touche **A**lphanumérique marquée du chiffre //1// ((sur la rangée de chiffres au dessus des lettres sur un clavier [[http://bepo.fr/wiki/TypeMatrix|Typematrix]].)) 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 ((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.)) ) et a le code **10**.\\ | + | Ici cela signifie que la touche **A**lphanumérique marquée du chiffre //1// ((sur la rangée de chiffres au dessus des lettres sur un clavier [[http://bepo.fr/wiki/TypeMatrix|Typematrix]].)) 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 ((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.)) ) et au code **10**.\\ |
Une autre ligne de la forme : | Une autre ligne de la forme : |