On 5 Mar 2002, Ekeko wrote:
> [EMAIL PROTECTED]:~$ echo '#include <stdlib.h>
> > #include <stdio.h>
> > #include <curses.h>
> >
> > WINDOW *win;
> >
> > main(){
> > int ch;
> >
> > win=initscr();
> > noecho();
> > raw();
> > cbreak();
> > keypad(win, TRUE);
> > ch=getch();
> > endwin();
> > printf("%c\n", ch);
> > /* printf("%d\n", ch); */
> > }' > getc.c
> [EMAIL PROTECTED]:~$ cc getc.c -lncurses -o getc
> [EMAIL PROTECTED]:~$ a=`echo sdasd | ./getc`
>
> en a queda:
> $'\E(B\E)0\E[?1049h\E[1;24r\E[m\017\E[4l\E[?7h\E[?1h\E=\E[H\E[2J\E[24;1H\E[?1049l\r\E[?1l\E>s'
En primer lugar getch() no lee de stdin sino desde la ventana y por lo tanto
a=`echo sdasd | ./getc` no funcionar� correctamente.
En cuanto a los c�digos extra�os que recibes asegurate de que tienes
la variable TERM exportable y con valor 'linux'.
El ejemplo no estaba perfecto porque se recibe igualmente la secuencia de
borrado de la pantalla pero se puede filtrar. En el ejemplo se enviaba un
caracter y el salto de linea que para lo que tu quieres tambi�n sobra.
Sustituye printf("%c\n", ch);
por printf("%c", ch);
Ahora para usarlo
TECLA=`./getc | tail --bytes=1`
Acabo de probarlo y funciona.
Puedes probar otras cosas que te han comentado tal como
poner el terminal en modo raw con stty tal como Diego te coment�
pero no olvides que ncurses es la librer�a ideal para estas cosas.
En mi caso podr�as incluso capturar las secuencias formadas por
ESC y otro c�digo ASCII enviadas por teclas de funci�n, flechas etc,
y te devolver� un c�digo �nico. keypad(3NCURSES).
Para ello ser�a seguramente mejor hacer printf("%d", ch);
> y yo s�lo quiero que reciba un caracter.
> en este caso hay mucho ruido antes del caracter 's' que me interesa.
Ese ruido seguramente es la secuencia de escape para el borrado de la
pantalla.
Un saludo
Antonio Castro
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/\ /\ Ciberdroide Inform�tica (Tienda de Linux)
\\W// <<< http://www.ciberdroide.com >>>
_|0 0|_
+-oOOO--(___o___)--OOOo----------------------------------------------------+
| . . . . U U . . . . Antonio Castro Snurmacher [EMAIL PROTECTED] |
| . . . . . . . . . . |
+()()()----------()()()----------------------------------------------------+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** |
| <<< http://www.ciberdroide.com/misc/donde/dondelinux.html >>> |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+