gpt4 book ai didi

python - 使用 Python Evdev 实现多个游戏 handle ?

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:34 26 4
gpt4 key购买 nike

我找到了一种在 Python 中使用游戏 handle 的方法,使用模块 Evdev(请参阅末尾的链接)。在本教程中,作者仅使用一个游戏 handle ,但他也指出,应该可以使用基于以下代码的多个游戏 handle :

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 似乎要等到按下按钮为止,因此程序会被中断,直到按下按钮为止。如何修改代码以使用多个游戏 handle 或在等待按钮输入时执行其他代码?或者有比使用 evdev 更好的替代方案吗?

http://ericgoebelbecker.com/2015/06/raspberry-pi-and-gamepad-programming-part-1-reading-the-device/

最佳答案

How can I modify the code to use multiple gamepads or to execute other code while waiting for button-inputs?

查看 InputDevice.read 的文档

read()
Read multiple input events from device. Return a generator object that yields InputEvent instances. Raises BlockingIOError if there are no available events at the moment.

Select 将阻塞,直到输入事件可用。相反,我们可以读取事件,直到收到 BlockingIOError。然后继续下一个游戏 handle ,或者执行主循环中需要完成的任何其他工作。

您也可以考虑使用InputDevice.read_one

read_one()
Read and return a single input event as an instance of InputEvent.

Return None if there are no pending input events.

关于python - 使用 Python Evdev 实现多个游戏 handle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47047297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com