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 :

Clavier en QWERTY


Sujet :

SDL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Clavier en QWERTY
    Salut a tous,
    Voilà j'ai un problème, la SDL 2.0 considère mon clavier comme un QWERTY avec les Scan codes...
    Quelqu’un connait il une façon d'indiquer à la SDL 2.0 que l'on utilise un AZERTY?

    Merci d'avance,
    Val

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je n'ai pas essayé, mais je ne pense pas. Cela peut être contournable avec une option pour l'utilisateur afin de regarder une ou l'autre touche.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Salut!

    Oui c'est possible!
    En effet, j'avais exactement le même problème mais c'est réglé!
    Voilà comment faire

    Tu places le fichier joint dans le dossier où tu as installé ta sdl et tu remplaces le fichier du nom de SDL_keysym par celui là

    PS: fait une sauvegarde de l'autre fichier au cas ou

    Enjoy!

    Neyort
    Fichiers attachés Fichiers attachés

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    C'est un peu trop bourrin de remplacer le fichier d'entête de la SDL. Il faut mieux faire un table (qui fait des liaisons key/value) que l'on charge différemment suivant une option.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Oui c'est vrai mais après moi j'ai trouvé cette solution pratique car pour mes projets, toutes les personnes les utilisant utilisent des claviers azerty

    Sinon oui tu fais une fonction qui récupère l'évènement et retourne sa "conversion" en azerty

    Mais je pense que R3TURN_0 n'est pas près de répondre... ^^

    Salut,

    Neyort

  6. #6
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par R3TURN_0 Voir le message
    Voilà j'ai un problème, la SDL 2.0 considère mon clavier comme un QWERTY avec les Scan codes...
    C'est tout simplement parcequ'il ne faut pas utiliser les scancode justement. il faut utiliser les keycode.

    Voir le guide de migration a ce propos : http://wiki.libsdl.org/MigrationGuide#Input
    que je site ici :
    Citation Envoyé par sdl2
    Keycodes are meant to be layout-dependent. Think of this as "the user pressed the key that is labelled 'Q' on his specific keyboard."

    In example, if you pressed the key that's two keys to the right of CAPS LOCK on a US QWERTY keyboard, it'll report a scancode of SDL_SCANCODE_S and a keycode of SDLK_S. The same key on a Dvorak keyboard, will report a scancode of SDL_SCANCODE_S and a keycode of SDLK_O.
    En gros, avec les scancode, le clavier est vu un peu comme un joystick de 100 touches.

    Alors qu'avec le keycode, sdl fait la conversion... en demandant à ton OS de faire le mapping... heureusement on est au XXIe siecle, pas besoin de le faire soit même

    Et ca marche nickel.
    Pour faire simple : pour les lettres tu oublis les scancodes (sauf pour les touches speciales : shift, ctrl... si tu veux)

    Citation Envoyé par Neyort
    Tu places le fichier joint dans le dossier où tu as installé ta sdl et tu remplaces le fichier du nom de SDL_keysym par celui là
    Surtout pas, je jamais faire celà. votre jeux ne tournera pas correctement sur un autre PC...

    Citation Envoyé par LittleWhite Voir le message
    Il faut mieux faire un table (qui fait des liaisons key/value) que l'on charge différemment suivant une option.
    Non non, SDL le fait tout seul (keycode)... Bon, ce n'est pas une revolution non plus hein : ca marchait déjà avec la bonne vieille version 1.2 grace à SDL_EnableUNICODE.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Au pire, avec SDL 1.2 je procédais comme ça :

    http://www.jeuxvideo.com/forums/1-47...ntf-blabla.htm

    Si ça peut en aider certains. En gros ça faisait parfaitement la conversion des touches peut importe le clavier ! C'est une vraie solution. Après pour SDL 2.0, pas encore eu le temps de voir comment ça fonctionne.

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Je voudrais me corriger au niveau du lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Auteur : VampireGirl (Jenny Pans)
     
    /* Bibliothèques SDL 1.2 */
    #include <SDL.h>
     
    typedef struct
    {
        SDL_Event event;
        SDLKey keys[SDLK_LAST];
        bool keystates[SDLK_LAST];
        bool quit;
    } Event;
     
    /* ---------------------------------- */
    /* Fonction pour gérer les événements */
    /* ---------------------------------- */
     
    /* Gère les événements. L'unicode est géré. */
    void updateEvents(Event *events)
    {
        while(SDL_PollEvent(&events->event))
        {
            switch(events->event.type)
            {
            case SDL_KEYDOWN:
                unicodeTranslation(events);
                events->keystates[events->keys[events->event.key.keysym.sym]] = true;
                break;
     
            case SDL_KEYUP:
                events->keystates[events->keys[events->event.key.keysym.sym]] = false;
                break;
     
            case SDL_QUIT:
                events->quit = true;
                break;
     
            default:
                break;
            }
        }
    }
     
    /* Gère l'unicode si il le faut */
    void unicodeTranslation(Event *events)
    {
        if(events->event.key.keysym.unicode > 0 && events->event.key.keysym.unicode < 256)
        {
            events->keys[events->event.key.keysym.sym] = events->event.key.keysym.unicode;
        }
        else
        {
            events->keys[events->event.key.keysym.sym] = events->event.key.keysym.sym;
        }
    }
    C'est plus clair. Et ça marche parfaitement. Si vous utilisez SDL 1.2 et que vous voulez une conversion du clavier sans devoir faire 36 manipulations.

    Après c'est ma méthode, vous ne gérez peut être pas les événements de la même façon... Le principe reste le même sinon.

Discussions similaires

  1. Clavier devenu qwerty
    Par donny dans le forum Périphériques
    Réponses: 8
    Dernier message: 07/04/2009, 16h00
  2. [TP] Clavier en QWERTY sous Vista
    Par triffon dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 28/11/2007, 08h39
  3. Problème clavier azerty/qwerty
    Par lapos dans le forum SDL
    Réponses: 13
    Dernier message: 14/08/2007, 20h05
  4. Répartition claviers Azerty/Qwerty
    Par cjacquel dans le forum Périphériques
    Réponses: 2
    Dernier message: 09/12/2006, 15h59
  5. [Info] Modification type clavier azerty à qwerty
    Par giordano dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 17/02/2006, 21h42

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