Previous Next Contents

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

Avertissement :

Cette section est fortement « inspirée » pour le réglage d'emacs, zsh, tcsh, flex, less, rlogin, joe, col & TeX du Guide du Rootard & de documents rassemblés sous le nom de « Francophones-HOWTO » qui hélas n'a jamais été fini.

Les auteurs respectifs sont donc remerciés pour leurs contributions !

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

Enfin, charger une police de caractères adaptées :

setfont /usr/lib/kbd/consolefonts/xxx-NNN

Éric Dubreuil (edubreuil@aol.com) vous conseille pour sa part la police lat1u-16.psf, permettant d'avoir tous les caractères accentuées sans pour autant enlaidir mc, un gestionnaire de fichier très populaire mais très sensible à la police utilisée !

0) Linux

Linux en 'version française' existe... mais ne semble pas facile à obtenir.

Il faut en pratique disposer des sources de la libc & d'un minimum de compétences (langage C).

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 meme chose, d'ou 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 evite 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 francais. 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 oeil 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'. »

1) Les shells

Ces variables doivent être exportées à chaque login : mettez les donc dans .bashrc & .bash_profile, .tcshrc ou /etc/profile :

# pour tcsh, utiliser setenv au lieu de export, par exemple «setenv LANG fr»

# Les locales
LC_CTYPE=ISO-8859-1
LC_ALL=fr_FR
# (ou fr_BE, fr_CA, fr_CH, fr_LU ...)
LANG=fr
LESSCHARSET=latin1
export PATH PS1 LC_CTYPE 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"

# 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 !

a) Pour bash (version 1.13.*), créez un .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

Celà vous permettra d'effacer des caractères vers l'avant avec DELETE (souvent nommée DEL ou SUPPR) et vers l'arrière avec BACKSPACE (touche située à côté d' « Entrée » ), 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 & End pour aller au début & à la fin de la ligne en cours d'édition.

b) zsh se contente d'un stty pass8.

c) Pour tcsh, placer, dans le fichier /etc/csh.login (ou dans les fichiers .tcshrc des utilisateurs concernés) :

setenv LC_CTYPE iso_8859_1
setenv LANG fr

d) 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, Pablo Saratxaga signale qu'il vaut mieux éviter fr_FR : « Par ailleurs je conseille un simple "fr" plutôt que fr_FR etc. Certains programmes n'aiment pas trop (ils ne passent pas vraiment par la resolution de locales mais lisent LANG directemment...) »

Si nls est installe, les routines correspondantes sont utilisees, sinon tcsh agit en iso_8859_1, quelle que soit les valeurs donnees a LANG & LC_CTYPE : cf. la section NATIVE LANGUAGE SYSTEM de tcsh(1).

D'après le Danish-HOWTO:

setenv LC_CTYPE ISO-8859-1; stty pass8

2) L'heure

Rien n'est plus facile que de laisser à Linux le soin de passer de l'heure d'été à l'heure d'hiver & 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 pargraphe 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 & 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 & 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 celà 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 & 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 & 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 !

3) Emacs

Voici un fichier de configuration de base pour employer les accents. XEmacs les accepte lui par défaut sans broncher :-)

  ;;
  ;; Fichier .emacs: initialisation d'emacs
  ;; Tiré du Guide du Rootard
  ;;

  (display-time)                     ;; Pour avoir l'heure dans la barre d'etat
  (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++ meme 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 mail)
  ("[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))

  ; Remapes varies a mettre ici
  (global-set-key "\eg" 'goto-line)       ;; ESC G = Goto line

  (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, textes 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)

4) less

/etc/profile ou les fichiers de démarrage du shell (comme .bashrc & .bash_profile dans votre répertoire maison) doivent contenir :

 export LESSCHARSET=latin1 

Le fichier .lessrc se trouve à la section « Fichier inclus ».

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

5) ls

Utilisez l'option :

--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 -l -a -N"
alias d="ls --color=auto"

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

Pablo Saratxaga conseille d'utiliser --color=auto car « --color=yes fera avoir des codes escape ansi même lorsqu'on redirige vers un pipe un fichier où que le termina ne supporte pas la couleur... ce n'est pas ce qu'on voudrait. »

6) flex

