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


Responder a