最近、pyglet-usersグループでこの質問をしましたが、応答があったので、代わりにここで試しています。
Pygletを拡張して、lircでサポートされている赤外線入力デバイスを使用できるようにしたいと思います。以前にPyGameでpyLirc(http://pylirc.mccabe.nu/)を使用しましたが、代わりにPygletを使用するようにアプリケーションを書き直したいと思います。
ボタンが押されたかどうかを確認するには、通常、pyLircをポーリングして、キューにボタンが押されたかどうかを確認します。
私の質問は、pyLircを統合するためのPygletの正しい方法は何ですか?
現在のウィンドウキーボード/マウスイベントと同じように機能するかどうかを確認したいのですが、どこから始めればよいかわかりません。
新しいEventDispatcherを作成できることはわかっています。この場合、新しいタイプのイベントを登録し、ポーリング後に次のようにディスパッチできます。
class pyLircDispatcher(pyglet.event.EventDispatcher):
def poll(self):
codes = pylirc.nextcode()
if codes is not None:
for code in codes:
self.dispatch_event('on_irbutton', code)
def on_irbutton(self, code):
pass
しかし、pyglet.app.run()を使用する場合、それをアプリケーションのメインループに統合してpoll()を呼び出し続けるにはどうすればよいですか?また、このeventdispatcherをウィンドウにアタッチして、マウスやキーボードのディスパッチャーと同じように機能させるにはどうすればよいですか?
pyglet.clock.schedule_intervalを使用して定期的にpoll()を呼び出すようにスケジューラーを設定できることがわかりましたが、これは正しい方法ですか?