Skip to content

Instantly share code, notes, and snippets.

@jadonk
Created February 28, 2011 23:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jadonk/848252 to your computer and use it in GitHub Desktop.
Save jadonk/848252 to your computer and use it in GitHub Desktop.
Timeout reading a Linux input event
#!/usr/bin/perl
$ENV{'DISPLAY'} = ":0.0";
system("xhost +");
#system("totem --quit");
#system("nice -n -5 totem --fullscreen /home/root/playlist.xml &");
$cmdline_start = "nice -n -5 mplayer /home/root/*.mov &";
system($cmdline_start);
open(FILE, "/dev/input/event0");
binmode(FILE);
while(1)
{
eval
{
local $SIG{ALRM} = sub { die("Alarm!\n") };
alarm(60*28); # 28 minutes
read(FILE, $buf, 16);
alarm(0);
};
if($@)
{
printf("Restarting due to timeout\n");
#system("totem --next");
system("killall -15 mplayer");
sleep(1);
system("killall -9 mplayer");
sleep(1);
system($cmdline_start);
}
else
{
($time1, $time2, $type, $code, $value) = unpack("iissi", $buf);
printf("%f %05d %05d 0x%08x\n", $time1+$time2/1000000, $type, $code, $value);
if($code == 276 && $value == 1) # USER button pressed
{
printf("Restarting due to USER button press\n");
#system("totem --next");
system("killall -15 mplayer");
sleep(1);
system("killall -9 mplayer");
sleep(1);
system($cmdline_start);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment