SDL : récupérer le clavier en plusieurs fois

Fermé
astrocurieux - 21 mars 2016 à 19:29
paly2 Messages postés 254 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 - 3 juin 2016 à 16:56
Bonjour les pros,

je me bagarre avec la SDL depuis 24h mais pas moyen de trouvé une solution a mes problème. je vais les mettre en gras pour vous mettre sur les bonnes pistes.

je m'explique, la fonction que voici reçoit un événement clavier en paramètre.
c'est le 'Event' je ne sait ni de qu'elle type il est, ni comment m'en servir ...
logiquement il doit s’agir d'une lettre ou d'un chiffre mais la encore je sait pas vérifier cela.

cette fonction reçoit les événement les uns après les autres, a fur et a mesure que je tape au clavier, et je désire qu'elle soit capable d'enregistrer sous forme de std::string ou de char * les différentes frappes qu'elle aura reçut
(logiquement 9 frappes), mais voila je ne sait pas comment faire .

int     Save_Write(SDL_Surface  *Win, int nbr, SDL_Event event)
{
     static char      name[10] = {0};

     if (nbr < 10)
         sprintf(name, "%d", event);
      Init_Write(Win, name, .....);
   return (nbr);
}


cette fonction n'est bien entendue pas seul, j'ai au dessus d'elle une boucle qui choppe les frappes clavier avec SDL_WaitEvent qui vérifie rapidement si il ne s’agit pas de la touche échap ou entrer puis il l'envoie a ma fonction .

pouvez vous m'aidez ??
je n'est pas la moindre idée de comment la coder ...

1 réponse

paly2 Messages postés 254 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 25
3 juin 2016 à 16:56
event n'est ni un nombre, ni une lettre (au passage, une lettre est un nombre en C) : c'est une structure de type SDL_Event, dont tu trouveras la documentation ici : https://wiki.libsdl.org/SDL_Event

Note qu'un événement n'est pas forcément une touche appuyée. C'est le cas seulement si event.type (qui pour le coup est un nombre) est égal à SDL_KEYDOWN .

Si une touche est appuyée, les informations concernant cette touche se trouvent dans la sous-structure event.key de type SDL_KeyboardEvent, et notamment le nom de la touche dans event.key.keysym.sym (et ce n'est ni un nombre, ni une strucutre, c'est une énumération).

Il te faut donc faire un switch (par exemple) pour faire correspondre à chaque valeur de event.key.keysym.sym un caractère de type char. La documentation t'y aidera: https://wiki.libsdl.org/SDL_Keycode .

Ta fonction doit ensuite ajouter le caractère obtenu à la fin de ta chaîne name.
0