Donnez l'option :

 -8 
si l'analyseur généré doit accepter les entrees 8-bits (bien sur qu'il doit le faire !).

7) Elm

Rajoutez ces trois lignes dans votre .elm/elmrc :

  charset = iso-8859-1

  displaycharset = iso-8859-1

  textencoding = 8bit 

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

9) Rlogin

Utilisez l'option :

-8

10) joe

ftp://sunsite.unc.edu:/pub/Linux/apps/editors/joe-2.8.tar.gz
ou plus récent devrait fonctionner après édition du fichier de configuration. Placez l'option -asis dans /usr/lib/joerc en première colonne.

11) TeX & 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 !

Sinon :

Pour LaTeX:

 \documentstyle[isolatin]{article} 

Pour LaTeX2e:

 \documentclass{article}\usepackage{isolatin} 
ou alors :
 \usepackage[latin1]{inputenc}
 \usepackage[T1]{fontenc} 

Au cas où votre distribution soit trop vieille pour l'inclure, isolatin.sty est disponible séparément sur :

ftp.vlsivie.tuwien.ac.at/pub/8bit 

Pour gs & xdvi, il faut utiliser des options speciales (sur ma machine, ce sont des alias). En effet, ils sont souvent configurés pour un papier de taille anglo-saxonne.

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

12) Manuel

Tout d'abord, il faut vous procurer les pages de manuel Linux traduites en français sur :

ftp.lip6.fr/pub/linux

Si vous utilisez une distribution 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ées :

man ira chercher dans le « MANPATH » des pages en « LANG » par défaut et se rabattra sinon sur des pages en anglais

13) Correcteur orthographique ispell

Vous pouvez vous le procurer sur son site original :

ftp.ireq-robot.hydro.qc.ca:/pub/ispell/francais-IREQ-1.3.tar.gz

ou sur :

ftp.lip6.fr/pub/ispell/francais

Un fichier LISEZMOI explique pas à pas & en français l'installation.

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

15) PGP

Tout d'abord, un avertissement : ce paragraphe n'est destiné qu'aux francophones ne vivant pas en France !

En effet, en France, en Iran, en Irak & dans quelques autres pays, l'utilisation de logiciels de cryptographie est considérée comme usage d'armes de guerre, ce qui est punissable par la loi !

Donc sautez 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 & pgp-international, ce dernire étant doté d'un algorythme encore plus puissant) sur :

ftp://ftp.ifi.uio.no/pub/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 !

16) Impression en mode ascii

Pierre-Charles David (pcdavid@club-internet.fr) vous donne ce truc :

Pour l'impression de texte simple, beaucoup d'imprimantes attendent des lettres en codage IBM (celui utilisé par MS-DOS).

Si le fichier est codé en latin1, on doit utiliser 'recode latin1:ibmpc' (à placer dans les filtres lpr par exemple), sous peine de voir imprimer des 'alpha' à la place de 'à', et autres choses du même genre.

17) Divers

Pour les programmes utilisant curses (comme lynx) David Sibley dit:

« La version standard de curses utilise le huitième bit pour la vidéo inversee (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. »

Pour les programmes utilisant groff (comme man), utilisez le :

-Tlatin1
au lieu de :
-Tascii
Les vieilles versions de man utilisent aussi col, & le point suivant s'applique aussi.

Une belle discussion sur le thème de l'ISO-8859-1 & sur « comment manipuler les caractères 8-bits » est disponible dans :

ftp://grasp.insa-lyon.fr/pub/faq/fr/accents

Pour perl, si tout d'un coup après une mise à jour il raconte :

(guylhem@danmark: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@danmark:guylhem)$

Essayez cette solution de Thomas Parmelan (Thomas.Parmelan@efrei.fr) :

- 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 (WG15collection.tar.tz sur ftp.lip6.fr:/pub/linux/GCC par exemple) et des programmes "locale" et "localedef" qui sont fournis dans les sources de la libc.

- Sinon tu peux également essayer ceci (c'est comme cela que ça fonctionne chez moi en libc-5.4.x) :

     unset LANG
     unset LC_CTYPE
     unset LC_COLLATE
     export LC_ALL=fr_FR.ISO-8859-1


Previous Next Contents