Ever since Mac OS X was released, there have been plenty of complaints about the things that Mac OS 9 had, and are “missing” from the new operating system. These Finder labels to pop-up tabbed folders to WindowShade. I can sympathise with these complaints, but for the most part, I’ve rather liked Mac OS X, and haven’t missed most of the missing bits from Mac OS 9. Except one, which I’ve never heard anyone else even mention: InputSprocket.
Let me clarify. I don’t mean the part of the Game Sprockets API that let a developer easily handle input. That was nice, but I don’t care too much how a developer writes a game, so long as they do. No, what I mean is the user interface portion of InputSprocket. Every program that used it (and the more recent Mac OS 8 and 9 games almost all did) had the same, standard, dialog for customizing input controls.
Input preferences are not an area that most game developers spend a lot of time putting effort into, and it shows. Most control settings dialogs suck. In more than one game, I’ve had to pick my control from a pop-up menu listing each keyboard key, mouse action and joystick control available on the system. No fooling! InputSprocket not only gave games a standard way to configure their controls, it gave them a good one.
The InputSprocket system is the only one I’ve seen that recognizes that the map between input devices (keyboard, mouse, joysticks, gamepads, racing wheels, fly-fishing rods, etc.) need not be one-to-one, but can be many-to-one. Most games give you a list of actions, and have you choose which key or button is used to trigger that action. InputSprocket did it the other way around, showing you every input device on your system and letting you choose an action for each button, key, mouse movement or joystick axis. So you could map the “fire weapon” action to not just the mouse button, but also the space bar and buttons 7 and 9 on your gamepad.
Since InputSprocket didn’t make it into Mac OS X, game developers have gone back to rolling their own dialogs for configuring the controls. Unfortunately, they don’t seem to have learned the lessons InputSprocket taught, and the interfaces are as bad as they ever were.