En este caso la duda és muy similar, pero lo separo porque aunque el objetivo es el mismo el problema és muy diferente.
La intencion es captar eventos de teclado, és decir, determinar si se presiona o se suelta una tecla, y cual és, lo cual se supone que és una de las funciones basicas de la libreria SDL.
El problema es que he estado probando con todo tipo de funciones, y parece que el teclado no genere ningun tipo de evento.
Mirad, por ejemplo, uno de los codigos que utilizo:
- Código: Seleccionar todo
#include <SDL/SDL.h>
void esperar(void);
int main( int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
esperar();
SDL_Quit();
return 0;
}
void esperar(void)
{
SDL_Event event;
SDL_WaitEvent (&event);
}
El programa compila sin problemas, pero cuando lo ejecuto, se queda "a la espera" sin reaccionar ante NADA hasta que mato directamente el proceso.
Lo "debugo", con el dbg y el programa funciona a la perfeccion hasta que llega a SDL_WaitEvent(&event). Ahi, se queda "esperando" a los supuestos eventos, ya sean de teclado, de mouse, o de lo que sea, pero parece que ninguna de las entradas de mi ordenador genera eventos que SDL_WaitEvent pueda detectar.
Tambien he provado cosas mas concretas como:
- Código: Seleccionar todo
void espera(void)
{
SDL_Event event;
while(1)
{
SDL_PollEvent(&event);
if(event.type == SDL_KEYDOWN)break;
printf("no hay tecla apretada\n");
}
}
Y nada.
Obtengo una preciosa columna de "no hay tecla apretada"s, que no se deja de escribir hasta que, de nuevo, mato el proceso.
Tambien he provado algunos ejemplos sacados directamente de la documentacion de SDL y lo mismo: nada. Como si no existieran eventos en mi ordenador.
Por cierto, por si a alguien se le ocurre preguntar, todo esto lo compilo en gcc en una terminal de kubuntu corriendo en un Pentium 4 que tiene unos 4 años (osea que no és una anticualla) con el comando:
g++ -Wall -lSDL Prueva.cpp, -o prueva
Alguien tiene alguna idea al respeto?
Gracias de nuevo







