2017-11-01 11 views
0

모듈 Evdev (마지막 링크 참조)를 사용하여 파이썬에서 게임 패드를 사용하는 방법을 찾았습니다. 이 튜토리얼에서는 저자는 하나 개의 게임 패드를 사용하지만, 그는 또한 코드는 다음에 내놓고 여러 gamespads를 사용하는 것이 가능해야한다고, 상태 :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/

+0

그냥 팁 : 파이썬 래퍼를 가지고 있으므로 SDL/SDL2를 사용할 수 있습니다. – rbaleksandar

답변

0

내가 여러 게임 패드를 사용하거나 버튼 입력을 기다리는 동안 다른 코드를 실행하는 코드를 수정하는 방법?

체크 아웃 InputDevice.read

read()
에 대한 문서를 장치에서 여러 입력 이벤트를 참조하십시오. InputEvent 인스턴스를 생성하는 생성기 객체를 반환합니다. 현재 사용 가능한 이벤트가없는 경우 BlockingIOError을 발생시킵니다.

선택하면 입력 이벤트를 사용할 수있을 때까지 차단됩니다. 대신 BlockingIOError를 얻을 때까지 이벤트를 읽을 수 있습니다. 그리고 다음 게임 패드로 계속 진행하거나 메인 루프에서 수행해야하는 다른 작업을 수행하십시오.

또한 InputDevice.read_one

read_one()
읽기 사용을 고려하고 InputEvent의 인스턴스로 단일 입력 이벤트를 반환 할 수 있습니다.

보류중인 입력 이벤트가없는 경우 None을 반환하십시오.