我希望能够独立检测触发器的拉动,但触发器似乎共享一个轴。

我没有在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创建包装器。

09-26 00:21