IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Evenements claviers touches numériques


Sujet :

SDL

  1. #1
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut Evenements claviers touches numériques
    Bonjour,
    problème très étrange qui m'est apparu en programmant en C avec SDL.

    Lorsque j'utilise des évenements sur le pavé numérique de mon clavier ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(SDL_WaitEvent(&evenement)==1){
    				if(evenement.key.keysym.sym==SDLK_KP1){
    					printf("Touche 1 appuyée.\n");
    					break;
    				}
    }
    Dans ce cas il s'affiche:
    Touche 1 appuyée.

    Mais lorsque j'utilise des évenements sur les touches numériques(au dessus des lettres) de mon clavier ça ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(SDL_WaitEvent(&evenement)==1){
    				if(evenement.key.keysym.sym==SDLK_1){
    					printf("Touche 1 appuyée.\n");
    					break;
    				}
    }
    Dans ce cas il ne s'affiche rien.

    Mon calvier est AZERTY je suis sous un système Debian GNU/Linux.
    Peut être que quand j'appuie sur mes touches il concidère que j'appuie sur:
    &é"'(-è_çà
    au lieu de:
    1234567890

    Car je sais que les utilisateurs de claviers américains QWERTY accèdent à leurs numéros sans utiliser le combo SHIFT+touche numérique.
    Enfin même avec SHIFT, je n'arrive pas à faire fonctionner ce genre d'évenement clavier.

    Que dois-je faire?
    Avez-vous déjà rencotré ce problème?
    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut
    Le problème vient peut-être du fait que Shift + touche numérique n'est pas pareil que l'appui de la touche numérique.

    Shift provoque un état particulier de la touche.
    Est-ce qu'en QWERTY le 1 numérique est la même touche ?

  3. #3
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut 1 numérique
    Citation Envoyé par Captain_JS
    Le problème vient peut-être du fait que Shift + touche numérique n'est pas pareil que l'appui de la touche numérique.

    Shift provoque un état particulier de la touche.
    Est-ce qu'en QWERTY le 1 numérique est la même touche ?
    En QWERTY, le 1 numérique n'est qu'une seule touche. Mais j'aurai pensé que si j'utilisais ma touche AZERTY "&" ça aurait marché...Mais nen...Aucune réaction du programme...
    Enfin ça m'étonne que personne n'ai rencontré le même problème que moi Beaucoup de français doivent utiliser SDL et rencontrer ce problème.

  4. #4
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    chez moi ça fonctionne très bien SDLK_1 en appuyant sur shift puis la touche & (donc le 1...)

    verifie que ça ne vienne pas d'ailleurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while(SDL_PollEvent(&event)){
    	switch (event.type){
    		case SDL_KEYDOWN:
    			key=event.key.keysym.sym;
    				if(key==SDLK_1){
    					...
    			}
    			....
    	}
    	....
    }

  5. #5
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par loka
    chez moi ça fonctionne très bien SDLK_1 en appuyant sur shift puis la touche & (donc le 1...)

    verifie que ça ne vienne pas d'ailleurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while(SDL_PollEvent(&event)){
    	switch (event.type){
    		case SDL_KEYDOWN:
    			key=event.key.keysym.sym;
    				if(key==SDLK_1){
    					...
    			}
    			....
    	}
    	....
    }
    Tu es sous quel système? Windows?

  6. #6
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    ceci marche sous windows xp et mandrake chez moi, j'ai pas essayer ailleurs.

  7. #7
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut
    Moi j'ai essayé avec un autre clavier et toujours aucune réaction lorsque j'appuie sur la touche numérique "1". Peut être que c'est un bug spécifique à Debian ou j'ai mal configuré mon OS.

  8. #8
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    essayes de faire un programme qui recupere toutes les touches de ton clavier, ainsi tu seras fixé (en cherchant un peu tu en trouveras un tout fait déjà, j'ai la flemme d'aller le rechercher ^^)

  9. #9
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut test
    Ca y est j'ai testé avec un petit programme SDL:
    Touche pressée : 38
    lorsque j'appuie sur "1" du clavier.

    Or cette touche ne correspond à aucune touche sur:
    /usr/include/SDL/SDL_keysym.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
            SDLK_0                  = 48,
            SDLK_1                  = 49,
            SDLK_2                  = 50,
            SDLK_3                  = 51,
            SDLK_4                  = 52,
            SDLK_5                  = 53,
            SDLK_6                  = 54,
            SDLK_7                  = 55,
            SDLK_8                  = 56,
            SDLK_9                  = 57,
    ...
    Normalement j'aurai donc du avoir l'affichage:
    Touche pressée : 49

    Pourquoi cette différence?
    Peut être parce que ce n'est pas "1" qui est appuyé mais "&" avec un clavier AZERTY.

    Faut-il que je créé moi même mes SDL_K* dans ce fichier?

  10. #10
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut
    Ah si je ne l'avais pas vu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    SDLK_AMPERSAND          = 38
    ...
    Donc cette touche est bien repertoriée

    Dans mon programme il faut que je mette SDLK_AMPERSAND et pas SDLK_1.

    Bon...Problème résolu je pense.

  11. #11
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    si tu veux faire un code portable, essayes de tester sous windows/autres nux ton code afin de voir si ça fonctionne toujours après tes modifs.

    je pense je testerais ça de mon coté aussi pour la curiosité.

  12. #12
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut
    OK n'hésite pas à me donner un rapport sur ce sujet de ce que tu as remarqué.

  13. #13
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    pas de problemes par contre je ferais ça seulement dans 1 à 2 semaines car là j'ai pas vraiment le temps

  14. #14
    Membre régulier Avatar de YuGiOhJCJ
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 206
    Points : 114
    Points
    114
    Par défaut
    pas de soucis tu ne t'engage pas c'est juste si tu as le temps

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [c#] Evenements clavier sur listview
    Par mikyfpc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/11/2005, 12h35
  2. [GLUT] Gestion clavier, touches concurentes
    Par djfab dans le forum OpenGL
    Réponses: 9
    Dernier message: 04/05/2005, 00h25
  3. Evenement clavier sur toute l'interface
    Par Guybrush dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/02/2005, 12h13
  4. Problème evenement clavier sous fire fox.
    Par fxp17 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/01/2005, 15h59
  5. Ecouter les evenements clavier et souris
    Par init dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/11/2004, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo