Salut,
sur mon systeme, la fonction "readline" est documente comme suit:
#include <readline.h>
#include <history.h>
char *readline (prompt)
char *prompt;
cependant, je n'ai pas les .h correspondant dans mon systeme !
qu'elle est le nom de cette librairie ?
En tout cas, merci pour ce mail vraiment tres instructif !
A+
Fred.
Le 2001.11.22 23:33:12 +0100, Edgar Bonet a écrit :
> Le Thursday 22 November, Patrick Dupre LCMI a écrit :
> > En Rehat 7.2, dans un fenetre gnome-terminal, j'ai une application C
> qui
> > utilise la fenetre d'ou est lancee l'application pour notamment lire
> > des donnees:
> > printf puis gets
> > Dans ce contexte, la touche del ou supprime, ne permettent pas de
> > modifier des characteres saisis, ^H ou [[3~ sont simplement affiches et
> > pas executes. Est-ce l'on peut remedier a ce probleme qui est apparu
> > avec la RH6. Sur un terminal non graphique tout se passe normalement.
>
> C'est l'e^?éternel problème du BS ou DEL sous Unix... La touche
> backspace peut envoyer au choix les caractères ascii BS ou DEL. BS me
> semble plus logique, mais à en juger par ma Mandrake, il semble que DEL
> soit plus canonique sous Linux. Ton problème vient du fait que ton
> terminal envoie BS et le pilote attend DEL. Il faut choisir.
>
> Si tu choisis BS :
>
> Il faut que tu expliques à ton pilote de terminal que BS sert à
> effacer le dernier caractère entré. Tu fais « stty erase ^H »
> (oui, un ^ suivi d'un H).
>
> Si tu choisis DEL :
>
> Il faut que tu expliques à ton terminal qu'il doit envoyer un DEL
> quand tu appuies sur la touche backspace. Il faudrait que tu regardes
> dans la doc de gnome-terminal pour ça.
>
> Dans tous les cas, avec gets() les possibilités d'édition de la ligne
> que tu tapes sont minimales. Du genre backspace pour effacer le dernier
> caractère, Control-W pour effacer le dernier mot et Control-U pour
> effacer toute la ligne. Cf. stty -a. C'est tout ce que permet le pilote
> de terminal du noyau. Pas de touches du curseur, Home, End, Delete et
> cie. Si tu veux tout ça essaye readline() au lieu de gets().
>
> --
> Edgar Bonet Tel : +33 476 881 096
> Laboratoire Louis Néel -- CNRS Mobile : +33 663 384 906
> 25 av. des Martyrs, BP 166 Fax : +33 476 881 191
> 38042 Grenoble cedex 9, France e-mail : bonet@???
>