Python 如何在XBOX One控制器上拆分触发器?

Python 如何在XBOX One控制器上拆分触发器?,python,pygame,xbox-one,Python,Pygame,Xbox One,我希望能够独立检测触发器拉力,但触发器似乎共享一个轴 我在MSDN文档中没有看到Xbox One控制器上的任何内容,但对于Xbox 360控制器,DirectInput触发器共享轴,XInput为每个触发器提供单独的轴。这表明pygame使用的是DirectInput而不是Xinput,但我不知道如何强制pygame使用Xinput (如何)我可以强制pygame使用xinput而不是直接输入? 如果这真的不可行,我愿意使用另一种语言 我正在使用此脚本从控制器读取输入: import pygam

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

我在MSDN文档中没有看到Xbox One控制器上的任何内容,但对于Xbox 360控制器,DirectInput触发器共享轴,XInput为每个触发器提供单独的轴。这表明pygame使用的是DirectInput而不是Xinput,但我不知道如何强制pygame使用Xinput

(如何)我可以强制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 One Spectra controller上):

首先:

发件人:

自2011年起,
XInput
用于
xbox360
控制器,而
DirectInput
用于任何控制器

第二:

Pygame是一个SDL绑定

因此
pygame
可以拥有
XInput
支持,如果
SDL
拥有。遗憾的是,
SDL
没有。 原因是我以前写的,
DirectInput
更受欢迎。 另外,请查看:

如果愿意,您仍然可以围绕
xinputapi
编写包装器

编辑:


您链接的回购使用ctypes围绕XInput API创建包装。

感谢您的帮助!