I know I’m stepping into something complicated here, but it’s better I get help now before I mess things up.
I’m looking into writing an application to act as a joypad on a touch screen tablet (running Windows 7, written in C# .Net). Previously I thought about it just emulating keyboard input, but I want to take it up a level, directly emulating a physical, hardware game pad. Where do I begin doing this?
You’ll need a device driver for this.
A hardware joypad is one type of human input device (HID). Fortunately, the UMDF (user-mode driver framework) is a library that supports HID devices (except keyboards and mice). UMDF exposes a COM-like API, so in theory it should be possible to write one in C#.
However, consider the following quote by Doron Holan on 2008-10-06:
I’m not aware of any sample UMDF HID driver, but this blog post may be a good starting point.
In all honesty, as much as I dislike hijaking and injection, it would probably be easier than a driver.