¶Hand-made adaptor
Time for another of my all-too-frequent off-topic posts.
PC controllers, frankly, suck; for some reason, most of them are designed to have the contact pads on the diagonals of the D-pad, so it's impossible to get clean hits to the four cardinal directions. In a Final Fantasy-style RPG this is death because instead of selecting Magic you end up selecting Row and moving your white mage to the front. I decided to build an Xbox-to-PC adapter after my friend Alec told me that it's just a straight wire-up. I knew that the Xbox controller was based on USB, but I was under the impression that it drew too much power to be connected to a normal PC port, which is not the case.
My experiences in building the adapter:
- Warm and toasty hardware is wonderful. In my case, it meant an unintended connection from +5 to ground caused by dangling shield foil.
- USB ports are current-limited and prevent you from playing Name That Smell.
- Xbox has an additional +12V line between one of the data lines and ground. I'm not a hardware guy, but this seems like a bad place for it.
- According to the USB hub driver, the Xbox controller is rated for 400mA; of that, 100mA is taken by the controller, and another 100mA is allocated to each of the ports on the USB hub in the controller. I have no idea where the other 100mA goes.
It's nice to have a well-functioning D-pad and smoooooth, non-noisy analog sticks on a PC. (Anyone who has wrestled with pot-reading code in DOS knows what I mean by the latter.) I figure that with enough creative mappings of the inputs I can play Diablo II with the Xbox controller, but I haven't quite found a good stick-to-mouse translation yet.
While I'm on the subject of Microsoft peripherals: their keyboards used to rock -- especially the Natural Keyboard Pro, with the USB ports in the back -- but the current keyboards suck, with the constant changes to the arrow keys and insert/delete block area. I consider arrow keys in plus form to be slightly better than the C64 layout. The worst invention by far is F-Lock. This evil key switches the top row of keys between traditional function keys (on) and new application keys like Help, Undo, and Close (off). By default, F-Lock is off, meaning that function keys are disabled, and since it is handled totally by the keyboard circuitry, it cannot be programmatically read or toggled. Even worse, if F-Lock is on, it changes the Pause/Break key to on! I don't have to tell you how infuriating this is in Visual Studio, where I have to have F-Lock on so F7 works to build, and off for Ctrl-Break to stop it! One of the MVPs came up with a way to hack the scancode translation tables in the Registry to map the keys to their equivalents, but I haven't applied it yet.