Hello teachers, I'm converting a simple perl multimedia script to an event based one, but it seems that I'm missing something very basic because I'm unable to make it work. The script receives commands from Lirc::Client (1.54) via next_codes() which is in blocking state whilst no data is available.
Now I think I need AnyEvent::IO but the script halts the event loop waiting for next_codes #!/usr/bin/perl use strict; use warnings; use 5.010; use Lirc::Client; use AnyEvent; my $lirc = Lirc::Client->new( { prog => 'perl-client', rcfile => "$ENV{HOME}/.lircrc", dev => "/var/run/lirc/lircd", debug => 0, fake => 0, } ); my $ready = AnyEvent->condvar; my $command ; $command = AnyEvent->io ( fh => $lirc->next_codes, poll => "r", cb => sub { say "key: ".$lirc->nextcode; } ); while (1){ system("date"); sleep 1; AnyEvent->condvar->recv; }; with the above code I only get the date, but not the pressed key, each time I press a button in the remote. $ ./test-lirc.pl Wed Mar 9 20:53:59 CET 2016 ^C switching "fh => $lirc->next_codes" by "fh => $lirc->socket" (unprocessed raw events) I get only the date one time and the keys pressed in the remote. $ ./test-lirc4.pl Wed Mar 9 20:51:31 CET 2016 key: VOLUMEDOWN key: VOLUMEUP key: VOLUMEUP ^C is there any way to make work this? Any clue will be welcome. # ~/.lircrc begin prog = perl-client remote = generic-ir button = KEY_VOLUMEDOWN config = VOLUMEDOWN repeat = 2 end begin prog = perl-client remote = generic-ir button = KEY_VOLUMEUP config = VOLUMEUP repeat = 2 end