ControllerMate
Posted on January 10, 2013
Filed Under Automation, Reviews, System | 3 Comments
So this week in my spare time I tried to set up a Master Meta Key using the caps lock key. Lots of people have written about this, including Dr. Drang. It’s been on my todo list for ages. I use a lot of macros and it’s nice to have keys that don’t conflict with the application. It’s also nice to have memorable keys so you can remember what your shortcuts are. Mainly I just hate my caps lock key and wanted to make it more functional.
The general idea is that when you press your caps lock you generate the ⌘⌥⇧⌃ combination. That’s hard to type but it’s almost always a key combination left unused. It also lets you create cognitive groupings of commands based upon whether you use the caps lock key or not.
Now a couple of months ago I’d got a MS Natural Keyboard 4000 to replace my beloved Apple keyboard that came with my old PowerMac G5 from years ago. I honestly think it’s one of the finest keyboards ever made. However the shift key had stopped working. I was also going to be doing a lot more programming and had heard it was better for extended typing. Most importantly it had lots of extra keys I could map onto things. The only problem was that to use the extra keys you had to use Microsoft’s drivers. The problem with MS’ drivers is that they wouldn’t work with the key customization linked to above.
I’d been threatening over the years to buy ControllerMate and I finally did. I’m glad I did.
ControllerMate is more complex than the main alternatives: USBOverdrive, SteerMouse, or others. But it does a lot more as well. It has a reputation for being targeted to game controllers. And there’s some truth to that. You can customize USB based game controllers to a ridiculous level. However I’m not a gamer, and when I do play games it’s usually on my iPad or XBox. What Controllermate does give you is pretty low level control over a wide array of hardware. You can even turn the LEDs on and off.
What makes ControllerMate (hencewith CM) a little intimidating at first is its visual programming style of customizing keys. For instance here’s one of the pages of programs to control my MS keyboard.

Most of it is self explanatory. Each dark great button is a key on your keyboard. For many of them I’ve simply associated them with running an application. My home button on the keyboard brings up Dashboard for example. You can do more complex things though. In the lower right I run the application EasyFind if the Search button is depressed and the shift key is not pressed. Now looking at these you might be tempted to say it would be easier to just have a spreadsheet styled UI that lists commands for when particular keys are pressed, considering the modification keys separate. Probably true. For simple stuff CM is a little tedious to set up. However you can do really complex stuff as well.
The real value of CM though isn’t this sort of programming. It’s the low level access you have to so much hardware. When I first got my Natural Keyboard I mentioned how annoyed I was with the zoom key action. It basically sends the command to Safari to increase or decrease font size. There was a hack that let you associate it with the arrow keys, but it never worked very well. It’s really nice to use for scrolling since the zoom button is above the spacebar and between your thumbs. You can scroll quickly with it. With CM I could quickly and easily have it emulate the arrow buttons with ease. USBOverdrive couldn’t manage that. You also get fairly precise control over how the keys respond.
Some things end up being a tad more tedious than they should be. That’s because CM generate a virtual keyboard and mouse and then uses all the low level devices, interpreted, to generate those virtual actions. However this means you can’t combine devices due to limits over how the devices work. (This is an USB limit as I understand it) Without going into detail this meant that I couldn’t simply create my master meta key by mapping the caps lock key to the other modifiers. That’s because the keys I’d want to press along with the caps lock were on the virtual keyboard but the caps lock was on the real keyboard. Long story short I had to create a meta key rule for each key. It wasn’t hard but it was a pain.1
While it is more tedious to get a lot of things done in CM the support is ridiculously good. There’s a great forum where you can ask questions and the developer responds extremely quickly. If you have a complex keyboard, mouse, or game pad then I’d really suggest getting CM. One really neat thing is that since each device is handled separately you can get yourself a cheap USB numeric keypad and program it into a function pad. Print yourself out some stickers for the commands in say Lightroom or Photoshop and it’s a great way to access commands without having to remember complex command key combinations.
If you aren’t interested in getting a macro program like Quickeys2 or Keyboard Maestro then CM will get you quite a ways along since you can have the output of a key program be the calling of an Applescript. Several scripts that I used to use via Quickeys I now have CM call directly.
I’ll probably be offering a lot of examples of how to use ControllerMate over the next few weeks. I try and set aside a half hour a day to add more features to my setup until I have it just right.
- This is complex to explain unless you’ve played around with CM before. If you’re interested here’s a thread in the forum with me asking if there was a simpler way. There wasn’t. ↩
- Which I wouldn’t suggest getting. It’s future status is questionable. ↩
Comments
In the CM thread, you mentioned that assigning master meta keys individually had unexpected results. The CM + KeyboardRemap4MacBook is working well for me (also have a MS Natural Keyboard).
Yes in a followup post I explained the problems and noted that KeyboardRemap4MacBook worked well with CM. That’s what I’ve been using for over a month now without problem.
Leave a Reply
[...] is just a followup to my review of ControllerMate from the other day. I’d mentioned I’d set up the Caps Lock as a hyper-meta key. Turns [...]