我找到了一种在Python中使用游戏垫的方法,使用模块Evdev (参见末尾的链接)。在本教程中,作者只使用一个游戏垫,但他也指出,应该可以使用基于以下代码的多个游戏垫:
from evdev import InputDevice
from select import select
gamepad = InputDevice('/dev/input/event0')
while True:
r,w,x = select([gamepad], [], [])
for event in gamepad.read():
print(event)Select.select似乎要等到按钮被按下,这样程序才会被插入,直到出现这种情况。如何修改代码以使用多个游戏垫或在等待按钮输入时执行其他代码?或者,是否有更好的替代方法来替代使用evdev?
http://ericgoebelbecker.com/2015/06/raspberry-pi-and-gamepad-programming-part-1-reading-the-device/
发布于 2017-11-01 18:03:07
如何修改代码以使用多个游戏垫或在等待按钮输入时执行其他代码?
查看InputDevice.read的文档
read()从设备读取多个输入事件。返回生成InputEvent实例的生成器对象。如果目前没有可用的事件,则引发BlockingIOError。
选择将阻塞,直到输入事件可用为止。相反,我们可以读取事件,直到我们得到BlockingIOError。然后继续到下一个游戏垫,或者做任何其他需要在主循环中完成的工作。
您还可以考虑使用InputDevice.read_one
read_one()读取并返回单个输入事件作为InputEvent的实例。 如果没有挂起的输入事件,则返回None。
https://stackoverflow.com/questions/47047297
复制相似问题