6. R�glage du clavier pour les applications en mode texte

6.1. Tout d'abord

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

6.2. Une police, des polices...

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.

6.2.1. a) Historique des 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 !

6.2.2. b) ISO 8859-15 latin 9

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.

6.2.3. c) Utiliser les polices ISO 8859-15 latin 9

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

6.2.4. d) Unicode

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

6.2.5. e) Utiliser les possibilit�s Unicode

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 :

Ceci est un essai de texte en UNICODE !
On constate que les bétas (�~_) et autres lettres 8 bits ne sortent pas bien
si l'on regarde ce fichier en mode latin !
Les accents éè�| ù non plus d'ailleurs...
Enfin, heureusement que l'on ne marche pas sur des �~RUFS, enfin, �~Sufs !
�~Ga marche moyennement disons !

6.3. Les locales, messages en Fran�ais

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

Les valeurs utilisables pour les francophones sont:

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.

6.4. Son linux en fran�ais

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 :

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

6.5. Les variables

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 �/

6.6. Les caract�res 8 bits dans les programmes utilisant readline tels bash ou ncftp...

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

6.7. zsh

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

6.8. tcsh

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

6.9. Pour tous les shells

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

6.10. L'heure

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

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 !

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

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 !

6.11. vi

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

6.12. Emacs

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 :

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 :

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

6.13. less

/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'

6.14. ls

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.

6.15. flex

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

6.16. elm

Rajoutez ces trois lignes dans votre .elm/elmrc :

  charset = iso-8859-1
 displaycharset = iso-8859-1
 textencoding = 8bit 

6.17. col

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.

6.18. rlogin

Utilisez l'option :

-8

6.19. joe

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.

6.20. TeX et LaTeX

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 :

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

6.21. Manuel

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 :

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/

6.22. Correcteur orthographique ispell

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.

6.23. Les claviers 105 touches

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

6.24. PGP

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 !

6.25. Impression en mode ascii

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

6.26. Unicode/latin/cp... je n'ai pas compris ce dernier paragraphe !

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 .

6.27. ncurses

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

6.27.1. Introduction

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.

6.27.2. Les accents

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.

6.28. Perl

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

6.29. Installer les locales

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.

6.29.1. Midnight Commander (mc)

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

6.30. Kernel

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

6.31. Lilo

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.

6.32. Groff (man)

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.

6.33. Divers

Une belle discussion sur le th�me de l'ISO-8859-1 et sur � comment manipuler les caract�res 8-bits � est disponible

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25