Tout d'abord, un mot sur le vocabulaire employé :
Des caractères sont dits « 8 bits » s'ils correspondent à des accents ou à des signes spéciaux comme « § », non inclus dans le standard ASCII « 7 bits ».
Ce standard, sans accents ni caractères spéciaux, correspond aux 128 (2^7) premiers caractères des 256 (2^8), de 0 à 255.
Pour des raisons historiques (place disponible, inutilité pour les états uniens) seuls les 128 (2^7) premiers caractères ont été normalisés par l'ASCII : par exemple le A qui est le 65e caractère de la table ASCII s'écrit 0100 0001 en notation binaire.
Pour les caractères situés hors de la norme ASCII, différentes « normes » ou « standards » incompatibles, comme l'Unicode, l'iso-8859, le latin, le cp (...) fixent ces correspondances.
Par exemple, dans le standard ASCII étendu par l'iso-8859-1, le 224ème caractère équivalent noté « eb » en hexadécimal correspond à « ë ».
Une police de caractères est une correspondance entre des codes informatiques et des caractères (alphanumériques...) affichables par l'ordinateur.
La police de caractères est l'ensemble des représentations graphiques des caractères d'un standard.
Il existe plusieurs polices de caractères 8 bits pouvant répondre au besoins des francophones.
Je vous recommande de lire à ce sujet l'excellent site de Roman Czyborra qui a fait une thèse sur ce sujet et qui vous donnera une explication fort détaillée
Pour résumer, il est nécessaire de choisir une police de caractères pour que tous les caractères français soient disponibles.
Voici la liste des polices dites « ISO 8859 », mais attention, il existe leurs équivalents en « code page » pour windows (comme cp1252).
ISO 8859-1 : latin 1 : langues d'Europe de l'ouest, Afrikaans, Swahili. Le Swahili, n'utilise aucun caractère accentué (comme l'Anglais, le Malais et l'Indonésien), donc n'importe quel version fait l'affaire. Pour l'Afrikaans, je ne sais plus exactement quel était le choix initial (c'est-à-dire où avait été rangé le 'n au départ), mais il ne me semble pas que ce soit dans Latin 1. Dans la pratique, bien sûr, les Afrikaaner utilisent Latin 1 ; la même chose se passe pour un certain nombre des cas qui suivent.
ISO 8859-2 : latin 2 : langues d'Europe centrale et orientale. Dans les faits : Polonais, Tchèque, Slovaque, Slovène, Croate, Hongrois, Roumain, probablement aussi le Sorbe ou Sorabe (Wende en allemand). Officiellement, je crois que l'Albanais s'écrit aussi en Latin-2, mais comme dans les faits c'est identique au Latin 1... Il y a un problème pour le Roumain, car le Latin 2 contient formellement les caractères avec une cédille, quand en roumain on utilise une virgule souscrite.
ISO 8859-3 : latin 3 : Espéranto et Maltais. Initialement, c'était prévu pour les langues d'Europe du Sud, y compris le Turc, les langues d'Espagne (donc Catalan, Basque), le Français. Mais dans la pratique, c'est limité à ces deux langues.
ISO 8859-4 : latin 4 : langues baltes (incomplet). Pas utilisé dans la pratique, remplacé par Latin 7 (iso-8859-13), ou plutôt en pratique la codepage 1257 Windows. Pour l'Este ou Estonien, on peut aussi utiliser Latin 9.
ISO 8859-9 : latin 5 (comme latin 1, moins l'Islandais, plus le Turc). Usage : le Turc et peut-être l'Azéri, mais il manque le schwa, un « e » renversé. Codage officiel aux Pays-Bas du fait des Turcs qui y habitent.
ISO 8859-10 : latin 6 : langues nordiques, sauf le Lapon Skolt. Pas utilisé dans la pratique : ne servirait que pour les langues sames (ou lapones), mais il manque des caractères, et le public concerné est de toute manière assez limité.
ISO 8859-11 : Thai. Pas encore officiellement adopté.
ISO 8859-12 : Indien (n'existe pas encore). Prévu pour le devanagari, pour écrire l'Hindi, la langue principale de l'Inde, et aussi un grand nombre d'autres langues indiennes, dont le Sanskrit.
ISO 8859-13 : latin 7 : langues baltes. Plus exactement : couvre les langues du pourtour de la mer Baltique, donc aussi le Polonais, l'Allemand et les langues de scandinavie. Mais dans la pratique il est réduit en utilisation aux langues baltes et à l'Este ou Estonien.
ISO 8859-14 : latin 8 : langues celtes. Pour le Breton, le Gaélique et les dialectes parlées au Pays de Galles et en Irlande.
ISO 8859-15 : latin 9 : comme latin 1, en y comblant quelques manques. Pour le Français, le Finnois (en concurrence avec Latin 1) et l'Este ou Estonien (en concurrence avec Latin 7).
De cette longue liste, il convient de ne retenir que :
ISO 8859-1 latin 1 : police ouest-européenne utilisée par la majorité des systèmes UNIX, elle permet de disposer de tous les caractères Français sauf les « o e liés », l'euro et l'y tréma majuscule
cp850 : équivalent sous DOS de cette police, mais incompatible : il faut utiliser un outil de traduction de fichiers tel GNU recode.
ISO 8859-15 latin 9 : police de l'union européenne, il s'agit d'une version révisée de l'ISO 8859-1 latin 1 pour inclure tous les caractères des pays européens ; ainsi on y retrouve les caractères Français manquant, l'euro, et des caractères finlandais manquants.
latin 0 : l'ISO 8859-15 latin 9 est souvent incorrectement abrégée en latin0, qui correspondait au nom du projet, de par son ambition à remplacer le latin 1 un jour. Je vous renvoie au site de l'ISO et à la documentation complète de ce standard
cp1252 : équivalent sous Windows de cette police, aussi incompatible, qui apporte les mêmes caractères manquants, du fait d'une révision récente de cette norme.
ISO 8859-9 latin 5 : police officielle en Turquie et en Hollande, où les caractères Islandais peu utilisés ont été remplacés par les caractères turcs.
cp1254 : équivalent sous Windows de cette police, aussi incompatible, qui apporte les caractères manquant au Français précédemment cités et remplace les caractères Islandais peu utilisés par les caractères turcs.
Les choix de polices de caractères sont souvent des questions ou la raison se heurte aux habitudes.
Pour ma part, si vous hésitez, je vous recommande l'ISO 8859-15 latin 9, pour diverses raisons :
Il supporte l'intégralité des caractères utilisés en Français de manière standard sur les UNIX, pour les échanges de fichiers entre Solaris et Linux par exemple
Il s'agit de la police 8 bits choisie par l'union européenne si l'Unicode, évolution du 8 bits, n'est pas disponible
Il permet d'écrire des textes avec l'intégralité des caractères utilisés dans l'union
Il est en train de devenir le nouveau standard dans la messagerie électronique au sens large, supplantant progressivement l'ISO 8859-1 latin 1
Le Francophones HOWTO utilise donc le latin 9 dans tous les exemples, car il y a de grandes chances que votre système ne soit pas encore compatible latin 9... autant donc vous proposer des manipulations et des travaux pratiques utiles :-)
Toutefois, si vous ne pouvez utiliser l'ISO 8859-15 latin 9 et décidez d'en choisir une autre, je vous recommande d'éviter les cp propres au monde DOS/Windows et de vous rabattre sur l'ISO 8859-1 latin 1 qui est encore un standard fort répandu : dans chaque exemple je vous invite alors à remplacer les « latin9 » par des « latin1 »
Une table de clavier est un fichier permettant de faire correspondre l'empreinte physique des cabochons, « touches » du clavier, au résultat obtenu sur l'écran de l'ordinateur.
Pour linux, ces fichiers sont dans /usr/lib/kbd/keytables/ ou /usr/share/kbd/keytables/
Par exemple, les claviers français AZERTY ont une table de clavier différente des claviers suisse romands QWERTZ, ou des claviers du reste du monde, QWERTY.
Cela ne concerne que l'apparence du clavier, l'empreinte des cabochons, donc disposition relative des caractères sur le clavier, et non son électronique interne ; si votre clavier ne vous convient pas, il vous suffit donc d'utiliser des autocollants pour le transformer en un autre clavier francophone.
Les touches « Home », « End », « Page_Up » et « Page_Down » dont les noms varient selon les claviers sont les touches permettant respectivement d'aller en début/fin de ligne et de monter/descendre d'une page.
Les codes affectes à ces touches sont respectivement 102 et 107 pour « Home » et « End » en mode terminal.
Dans les pictogrammes des claviers ISO 9995-7, ces touches sont représentés par des flèches aux traits appuyés.
Lorsqu'on presse une touche, le clavier émet un code, qui est intercepté par la table de clavier.
La table de clavier, si elle reconnait le code, renvoie la chaine associée à la touche, en l'occurence« "\e[4 » pour « End ».
Lorsque bash ou un autre programme reçoit cette chaine, il ne la connait pas !
Donc il faut lui dire, dans le .inputrc que "\e[4 " signifie "aller à la fin de la ligne"
Donc pour que ces touches fonctionnent dans le shell bash, on ajoutera donc dans le fichier .inputrc (dans votre / ou dans /etc/inputrc) les lignes:
set meta-flag on set convert-meta off set input-meta on set output-meta on set bell-style visible "\e[1~":beginning-of-line "\e[3~":delete-char "\e[4~":end-of-line "\e\C-h": backward-kill-word "\e\e[3~": kill-word |
Les premières lignes permettent d'afficher les caractères 8 bits, et de remplacer le « bip » en cas d'erreur par un éclair blanc à l'écran.
Les touches mortes sont des touches qui ne produisent pas de caractères en elles-mêmes, mais qui modifient la façon dont la frappe suivante va être interprétée, par exemple, le tréma ou l'accent circonflexe sont en général des touches mortes.
Une touche morte est une touche qui doit donc être suivie d'un espace pour obtenir l'accent seul, ou dans le cas où elle est suivie d'une voyelle y positionne un accent, par exemple :
« ^ » puis « e » donne « ê » « ^ » puis « espace » donne « ^ » |
Les touches mortes sont :
be et fr: l'accent aigu en AltGr de 1 pour les Français et en AltGr de ù pour les Belges, l'accent grave en AltGr de 7 pour les français & en AltGr de carré/cube pour les Belges, le tréma et l'accent circonflexe tous deux à côté du P
sf et usx: les accent aigus, graves, circonflexes, les trémas et la tilde
qc: les accent graves, circonflexes, les trémas et la cédille
En raison d'une erreur volontaire et historique sous Linux, pour « émuler » le fonctionnement d'un clavier de console VT, ces 2 touches sont fréquemments mélangées, au mieux fonctionnant à l'identique, au pire ne fonctionnant pas du tout.
Commençons donc par bien les définir :
BackSpace : touche placée en haut à droite du pavé principal, au dessus d' « Entrée », au cabochon marqué d'une flèche vers la gauche.
Delete : touche du pavé curseur au cabochon marqué « Suppr » ou « Del », à gauche de « Fin » ; en ISO 9995-7 elle correspond à trois barres obliques fines orientées sud-ouest/nord-est.
Le pavé numérique offre une touche au marquage identique et à effet identique lorsque « Verr Num » ou « Num Lock » est désactivé.
Ces deux touches correspondent chacune à un de ces codes :
BS : caractère ASCII 0x08, ou control-h.
DEL : caractère ASCII 0x7F, ou control-?
^D : caractère ASCII 0x04, ou control-d.
Ceci dans le but d'effacer à gauche du curseur avec BackSpace, à droite du curseur avec Delete.
Chaque partie du monde a sa propre norme horaire, basée sur des fuseaux.
La France se trouve en zone MET, « heure moyenne européenne » soit GMT+1 ; la zone « MET DST » correspond à l'heure d'été activée soit GMT+2.
GMT est l'heure solaire moyenne de Greenwich. L'heure est comptée à partir de midi et est donc décalée de 12 h par rapport au temps universel. GMT est basée sur la rotation de la terre, ce n'est donc pas un temps régulier. En effet, la vitesse de rotation de la Terre subit des variations faibles mais assez chaotiques, en plus elle diminue sur le long terme.
UTC, « temps universel coordonné », est compté à partir de minuit toujours par rapport au méridien zéro. Il est basé sur des étalons atomiques, mais des secondes intercalaires sont ajoutées occasionnellement pour faire en sorte qu'il ne s'écarte jamais de plus de une seconde de l'heure solaire moyenne. Le site de l'opdaf et le lexique donnent plus de renseignements.
C'est le temps UTC, défini à Paris, qui sert de référence aux différentes heures légales.
L'acronyme « GMT » est employé 99% du temps pour désigner UTC, mais c'est une erreur ou un abus de langage.
Enfin, à titre purement indicatif, il existe l'heure astronomique, aussi comptée sur des étalons atomiques mais décalée de 4 minutes par jour de l'heure terrestre car se basant sur la position de la terre dans l'espace par rapport aux étoiles.