Ok, I'll admit it. It's excessive and more than a bit Rube Goldberg-ian. But it does work and it beats the heck out of typing in my password twenty times a day.
The problem started when I dedicated an older PC at my office to monitoring some of the applications we run in our data center. Now on my regular workstation, the policy-enforced screensaver and timed password lock is not really much of a problem. Even on a slow day I move the mouse enough, and type enough keystrokes to keep the timer reset. But the passive monitoring machine is another matter. Unless things are going badly with the application, I just glance at the display periodically, and there is basically no keyboard or mouse activity. So every ten minutes, literally like clockwork, the screensaver pops up and the system locks. Time to type in the password, an activity rendered doubly un-fun by the way in which the complexity requirements require shifting and special characters. Two or three attempts later, dangerously close to the fourth attempt lockout, the monitor is up and running again. Ugh.
Now there may be some hack that can be used to override the global screensaver policy locally, or perhaps I could replace the mouse with a microcontroller programmed to push the relevant messages into the mouse's USB port. The first way is unattractive in that it is a pretty gross (and obvious) violation of security policy. The second approach sounds viable, but complex. So I went for a more mechanical but ultimately simpler approach.
Here's the Mouse Wiggler in action:
My stock optical mouse rests in a wooden frame constructed from your basic craft-store woodworks. A small servo drives a stiff steel wire that alternately pushes and drags the mouse back and forth. An Arduino-clone microcontroller runs a simple C program that idles for about eight minutes, then wakes up and drives the servo through 180 degrees, sweeping the mouse to and fro. Presto, screensaver timer reset. For now the whole thing, servo and Freeduino-style board are both powered by an FTDI RS-232-to-5v serial cable back to the host.
As the mouse developed a slight tendency to “walk” off the platform, I settled on lightly snaring the cord in an upright groove, and eventually I added hook-and-loop fasteners to hold the sweeper board against the mouse. It's a bit more awkward to extricate the mouse as required for “real” mousing, but the Velcro eliminated any problems with the mouse getting cornered or otherwise stuck on the platform.
There are a couple of modifications coming. First, I still think I can get away from the Velcro, letting me pop the mouse in and out with greater ease (and allowing me to drop the wiggler into a drawer if needed). And I think that if I actually use one of the Atmel ATMega168 chip's sleep modes, I can lose the cable and go with a battery pack or a small wall-wart instead.
Is it technically a, let's not say “violation” but “workaround” for the security policy? Sure. But the unsubtle nature of the servo's periodic whirring surely indicates an absence of subterfuge and the odd sensation of watching the mouse wiggle itself has led to lots of interesting conversations with office passer-byes.
And that's what a good hack is for, right?