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
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
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.
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
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.
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
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 :
En gros, avec les scancode, le clavier est vu un peu comme un joystick de 100 touches.Envoyé par sdl2
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)
Surtout pas, je jamais faire celà. votre jeux ne tournera pas correctement sur un autre PC...Envoyé par Neyort
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.
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.
Je voudrais me corriger au niveau du lien :
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.
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; } }
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager