• [^] # Re: Raccourcis claviers

    Posté par . En réponse à la dépêche Dernières évolutions autour de 0 A.D.. Évalué à 2.

    Je viens de faire une recherche, apparemment la méthode 1 est une amélioration de la SDL 1.3, qui était d’après ce que j’ai compris la version en cour de dev de l’actuelle SDL 2.0

    non, je code avec cette lib (donc je la connais un peu) c'est bien en version 1.2 ( non pas en 1.3/2.0)

    Le rapport de bug signale que dans les versions de dev de la sdl 2.0 il y avait un bug sur certaines touches, c'est du au recodage quasi-complet de la lib, ca ne signifie en rien que ça ne marchait pas avant (d'ailleurs il est précisé qu'en version 1.2 ces touches spéciales étaient dans le block des SDLK_WORLD*)

    Ensuite, je ne sais pas ce que tu apelles "methode 1", je préfère les nommer "logique/unicode" et "physique/scancode".
    Je ne sais pas laquelle te semble ne pas marcher, mais le fait que tu trouves que l'une est OK, va bien dans le sens : si le dev veux le faire, il peut, ce n'est un bug de la sdl.

    Moi je préconise personnellement la possibilité de modifier les touches ingame, c'est à dire que le dev va lire les scancode (par exemple) et attribuer ces scancode à des actions. Par exemple, pour definir "tirer", dans l'ecran de redefinition l'utilisateur appuiera sur la touche X de son clavier (peu importe où elle se trouve) le clavier retourne un code (par exemple SDLK_F1). Durant le jeu, le moteur recevra ce même scancode SDLK_F1 et accomplira l'action correspondante : tirer. c'est simple.

    L'autre solution maintenant:
    Celle qui passe par l'OS, ca marche aussi (mais c'est vrai que j'ai pas essayé de pebo) ca se base sur le principe que le systeme est bien parametré (c'est à dire que le clavier pebo est reconnu comme tel) quand sdl reçoit un code unicode, alors oui on risque de recevoir des caracteres tordus, mais quand l'utilisateur appuye sur la touche A de son clavier, le caractere unicode recupé est bien un 'a' quelque soit la position de cette touche. ensuite si le dev ne veux pas s'encombrer avec des caractère sur 16 bits, c'est son affaire (et je le comprends d'ailleurs) mais la encore rien d'impossible : ce n'est pas un BUG, c'est jusque que c'est penible. Moi, dans ce cas, je coupe (avec & 0x7F) ce qui laisse de coté les caractères non accentué. mais de toute facons je n'utilise cette solution que quand je ne désire pas faire d’écran de modification de touche.

    voilà.