Le huitième bit doit survivre à l'entrée du noyau, assurez-vous-en donc avec :
stty cs8 -istrip -parenb |
Ensuite, il convient de s'assurer que l'application est apte à supporter les caractères 8 bits : par exemple, ispell n'est pas compilé pour des caractères 8 bits par défaut : il faut le recompiler sans l'option :
-NO8BIT |
Avant d'aborder cette section, je vous conseille de lire l'introduction sur les polices pour appréhender un peu mieux le vocabulaire de base et les différentes normes de polices.
De l'ASCII à l'Unicode, en passant par l'ISO 8859, le latin et le cp, on peut résumer l'histoire des polices en grandes étapes :
Au début était l'ASCII, qui codait ses caractères sur 7 bits.
Prévu pour des états-uniens, il était impossible d'incorporer des caractères accentués à la norme déjà présente de 127 caractères.
Ainsi vint le 8 bits qui étendit le nombre de caractères à 255 et les normes ISO 8859, latin et cp, pour les plus connues, qui vinrent pallier à cette déficience du fait des 128 positions supplémentaires disponibles en encodant les caractères sur 8 bits.
Mais plusieurs de ces normes étaient nécessaire du fait de l'impossibilité de faire tenir les caractères de toutes les langues du monde sur 8 bits.
La norme ISO 8859-1 latin 1, la plus utilisée, se destine par exemple au langues d'Europe de l'ouest, du nord, d'Amérique, la norme ISO 8859-2 latin 2 est prévue pour l'Europe de l'est...
L'Unicode est l'un de ces standard, destiné à terme à remplacer les différentes évolutions de l'ASCII ; comme le passage du 7 bits au 8 bits il correspond à une extension de la place disponible, tout en reprenant l'ancienne partie comme ASCII et ISO 8859-1 latin 1 pour rester compatible avec la majorité du parc installé.
L'Unicode offre l'avantage de proposer les caractères nécessaires à toutes les langues du monde, mais reste encore peu utilisé ou implémenté.
En effet, il est impossible de l'utiliser en pratique sous linux-console, la mémoire exigüe de la carte vidéo ne permettant pas de stocker tous les caractères de l'Unicode, et sous X la gestion actuelle des polices rendrait son utilisation trop inconfortable.
Attendons un peu que les polices « True Type » se répandent sous X, grâce à des outils comme freetype, xfstt (...) et le très attendu XFree 4 qui devrait les supporter en natif.
Actuellement, la nouvelle norme européenne ISO 8859-15 latin 9 est censée permettre la transition vers l'Unicode en apportant à l'ancien ISO 8859-1 latin 1 les caractères qu'il manquait actuellement.
Toutefois elle est partiellement incompatible avec l'Unicode puisque l'ISO 8859-1 latin 1 avait été choisi comme base pour l'Unicode, mais que cette police veut compléter les failles de l'ISO 8859-1 latin 1 en y rajoutant des caractères déjà présents dans l'Unicode...
Quelle complexité pour de simple lettres !
De nous jours, il vaut mieux installer par défaut la nouvelle norme ISO 8859-15 latin 9, destinée à remplacer l'ensemble des polices européennes par une seule.
Son but est voisin de l'Unicode, mais elle a l'avantage d'être plus légère que celui-ci et d'être applicable tout de suite.
Elle apporte notamment des caractères qui manquaient beaucoup pour les Français et les Finlandais :
« e dans l'o » en majuscule et minuscule pour les Français, par exemple pour les mots œuf, cœur, bœuf, œil ...
« s chapeau inversé » en majuscule et minuscule pour les Finlandais
« z chapeau inversé » en majuscule et minuscule pour les Finlandais
« l'EURO » pour tous les pays européens
Cette nouvelle norme, ISO 8859-15 latin 9 aussi connue sous le nom générique latin0, reste cependant encore très peu répandue par rapport à la norme actuelle ISO 8859-1 latin 1.
Vous n'avez besoin que d'une seule police !
Or il en existe plusieurs types répondant différemment à la même norme iso-8859-15 latin9 « latin0 » sous linux :
par tradition l'opposition latN/latNu selon l'inclusion ou non d'une table de correspondance Unicode.
en réalité les différences vont bien plus loin, de l'ordre dans lequel sont les caractères de la police, ce qui joue sur l'aspect des applications semi graphique, les correspondances avec des caractères latin1 ± latin9 ± Unicode ce qui a un rôle dans la compatibilité croisée ou exclusive, par exemple purement Unicode...
J'ai donc complété par 2 types de ma création pour répondre au mieux aux différents besoins.
| Encodage dans | Inclusion d'une | Compatibilité | Compatibilité | l'ordre iso | table Unicode | exclusive | croisée -------------------------------------------------------------------------- lat9 | oui | non | non | lat1 + lat9 -------------------------------------------------------------------------- lat9u | non | oui | non | lat1 + lat9 -------------------------------------------------------------------------- lat9v | oui | oui | Unicode | non -------------------------------------------------------------------------- lat9w | oui | oui | non |lat1+lat9+Unicode -------------------------------------------------------------------------- |
Voici plus d'explications :
les lat9 tout court ne contiennent pas de table de correspondance Unicode, ce qui fait que tous les symboles monétaires internationaux apparaîtront comme des euro, ce qui peut poser des problèmes pour les fichiers issus d'un ordinateur sous windows ; le cp1252 ou le latin1 sont « incompatibles » avec le latin9, mais ce dernier a l'avantage de fonctionner tout de suite sous linux. Dans les versions récentes du noyau, selon le site de Yann Dirson, il semble donc que toutes les polices devraient contenir une table de correspondance Unicode...
des lat9u encodées dans un ordre non standard, mais identique à celui des polices latXu de kbd, par rapport aux polices précédentes, en amenant les mêmes problèmes avec le cp1252 et le latin1 mais en incluant une table de correspondance Unicode, ce qui permet d'avoir de jolis caractères semi graphiques sous Yast, mc, ou d'autres programmes basés sur ncurses ou dialog.
des lat9v encodées dans l'ordre officiel iso comme les lat9 mais avec une table Unicode complète : là aucun symbole monétaire international ne sera remplacé par l'euro ! Ces polices sont utiles pour éviter les problèmes d'export, grâce à l'Unicode *pur*, avec une table de clavier Unicode adaptée : tous les caractères latin9 sont remplacés par des caractères Unicodes et affichés ainsi, ce qui a le mérite d'être compatible avec le latin9, l'Unicode, d'être élégant techniquement mais inutilisable « normalement » sous linux-console. Presque aucun système n'est entièrement prêt pour l'Unicode !
Donc n'utilisez les polices lat9, lat9u ou lat9v que si vous savez ce que vous faites, je vous recommande pour ma part le meilleur compromis : les polices lat9w qui permettent de passer au latin9 immédiatement, en posant quelques problèmes pour les caractères latin1 qui seront remplacés par leurs équivalents latin9, mais sans rendre l'Unicode obligatoire comme les lat9U, sans emmêler les caractères graphiques comme les lat9, et en permettant aussi d'afficher les caractères spécifiques au latin9 en Unicode *pur*, à l'exception des caractères spécifiques au latin1 donc...
Je vous rassure, vous n'êtes pas obligés de comprendre tout ce qui suit pour « passer à l'euro », si effectivement vous ne savez toujours pas de quelle police vous avez besoin, un conseil : utiliser les lat9w.
Pour utiliser la police lat9-16.psf ou un autre lat9 .psf, vous devez pallier l'absence d'une table Unicode en en chargeant une.
loadunimap fonts/linux-console/lat9.uni setfont fonts/linux-console/lat9-16.psf |
Pour utiliser la police lat9w-16.psf ou une autre lat9u, lat9v ou lat9w :
setfont /fonts/linux-console/lat9w-16.psf |
Une alternative est l'Unicode, mais les programmes l'utilisant sont encore trop peu nombreux pour qu'elle soit valable.
Citons quand même yuedit et le projet « 9 » (9term, 9wm... rien à voir avec l'opérateur télécom français du même nom) qui utilisent l'Unicode sous X, avec plus ou moins de succès.
En revanche, sous linux-console, tout programme peut utiliser l'Unicode.
Mais, hélas!, aussi grande que soit la mémoire des cartes vidéos actuelles, elle ne peut charger l'intégralité des caractères d'une police Unicode.
Il existe donc des « jeux de caractères » limités mais bien utiles pour les langues baltiques, asiatiques, est-africaines...
Essayez par exemple ce fichier unicode-lance pour passer en mode Unicode:
#!/bin/sh echo -e '\033%8' kbd_mode -u loadkeys fr-unicode.map setfont lat9u-16.psf |
et ce fichier latin-retourne pour revenir en mode latin normal:
#!/bin/sh echo -e '\033%@' kbd_mode -a loadkeys fr-latin9.map setfont lat9w-16.psf |
Essayez par exemple de lire le fichier unicode.txt, encodé en Unicode, une fois unicode-lance activé.
Vous ne verrez sinon qu'un texte mal encodé, sans caractères 8 bits, comme cet exemple :
|
Linux en 'version française' existe... mais ne semble pas facile à obtenir.
La librairie locale(7) [cf aussi perllocale, setlocale, getlocale] utilisée par la librairie C se sert de variables d'environnement pour définir les préférences linguistiques et nationales.
Pablo Saratxaga répondait ainsi à Pascal Rigaux en prenant l'exemple de sort :
PR> J'ai découvert aujourd'hui la variable d'environnement LANG. C'est assez PR> surprenant de se retrouver avec de l'aide en français (même si elle n'est pas PR> toujours aussi précise que la version anglaise) quand on fait ls --help. C'est agréable n'est-ce pas ? PR> Par contre je ne comprend pas pourquoi un programme comme sort(1) n'utilise pas PR> cette information pour obtenir un tri acceptable pour les accents (du genre ne PR> pas mettre « être » après « zen »). Il devrait au moins proposer une option de PR> ce genre. Il faudrait regarder les sources de sort... La fonction à utiliser est strcoll() : **** STRCOLL(3) Manuel du programmeur Linux STRCOLL(3) NOM strcoll - Comparaison de deux chaînes suivant la localisa- tion en cours. SYNOPSIS #include <string.h> int strcoll (const char *s1, const char *s2); DESCRIPTION La fonction strcoll() compare les deux chaînes s1 et s2. Elle renvoie un entier inférieur, égal ou supérieur a zéro si s1 est respectivement inférieure, égale, ou supérieure a s2. La comparaison est effectuée en se basant sur la localisation en cours pour la catégorie LC_COLLATE. (Voir setlocale(3)). **** qui est donc l'équivalent de strcmp() mais qui tiens compte des locales. Il faudra s'écrire un strcasecoll() aussi pour bien faire, en utilisant toupper()/tolower() qui d'après la page de manuel supporte les locales. Qui s'y colle ? Ça devrait être assez simple à réaliser sur un système GNU en tout cas. |
Il existe différente variables à exporter, avec chacune une fonction spécifique ; le format standardisé est:
langue[_PAYS[.CHARSET]][@variante] |
Les crochets dénotent l'optionalité, par exemple: 'fr', 'fr_BE', 'fr_CH.ISO-8859-15', no@bokmaal, no@nynorsk,...
Les fonctions de la libc, celle de GNU en tout cas, iront chercher dans « l'ordre décroissant » si on peut dire; par exemple si on spécifie 'fr_CH.ISO-8859-15' elles chercheront d'abord avec cette valeur, puis avec 'fr_CH' puis avec 'fr'.
LC_COLLATE définit les équivalences de caractères pour les comparaisons (æ peut être équivalent à ae), pour les ligatures et pour les césures.
LC_CTYPE définit les caractères affichables
LC_MONETARY définit le format et le symbole de la monnaie utilisée
LC_NUMERIC définit le format numérique : regroupement, marqueur décimal...
LC_MESSAGES définit la langue des messages
LC_TIME définit le format de la date, les noms des jours et des mois
LC_ALL valeur par défaut des variables précédentes : si une LC_ n'est pas définie, LC_ALL est prise en compte, sinon la libc se rabat sur LANG.
LANG différent des variables précédentes, contient le code langue au format iso : fr,en,de...
LANGUAGE liste des locales par ordre de préférence séparées par deux points (fr:es:dk:en), c'est une particularité GNU, fort utile si un document n'existe que dans une langue comme certaines pages de manuel
Les valeurs utilisables pour les francophones sont:
fr français générique
fr_FR français de France
fr_BE français de Belgique
fr_CH français de Suisse
fr_LU français du Luxembourg
fr_CA français du Canada
Par exemple, si vous être un Français de France, il suffit d'indiquer sous bash :
export LANGUAGE=fr_FR |
Exemple :
bash# export LANGUAGE=es_ES bash# ls fichier_n_existant_pas ls: fichier_n_existant_pas: No existe el fichero o el directorio bash# export LANGUAGE=de_DE bash# ls fichier_n_existant_pas ls: fichier_n_existant_pas: Datei oder Verzeichnis nicht gefunden bash# export LANGUAGE=en_US bash# ls fichier_n_existant_pas ls: fichier_n_existant_pas: No such file or directory bash# export LANGUAGE=fr_FR bash# ls fichier_n_existant_pas ls: fichier_n_existant_pas: Aucun fichier ou répertoire de ce type |
Toutefois, avec le passage à l'euro, ces locales ne sont plus adaptées.
Je vous conseille donc d'utiliser dans les pays de l'union passant à l'euro le suffixe « @euro » :
export LC_ALL="fr_FR@euro" |
Pour cela, installer les nouveaux fichiers sources de locales dans /usr/share/i18n/ en lançant :
cp charmaps/ISO-8859-15 /usr/share/i18n/charmaps/ISO-8859-15 cp locales/* /usr/share/i18n/locales/ |
Alors, régénérer les locales « binaires » de /usr/share/locales, par exemple :
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro |
fr_FR@euro inclus les caractères latin 9, c'est utile pour l'utilisation de LC_COLLATE et LC_CTYPE en fait, et la nouvelle monnaie unique.
Pour le moment, le Franc Français (FRF) est toujours la monnaie officielle en France par exemple, mais lorsque ce sera l'euro, il suffira de remplacer la locale fr_FR par fr_FR@euro.
cd /usr/lib/locales rm -fr fr_FR mv fr_FR@euro fr_FR |
La solution « @euro » est supportée par les autres UNIX comme Solaris.
Pour les shell scripts, il peut être utile de rajouter « LC_TIME=C » pour empêcher la date d'être localisé, embêtant pour les grep et autres qui cherchent « Mon » « Tue »... et non « Lun », « Mar »...
Les données correspondantes aux préférences se trouvent généralement dans /usr/share/locale. S'ils manquent, vous pouvez récupérer leur source
Concernant les autres fichiers abordés dans cet article, vous les trouverez avec les autres fichiers de cet HOWTO sur ma page.
Pour se faire SON linux en français il faut en pratique disposer des sources de la libc et d'un minimum de compétences en langage C ; ces manipulations sont inutiles pour l'utilisateur standard de Linux qui se contentera d'utiliser les locales de la section précédente.
Mais voici donc, pour la bonne bouche, quelques renseignements collectés...
Laurent Chemla nous pilote :
Si j'ai suivi, il y a deux trucs qui font la même chose, d'où embrouille, les locales et un truc appelé nls. Les locales, sous Linux, ça va par défaut dans /usr/lib/locale, et ça contient de quoi préciser entre autres le format des nombres (LC_NUMERIC), les retours des fonctions ctype (isalpha etc) (LC_CTYPE), le format des sommes d'argent (LC_MONETARY), le format des dates (LC_TIME) et encore d'autres détails. Sur certains Unix, il y a aussi LC_MESSAGES, qui contient les messages de l'OS dans la langue choisie par la variable d'environnement LC_MESSAGES. Pas sous Linux. Sous Linux, c'est nls qui fait ça, et de fait, nls gère un fichier qui est dans /etc/locale/. (NDG : De nos jours, ils se trouvent plutôt dans /usr/lib/locale) D'où l'embrouille. Ils auraient mis ça dans /usr/lib/nls, comme tout le monde, ça aurait évite la confusion. Mais bon. Donc, si l'on veut se tenir à jour d'nls, il suffit d'aller dans les sources de libc/nls, faire « make french » et copier libc.dat dans /etc/locale/C/libc.dat et toc, tous les messages sont en français. Y compris ceux des programmes qui n'utilisent pas setlocale(): c'est perror() qui fait le boulot (du moins je suppose). Si l'on veut en plus que les programmes qui utilisent setlocale() utilisent nos règles françaises, là il faut aller dans les sources de libc/locale et dans chacun des sous-répertoires jeter un œil sur le fichier exemple, le modifier pour le français (c'est des tout petits fichiers), et faire « make », avant de copier le résultat dans /usr/lib/local/fr/ et de faire un « export LC_ALL=fr ». |
Autre astuce pour ménager les vieux logiciels :
cd /usr/lib ln -sf /usr/share/locale . |
Ne pas oublier de télécharger sur le site du lip6 :
Les pages de manuel en français, archive man-fr-*, adaptées par C. Blaess. Il suffit d'extraire le contenu de l'archive dans le répertoire /usr/man/fr.
Une intéressante documentation technique : locale.fr, par P. D'Cruze, adaptée par É. Dumas
Pour en apprendre davantage lire la page de manuel de « locale » : bibliothèque de pages de manuel 5 ou 7 :
bash# man 5 locale bash# man 7 locale |
Ces variables doivent être exportées à chaque login : mettez les donc dans .bashrc et .bash_login, .tcshrc ou /etc/profile :
# pour tcsh, utiliser setenv au lieu de export, par exemple «setenv LANG fr» # Les locales LC_CTYPE=ISO-8859-1 LANGUAGE=fr LC_MESSAGES=fr LC_ALL=fr LANG=fr LESSCHARSET=latin1 export LC_CTYPE LANGUAGE LC_MESSAGES LC_ALL LANG LESSCHARSET # Les raccourcis : sans ll ou d, impossible de voir les fichiers comprenant des # caractères 8 bits ... alias q="cd .." alias ll="ls --color=auto -a -N -l" alias d="ls --color=auto -a -N" alias indent="indent -kr" alias netscape="export LC_ALL=en_EN ; netscape $* ; LC_ALL=fr_FR" # Au cas où Del/BackSpace ne fonctionne pas, essayez l'un des deux : #stty erase ^? #stty erase ^H |
N'oubliez pas : tous les fichiers ici cités dont le nom commence par « . » doivent se trouver dans votre répertoire maison /
Readline est une librairie de saisie de caractères avec historique et complétion ; elle est utilisée par de nombreux programmes comme bash, ncftp, gnuplot...
Par défaut, le 8e bit sert à coder la touche Meta.
Elle est utilisée pour coder certaines commandes mais la touche « Escape » ou « Échap » peut la remplacer.
Si vous souhaitez voir et saisir des accents avec les applications compilées avec readline, comme bash pour les versions supérieures à 1.13, ajoutez ceci dans votre fichier $INPUTRC, par défaut ˜/.inputrc) :
# Permettre de rentrer & recevoir des caractères accentués set meta-flag on set convert-meta off set input-meta on set output-meta on # Pas de bip audible mais visible # set bell-style visible # Pour faire marcher Home, End, Delete, Esc + Delete & Esc + BackSpace "\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 |
Cela vous permettra d'effacer des caractères vers l'avant avec « Delete » et vers l'arrière avec « BackSpace », ceci n'étant pas prévu sur les tables de clavier par défaut « mimant » le comportement d'un clavier de console VT100 .
Les deux dernières options vous permettront d'utiliser « Home » et « End » pour aller au début et à la fin de la ligne en cours d'édition.
Pour pouvoir employer une touche il suffit d'obtenir son code et l'associer à une fonction grâce à ce fichier ; pour obtenir le code d'une touche invoquer cat puis appuyer sur la touche : son code apparaît.
Le code physique :
^[ |
correspond à la séquence d'échappement.
Par exemple, si le code de « Home » est « ^[[7 » il suffit d'ajouter une ligne :
"\e[7~": beginning-of-line |
au .inputrc.
Plus de documentation est disponible sur la page de manuel de bash, section READLINE.
On peut aussi, grâce à la variable d'environnement INPUTRC, utiliser un fichier commun à tous les utilisateurs.
Enfin, je vous recommande d'utiliser ce fichier .bashrc à placer dans votre répertoire maison :
# ~/.bashrc : exécuté par bash(1) pour les shells lancés après le login. # Le path PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/usr/local/bin" # Le prompt PS1="(\u@\h:\W)$ " # L'utilisateur ENV=$HOME/.bashrc USERNAME="votre nom" # Les locales _CTYPE=ISO-8859-1 LANGUAGE=fr LC_MESSAGES=fr LC_ALL=fr LANG=fr LESSCHARSET=latin1 export LC_CTYPE LANGUAGE LC_MESSAGES LC_ALL LANG LESSCHARSET # Les raccourcis alias q="cd .." alias ll="ls --color=auto -a -N -l" alias d="ls --color=auto -a -N" alias indent="indent -kr" alias elm-box="elm -f ~/Mail/Inbox" alias netscape="export LC_ALL=en_EN ; netscape $* ; LC_ALL=fr_FR" # Au cas où Del/BackSpace ne fonctionne pas, essayez l'un des deux : #stty erase #stty erase ^H # Refuser le talk & le write #mesg n # Permettre les coredumps #ulimit -c nombre_max_de_Ko #Fixer le masque de création de fichiers #umask 022 |
Le fichier .bash_profile ou .bash_login, exécuté par bash(1) lors des logins, y est strictement identique mais peut, si vous le voulez, présenter des différences pour afficher par exemple une citation en laçant le programme « fortune ».
Celui-ci devrait se contenter d'un stty pass8.
Si cela ne suffisait pas, rajouter dans le .zshrc ou dans /etc/zshrc:
bindkey "\e[2~" yank bindkey "\e[3~" delete-char bindkey "\e[1~" beginning-of-line bindkey "\e[4~" end-of-line bindkey "\e[5~" up-line-or-history bindkey "\e[6~" down-line-or-history |
Pour tcsh, placer, dans le fichier /etc/csh.login ou dans les fichiers .tcshrc des utilisateurs concernés, les variables indiquées plus haut en remplaçant export par setenv:
setenv LC_CTYPE=ISO-8859-1 setenv LANGUAGE=fr setenv LC_MESSAGES=fr setenv LC_ALL=fr setenv LANG=fr setenv LESSCHARSET=latin1 |
Remplacer 'iso_8859_1' par 'iso-8859-1' si cela ne fonctionne pas, voire french.iso88591.fr_FR ou fr_BR, fr_CA, fr_CH, fr_LU...
À propos de LANG, il vaut mieux éviter fr_FR et lui préférer fr car certains programmes ne passent pas vraiment par la resolution de locales mais lisent LANG directement...
Si nls est installé, les routines correspondantes sont utilisées, sinon tcsh agit en iso_8859_1, quelle que soit les valeurs données à LANG et LC_CTYPE : cf. la section NATIVE LANGUAGE SYSTEM de tcsh(1).
Selon le Danish-HOWTO, utiliser :
(guylhem@victis:tcsh)# setenv LC_CTYPE ISO-8859-1 (guylhem@victis:tcsh)# stty pass8 |
Rien n'est plus facile que de laisser à Linux le soin de passer de l'heure d'été à l'heure d'hiver et réciproquement...
a) D'abord, quelle heure est-il :-) ?
Après avoir regardé sur la pendule la plus proche de vous, tapez :
clock
puis
date
La première heure est celle du bios, la seconde celle calculée par Linux à partir de /etc/zoneconfig.
Pour peu que vous ayez installé timezone, votre machine peut jongler aisément entre les différents fuseaux horaires... ce que les DOS ou Windows ne permettent pas !
b) L'heure du choix !
De là, deux possibilitées : soit vous décidez de laisser l'heure système à l'heure locale, peu pratique, excepté si vous hébergez aussi sur votre disque dur ces systèmes d'exploitation peu évolué, ne sachant même pas exploiter les fuseaux horaires, soit vous passez à l'heure de Greenwich, Linux se chargeant de l'adapter à votre fuseau horaire.
Dans ce cas, les grands voyages à l'étranger avec un portable tout neuf équipé de Linux se feront en toute simplicité : le dernier paragraphe vous expliquera comment changer de fuseau horaire facilement...
c) Le réglage
Pour procéder, regardez d'abord si l'heure système retournée par clock est l'heure locale ou l'heure de Greenwich.
Vous avez bien regardé une pendule comme je vous le conseille plus haut, n'est-ce pas ?
Si clock vous retourne l'heure locale, il va falloir jongler un peu avec les fuseaux horaires, sinon passez directement à l'étape « réglage du fuseau ».
Pour les français, belges wallons et suisses romands :
Vous êtes normalement dans une zone horaire MET (Medium European Time, soit GMT+1).
La zone « MET DST » correspond elle à l'heure d'été active (GMT + 2).
Selon les décisions futures de la cour européenne, l'heure d'été « daylight savings » risque d'être abandonné... ce qui compliquera cette explication !
Pour les canadiens français :
Vous êtes dans une zone horaire GMT-4 si vous habitez autour de Montréal .
Pour les autres provinces, consulter un dictionnaire !
Premièrement, effacez le fichier /etc/localtime ou /usr/lib/zoneinfo/localtime (l'emplacement varie selon les distributions ; si vous avez les deux fichiers, effacez /etc/localtime : l'autre fichier doit certainement être un lien vers /etc/localtime).
Dès lors, clock et date doivent vous retourner la même heure...
Pour les canadiens français : utilisez GMT+4
Pour les français, belges wallons et suisses romands :
Si vous lisez ce document en été, le décalage de l'heure locale par rapport à l'heure de Greenwich est de deux heures, on va donc mettre temporairement le fuseau en GMT-2, soit vous lisez ce document en hiver et il convient de remplacer tous les « 2 » par des « 1 » dans les exemples suivants...
GMT-2 ?!!? Alors que le fuseau est GMT+2 ?
Ceci va vous retourner l'heure de Greenwich dont on a besoin pour régler le système : tapez :
ln -sf /usr/lib/zoneinfo/Etc/GMT-2 /etc/zoneconfig
clock
date
L'heure calculée correspond donc à l'heure de Greenwich, l'heure système à l'heure locale... soit l'inverse de ce que l'on veut.
Un simple : clock -w
Va alors mettre l'heure du système en heure de Greenwich, utilisant pour cela l'heure locale inversée volontairement avec l'heure système.
d) Régler le fuseau horaire :
Tapez alors : ln -sf /usr/lib/zoneinfo/Europe/Votre-ville /etc/zoneconfig
Et voilà ! Le système est à l'heure de Greenwich, la conversion vers le fuseau horaire local et l'heure d'été se faisant automatiquement.
Si vous habitez hors Europe, procédez de même en remplaçant les « -2 » par « X », X représentant l'opposé de votre décalage horaire (par exemple -4 au Québec, donc X=+4...)
e) Modifier le fuseau horaire :
Si vous partez à l'étranger, il est alors simple de modifier l'heure locale de votre portable : par exemple si vous partez pour Moscou :
ln -sf /usr/lib/zoneinfo/Europe/Moscow /etc/zoneconfig
Très simple et très utile : plus besoin de se souvenir du décalage horaire (plus ou moins X heures) puisque Linux se charge désormais de tout !
Normalement, aucune modification n'est nécessaire à part l'utilisation de loadkeys (détaillée plus haut).
Ce fichier .vimrc pourrait toutefois vous être utile si vous utilisez vim au lieu d'elvis :
" Les guillemets anglais « " » signifient « mis en commentaire » " Éviter un avertissement « version incorrecte » : version 4.0 " Utiliser les défauts de vim, bien mieux set nocompatible " Autoriser le « BackSpace » sur tout : set bs=2 " Police à utiliser sous X11 : "set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1 " Fixer la césure automatique de la ligne à N caractères : set tw=72 " Faire apparaître les tabulations et les espaces set list " Changer les défauts pour voir les espaces inutiles et les tabulations set listchars=tab:»·,trail:· hi nontext ctermfg=red hi nontext ctermbg=blue " Indentation (pour les programmeurs) : " set cindent " Réglages souris : "set mouse=a " Ligne set nowrapscan " Montrer les correspondances : set showmatch " Montrer le mode set showmode " Indentation intelligente (pour les programmeurs) : " set uc=0 " Faire fonctionner BackSpace : set t_kD=^? " Doit se trouver après map ^H X " Faire fonctionner Delete : map \e[3~ x " Cacher la souris lorsqu'on tape : set mousehide " Faire voir les correspondances lors de recherches : " set hlsearch " Colorer à l'intérieur des commentaires en C : let c_comment_strings=1 " Couleur pour xiterm, rxvt, nxterm, color-xterm : if has("terminfo") set t_Co=8 set t_Sf=\e[3%p1%dm set t_Sb=\e[4%p1%dm else set t_Co=8 set t_Sf=\e[3%dm set t_Sb=\e[4%dm endif " Coloration syntaxique : if ett_Co > 1 syntax on endif " Autoriser l'édition de fichiers gzippés augroup gzip " Supprimer toutes les autocommandes au! autocmd BufReadPre,FileReadPre *.gz set bin autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip autocmd BufReadPost,FileReadPost *.gz set nobin autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r autocmd FileAppendPre *.gz !gunzip <afile> autocmd FileAppendPre *.gz !mv <afile>:r <afile> autocmd FileAppendPost *.gz !mv <afile> <afile>:r autocmd FileAppendPost *.gz !gzip <afile>:r augroup END augroup bzip au! autocmd BufReadPre,FileReadPre *.bz2 set bin autocmd BufReadPost,FileReadPost *.bz2 '[,']!bunzip2 autocmd BufReadPost,FileReadPost *.bz2 set nobin autocmd BufReadPost,FileReadPost *.bz2 execute ":doautocmd BufReadPost " . expand("%:r") autocmd BufWritePost,FileWritePost *.bz2 !mv <afile> <afile>:r autocmd BufWritePost,FileWritePost *.bz2 !bzip2 <afile>:r autocmd FileAppendPre *.bz2 !bunzip2 <afile> autocmd FileAppendPre *.bz2 !mv <afile>:r <afile> autocmd FileAppendPost *.bz2 !mv <afile> <afile>:r autocmd FileAppendPost *.bz2 !bzip2 <afile>:r augroup END augroup cprog au! autocmd BufRead * set formatoptions=tcql nocindent comments& autocmd BufRead *.c,*.h set formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,:// augroup END |
Voici un fichier de configuration de base pour employer les accents.
;; ;; Fichier .emacs: initialisation d'emacs ;; Tiré du Guide du Rootard ;; (display-time) ;; Pour avoir l'heure dans la barre d'état (setq display-time-24hr-format t) ;; Format 24 heures ;; Nouveaux modes (autoload 'c++-mode "cplus-md" "C++ Editing Mode" t) (autoload 'perl-mode "perl-mode" "Perl Editing Mode" t) (autoload 'c-mode "c-mode" "C Editing Mode" t) ; mieux vaudrait utiliser le "cc-mode" (autoload 'jargon-mode "jargon" "Jargon Mode" t) ;; Auto-Mode Settings : positionne le mode selon l'extension (setq auto-mode-alist (append '(("\.c$" . c-mode) ;; utilise le mode C++ même pour C ("\.h$" . c-mode) ("\.C$" . c++-mode) ("\.H$" . c++-mode) ("\.cc$" . c++-mode) ("\.C$" . c++-mode) ("\.pl$" . perl-mode) ;; Perl ("/tmp/snd\.[0-9]*" . text-mode);; Text (pour le courriel) ("[Rr][Ee][0-9]*" . text-mode) ("\.ada$" . ada-mode) ;; Ada ("\.spec$" . ada-mode) ("\.body$" . ada-mode) ("makefile$" . makefile-mode) ;; Makefile ("Makefile$" . makefile-mode) ("Imakefile$" . makefile-mode)) auto-mode-alist)) ; Remappages variés à mettre ici (global-set-key "\eg" 'goto-line) ;; ESC G = Aller à une ligne (put 'eval-expression 'disabled nil) ;; Accents... (standard-display-european 1) (load-library "iso-syntax") (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) ;; Sous X-Window, texte en couleurs (C/C++/Shell/Makefile,etc) (cond (window-system (setq hilit-mode-enable-list '(not text-mode) hilit-background-mode 'light hilit-inhibit-hooks nil hilit-inhibit-rebinding nil) (require 'hilit19) )) (if (not (equal window-system "")) (global-set-key "\C-?" 'delete-char)) )) |
Le Keyboard-HOWTO conseille quand à lui :
(standard-display-european t) (set-input-mode nil nil 1) (require 'iso-syntax) (load-library "iso-insert.el") (define-key global-map [?\C-.] 8859-1-map) |
Utilisez une version au moins égale à 19.27, modifiez le fichier global (commun à tous les utilisateurs) /usr/lib/emacs/site-lisp/site-start.el ou le ./emacs de chaque utilisateur concerné pour y ajouter :
(standard-display-european t) (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) (global-set-key [delete] 'delete-char) (global-set-key [home] 'beginning-of-line) (global-set-key [end] 'end-of-line) (global-set-key [prior] 'scroll-down) (global-set-key [next] 'scroll-up) (global-set-key [C-right] 'forward-word) (global-set-key [C-left] 'backward-word) (global-set-key [C-prior] 'beginning-of-buffer) (global-set-key [C-next] 'end-of-buffer) (global-set-key "\033[A" 'previous-line) (global-set-key "\033[B" 'next-line) (global-set-key "\033[C" 'forward-char) (global-set-key "\033[D" 'backward-char) (global-set-key "\033[H" 'beginning-of-line) (global-set-key "\033[Y" 'end-of-line) (global-set-key "\033[1~" 'beginning-of-line) (global-set-key "\033[2~" 'overwrite-mode) ;; le delete-char peut correspondre à \004 ou à \033[3~ (global-set-key "\033[3~" 'delete-char) (global-set-key "\033[4~" 'end-of-line) (global-set-key "\033[5~" 'scroll-down) (global-set-key "\033[6~" 'scroll-up) |
Pour les autres versions :
19.19 :
(standard-display-european 1) (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) |
19.22 :
(load-library "iso-transl") (standard-display-european t) |
Autres :
(standard-display-european 1) (load-library "iso-transl") |
XEmacs les accepte lui par défaut sans broncher mais peut des fois rencontrer des problèmes avec les BackSpaces dans le mini-buffer en console.
Ajouter dans le .emacs :
(if (eq window-system 'x) (global-set-key (read-kbd-macro "DEL") 'delete-char) (or (global-set-key "^[[3~" 'delete-char)) ) |
Le mode ispell d'emacs a un certain nombre de dictionnaires prédéfinis qui ne sont pas forcement ceux qui sont en place sur le système.
Si vous constatez des problèmes, vous devez redéfinir la liste ispell-dictionary-alist des dictionnaires.
Cette liste contient :
le nom du dictionnaire
la liste des caractères composant un mot
la lise opposée des caractères ne composant pas un mot
les caractères de liaison à l'intérieur des mots ("-", "'"...)
vrai ou faux si ces caractères peuvent être présents en plusieurs exemplaire dans le mot
une liste d'arguments pour ispell
le mode d'ispell (tex, nroff..)
Par exemple, dans le fichier .emacs :
(setq ispell-dictionary-alist '((nil ; francais.aff "[A-Za-zÀÂÇ-ËÎÏÔÙÛÜàâç-ëîïôùûü]" "[^A-Za-zÀÂÇ-ËÎÏÔÙÛÜàâç-ëîïôùûü]" "[---']" nil ("-n") "~nroff") ("english" ; rosbif "[A-Za-z]" "[^A-Za-z]" "[---']" nil ("-B") nil) ("american" ; yankee "[A-Za-z]" "[^A-Za-z]" "[---']" nil nil nil) ("francais" ; français "[A-Za-zÀÂÇ-ËÎÏÔÙÛÜàâç-ëîïôùûü]" "[^A-Za-zÀÂÇ-ËÎÏÔÙÛÜàâç-ëîïôùûü]" "[---']" nil ("-n") "~nroff") ("francais-TeX" ; français "[A-Za-zÀÂÇ-ËÎÏÔÙÛÜàâç-ëîïôùûü\\]" "[^A-Za-zÀÂÇ-ËÎÏÔÙÛÜàâç-ëîïôùûü\\]" "[---'^`\"]" t nil "~tex") ("espanol" ; espa~nol.aff "[A-Za-záéíóúüñÁÉÍÓÚÜÑ]" "[^A-Za-záéíóúüñÁÉÍÓÚÜÑ]" "[---'^`\"]" t nil "~nroff") ("dansk" ; danois et norvégien "[A-Za-zåÅøØæÆéÉèÈ]" "[^A-Za-zåÅøØæÆéÉèÈ]" "[---'^`\"]" t nil "~nroff") )) |
Le dictionnaire "francais-TeX" est un lien symbolique sur "francais" qui permet d'ajouter une entrée pour les accents à la TeX (ex: \'e).
Si vous utilisez X11, vous voudrez peut-être reconstruire les menus et il vous faudra recharger une partie de lisp/loaddefs.el dans votre .emacs :
(setq ispell-menu-map nil) (if ispell-menu-map-needed (let ((dicts (reverse (cons (cons "default" nil) ispell-dictionary-alist))) name) ;; Can put in defvar when external defines are removed. (setq ispell-menu-map (make-sparse-keymap "Spell")) (while dicts (setq name (car (car dicts)) dicts (cdr dicts)) (if (stringp name) (define-key ispell-menu-map (vector (intern name)) (cons (concat "Select " (capitalize name)) (list 'lambda () '(interactive) (list 'ispell-change-dictionary name)))))))) (if ispell-menu-map-needed (progn ;; Define commands in opposite order you want them to appear in menu. (define-key ispell-menu-map [ispell-change-dictionary] '("Change Dictionary" . ispell-change-dictionary)) (define-key ispell-menu-map [ispell-kill-ispell] '("Kill Process" . ispell-kill-ispell)) (define-key ispell-menu-map [ispell-pdict-save] '("Save Dictionary" . (lambda () (interactive) (ispell-pdict-save t)))) (define-key ispell-menu-map [ispell-complete-word] '("Complete Word" . ispell-complete-word)) (define-key ispell-menu-map [ispell-complete-word-interior-frag] '("Complete Word Frag" . ispell-complete-word-interior-frag)) (define-key ispell-menu-map [ispell-continue] '("Continue Check" . ispell-continue)) (define-key ispell-menu-map [ispell-region] '("Check Region" . ispell-region)) (define-key ispell-menu-map [ispell-word] '("Check Word" . ispell-word)) (define-key ispell-menu-map [ispell-buffer] '("Check Buffer" . ispell-buffer)) (define-key ispell-menu-map [ispell-message] '("Check Message" . ispell-message)) (define-key ispell-menu-map [ispell-help] '("Help" . (lambda () (interactive) (describe-function 'ispell-help)))) (put 'ispell-region 'menu-enable 'mark-active))) (fset 'ispell-menu-map (symbol-value 'ispell-menu-map)) |
/etc/profile ou les fichiers de démarrage du shell (comme .bashrc et .bash_profile dans votre répertoire maison) doivent contenir :
export LESSCHARSET=latin1 |
Comme fichier .lessrc je vous recommande :
\e[B forw-line \e[A back-line \e[6~ forw-scroll \e[5~ back-scroll \e[1~ goto-line \e[4~ goto-end \e[C next-file \e[D prev-file \eOA back-line \eOB forw-line |
Pour rentrer un Esc (parfois nommé Échap) taper « \e » ou, sous vi, mettez vous en mode insertion avec i puis tapez « ctrl+v » et enfin « Esc ».
Ce fichier permet d'utiliser les touches « Home », « End », « Page_Up » & « Page_Down ».
Pour s'en servir, taper :
lesskey -o .less .lessrc |
N'oubliez pas de mettre le fichier .less dans votre répertoire maison : il permet d'employer les touches fléchées, « Page_Up », « Page_Down », « Home » et « End ».
Ne pas négliger la page de manuel de less car il peut être intéressant de changer la valeur de sa variable d'environnement de configuration ("LESS").
J'utilise : '-C -M -i -x2'
Utilisez les options :
-N --color=auto |
ou, plus simplement, définissez dans les fichiers de démarrage de votre shell les alias suivants permettant de voir les fichiers dont le nom comprend des caractères 8 bits :
alias ll="ls --color=auto -N -l -a" alias d="ls --color=auto -N" |
Un simple d remplacera le classique ls, en y ajoutant la couleur, alors que ll vous offrira une liste complète de tous les fichiers présents dans le répertoire, avec leurs attributs, leurs tailles...
--color=auto est préférable car --color=yes fera avoir des codes escape lorsqu'on redirige vers un fichier ou un programme où si le terminal ne supporte pas la couleur.
Donnez l'option :
-8 |
si l'analyseur généré doit accepter les entrées 8-bits (bien sûr qu'il doit le faire !).
Rajoutez ces trois lignes dans votre .elm/elmrc :
charset = iso-8859-1 displaycharset = iso-8859-1 textencoding = 8bit |
Assurez-vous :
1) qu'il a été corrigé et fasse un
setlocale(LC_CTYPE,""); |
2) de définir
LC_CTYPE=ISO-8859-1 |
dans l'environment.
Utiliser joe 2.8 ou plus récent qui devraient fonctionner après édition du fichier de configuration : placer l'option -asis dans /usr/lib/joerc en première colonne.
Le plus simple consiste à employer GuTemberg, une distribution de LaTeX avec tous les défauts réglés pour des francophones par des francophones !
Mais si vous préférez une version standard non modifiée, il suffit d'ajouter au début de chaque fichier :
Pour LaTeX:
\documentstyle[isolatin]{article} |
Pour LaTeX2e:
\documentclass[12pt,a4paper]{letter} \usepackage{isolatin1} \usepackage[french]{babel} \usepackage{t1enc} |
\usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} |
Au cas où votre distribution soit trop vieille pour l'inclure, isolatin.sty est disponible séparément
Pour gs et xdvi, il faut utiliser des options spéciales (sur ma machine, ce sont des alias). En effet, ils sont souvent configurés pour un papier états-unien dit « légal », de taille proche, mais non exactement égale, à celle du standard « A4 ».
Ces options sont les suivantes :
gs -sPAPERSIZE=a4 xdvi -paper a4 ghostview -a4
Pour que dvips convertisse les documents dans un format papier a4, il faut spécifier dans le fichier config.ps (le chemin varie en fonction des versions de LaTeX) : /usr/lib/texmf/dvips/config.ps ou .dvipsrc
@ a4 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%PaperSize: a4 @+ %%BeginPaperSize: a4 @+ a4
Sinon ajoutez à votre .Xresources :
XDvi.paper: a4 Ghostview.pageMedia: A4 |
Tout d'abord, il faut vous procurer les pages de manuel Linux traduites en français
Si vous utilisez une distribution RedHat ou Debian, celles-ci sont présentes sur le cédérom : il suffit de les sélectionner lors de l'installation.
De là, deux possibilités :
soit vous ne voulez que des manuels en Français, auquel cas il faut faire un :
export MANPATH=/usr/man/fr_FR |
soit vous préférez par défaut des manuels en Français et si la page n'existe pas, vous vous rabattez vers l'Anglais, il suffira alors de taper :
export LANG=fr |
man ira chercher dans le « MANPATH » des pages en « LANG » par défaut et se rabattra sinon sur des pages en anglais.
Si vous désirez installer la page de manuel expliquant la norme ISO 8859-15 latin 9, il faut installer le fichier iso_8859_15.7.gz :
cp standard/iso_8859_15.7.gz /usr/local/man/man7/ |
Vous pouvez vous le procurer sur le site original d'Hydro Québec ou sur le mirroir du lip6
Un fichier LISEZMOI explique pas à pas et en Français l'installation.
Aussi appelés « claviers Microsoft (tm) », ils ont trois touches de plus que les claviers normaux.
Comment s'en servir ?
En mode console, éditer french.map et décommenter les lignes en parlant !
De même pour french (pour Xwindow).
Attention, dans certains pays totalitaires, l'utilisation de logiciels de cryptographie est considérée comme usage d'armes de guerre, ce qui est punissable par la loi !
Sautez donc ce paragraphe si votre législation locale ne permet pas d'utiliser des logiciels de cryptographie.
Premièrement, il faut se procurer pgp-international (à cause de problèmes de patentes et de législation sur l'export d'armes de guerre, il existe pgp-us et pgp-international, ce dernire étant doté d'un algorithme encore plus puissant) sur le site norvégien de PGP
Ensuite, mettre dans votre répertoire maison, dans un sous répertoire .pgp les fichiers :
config.txt language.idx pgpdoc1.txt pgpdoc2.txt language.txt fr.hlp en.hlp pgp.hlp |
Enfin, éditer le fichier .pgp/config.txt pour y rajouter :
Language = fr CharSet = latin1 |
Lisez ensuite .pgp/fr.hlp pour apprendre à vous servir de pgp !
Pour l'impression de texte simple, beaucoup d'imprimantes attendent des lettres en codage IBM (cp850) comme sous MS DOS.
Si le fichier est codé en latin1, on doit utiliser « recode latin1:ibmpc » (à placer dans les filtres lpr de /etc/ par exemple), sous peine de voir imprimer des « alpha » à la place de « à », et autres choses du même genre.
Il existe d'autres utilisation au programme recode : « ibmpc:lat1 » ou « lat1:ibmpc » (de ou vers MS-DOS) ou « applemac » pour Macintosh (tm).
Voici donc plus d'explications grâce à Pablo Sartxaga (srtxg à chanae.alphanet.ch) dans un message explicant la différence Unicode/latin/cp :
DB> quand on lance « setfont » sans argument DB> il semble qu'on obtienne le même effet que setfont -u none Normal et logique. DB> --> en un mot la table de conversion « Unicode » est désactivée DB> ce qui transforme le « e accent aigü (dec 130) » en « théta (dec 233) » Non. Il ne transforme rien du tout, il affiche tout simplement sans *aucune* transformation au contraire, à toi de t'assurer que la police que tu charges possèdes les glyphes à la bonne place par rapport au codage de caractères que tu utilises (iso-8859-1). Autrement dit si ta police n'est pas iso-8859-1 tu dois dire à setfont de faire des mappings; en particulier s ic'est une police qui utilise l'encodage DOS cp437 tu fais « setfont -u cp437 nomdelapolice ». Moi par exemple j'aime beaucoup la police « t.fnt » de la Slackware, et j'ai donc quelque part dans /etc/rc.d/* une ligne « setfont -u cp437 t.fnt » Ou alors tu modifies la police (il y a un logiciel qui fait cela avec interface svgalib, et un autre nommé « chedit » qui permet de créer des images an ascii-art, un fichier par caractère (256 fichiers donc), il te suffit alors de jongler avec les fichiers pour les changer de place et régénerer la police). Note cependant que le codage cp437 n'inclut pas tous les caractères de iso-8859-1, notamment manquent quasi toutes les majuscules accentuées, et les lettres ãõ nécessaires en portugais. Tu peux toujours modifier la police pour créer ces caractères manquants. DB> sur ma Slackware 3.2, à aucun moment setfont n'apparaît dans les scripts DB> de démarrage ni dans les ~/profiles et autres ~/.bashrc Donc c'est la police dans la ROM de la carte video qui est utilisée. DB> et pourtant cette DB> conversion est effectuée correctement puisque j'ai les accents à l'écran. Je suppose que le kernel présuppose (à juste titre) que la police en ROM vidéo est au codage cp437. DB> une fois que je lance « setfont -u none » je perds donc les accents. Normal, car dès lors que tu charges une police tu est supposé savoir ce que tu veux (au contraire de la police en ROM où tu n'as pas le choix). Autrefois (du temps des 1.2.* et avant) le défaut de setfont était cp437 (et il n'utilisait pas encore des tables Unicode, mais on pouvait changer par \e(B et \e(K entre codage cp437 et iso (on peut toujours d'ailleurs)), mais maintenant le défaut est « straight to font », pas de conversion. DB> j'en conclue que Linux utilise la police résidente par défaut de DB> la carte EGA/VGA DB> [Q] --> comment retrouver cette police ? Il y a un programme nommé « restoretextmode » qui est assez populaire auprès des possesseurs de certaines cartes graphiques chez qui le passage X11 -> console bousille les polices; il permet de faire un dump sur un fichier; il faudrait donc que tu le lances avant de modifier la police avec setfont. Le paquetage s'appelle quelque chose comme SVGATextMode ou quelque chose d'approchant. DB> [Q] --> quelle table appeler pour la remapper et ravoir les accents ? setfont -u cp437 policedos Ou sinon, si tu ne veux pas lancer setfont et tu veux donc garder la police de la carte graphique; essaye un « echo -e \033(B » (l'ennuyant c'est que tu dois le faire dans chaque console) DB> (en général setfont -u def.uni (par exemple) renvoie une DB> erreur : PIO_UNIMAPCLR: Invalid argument et je reste DB> en caracteres « graphiques ») Ah ? Chez moi ça marche; quels kernel et kbd as-tu ? Sinon je te conseille « cp437 » plutôt que « def », ils font _presque_ la même chose, mais « cp437 » est visuellement plus agréable car il remplace les caractères non présents dans la police par les lettres non accentuées si c'est des lettres, C pour © et R pour ® et par un carré blanc pour le reste, ce qui permet de garder le formatage et la lecture agréables; « def » lui ne mets totu simplement rien pour les caractères manquants, si bien que tu te trouves avec des trous, ce qui est l'horreur si tu édites un texte par exemple avec vi, puisque le curseur est affiché plusieurs caractères à gauche à cause des caractères de largeur nulle :) Essaye aussi la police « t.fnt », elle est assez jolie, toute en rondeurs, je la trouve réposante, et quand je dois utiliser un PC avec les polices style courier par défaut je trouve ça très agressif je me demande comment ils peuvent travailler avec :) |
Lire aussi les articles de news : « FAQ - les accents français et Usenet» de F. Yergeau dans les groupes fr.usenet.reponses et fr.usenet.8bits » ISO 8859-1 National Character Set FAQ» de mike (à) vlsivie.tuwien.ac.at dans comp.answers .
Rappelons que ncurses est un librairie C qui permet de manipuler facilement l'affichage en mode console texte : fenêtrage, lignes de saisie, édition de formulaires, couleurs, caractères « ALT » ascii semi-graphique ibm, comme sous dos...
La version standard de curses utilise le huitième bit pour la vidéo inversée (voir le flag _STANDOUT défini dans /usr/include/curses.h). Cependant, ncurses semble fonctionner en 8-bits et affiche le iso-latin-8859-1 correctement.
Remarque: les distributions de Linux sont livrées en général avec la version 1.9.9e de ncurses, or il se trouve que la librairie form de cette version est BUGGÉE (problèmes de rafraîchissement des fenêtres).
Ne pas utiliser la 1.9.9e donc si on veut travailler avec « form » : ce bug est d'ailleurs clairement énoncé sur le site de ncurses, et je m'étonne que ce soit justement cette version qui soit encore livrée sur la plupart des distributions (RedHat 4.2, 5.0, 5.1, Slackware 3.2, Debian 1.9) en tout cas.
Symptôme : la fonction wgetch() de ncurses renvoie les codes suivants :
je tape 'é' et wgetch retourne « meta-i » code 233 (decimal)
" " 'è' " " " « meta-h » code 234 (decimal)
etc
C'est normal avec les polices iso-8859-1 !
Il faut installer les « locales » ou mettre à jour sa version de ncurses.
Si tout d'un coup après une mise à jour il raconte :
(guylhem@victis:guylhem)$ perl perl: warning: Setting locale failed for the categories: LC_CTYPE LC_COLLATE perl: warning: Please check that your locale settings: LC_ALL = "fr_FR", LC_CTYPE = "ISO-8859-1", LC_COLLATE = (unset), LANG = "fr" are supported and installed on your system. perl: warning: Falling back to the "C" locale. (guylhem@victis:guylhem)$ |
En libc6 le format des fichiers binaires de définition des locales a (encore) changé : il faut les régénérer à partir des sources sources WG15collection.tar.gz par exemple et des programmes « locale » et « localedef » qui sont fournis dans les sources de la libc.
Sinon on peut également se passer des locales :
unset LANG unset LC_CTYPE unset LC_COLLATE export LC_ALL=fr_FR.ISO-8859-1 |
Les « locales » sont des fichiers qui vont modifier le comportement de certains programmes pour qu'ils s'adaptent aux « spécificités culturelles du pays ».
Cela sert à résoudre les erreurs rapportées par perl ou une mauvaise gestion des accents par ncurses.
récupérer pour la libc5 la collection de locales POSIX
ou pour la libc6, elle est dans l'ajout « glibc-localedata »
copier dans le répertoire /usr/share/locale les fichiers fr_FR et en_DK (qui est inclus dans fr_FR)
créer le répertoire /usr/share/i18n/charmap et copier le fichier ISO_8859-1:1987
faire man localedef et lancer la commande :
localedef -f ISO_8859-1:1987 -i fr_FR fr |
/usr/share/locale/fr |
LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME |
lire le fichier « locale.fr » que l'on peut trouver sur le serveur ftp.lip6.fr (chercher sous doc, linux...) et dont la traduction française a été faite par Éric DUMAS (hélas ce doc ne traite principalement que de LC_MESSAGES. À quand la suite Éric ? ;-) )
compléter éventuellement l'initialisation des variables du shell comme décrit dans la section sur bash ou tcsh
dans un programme, utilisez la fonction setlocale() (man setlocale.3) pour fixer les paramètres locaux CAR le noyau linux initialise toujours cette fonction avec l'argument une locale « C » (POSIX) donc sans accents !
setlocale(LC_CTYPE,"fr_FR"); |
Ça y est ! Les accents sont disponibles dans ncurses.
En changeant de police, il peut arriver que les lignes de cadre soient remplacées par divers caractères.
2 possibilitées :
La police chargée ne dispose pas de caractères dits « semi graphiques », qui permettent de dessiner des cadres
Il y a discordance entre la police et sa table de mappage
Pour le premier cas, la seule solution est de changer de police, mais dans le second cas, il suffit en général de charger la table avec loadunimap par exemple :
loadunimap lat1u.uni loadunimap lat5u.uni loadunimap lat9u.uni |
Pour mettre un support pour le clavier français directement dans le kernel, ce qui est pratique pour les systèmes embarqués ou ne démarrant que sur disquettes, afin de gagner le maximum de place :
/usr/bin/loadkeys loadkeys --mktable votre-table-de-clavier.map > /usr/src/linux/drivers/char/defkeymap.c |
Depuis la version 20, on peut spécifier un clavier (français, par exemple) au démarrage de LILO.
Bien sur, cela ne fait qu'échanger quelques touches (a/q,m/:,... pour un clavier fr) mais cela est assez utile lorsque l'on veut taper « win ».
Je vous conseille toutefois de ne pas faire de label utilisant des touches qui diffèrent entre l'AZERTY et le QWERTY, ne serait-ce que si vous devez avoir un jour un autre utilisateur sur votre ordinateur...
Il est plus simple de faire des labels courts et d'utiliser des programmes comme GAG ou GRUB, remplaçant fort avantageusement les lignes de lilo par un magnifique menu graphique dans le cas de GAG.
Sur certaines distributions, le programme man n'est pas configuré pour afficher les accents.
Si vous rencontrez ce problème, éditez son fichier de configuration (/etc/man.config sur les distributions actuelles) et localisez une ligne ressemblant à cela :
NROFF /usr/bin/groff -Tascii -mandoc |
Remplacez-là par :
NROFF /usr/bin/groff -Tlatin1 -mandoc |
Les vieilles versions de man utilisent aussi col, et le point suivant s'applique aussi.
Une belle discussion sur le thème de l'ISO-8859-1 et sur « comment manipuler les caractères 8-bits » est disponible