我希望能够独立检测触发器的拉动,但触发器似乎共享一个轴。
我没有在MSDN文档中的Xbox One Controller 上看到任何东西,但是对于Xbox 360 Controller ,DirectInput触发器共享该轴,而XInput为每个触发器提供单独的轴。这表明pygame使用DirectInput而不是Xinput,但是我不知道如何强制pygame使用Xinput。
(如何)我可以强制pygame使用xinput而不是直接输入?
如果这确实不可行,我将愿意使用其他语言。
我正在使用此脚本从 Controller 读取输入:
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 One Spectra Controller 上):https://github.com/r4dian/Xbox-360-Controller-for-Python
最佳答案
第一的:
从https://en.wikipedia.org/wiki/DirectInput#DirectInput_vs_XInput:
第二:
因此,如果pygame
拥有XInput
,则可以支持SDL
。可悲的是,SDL
没有。
原因是我之前写的,DirectInput
更加流行。
还要 checkout :
http://forums.libsdl.org/viewtopic.php?t=6352&sid=35bdc1b1615f9ea081671ff548a7e360
如果愿意,您仍然可以围绕XInput API
编写包装器。
编辑:
您链接的存储库使用ctypes围绕XInput API创建包装器。