Voir la version complète : problems à la saisie clavier
bonjour, j'ai quelque problems quand je fais une saisie clavier pour recuperer un texte.
je recupere les caracters comme ceci:
texte[lettre] = Evenement.key.keysym.unicode;
1er: je peut pas recuperer les majuscules, les chiffres ect..., comment faire pour que la touche shift soit pris en compte ?
2em: je verifis une ocndition avant de les choper pour eviter la repetitions:
if ( (texte[lettre-1] != Evenement.key.keysym.sym)
|| (SDL_GetTicks()>TempDeLaDernierToucheAppuyer+200) )
et ben sa marche, mais pas avec les touches du numpad :00000005:
3eme: quand on appuy sur les fleches directionnel sa fais planter, on peut plus continuer de taper:/
deathangel
04/09/2005, 13h36
la touche shit
ca se fume ??
oki je sors...
Je pense que ca pourra t'aider, moi je l'ai mis en favoris, SDLKey- SDL Keysym Definitions :
lien (http://www.fifi.org/cgi-bin/man2html/usr/share/man/man3/SDLKey.3.gz)
1er: Va voir ici (http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fGetModState) Ca te montrera comment utiliser les "modifier keys" (CTRL,SHIFT....)
2è : Pourquoi simplement ne pas utiliser SDL_SetKeyRepeat. Tu n'auras pas de prob avec le répétition.
3è : Ca doit être un problème avec ton tableau de touche. Comment le récupère s-tu?
1) je vais voir sa en dernier :)
2)j'utilise pas SDL_SetKeyRepeat() car il y a d'autre fonction qui on bession du clavier en meme temsp. mais je vient de voir que les conditions ne rentre jamais en compte oO voila le bout de code:
switch (Evenement.type)
{
case SDL_KEYDOWN:
/*[...]*/
if ( (EnCours) && (lettre < 10) && (texte[lettre-1] != Evenement.key.keysym.sym)
|| (SDL_GetTicks()>TempDeLaDernierToucheAppuyer+200)
/*&& (Evenement.key.keysym.unicode != SDLK_RETURN)*/ )
{
texte[lettre] = Evenement.key.keysym.unicode;
TempDeLaDernierToucheAppuyer = SDL_GetTicks();
lettre++;
}
break;
}
les conditions if(EnCours) et if(letrre<10) sont completement ignorées, j'aimerai bien que sa fonctionne la.
Si tu enlevais le OU (||) et un ET (&&) peut-être que la, il seront pris en compte, a moins que tu veuilles les séparer.
hien ? je les veut tous moi, je veut pas virer :]
j'ai quand meme tester sans le OU et sa marche, mais il me le faut aussi !!
sinon pour les touches chifres du numkey sa fais pareil (sa se repette) et pariel aussi: sa plante quan don appuy sur les fleches :/
Avec key, la touche appuyée
if(key>=SDLK_KP0 && key <= SDL_KP9)
key += SDLK_KP0-'0';
Je viens de penser déjà à un problème:
Le problème est que tu récupères les touches au format UNICODE. Il faut alors récupérer l'information avec keysym.sym (Je ne suis pas sur pour ca, mais j'ai pas le temps de vérifier, mais ca m'a tout l'air d'être ca).
Verifie aussi que ton tableau est bien un tableau d'int, en effet SDL gère plus de 255 touches différentes ( ex la touche 0 du pavé numérique correspond à 0x100 soit 1 de plus que la limite des char )
bon ,j'ai un resultat a peu pres correct, les majuscule marche, les touche du hat avec shift ausii ( 12345 ....) avec alt aussi. le seul problem c'est que lorsqu'on appuis sur é ou è, ou ç, ou ¤ l'anti repetition est annuller. et quand on appuis sur la touche supprimer il reconnais pas (il affiche un rectangle) il fais ca aussi lorsqu'on fai un alt + ctrl + une touche.
enfin pour l'instant sa me suffit. mais si quelqu'un a deja fais sa m'interesse :)
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org