I had to do a change to how the driver is set up so that XInput stuff would recognize it, but after that point, I was able to play Mirror's Edge with the normal keyboard, normal mouse, 360 controller controls with various on-screen button labels, and optionally control Mirror's Edge with the chatpad keyboard and thumbstick-driven mouse.
......I do not recommend playing Mirror's Edge in this manner, however. :lol But hey, it kind of works. I'm now back to the point where, and a bit further than, my test program was over two weeks ago. It took me that time period to learn how to write a Windows driver, I suppose. On the plus side, now I can seamlessly support all XInput games as far as I know.
I have a bunch of basic keys supported, but not much punctuation etc. The mouse can be controlled by one thumbstick now, though I need to rework the mouse to be smoother, and also support both thumbsticks for more precision if possible. I need to figure out what to do about key repeats, and do some filtering or something since I still have occasional glitches where a key will get stuck down temporarily, or a key might register as being hit twice. The thumbstick-mouse is enabled by pressing the little "people" button on the chatpad, which glows orange. None of the normal 360 controller buttons work while that mode is enabled. When it's disabled, the glow goes away and the buttons etc. start working again.
The basic theory of things seems sound though, and I could basically take this route forwards and it should work with any game that supports the 360 controller. One big thing concerns me though. I'm using a Windows API call to generate mouse and keyboard input. I did a quick Google search, and the only game I saw that apparently blocks this may be some special protected version of Counterstrike (EASA or some acronym like that?). As long as the keyboard and mouse API I'm using works with nearly all games that's great, but mainly I want to verify that I'm not running any risk of getting myself or anyone else VAC banned. I've put in a support request asking the question, and PMed five admins/moderators on the Steam forums, so we'll see if I hear anything back by next week.
I have one more method I could use to do keyboard/mouse input. I should be able to make some virtual HID devices to completely simulate a mouse and keyboard, and I would hope that would be completely safe. It's also more of a pain to do, however, so I'd like to see if the first approach will work.
I'll try to post more updates on the mp3car forum as I make more progress in the next couple of days, and then whenever I get something released for testing I will announce it here as well. I PMed one mod here so far asking a related question, but I haven't heard back.