#!/usr/bin/perl $dev = "/dev/sonypi"; open (F, $dev); while (1) { $char = getc F; $num = ord($char); CASE: { ($num == 1) && do { &scroll("down","slow"); last CASE; }; ($num == 42) && do { &scroll("down","fast"); last CASE; }; ($num == 46) && do { &scroll("down","veryfast"); last CASE; }; ($num == 2) && do { &scroll("up","slow"); last CASE; }; ($num == 43) && do { &scroll("up","fast"); last CASE; }; ($num == 47) && do { &scroll("up","veryfast"); last CASE; }; ($num == 3) && do { &scrollpress("down","slow"); last CASE; }; ($num == 44) && do { &scrollpress("down","fast"); last CASE; }; ($num == 48) && do { &scrollpress("down","veryfast"); last CASE; }; ($num == 4) && do { &scrollpress("up","slow"); last CASE; }; ($num == 45) && do { &scrollpress("up","fast"); last CASE; }; ($num == 49) && do { &scrollpress("up","veryfast"); last CASE; }; ($num == 5) && do { &press(); last CASE; }; ($num == 56) && do { &release(); last CASE; }; print "Unknown event ($num)\n"; last CASE; } } close F; sub scroll { (my $dir, my $speed) = @_; # print "Scrolled $dir, $speed\n"; $bright = `/usr/bin/spicctrl -B`; if ($speed eq "slow") { $value = 10; } if ($speed eq "fast") { $value = 50; } if ($speed eq "veryfast") { $value = 100; } if ($dir eq "down") { $bright += $value; } else { $bright -= $value; } $bright = 255 if $bright > 255; $bright = 0 if $bright < 0; `/usr/bin/spicctrl -b $bright`; } sub scrollpress { (my $dir, my $speed) = @_; # print "Scrolled (while pressed) $dir, $speed\n"; } sub press { system("/home/stray/bin/spawnterm"); } sub release { # print "Released button\n"; }