Input Driven
I seem to chew through and spit out peripherals yearly. I suppose when you spend as much time as I do in front of a computer, you feel compelled to have the perfect input devices.
Finding Perfection
I started out with a standard IBM PC keyboard, one of those giant clackers, and a dreary old grey mouse with my first computer. Since then I’ve gone through literally dozens of upgrades. Ball mice gave way to optical mice, which in turn gave way to laser mice. In the past few years I’ve gone through half a dozen gaming mice, before finally settling on a Logitech G9. Most of my relatives have a castoff mouse that once graced my desk, but my right hand is finally happy.
My keyboard churn has followed the same breakneck pace. I’ve gone through keyboards with built in trackpoints, purportedly ergonomic split keyboards, a dozen near-disposable $10 keyboards, a Das Keyboard (100% blank, of course), and two backlit keyboards. I started with loud clicky keys, moved to silent soft keys, then back to clicky, then back to soft. I never did find one I was happy with.
That changed when the aluminum Apple Keyboard caught my eye. After a trek to an Apple Store and half an hour coding away on it (to the mild amusement of the staff), I brought one home. I’ve since moved to the wireless version, and aside from my occasional lapses when I try to use the nonexistent Numpad or Home/End PgUp/PgDn keys, I’m happy. In fact, the quality of the typing experience was so good that it factored in heavily to my MacBook Air purchase.
Windows Support
Despite both the wired and wireless keyboards being fairly fantastic as far as the hardware goes, the software support for Windows is severely lacking. The default mapping isn’t ideal. The software offered by Apple for bootcamp is difficult to find for a Windows user, and once found is just not up to the task. When I first bought the wired keyboard, I spent hours putting together a melange of hacks to turn the keyboard into a usable device on Windows.
A few of the problems:
- Media & Volume keys are nonfunctional
- Command key where Alt key should be, but acts like Windows key
- Option key where Windows key should be, but acts like Alt key
- Right Control key acts like Right Alt key
- Fn key where Insert key should be (wired keyboard only)
- Clear key where NumLock key should be (wired keyboard only)
That covers most of the big issues, but the list of minor issues can go on for some time. I used SharpKeys to remap the F7-F12 scancodes to the windows media keyboard equivalents, turn F13-F15 into the PrintScreen, Scroll Lock, and Pause keys, and make the Ctrl and Alt keys work properly. This proved to be an adequate solution at the time.
After I got my Macbook Air, I wanted more parity between how the keyboard on my laptop and desktop worked. Since I had upgraded to the wireless Apple Keyboard around the same time, I particularly needed shortcuts to replicate the lost buttons. Again using scancodes, I turned the Command key into Ctrl, to make cut/copy/paste use the same gesture as the Mac. I used a scripting language called AutoHotkey to add some additional functionality, namely Ctrl+ArrowKeys shortcuts for Home/End/PgUp/PgDn, and Fn+Backspace for Delete.
More Problems Arise
All was well until I started beta testing new program, and my mapping fell apart. You see, this program bypassed the standard Windows keyboard device driver, and used their own instead. This made things problematic as my scancode mappings were thus ignored. The program used Ctrl + # and Alt + # heavily, and the Ctrl and Alt keys were just not where my fingers expected them to be. In addition, Command started acting like the Windows key again, launching the start menu when pressed. Words cannot adequately express how highly annoying this all was.
I tried to code my way out of this problem with more scripting, and ended up realizing that scancodes just weren’t doing the job anymore. I decided the only viable solution was to replicate all the key mapping functionality in my script instead.
An Easy Solution
Before I got too involved in this project, I did a little digging on the net, and a program called UAWKS caught my eye. It had been released just weeks prior, and it basically does everything my scancode remapping and scripting did, with a slick bit of user interface thrown on top. I swapped over entirely to this program, with minimal tweaks to the underlying code to suit my needs.
There are a few lingering issues, but I wholeheartedly recommend UAWKS to anybody running an Apple keyboard under Windows. It is a requirement to get the proper Windows behavior out of the keyboard.
Of course, all this is going to be a moot point once I replace my desktop with a Mac. At least I’ll be able to use the same mouse and keyboard, without all the hassle. At this point, my lust for new input devices is sated. Of course, who can say what the next year’s product line will bring?
Update (03/25/2009): Just spent an hour on the Wacom Intuos4. *sigh* With a little willpower, perhaps I can keep the tablet consumption rate down to something reasonable.