Emuler un joystick avec la souris

Résolu
Sweb167 Messages postés 25 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 8 avril 2009 - 14 mars 2009 à 17:43
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 9 avril 2009 à 16:11
Salut.

Il existe une certain nombre de programmes qui permettent de contrôler la souris à l'aide d'un joystick ou d'un joypad. Je souhaiterais pouvoir faire l'inverse. C'est-à-dire que les mouvements de mon trackball émulent ceux du stick analogique d'un joypad et que les deux clics de mon trackball émulent deux des boutons du joypad. Vous vous demandez certainement pourquoi. Et bien parce que je suis une personne handicapée qui peut seulement utiliser un trackball et ses deux boutons pour contrôler son ordinateur. Il se trouve que j'adore les jeux de course de voitures, mais vu que 99% d'entre eux sont uniquement jouable au clavier ou au joystick/joypad , je ne peux plus y jouer. Les jeux comme les GTA (sauf le dernier) permettent de contrôler la direction des véhicules avec la souris. Le seul problème c'est qu'il n'y a aucun indicateur visuel permettant de savoir dans quelle direction sont orientées les roue du véhicule. Avec un joystick, c'est simple, quand on le laisse a sa position 0, les roue sont droite. Vu que la souris ne revient pas toute seule à sa position 0, c'est pas très pratique. Ce que je voudrais risque de pas être simple à programmer. Petite précision, pour contrôler mon clavier, je dispose d'un clavier à défilement que j'utilise avec un seul contacteur. C'est pratique pour par exemple faire Echap dans un jeu mais c'est bien trop lent pour jouer à un jeux de voiture. Voici mon idée (dites moi si ça vous parait faisable) :
imaginons un programme qui fonctionne en arrière plan du jeux, que l'on active ou désactive grâce à une combinaison de touches. Quand il est désactivé, la souris fonctionne normalement et quand il est activé la souris émule le joystick. Ca c'est la première partie , mais la suite risque d'être plus compliqué. Tout d'abord, est-il possible d'afficher par dessus un jeux DirectX en plein écran des graphismes ou des caractères ? Je pense que oui car le programme FRAPS permet par exemple d'afficher le nombre d'images par secondes d'un jeu DirectX dans un coin de l'écran. Imaginons que l'on fasse apparaitre sur l'écran une croix graduée horizontalement et verticalement avec un point qui se déplace en fonction des mouvement du trackball. Quand le point est au centre de la croix, le joystick émulé est à la position 0 (le véhicule a les roues droites et est au point mort). Quand le point se trouve tout en haut à gauche le véhicule accélère à fond et tourne au maximum vers la gauche. Cela émulerait donc parfaitement un stick analogique et on aurait un repère visuel pour l'accélération, le freinage et la direction. Les deux clics du trackball pourrait servir par exemple pour activer la nitro et changer de vue. Mon message est très long mais je voulais être assez précis sur mon idée. Si vous pensez que c'est faisable, dites-le moi. Si oui, est-ce que certains d'entre vous se sentirais de le programmer. Si vous y arriviez, ce serait vraiment génial. Je pourrais le passer à mes amis handicapés et le diffuser sur internet pour tout les autres (en vous citant et en vous remerciant bien sûr). Merci d'avoir pris le temps de me lire.

Bye.

44 réponses

Sweb167 Messages postés 25 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 8 avril 2009 1
8 avril 2009 à 21:05
Salut.
En tout, j'ai testé PPJoy et GlovePIE avec 7 jeux de voitures. Ca fonctionne avec chacun d'eux. Apparemment la souris reste toujours active, même quand c'est un jeu qui n'utilise pas la souris. Récupérer les données de la souris ne devrait pas poser de problème, mais si pour toi c'est plus simple d'utiliser les données du joystick, aucun problème, l'essensiel pour moi c'est qu'à la fin ça fonctionne. J'ai dessiné un repère sur mon fond d'écran. Avec GlovePIE, j'ai créé un second curseur qui se déplace horizontalement sur ce repère. Je joue en mode fenêtre pour voir en permanence mon repère et mon second curseur. C'est pas mal, mais je n'ai que 3 jeux sur 7 qui peuvent fonctionner en mode fenêtre.
Pour les autres, sans repère, c'est vraiment pas pratique. Tu pense avoir le temp de programmer notre idée de repère par dessus les jeux en plein écran ?
Bye, A+.
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
8 avril 2009 à 21:13
Ben pour l'instant, je suis en pleins examens blancs, et puis j'ai mon pack de composants à continuer.
Sinon ce que je te propose c'est de dessiner directement SUR l'écran, par-dessus le jeu. Evidemment ça risque de clignoter beaucoup, et un bout de l'écran sera caché par le repère (mais bon en haut à droite ça ne se voit pas).
Voilà à quoi je pensais ?

Cordialement, Bacterius !
0
Sweb167 Messages postés 25 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 8 avril 2009 1
8 avril 2009 à 22:42
Ok, ce serait bien.
Comment faire pour dessiner directement sur l'écran ?
A tu des conseils ou de idées à me donner à ce sujet ?
Merci de ta patience et de tes réponses Bacterius.
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
9 avril 2009 à 16:11
Eventuellement dessiner directement sur l'écran de cette façon (mais ce n'est PAS propre, donc je vais chercher pour mieux) :

procedure DrawOnScreen;
Var
C: TCanvas;
begin
C := TCanvas.Create
C.Handle := GetWindowDC(GetDesktopWindow); // On récupère l'écran
C.Rectangle(50, 50, 100, 100); // On dessine un rectangle pour exemple
C.Free;
end;

Essaye déjà comme ça, et dis-moi si ça fonctionne chez toi.

Cordialement, Bacterius !
0
Rejoignez-nous