Linux::Input - Linux input event interface
Example: 1 joystick using event API
my $js1 = Linux::Input->new('/dev/input/event3'); while (1) { while (my @events = $js1->poll(0.01)) { foreach (@event) { } } }
Example: 2 joysticks using joystick API (different event structure)
my $js1 = Linux::Input::Joystick->new('/dev/input/js0'); my $js2 = Linux::Input::Joystick->new('/dev/input/js1'); my $selector = IO::Select->new(); $selector->add($js1->fh); $selector->add($js2->fh); while (my $fh = $selector->can_read) { my @event; if ($fh == $js1->fh) { @event = $js1->poll() } elsif ($fh == $js2->fh) { @event = $js2->poll() } foreach (@event) { # work } }
Example 3: monitor all input devices
use File::Basename qw(basename); my @inputs = map { "/dev/input/" . basename($_) } </sys/class/input/event*>; my @dev; my $selector = IO::Select->new(); foreach (@inputs) { my $device = Linux::Input->new($_); $selector->add($device->fh); push @dev, $device; } while (my $fh = $selector->can_read) { # work }
Example 4: testing for events on the command line
# information on what event queue belongs to what device cat /proc/bus/input/devices # verify that events are coming in sudo evtest.pl /dev/input/event*
Linux::Input provides a pure-perl interface to the Linux kernel's input event interface. It basically provides a uniform API for getting realtime data from all the different input devices that Linux supports.
For more information, please read: /usr/src/linux/Documentation/input/input.txt.
This method takes one filename as a parameter and returns a Linux::Input object.
Example:
my $js1 = Linux::Input->new('/dev/input/event3');
This method returns the size of the event structure on this system.
my $struct_size = Linux::Input->entity_bytes();
This method can be used to read or specify the default timeout value for the select()'ing on filehandles that happens within the module. The default value is 0.01.
This method returns the filehandle of a Linux::Input object.
my $filehandle = $js->fh();
This method is used internally to return the IO::Select object that's been assigned to the current Linux::Input object.
This method takes a $timeout value as a parameter and returns a list of @events for the current Linux::Input object. Each event is a hashref with the following key/value pairs.
$timeout
@events
my @events = $js->poll(0.01);
John Beppu (beppu@cpan.org)
Linux::Input::Joystick, Class::Data::Inheritable, IO::Select, IO::File
To install Linux::Input, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Linux::Input
CPAN shell
perl -MCPAN -e shell install Linux::Input
For more information on module installation, please visit the detailed CPAN module installation guide.