#!/usr/bin/perl use strict; use warnings; use Data::Dumper; # input devide # bei mir ist die Tastatur "/dev/input/event1" my $input=shift(@ARGV) || "/dev/input/event1"; # die länge von time ist # auf einem 64BitOS 8 Byte lang, # auf einem 32BitOS 4 Byte lang! my $time_lenth=(`uname -m`=~/_64/)?8:4; # heraus finden welche läng es ist! open(my $fh, '<', $input) or die("ERROR open $input ($!)\n"); binmode($fh); while(1) { eval{ local $SIG{ALRM}=sub{die}; while(1) { my $buffer; # Ein Event einlesen alarm(1); read($fh,$buffer,$time_lenth+4+2+2+4); alarm(0); if(defined($buffer)) { # Ein event setzt sich aus # time, utime, eventtype eventcode und eventvalue zusammen. my ($time,$utime,$type,$code,$value)=unpack(($time_lenth==4?'L':'Q').'LSSl',$buffer); print localtime($time).", $utime ==> $type,$code,$value\n"; } } }; sleep(1); print localtime()."\n"; } close($fh);