One final interesting thing that I have found, I found where the system registers HID handler DLL's... In the registry, go to

HKEY_LOCAL_MACHINE\Drivers\HID\ClientDrivers 

Here you will find an entry for "Keyboard". I believe we want to copy this and create a node called "Gamepad".. values for Flags and IClass are a mystery to me. the DLL referenced goes in the \Windows directory.

There is also the following key, which is a little trickier:

HKEY_LOCAL_MACHINE\Drivers\HID\LoadClients\Default\Default
Here there are directories like 16 (this is a keyboard device, and has a subdirectory named "Keyboard"), 121 (has a "Consumer" subdirectory, not sure what it is. could be the axim touchscreen?)

I discovered from reading bagoj's thread on firstloox (see usb hid section of wiki) that 1_5 is the code for Gamepads, and so it should contain a Gamepad subdirectory.
The subdirectory contains only one key, DLL, which again points to a DLL in \Windows by default.

So a sample Registry snippet might look like this:
(Note - Flags and IClass are copied directly from Keyboard and might change)

HKEY_LOCAL_MACHINE\Drivers\HID\ClientDrivers\Gamepad
  DL      = GPDHID.DLL
  Flags  = 0x10000 (65535)
  IClass = {CBE6DDF2-F5D4-4e16-9F61-4CCC0B6695F3} 
  Prefix  = GPD
  RemoteWakeup = 0x0 (unless you want the wiimote to wake up your axim.. :)

HKEY_LOCAL_MACHINE\Drivers\HID\LoadClients\Default\Default\1_5\Gamepad
  DLL = GPDHID.DLL


Note that the GPDHID.DLL stuff is pure voodoo and we can probably name it whatever we want.. But Keyboard had prefix of KBD and the driver was KBDHID.DLL so I'm taking no chances.. :)

I'm going to archive the info in this email directly to the wiki and break it up into an article about the registry hacks. Let me know if this leads you down any fruitful paths.

-justinb

Last edited May 23, 2007 at 3:50 AM by justinb, version 3

Comments

mcna Mar 11, 2009 at 11:24 AM 
Im trying to make a PS3 controller work with my PPC.
But im a bit of a novice, how does wm5/6 know which driver to use?