2017-04-18 2 views
4

Je veux que mon programme python simule une entrée de contrôleur XBox. Les deux boutons analogiques et les boutons marche/arrêt si possible.Simulation de l'entrée du contrôleur XBox avec Python

J'ai trouvé des sujets sur la simulation d'entrée du clavier avec ctypes en python, par exemple ici: Python simulate keydown

Est-il possible de simuler semblable à un « keydown » sur un clavier normal ou la souris?

Répondre

3

Dans le cas où une personne ayant les mêmes problèmes trouveront ce fil:

J'ai résolu le problème avec vJoy, pyVJoy et x360ce. VJoy fournit un SDK et un pilote pour simuler les périphériques d'entrée. Vous pouvez avoir des joysticks, des gamepads, etc. PyvJoy vous permet d'accéder à ces pilotes et de simuler l'entrée dans python. https://github.com/tidzo/pyvjoy pyvJoy utilise des valeurs comprises entre 0 et 32767 pour les sticks "analogiques". Par exemple, pour obtenir le pouce-stick gauche d'un contrôleur xbox dans une position neutre, vous mettez le XAxis et YAxis dans 1/2 de 32767.

Donc pour moi ayant des valeurs d'entrée entre 0 et 1 je les multiplie avec ces valeurs. Dans mon code, il ressemble un peu à ceci:

MAX_VJOY = 32767 
self.j = pyvjoy.VJoyDevice(1) 

def play_function(self,X,Y,Z,XRot): 
    self.j.data.wAxisX = int(X * self.MAX_VJOY) 
    self.j.data.wAxisY = int(Y * self.MAX_VJOY) 
    self.j.data.wAxisZ = int(Z * self.MAX_VJOY) 
    self.j.data.wAxisXRot = int(XRot * self.MAX_VJOY) 
    j.update() 

Vous pouvez également mettre à jour les boutons « binaire »/« numérique » de cette façon, la page github pyvjoy a quelques autres exemples. Essayez d'utiliser cette application joystick pour le calibrage: http://www.planetpointy.co.uk/joystick-test-application/

La dernière partie utilise x360ce, ce qui est fait est le tour vJoy « DigitalInput » Devide dans un dispositif de XInput. Donc, le PC/jeu pense que c'est un contrôleur Xbox 360 ou Xbox One. Cette dernière partie est nécessaire que pour certains jeux qui ne permettent que les contrôleurs de Xbox officiels, comme GTA 5. Vous pouvez obtenir x360ce d'ici: http://www.x360ce.com/

Tout cela combiné me permet de jouer à ces jeux par python. J'ai appris que l'utilisation de WASD pour former un réseau de neurones ne fonctionne pas très bien car il agit toujours à l'extrême, car il permet seulement 1 ou 0 pour les pressions sur les boutons. Avec ces contrôles, vous pouvez obtenir des contrôles de jeu plus souples.