Project Description
This application allows users to use their Xbox 360 Controller for Windows as a user input device. It allows users to dynamically select a key layout and create custom layouts to use and distribute. It is written in pure C# and references the XNA framework and the WIN32 API.

The primary purpose of this application is to let a user smoothly use and transition between using a keyboard and mouse and using their Xbox 360 controller. The customization ability of this program allows users to create as many profiles as they want, and have them all stored locally. The application utilizes the XNA framework 3.0, released as part of the XNA Game Studio 3, so in order to work with the project, you will either need to install the redistributable XNA framework (included in the source files) or download the XNA framework from Microsoft.


This started one day as I was sitting at my desk after playing a game with my controller, fiddling with the analog sticks and buttons, and I wondered if there were any applications that would let me use my controller as a mouse. I did not find any at the time (I have since found several), so I decided to write my own. Version 1.0 (included in the source, but depreciated), was a first try at getting input to Windows through P\Invoke to work as well as multi-threaded monitoring of the controller. V1.0 is not very efficient, nor is it customizable. V1.4, the current release, is stable and updated to the XNA framework 3.0, rather than using the old framework 2. The source is there for you to look at and modify as you wish, but there is also an installer package which can be used if you just want the application. v1.5 (current release) is an update to .NET 4.0 and XNA 4.0. It also corrects some bugs with the d-pad not working as well as updating the splash screen and removing deprecated code.

Future Plans

I am planning on adding support for the ChatPad accessory, which would allow the controller to be used as both a full keyboard and mouse. Unfortunately, thereis currently no driver support from Microsoft for the Chatpad on Windows. Until a driver is released, I cannot add support for the Chatpad to my program (well, I could, but it wouldn't do anything and I couldn't test it). I will also be optimizing the threading code, since I had to cobble together my own monitoring scheme for watching how the controller changes. I am also looking at creating the application as a system service, so that it can be used by any user, even to log into the computer.

Additional features to be implemented include: Adding modifier keys (ctrl, alt, shift, etc.), custom macros / key combinations, fast scheme switching, scheme notification, import / export of schemes.

Last edited Feb 20, 2011 at 3:21 AM by rlcrock, version 8