2017-04-18 15 views
4

PythonのプログラマにXBoxコントローラの入力をシミュレートさせます。 可能であればアナログの親指スティックとオン/オフボタンの両方。PythonでXBoxコントローラの入力をシミュレート

私はここに、たとえば、Pythonでのctypesでキーボード入力をシミュレートに関するトピックを見つけました: Python simulate keydown

は、それは通常のキーボードやマウスの「KeyDownイベント」に似て、それをシミュレートすることは可能ですか?同じ問題を抱えて

答えて

3

場合誰かがこのスレッドを見つける:

は私がvJoy、pyVJoyとx360ceで問題を解決しました。

vJoyは、入力デバイスをシミュレートするSDKとドライバを提供します。ジョイスティック、ゲームパッドなどを持つことができます。 PyvJoyでは、これらのドライバにアクセスし、Python内部の入力をシミュレートすることができます。 https://github.com/tidzo/pyvjoy pyvJoyは "アナログ"スティックに0〜32767の値を使用します。 たとえば、xboxコントローラの左手のつまみを中立位置にするには、XAxisとYAxisを32767の1/2に入れます。

0と1の間の入力値を持つ私にとっては、この値。 私のコードでは、それはちょっと次のようになります。

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() 

ます。また、「バイナリ」/「デジタル」ボタンをこのように更新することができ、pyvjoyのgithubのページには、さらにいくつかの例があります。 キャリブレーションのために、このジョイスティックのアプリを使用してみてください:http://www.planetpointy.co.uk/joystick-test-application/

最後の部分はX360CEを使用して、何んであることはXInputのデバイスにvJoy「DigitalInput」Devideを回しています。したがって、PC /ゲームでは、実際のXbox 360またはXbox Oneコントローラと考えられます。この最後の部分のみが唯一の公式Xboxのコントローラを許可するいくつかのゲームのために必要とされ、GTA 5 のようにあなたはここからX360CEを取得することができます。http://www.x360ce.com/

このすべてが組み合わさは私のpythonを通じてこれらのゲームをプレイすることができます。 WASDを使用してニューラルネットワークをトレーニングすることは、ボタンが押した場合に1または0しか許可しないため、常に極端に機能するため、うまく機能しないことを知りました。これらのコントロールを使用すると、よりスムーズなゲームコントロールを得ることができます。

関連する問題