2024-04-27 18:26:44 发布
网友
我希望我的python程序模拟XBox控制器输入。 如果可能的话,两个模拟拇指杆和开/关按钮。
我在python中找到了用ctypes模拟键盘输入的主题,例如: Python simulate keydown
是否可以模拟它类似于普通键盘或鼠标上的“keydown”?
如果有同样问题的人会发现这个线索:
我用vJoy、pyVJoy和x360ce解决了这个问题。
vJoy提供了一个SDK和驱动程序来模拟输入设备。你可以有操纵杆、游戏板等。。 PyvJoy允许您访问这些驱动程序并在python中模拟输入。 https://github.com/tidzo/pyvjoy pyvJoy使用0到32767之间的值作为“模拟”棒。 例如,要将xbox控制器的左拇指杆置于中间位置,您将XAxis和YAxis置于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”设备转换成XInput设备。所以PC/游戏认为它是一个真正的Xbox360或XboxOne控制器。这最后一部分只适用于某些只允许官方Xbox控制器的游戏,如GTA5。 你可以从这里得到X360CE:http://www.x360ce.com/
所有这些加起来让我可以通过python玩那些游戏。我了解到,使用WASD训练神经网络并不能很好地工作,因为它总是表现得极端,因为它只允许按下按钮1或0。使用这些控件,您可以获得更平滑的游戏控件。
如果有同样问题的人会发现这个线索:
我用vJoy、pyVJoy和x360ce解决了这个问题。
vJoy提供了一个SDK和驱动程序来模拟输入设备。你可以有操纵杆、游戏板等。。 PyvJoy允许您访问这些驱动程序并在python中模拟输入。 https://github.com/tidzo/pyvjoy pyvJoy使用0到32767之间的值作为“模拟”棒。 例如,要将xbox控制器的左拇指杆置于中间位置,您将XAxis和YAxis置于32767的1/2位置。
所以对于输入值在0到1之间的我,我把它们乘以这个值。 在我的代码中,它看起来有点像这样:
您还可以通过这种方式更新“binary/“digital”按钮,pyvjoy github页面还有几个例子。 尝试使用此操纵杆应用程序进行校准:http://www.planetpointy.co.uk/joystick-test-application/
最后一部分是使用X360CE,将vJoy“DigitalInput”设备转换成XInput设备。所以PC/游戏认为它是一个真正的Xbox360或XboxOne控制器。这最后一部分只适用于某些只允许官方Xbox控制器的游戏,如GTA5。 你可以从这里得到X360CE:http://www.x360ce.com/
所有这些加起来让我可以通过python玩那些游戏。我了解到,使用WASD训练神经网络并不能很好地工作,因为它总是表现得极端,因为它只允许按下按钮1或0。使用这些控件,您可以获得更平滑的游戏控件。
相关问题 更多 >
编程相关推荐