Я использую LIRCd для захвата клавиш, которые нажимаю на пульте дистанционного управления, с соответствующим файлом конфигурации.
В соответствии с документацией, я должен дождаться возвращения функции блокировки lirc_nextcode()
и получаюхорошая строка для декодирования, например:
0000000080bf4bb4 00 CURSOR_DOWN myremote
Первая цифра - это значение клавиши, следующая - количество повторений , когда эта клавиша была нажата (здесь 0, так как я ее только нажимали отпустил его), затем имя ключа и имя моего пульта.
В любом случае, я хотел бы обнаружить ключ up моего пульта.
Если я нажимаю кнопку в течение определенного промежутка времени, это то, что я получаю (новая строка каждые ~ 200 мс):
0000000080bf4bb4 00 CURSOR_DOWN myremote
0000000080bf4bb4 01 CURSOR_DOWN myremote
0000000080bf4bb4 02 CURSOR_DOWN myremote
0000000080bf4bb4 03 CURSOR_DOWN myremote
0000000080bf4bb4 04 CURSOR_DOWN myremote
0000000080bf4bb4 05 CURSOR_DOWN myremote
0000000080bf4bb4 06 CURSOR_DOWN myremote
0000000080bf4bb4 07 CURSOR_DOWN myremote
0000000080bf4bb4 08 CURSOR_DOWN myremote
0000000080bf4bb4 09 CURSOR_DOWN myremote
0000000080bf4bb4 0a CURSOR_DOWN myremote
// I let go for 1s and press it again:
0000000080bf4bb4 00 CURSOR_DOWN myremote
Таким образом, второе число увеличивается, когда я длительно нажимаю ключ, но как только я отпущу его и нажму снова, он сбрасывается до 0.
Я хочу иметь возможность обнаруживать момент, когда повтор останавливается .
Теперь я вижу, как я могу реализовать обнаружение нажатия клавиш: если lirc_nextcode()
не треснет после определенногосколько времени я могу считать, что ключ был выпущен.
Я спрашиваю вас: есть ли другой (более правильный ) способ сделать это?
Кнастройка LIRCd может быть?
Или, если нет другого способа сделать это, кроме как с таймером, какова лучшая реализация?Действительно, lirc_getcode()
- это блокировка , поэтому всякий раз, когда срабатывает таймер, мне нужно его вернуть!
edit : кстати, нет lirc
или lircd
тег, было бы неплохо иметь!