Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Capturar pulsaciones de teclas en C bajo Linux

Estas en el tema de Capturar pulsaciones de teclas en C bajo Linux en el foro de C/C++ en Foros del Web. necesito capturar pulsaciones de teclas. En Ms-dos se que se hace con el getch(), por lo que necesito hacer es no pulsar "enter", en linux ...
  #1 (permalink)  
Antiguo 31/05/2008, 20:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 31
Antigüedad: 16 años, 6 meses
Puntos: 1
Capturar pulsaciones de teclas en C bajo Linux

necesito capturar pulsaciones de teclas. En Ms-dos se que se hace con el getch(), por lo que necesito hacer es no pulsar "enter", en linux no encuentro esa funcion, y el resto (getc, fgetc, ) necesitan que despues de la tecla pulses enter, y eso es lo que quiero evitar.

como se puede hacer???
  #2 (permalink)  
Antiguo 02/06/2008, 16:34
 
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
  #3 (permalink)  
Antiguo 03/06/2008, 21:06
 
Fecha de Ingreso: mayo-2008
Mensajes: 31
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Capturar pulsaciones de teclas en C bajo Linux

muchas gracias, muy valiosa tu respuesta!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:53.