Page suivantePage pr�c�denteTable des mati�res

5. Delete et Backspace

5.1 Comment choisir le caract�re � utiliser pour effacer le dernier caract�re tap�

% stty erase ^?
Si le caract�re est effac�, mais d'une mani�re bizarre, c'est que les param�tres du terminal sont mauvais. Si echoprt est activ�, les caract�res effac�s s'affichent entre \ et /. Si echoe est d�sactiv�, les caract�res ne sont plus effac�s � l'�cran, mais leur effacement est signal� par l'affichage du caract�re d'effacement, exemple: Libux###nux (avec # comme caract�re d'effacement).

On utilisera donc g�n�ralement stty echoe -echoprt. La commande stty sane activera ces param�tres et bien d'autres. La commande stty -a affiche les param�tres actuels. Pourquoi ces param�tres ne sont pas activ�s par d�faut ? Il suffit d'utiliser le bon getty.

Il est � noter que beaucoup de programmes (comme bash, emacs etc.) ont leur propres assignations de touches (d�finis dans ~/.inputrc, ~/.emacs, etc.) et ne tiennent pas compte de ces param�tres de terminal.

`Getty comprenait bien DEL et BS, mais plus maintenant ?'

Jadis, la console traduisait DEL (\177) en BS Espace BS (\010\040\010).

Les DEL sont d�sormais ignor�s (comme le devrait toute �mulation vt100 fid�le). Choisissez un meilleur getty, i.e., qui n'affiche pas les DEL.

`Login ne fait pas la m�me chose au premier et au deuxi�me essai?'

Au premier essai, on parle � getty, au deuxi�me � login, deux programmes distincts qui peuvent se comporter diff�remment.

5.2 Comment dire � Linux quel code g�n�rer � l'appui sur une touche

Quand on utilise la console, ou plus pr�cis�ment, quand le clavier n'est pas en mode (medium)raw, il faut utiliser:

% loadkeys monclavier.map
Sous X, utiliser:
% xmodmap monclavier.xmap
Remarque: depuis XFree86-2.1, X initialise son clavier � partir de la configuration du clavier de la console. Bien que les deux syst�mes ne soient pas 100% compatibles, cette technique rend g�n�ralement l'utilisation de xmodmap superflue.

Si, par exemple, si vous voulez que la touche Backspace g�n�re le code BackSpace (^H), au lieu du code par d�faut (Delete), faites:

% loadkeys
keycode 14 = BackSpace
%

`Pourquoi la touche BackSpace ne g�n�re pas BackSpace par d�faut ?'

(i) Parce que les terminaux VT100 ont une touche Delete au dessus de la touche Entr�e.

(ii) Parce que Linus en a d�cid� ainsi.

5.3 Comment dire � X d'�changer Delete et Backspace

% xmodmap -e "keysym BackSpace = Delete" -e "keysym Delete = BackSpace"
Ou, si vous voulez juste que Backspace g�n�re le code BackSpace:
% xmodmap -e "keycode 22 = BackSpace"
Ou, si vous voulez juste que Delete g�n�re le code Delete:
% xmodmap -e "keycode 107 = Delete"
(mais g�n�ralement c'est d�j� la disposition par d�faut).

5.4 Comment dire � emacs ce qu'il doit faire des codes Delete et Backspace

Mettez dans votre .emacs les lignes:

 (global-set-key "\?" 'delete-backward-char)
 (global-set-key "\C-h" 'help-command)
Bien s�r, vous pouvez associer d'autres commandes � d'autres touches de la m�me mani�re.

5.5 Comment dire � emacs de permuter Delete et Backspace

Mettez dans votre .emacs les lignes:

 (setq keyboard-translate-table (make-string 128 0))
 (let ((i 0))
 (while (< i 128)
 (aset keyboard-translate-table i i)
 (setq i (1+ i))))
 (aset keyboard-translate-table ?\b ?\^?)
 (aset keyboard-translate-table ?\^? ?\b)

5.6 Comment dire � kermit d'�changer Delete et Backspace

Mettez dans votre .kermrc les lignes:

 set key \127 \8
 set key \8 \127

5.7 Comment r�gler xterm selon vos modes de terminal pr�f�r�s

Normalement xterm h�rite des modes de terminal du processus qui l'appelle. Pour xdm, les caract�res erase et kill sont # et @, comme sur les bons vieux Unix Version 6. Si �a ne vous pla�t pas, vous pouvez mettre

 XTerm*ttymodes: erase ^? kill ^U intr ^C quit ^\ eof ^D susp ^Z start ^Q stop ^S eol ^@
dans /usr/lib/X11/app-defaults/XTerm ou dans $HOME/.Xresources, � condition d'ex�cuter la commande
 xrdb $HOME/.Xresources
dans votre $HOME/.xinitrc.

5.8 Comment dire � xmosaic que la touche Backspace g�n�re une DEL

Mettre

 *XmText.translations: #override\n\
 <Key>osfDelete: delete-previous-character()
 *XmTextField.translations: #override\n\
 <Key>osfDelete: delete-previous-character()
dans votre $HOME/.Xresources devrait faire l'affaire.

Cependant, la FAQ de netscape dit:

 Pourquoi ma touche Backspace ne marche pas dans les boites texte ?
 Par d�faut, Linux et XFree86 ont leur touches Backspace et Delete
 mal configur�es. Tous les programmes Motif (y compris Netscape
 Navigator) auront les m�mes probl�mes.
 Les sp�cifications Motif disent que Backspace doit effacer le
 caract�re pr�c�dent et Delete le caract�re suivant. Par d�faut sous
 Linux et XFree86 Backspace et Delete g�n�rent le code DEL.
 Le probl�me peut �tre r�solu en utilisant un programme tel que
 xmodmap, xkeycaps, ou loadkeys pour que la touche Backspace
 g�n�re le code BackSpace au lieu de Delete.
 Une autre solution consiste � 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 r�soudre ce probl�me.
 Si vous le faites, vous annulez toutes les autres programmations
 de touches dans les boites textes de Netscape Navigator.

5.9 Et les fichier termcap et terminfo?

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


Page suivantePage pr�c�denteTable des mati�res

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