2017-04-18 61 views
4

我想讓我的python程序模擬XBox控制器輸入。 如果可能,兩個模擬拇指棒和開/關按鈕。使用Python模擬XBox控制器輸入

我發現了大約有ctypes的Python中模擬這裏鍵盤輸入,例如主題: 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的頁面有幾個例子。 嘗試使用此Joystick應用程序進行校準:http://www.planetpointy.co.uk/joystick-test-application/

最後一部分是使用X360CE,將vJoy「DigitalInput」設置爲XInput設備。所以PC /遊戲認爲它是一個真正的Xbox 360或Xbox One控制器。只需要一些比賽,只允許官方的Xbox控制器,像GTA 5 你可以從這裏得到X360CE這最後一部分:http://www.x360ce.com/

所有這一切相結合,使我通過蟒蛇玩這些遊戲。我瞭解到,使用WASD來訓練神經網絡並不會工作得太好,因爲它總是會出現極端情況,因爲它只允許按下1或0。有了這些控件,您可以獲得更流暢的遊戲控制。