Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/06/2008, 16:34
mhatter
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: Capturar pulsaciones de teclas en C bajo Linux

Parece que te refieres a la función getch() que ofrecen los compiladores Borland de C para DOS a través de la cabecera conio.h. Como te puedes dar cuenta, en linux no existe esa cabecera, pero existen bibliotecas que ofrecen una funcionalidad similar.

Puedes echarle un ojo a ncurses, una biblioteca que te permite hacer prácticamente lo mismo que ofrece conio.h y más, y está disponible en cualquier distribución Linux moderna.

Para aprender sobre ncurses, puedes buscar por internet (hay montones de documentación en línea), o usar las páginas man. Por ejemplo, una buena referencia es esta: http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/.

Un ejemplo sobre cómo usar getch() con ncurses:

Código:
#include <curses.h>

int
main ()
{
    int tecla;

    /* Inicializar la operacion de ncurses */
    initscr ();

    printw ("Pulse cualquier tecla: ");

    /* Recibir teclas en modo sin buferes (es decir, sin esperar a que se
     * pulse ENTER) */
    cbreak ();

    tecla = getch ();

    printw ("\n\nLa tecla pulsada tiene el codigo %d\n\n", tecla);

    printw ("Pulse cualquier tecla para finalizar");
    getch ();

    /* Finalizar ncurses. Esto es necesario para volver al modo estandar de
     * la terminal */
    endwin ();
    return 0;
}
Para compilar este programa, tienes que asegurarte de enlazar ncurses con la opción -lncurses. Por ejemplo:

Código:
gcc prog-ncurses.c -lncurses -o prog-ncurses
Otra alternativa podría ser usar una especie de puente, que te permita simular el comportamiento de conio.h en linux sin necesidad de cambiar radicalmente tu código. Por ejemplo, fíjate en la herramienta llamada Linux "conio.h" en esta página: http://www.gerald-friedland.de/projects_old.html