Shocking Presentations

Matts on 2006-09-07T17:21:39

Just messing around with the Thinkpad Shock Manager. I decided to see if I could "next page" a presentation by whacking my laptop. It works :-)

use Win32API::File qw(:ALL);
use Win32::GuiTest qw(FindWindowLike GetWindowText
    SetForegroundWindow SendKeys);

$Win32::GuiTest::debug = 0; # Set to "1" to enable verbose mode

my @windows = FindWindowLike(0, "Mozilla Firefox", "");

die "No firefox open" unless @windows;

my $file = createFile("//./ShockMgr", "r ke") || die "createFile failed"; my @prev; while(1) { DeviceIoControl($file, 0x733fc, [], 0, my($buf), 0x24, my($bytes), []); my ($x, $y, @extra) = unpack("x4s*", $buf); unless (arreq(\@extra, \@prev)) { print "Got: $x, $y\n@extra\n"; my $text = GetWindowText($windows[0]); SetForegroundWindow($windows[0]); SendKeys("{DOWN}"); sleep(1); } @prev = @extra; select(undef, undef, undef, 0.05); }

sub arreq { my ($aa, $bb) = @_; for (0..$#$aa) { if ($aa->[$_] - $bb->[$_] > 5) { return; } } return 1; }


Dude...

jk2addict on 2006-09-07T18:10:30

Step away from the computer....

Ha!

miyagawa on 2006-09-08T06:07:12

See this one? http://bulknews.typepad.com/blog/2006/06/control_google_.html :)

Re:Ha!

Matts on 2006-09-08T13:24:55

I stole the original control code from your Plagger svn :-)