Device-Ericsson-AccessoryMenu
view release on metacpan or search on metacpan
examples/x11pointer view on Meta::CPAN
#!/usr/local/bin/perl -w
use lib qw(lib);
use strict;
use Device::Ericsson::AccessoryMenu;
use Device::SerialPort;
use X11::GUITest qw(SendKeys GetMousePos MoveMouseAbs PressMouseButton ReleaseMouseButton);
my %mousestate;
my $port = shift || '/dev/rfcomm0';
my $remote = Device::Ericsson::AccessoryMenu->new(
debug => 1,
port => Device::SerialPort->new( $port ) || die,
menu => [
'Remote' => [
'X11' => sub {
my $r = shift;
%mousestate = ();
$r->mouse_mode( callback => sub {
my ($key, $updown) = @_;
if ($key =~ /^[v<>^]$/) {
$mousestate{$key} = $updown;
}
elsif ($key eq 's' and $updown eq 1) {
PressMouseButton(1);
}
elsif ($key eq 's' and $updown eq 0) {
ReleaseMouseButton(1);
}
elsif ($key eq 'c' and $updown eq 1) {
PressMouseButton(2);
}
elsif ($key eq 'c' and $updown eq 0) {
ReleaseMouseButton(2);
}
elsif ($key eq 'f' and $updown eq 1) {
SendKeys("{ENT}");
}
elsif ($key eq '2' and $updown eq 1) {
SendKeys("{PGU}");
}
elsif ($key eq '0' and $updown eq 1) {
SendKeys("{PGD}");
}
elsif ($key eq '1' and $updown eq 1) {
SendKeys("+({TAB})");
}
elsif ($key eq '3' and $updown eq 1) {
SendKeys("{TAB}");
}
else {
print "### key $key event $updown\n";
}
});
},
],
],
);
$remote->register_menu;
print "Ready to rock.\n";
my $sleep = undef;
my $inc = undef;
while (1) {
$remote->control($sleep);
if (grep { $_ eq '1' } values %mousestate) {
$inc ||= 5;
my ($x, $y) = GetMousePos();
$y -= $inc if $mousestate{'^'};
( run in 0.762 second using v1.01-cache-2.11-cpan-39bf76dae61 )