2016-08-07 2 views
0

I a используя lirc for python. Это работает очень хорошо, но я пропускаю одну функцию: в моих тестах был отправлен только код, когда была нажата кнопка. Теперь я хочу напечатать код, пока нажата клавиша. Другими словами, функцию следует запускать «клавишей вниз» и останавливать «ключ вверх». Использование только lirc.nextcode() не работает, потому что фиксируется только событие «вниз».python lirc keyup function?

Итак, есть ли какой-либо трюк для обнаружения «ключа вверх» с помощью python?

ответ

0

В lirc нет такой функции. Подумайте об этом так: инфракрасный сигнал от пульта либо получен, либо нет, нет такой вещи, как событие keyup, даже событие keydown.

Вам придется запрограммировать свои собственные события и ключевые события. Посмотрите, как вы можете создавать файлы конфигурации, в частности, часть просрочки: http://www.lirc.org/html/configure.html Настройте так, чтобы в течение нескольких дней отправлялось много событий.

Затем положите lirc в неблокирующий режим (см. https://github.com/tompreston/python-lirc). Затем вы можете перебрать lirc.nextcode(), и если он не возвращает событие или не возвращает событие для другого ключа, у вас есть событие с ключом.

+0

Используя 'mode2 -d/dev/lirc0' и нажав кнопку, я вижу, что сигналы принимаются непрерывно. Я не уверен, как может помочь опция задержки конфигурации lirc, потому что она просто игнорирует некоторые повторы. – vtni

0

На самом деле, lircd имеет --release вариант, который генерирует синтетические события отпускания, смотрите страницу руководства на http://lirc.org/html/lircd.html

Существует также lircd-uinput надстройку, которая питает ядро ​​с LIRC событий нажатия кнопок. Эти события доступны на устройстве/dev/input, в комплекте с событиями повторения и выпуска. См. Справочную страницу lircd-uinput: http://lirc.org/html/lircd-uinput.html.