2016-12-31 52 views
5

我希望能夠獨立檢測觸發器拉,但觸發器似乎共享一個軸。如何在XBOX One控制器上分割觸發器?

我沒有在MSDN文檔的Xbox One控制器上看到任何內容,但對於Xbox 360控制器,DirectInput觸發器共享該軸,並且XInput爲每個觸發器提供了單獨的軸。這表明pygame使用的是DirectInput而不是Xinput,但我不知道如何強制pygame使用Xinput來代替。

(How)可以強制pygame使用xinput而不是直接輸入嗎? 如果這不是真的可行,我會願意使用不同的語言。

我使用這個腳本從控制器讀取輸入:

import pygame 
pygame.init() 

screen = pygame.display.set_mode((400,400)) 
joysticks = [] 

for i in range(0, pygame.joystick.get_count()): 
    joysticks.append(pygame.joystick.Joystick(i)) 
    joysticks[-1].init() 

while True: 
    for event in pygame.event.get(): 
     print event 

編輯:我沒有時間在此刻完全寫出了這一點,但在此期間,我發現這似乎爲我工作(一個Xbox一個譜控制器)此代碼:https://github.com/r4dian/Xbox-360-Controller-for-Python

回答

1

第一:

https://en.wikipedia.org/wiki/DirectInput#DirectInput_vs_XInput

作爲2011 XInputXbox 360控制器,而DirectInput爲任何控制器

第二:

pygame的是一個SDL結合。

因此pygame可以有XInput支持如果SDL有。可悲的是,SDL沒有。 原因是我之前寫的,DirectInput比較受歡迎。 另外檢出: http://forums.libsdl.org/viewtopic.php?t=6352&sid=35bdc1b1615f9ea081671ff548a7e360

如果你願意,你仍然可以編寫一個圍繞XInput API的包裝。

編輯:

您在使用ctypes的掛鉤回購創造繞XINPUT API的包裝。

+0

感謝您的幫助! – AGCodes