Hola, buen día.
Efectivamente existe una forma de obtener el carácter que representa la
pulsación de una tecla: Cuando se produce un evento de tipo "KEYDOWN",
SDL devuelve una unión con algunos atributos. Entre ellos encontrarás uno
bajo el nombre "unicode". Este atributo (o registro) representa la
tecla pulsada.
Para que SDL complete ese atributo con la información que necesitas debes
activar el soporte "unicode" de tu aplicación, te dejo un ejemplo completo de
programa que realiza esa tarea:
=====
#include "SDL.h"
int main(void)
{
SDL_Event event;
SDL_Surface * screen;
int salir = 0;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_EnableUNICODE(1);
screen = SDL_SetVideoMode(320, 200, 16, 0);
while (!salir)
{
SDL_PollEvent(&event);
switch (event.type)
{
case SDL_KEYDOWN:
printf("Ha pulsado: %c (%d)\n", \
event.key.keysym.unicode,
event.key.keysym.unicode);
break;
case SDL_QUIT:
salir = 1;
break;
default:
break;
}
SDL_Delay(1);
}
printf("Pulse la tecla ESC para salir del programa \n");
return 0;
}
=====
Cuando inicias el programa, crea una ventana de color negro. Puedes
pulsar cualquier tecla y en la pantalla de salida del programa se imprime
el carácter y su representación numérica. Por ejemplo, si pulsas "@", "ñ" y ";"
observarás en pantalla algo así
=====
Ha pulsado: @ (64)
Ha pulsado: ñ (241)
Ha pulsado: ; (59)
=====
bueno... mas o menos así. En realidad se imprime muchas veces por cada
tecla, pero puedes reducir la velocidad de repetición y el problema se resulve.
Probé este ejemplo en GNU/Linux, incluso cambiando el mapa de teclado mientras
la aplicación estaba corriendo, te dejo el archivo "Makefile" para
compilar el programa:
=====
CFLAGS= `sdl-config --cflags` -Wall
LDFLAGS=`sdl-config --libs`
teclado: teclado.o
=====
Es todo, si te resulta útil este ejemplo podemos extenderlo para
hacer un mini-programa en Losersjuegos, estamos necesitando
ejemplos....:
http://www.losersjuegos.com.ar/referencia/ejemplos/ejemplos.php
Saludos.
--
Hugo Ruscitti
www.losersjuegos.com.ar
Sí Javier, no hay problema... me gustaría ayudar.
Saludos.
--
Hugo Ruscitti
www.losersjuegos.com.ar