2017-11-01 3 views
0

私はモジュールevdevの(末尾のリンクを参照)を使用して、Pythonでゲームパッドを使用する方法を発見しました。このチュートリアルで は、著者は、唯一のゲームパッドを使用していますが、彼はまた、コードは次のように基づかで複数の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にはPythonラッパーがあるので、SDL/SDL2を使うことができます。 – rbaleksandar

答えて

0

私は、複数のゲームパッドを使用するか、ボタンの入力を待っている間に他のコードを実行するためにコードを変更するにはどうすればよいですか?

InputDevice.read

read()
のドキュメントをチェックアウトデバイスから複数の入力イベントをお読みください。 InputEventインスタンスを生成するジェネレータオブジェクトを返します。現時点で利用可能なイベントがない場合は、BlockingIOErrorを発生させます。

入力イベントが使用可能になるまでの選択がブロックされます。代わりに、私たちがBlockingIOErrorを取得するまでイベントを読み取ることができます。そして、次のゲームパッドに進むか、メインループで行う必要がある他の作業を行います。

またInputDevice.read_one

read_one()
読むの使用を検討してInputEventのインスタンスとして単一入力イベントを返すことがあります。

戻りNone保留中の入力イベントが存在しない場合。

関連する問題