Недавно я задал этот вопрос в группе пользователей pyglet, но получил ответ, поэтому вместо этого я пытаюсь здесь.
Я хотел бы расширить Pyglet, чтобы иметь возможность использовать инфракрасное устройство ввода, поддерживаемое lirc. Я использовал pyLirc раньше ( http://pylirc.mccabe.nu/ ) с PyGame, и я хочу чтобы переписать мое приложение, чтобы вместо этого использовать Pyglet.
Чтобы узнать, была ли нажата кнопка, вы обычно опрашиваете pyLirc, чтобы узнать, есть ли какие-либо нажатия кнопок в его очереди.
Мой вопрос: как правильно в Pyglet интегрировать pyLirc?
Я бы предпочел, чтобы он работал так же, как текущие события клавиатуры/мыши в окне, но я не уверен, с чего начать.
Я знаю, что могу создать новый 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
Но как интегрировать это в основной цикл приложения, чтобы продолжать вызывать poll(), если я использую pyglet.app.run(), и как мне прикрепить этот диспетчер событий к моему окну, чтобы он работал так же, как диспетчеры мыши и клавиатуры?
Я вижу, что могу настроить планировщик для вызова poll() через равные промежутки времени с помощью pyglet.clock.schedule_interval, но правильно ли это сделать?