Current version

v1.10.4 (stable)


Main page
Archived news
Plugin SDK
Knowledge base
Contact info
Other projects


Blog Archive

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:

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.


This blog was originally open for comments when this entry was first posted, but was later closed and then removed due to spam and after a migration away from the original blog software. Unfortunately, it would have been a lot of work to reformat the comments to republish them. The author thanks everyone who posted comments and added to the discussion.