Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 641

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>Delete et Backspace</TITLE>
</HEAD>
<BODY>
<H1>5. <A NAME="s5"></A>Delete et Backspace</H1>
<P>
<A HREF="Keyboard-HOWTO.html#toc5">Contenu de cette section</A></P>

<P></P>
<P></P>
<H2>5.1 <A NAME="ss5.1"></A> Comment choisir le caract&egrave;re &agrave; utiliser pour effacer le dernier caract&egrave;re tap&eacute;</H2>

<P></P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
% stty erase ^?
</PRE>
</CODE></BLOCKQUOTE>

Si le caract&egrave;re est effac&eacute;, mais d'une mani&egrave;re bizarre, c'est que les
param&egrave;tres du terminal sont mauvais. Si <CODE>echoprt</CODE> est activ&eacute;, les
caract&egrave;res effac&eacute;s s'affichent entre <CODE>\</CODE> et <CODE>/</CODE>.
Si <CODE>echoe</CODE> est d&eacute;sactiv&eacute;, les caract&egrave;res ne sont plus effac&eacute;s &agrave;
l'&eacute;cran, mais leur effacement est signal&eacute; par l'affichage du caract&egrave;re
d'effacement, exemple: <CODE>Libux###nux</CODE> (avec # comme
caract&egrave;re d'effacement).</P>
<P>On utilisera donc g&eacute;n&eacute;ralement <CODE>stty echoe -echoprt</CODE>. La commande
<CODE>stty sane</CODE> activera ces param&egrave;tres et bien d'autres. La commande
<CODE>stty -a</CODE> affiche les param&egrave;tres actuels. Pourquoi ces param&egrave;tres ne
sont pas activ&eacute;s par d&eacute;faut ? Il suffit d'utiliser le bon <CODE>getty</CODE>.</P>
<P>Il est &agrave; noter que beaucoup de programmes (comme <CODE>bash</CODE>, <CODE>emacs</CODE>
etc.) ont leur propres assignations de touches (d&eacute;finis dans
<CODE>~/.inputrc</CODE>, <CODE>~/.emacs</CODE>, etc.) et ne tiennent pas compte
de ces param&egrave;tres de terminal.</P>
<P></P>
<H3>`Getty comprenait bien DEL et BS, mais plus maintenant ?'</H3>

<P></P>
<P>Jadis, la console traduisait DEL (<CODE>\177</CODE>) en BS Espace BS
(<CODE>\010\040\010</CODE>).</P>
<P>Les DEL sont d&eacute;sormais ignor&eacute;s (comme le devrait toute &eacute;mulation vt100
fid&egrave;le). Choisissez un meilleur getty, i.e., qui n'affiche pas les DEL.</P>
<P></P>
<H3>`Login ne fait pas la m&ecirc;me chose au premier et au deuxi&egrave;me essai?'</H3>

<P></P>
<P>Au premier essai, on parle &agrave; <CODE>getty</CODE>, au deuxi&egrave;me &agrave;
<CODE>login</CODE>, deux programmes distincts qui peuvent se comporter diff&eacute;remment.</P>
<P></P>

<H2>5.2 <A NAME="ss5.2"></A> Comment dire &agrave; Linux quel code g&eacute;n&eacute;rer &agrave; l'appui sur une touche</H2>

<P></P>
<P>Quand on utilise la console, ou plus pr&eacute;cis&eacute;ment, quand le clavier
n'est pas en mode (medium)raw, il faut utiliser:
<BLOCKQUOTE><CODE>
<PRE>
% loadkeys monclavier.map
</PRE>
</CODE></BLOCKQUOTE>

Sous X, utiliser:
<BLOCKQUOTE><CODE>
<PRE>
% xmodmap monclavier.xmap
</PRE>
</CODE></BLOCKQUOTE>

