使用 Python 模拟 XBox 控制器输入
Simulate XBox Controller Input with Python
我想让我的 python 程序模拟 XBox 控制器输入。
模拟摇杆和 on/off 按钮(如果可能)。
我在 python 中找到了有关使用 ctypes 模拟键盘输入的主题,例如:
Python simulate keydown
是否可以在普通键盘或鼠标上模拟出类似于 "keydown" 的效果?
万一遇到同样问题的人会发现这个帖子:
我用 vJoy、pyVJoy 和 x360ce 解决了这个问题。
vJoy 提供SDK 和驱动来模拟输入设备。你可以有操纵杆,游戏手柄等。
PyvJoy 允许您访问这些驱动程序并在 python 中模拟输入。
https://github.com/tidzo/pyvjoy
pyvJoy 对 "analog" 棒使用 0 到 32767 之间的值。
例如,要使 xbox 控制器的左摇杆处于中立位置,您可以将 X 轴和 Y 轴置于 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()
您也可以通过这种方式更新 "binary"/"digital" 按钮,pyvjoy github 页面有更多示例。
尝试使用此操纵杆应用程序进行校准:http://www.planetpointy.co.uk/joystick-test-application/
最后一部分是使用X360CE,就是把vJoy "DigitalInput" Devide 变成一个XInput 设备。所以 PC/game 认为它是一个真正的 Xbox 360 或 Xbox One 控制器。最后一部分仅适用于某些只允许使用官方 Xbox 控制器的游戏,例如 GTA 5。
您可以从这里获取 X360CE:http://www.x360ce.com/
所有这些结合起来让我可以通过 python 玩那些游戏。我了解到使用 WASD 训练神经网络效果不佳,因为它总是表现得极端,因为它只允许 1 或 0 按下按钮。使用这些控件,您可以获得更流畅的游戏控制。
我想让我的 python 程序模拟 XBox 控制器输入。 模拟摇杆和 on/off 按钮(如果可能)。
我在 python 中找到了有关使用 ctypes 模拟键盘输入的主题,例如: Python simulate keydown
是否可以在普通键盘或鼠标上模拟出类似于 "keydown" 的效果?
万一遇到同样问题的人会发现这个帖子:
我用 vJoy、pyVJoy 和 x360ce 解决了这个问题。
vJoy 提供SDK 和驱动来模拟输入设备。你可以有操纵杆,游戏手柄等。 PyvJoy 允许您访问这些驱动程序并在 python 中模拟输入。 https://github.com/tidzo/pyvjoy pyvJoy 对 "analog" 棒使用 0 到 32767 之间的值。 例如,要使 xbox 控制器的左摇杆处于中立位置,您可以将 X 轴和 Y 轴置于 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()
您也可以通过这种方式更新 "binary"/"digital" 按钮,pyvjoy github 页面有更多示例。 尝试使用此操纵杆应用程序进行校准:http://www.planetpointy.co.uk/joystick-test-application/
最后一部分是使用X360CE,就是把vJoy "DigitalInput" Devide 变成一个XInput 设备。所以 PC/game 认为它是一个真正的 Xbox 360 或 Xbox One 控制器。最后一部分仅适用于某些只允许使用官方 Xbox 控制器的游戏,例如 GTA 5。 您可以从这里获取 X360CE:http://www.x360ce.com/
所有这些结合起来让我可以通过 python 玩那些游戏。我了解到使用 WASD 训练神经网络效果不佳,因为它总是表现得极端,因为它只允许 1 或 0 按下按钮。使用这些控件,您可以获得更流畅的游戏控制。