Remarque: depuis XFree86-2.1, X initialise son clavier &agrave; partir de la
configuration du clavier de la console. Bien que les deux syst&egrave;mes ne
soient pas 100% compatibles, cette technique rend g&eacute;n&eacute;ralement
l'utilisation de <CODE>xmodmap</CODE> superflue.</P>
<P>Si, par exemple, si vous voulez que la touche Backspace g&eacute;n&egrave;re le code
BackSpace (&circ;H), au lieu du code par d&eacute;faut (Delete), faites:
<BLOCKQUOTE><CODE>
<PRE>
% loadkeys
keycode 14 = BackSpace
%
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
<H3>`Pourquoi la touche BackSpace ne g&eacute;n&egrave;re pas BackSpace par d&eacute;faut ?'</H3>

<P></P>
<P>(i) Parce que les terminaux VT100 ont une touche Delete au dessus de
la touche Entr&eacute;e.</P>
<P>(ii) Parce que Linus en a d&eacute;cid&eacute; ainsi.</P>
<P></P>

<H2>5.3 <A NAME="ss5.3"></A> Comment dire &agrave; X d'&eacute;changer Delete et Backspace</H2>

<P></P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
% xmodmap -e &quot;keysym BackSpace = Delete&quot; -e &quot;keysym Delete = BackSpace&quot;
</PRE>
</CODE></BLOCKQUOTE>

Ou, si vous voulez juste que Backspace g&eacute;n&egrave;re le code BackSpace:
<BLOCKQUOTE><CODE>
<PRE>
% xmodmap -e &quot;keycode 22 = BackSpace&quot;
</PRE>
</CODE></BLOCKQUOTE>

Ou, si vous voulez juste que Delete g&eacute;n&egrave;re le code Delete:
<BLOCKQUOTE><CODE>
<PRE>
% xmodmap -e &quot;keycode 107 = Delete&quot;
</PRE>
</CODE></BLOCKQUOTE>

(mais g&eacute;n&eacute;ralement c'est d&eacute;j&agrave; la disposition par d&eacute;faut).</P>
<P></P>

<H2>5.4 <A NAME="ss5.4"></A> Comment dire &agrave; emacs ce qu'il doit faire des codes Delete et Backspace</H2>

<P></P>
<P>Mettez dans votre <CODE>.emacs</CODE> les lignes:
<BLOCKQUOTE><CODE>
<PRE>
  (global-set-key &quot;\?&quot; 'delete-backward-char)
  (global-set-key &quot;\C-h&quot; 'help-command)
</PRE>
</CODE></BLOCKQUOTE>

Bien s&ucirc;r, vous pouvez associer d'autres commandes &agrave; d'autres touches
de la m&ecirc;me mani&egrave;re.</P>
<P></P>

<H2>5.5 <A NAME="ss5.5"></A> Comment dire &agrave; emacs de permuter Delete et Backspace</H2>

<P></P>
<P>Mettez dans votre <CODE>.emacs</CODE> les lignes:
<BLOCKQUOTE><CODE>
<PRE>
  (setq keyboard-translate-table (make-string 128 0))
  (let ((i 0))
  (while (&lt; i 128)
      (aset keyboard-translate-table i i)
      (setq i (1+ i))))
  (aset keyboard-translate-table ?\b ?\^?)
  (aset keyboard-translate-table ?\^? ?\b)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>5.6 <A NAME="ss5.6"></A> Comment dire &agrave; kermit d'&eacute;changer Delete et Backspace</H2>

<P></P>
<P>Mettez dans votre <CODE>.kermrc</CODE> les lignes:
<BLOCKQUOTE><CODE>
<PRE>
  set key \127 \8
  set key \8 \127
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>5.7 <A NAME="ss5.7"></A> Comment r&eacute;gler xterm selon vos modes de terminal pr&eacute;f&eacute;r&eacute;s</H2>

<P></P>
<P>Normalement xterm h&eacute;rite des modes de terminal du processus qui l'appelle.
Pour <CODE>xdm</CODE>, les caract&egrave;res erase et kill sont <CODE>#</CODE> et <CODE>@</CODE>,
comme sur les bons vieux Unix Version 6.
Si &ccedil;a ne vous pla&icirc;t pas, vous pouvez mettre
<BLOCKQUOTE><CODE>
<PRE>
  XTerm*ttymodes: erase ^? kill ^U intr ^C quit ^\ eof ^D susp ^Z start ^Q stop ^S eol ^@
</PRE>
</CODE></BLOCKQUOTE>

dans <CODE>/usr/lib/X11/app-defaults/XTerm</CODE> ou dans
<CODE>$HOME/.Xresources</CODE>, &agrave; condition d'ex&eacute;cuter la commande
<BLOCKQUOTE><CODE>
<PRE>
  xrdb $HOME/.Xresources
</PRE>
</CODE></BLOCKQUOTE>

dans votre <CODE>$HOME/.xinitrc</CODE>.</P>
<P></P>

<H2>5.8 <A NAME="ss5.8"></A> Comment dire &agrave; xmosaic que la touche Backspace g&eacute;n&egrave;re une DEL</H2>

<P></P>
<P>Mettre
<BLOCKQUOTE><CODE>
<PRE>
  *XmText.translations: #override\n\
         &lt;Key&gt;osfDelete: delete-previous-character()
  *XmTextField.translations: #override\n\
          &lt;Key&gt;osfDelete: delete-previous-character()
</PRE>
</CODE></BLOCKQUOTE>

dans votre <CODE>$HOME/.Xresources</CODE> devrait faire l'affaire.</P>
<P>Cependant, la FAQ de netscape dit:
<PRE>
        Pourquoi ma touche Backspace ne marche pas dans les boites texte ?
        Par defaut, Linux et XFree86 ont leur touches Backspace et Delete
        mal configurees. Tous les programmes Motif (y compris Netscape
        Navigator) auront les memes problemes.

        Les specifications Motif disent que Backspace doit effacer le
        caractere precedent et Delete le caractere suivant. Par defaut sous
        Linux et XFree86 Backspace et Delete generent le code DEL.

        Le probleme peut etre resolu en utilisant un programme tel que 
        xmodmap, xkeycaps, ou loadkeys pour que la touche Backspace
        genere le code BackSpace au lieu de Delete.

        Une autre solution consiste a avoir un fichier .motifbind;
        voir la page de manuel de VirtualBindings(3).

        Note: n'utilisez pas les ressources *XmText.translations ou
        *XmTextField.translations pour essayer de resoudre ce probleme.
        Si vous le faites, vous annulez toutes les autres programmations
        de touches dans les boites textes de Netscape Navigator.
</PRE>
</P>
<P></P>

<H2>5.9 <A NAME="ss5.9"></A> Et les fichier termcap et terminfo?</H2>

<P></P>
<P>Les gens qui ont des probl&egrave;mes avec backspace ont tendance &agrave; aller
voir dans leur fichier termcap (ou terminfo), et effectivement la
ressource <CODE>kb</CODE> (ou <CODE>kbs</CODE>) d&eacute;crit le code g&eacute;n&eacute;r&eacute; par la touche
Backspace. Cependant peu de programmes utilisent ces bases de donn&eacute;es
pour rechercher le code envoy&eacute; par backspace, donc,
&agrave; moins de n'avoir des probl&egrave;mes qu'avec certains programmes, il faut
en g&eacute;n&eacute;ral chercher ailleurs.
Cela dit, il vaut mieux de toute fa&ccedil;on avoir un termcap (ou terminfo)
correct. Voir aussi "La variable TERM" plus loin.</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="Keyboard-HOWTO-6.html">suivant</A>,
Chapitre <A HREF="Keyboard-HOWTO-4.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="Keyboard-HOWTO.html#toc5">ce chapitre</A>,
 <A HREF="Keyboard-HOWTO.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="Keyboard-HOWTO.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>