/* * Enumerate keyboards. */ BOOL CALLBACK diEnumKeyboardProc(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef) { *(LPGUID)pvRef = lpddi->guidProduct; if (GET_DIDEVICE_SUBTYPE(lpddi->dwDevType) == DI8DEVTYPEKEYBOARD_PCENH) { return DIENUM_STOP; } return DIENUM_CONTINUE; }
BOOL __stdcall enumCallbackDetour(const DIDEVICEINSTANCEA* instance, VOID* context) { BOOL result; unsigned int type = GET_DIDEVICE_TYPE(instance->dwDevType); unsigned int subtype = GET_DIDEVICE_SUBTYPE(instance->dwDevType); if (type == DI8DEVTYPE_1STPERSON && subtype == DI8DEVTYPE1STPERSON_SIXDOF) { if (SpoofControllerType) ((DIDEVICEINSTANCEA*)instance)->dwDevType = 0x10215; //DI8DEVTYPE_GAMEPAD | DI8DEVTYPEGAMEPAD_STANDARD } result = D3D9Hook_enumcallbck(instance, context); return result; }
static void ReportDevType( DWORD devType ) { byte baseType = GET_DIDEVICE_TYPE( devType ); byte subType = GET_DIDEVICE_SUBTYPE( devType ); switch ( baseType ) { default: DevMsg( "unknown type\n" ); break; case DI8DEVTYPE_DEVICE: DevMsg( "DEVICE\n" ); break; case DI8DEVTYPE_MOUSE: DevMsg( "MOUSE\n" ); switch ( subType ) { default: break; case DI8DEVTYPEMOUSE_UNKNOWN: DevMsg( "DI8DEVTYPEMOUSE_UNKNOWN\n" ); break; case DI8DEVTYPEMOUSE_TRADITIONAL: DevMsg( "DI8DEVTYPEMOUSE_TRADITIONAL\n" ); break; case DI8DEVTYPEMOUSE_FINGERSTICK: DevMsg( "DI8DEVTYPEMOUSE_FINGERSTICK\n" ); break; case DI8DEVTYPEMOUSE_TOUCHPAD: DevMsg( "DI8DEVTYPEMOUSE_TOUCHPAD\n" ); break; case DI8DEVTYPEMOUSE_TRACKBALL: DevMsg( "DI8DEVTYPEMOUSE_TRACKBALL\n" ); break; case DI8DEVTYPEMOUSE_ABSOLUTE: DevMsg( "DI8DEVTYPEMOUSE_ABSOLUTE\n" ); break; } break; case DI8DEVTYPE_KEYBOARD: DevMsg( "KEYBOARD\n" ); switch ( subType ) { default: break; case DI8DEVTYPEKEYBOARD_UNKNOWN: DevMsg( "DI8DEVTYPEKEYBOARD_UNKNOWN\n" ); break; case DI8DEVTYPEKEYBOARD_PCXT: DevMsg( "DI8DEVTYPEKEYBOARD_PCXT\n" ); break; case DI8DEVTYPEKEYBOARD_OLIVETTI: DevMsg( "DI8DEVTYPEKEYBOARD_OLIVETTI\n" ); break; case DI8DEVTYPEKEYBOARD_PCAT: DevMsg( "DI8DEVTYPEKEYBOARD_PCAT\n" ); break; case DI8DEVTYPEKEYBOARD_PCENH: DevMsg( "DI8DEVTYPEKEYBOARD_PCENH:\n" ); break; case DI8DEVTYPEKEYBOARD_NOKIA1050: DevMsg( "DI8DEVTYPEKEYBOARD_NOKIA1050\n" ); break; case DI8DEVTYPEKEYBOARD_NOKIA9140: DevMsg( "DI8DEVTYPEKEYBOARD_NOKIA9140\n" ); break; case DI8DEVTYPEKEYBOARD_NEC98: DevMsg( "DI8DEVTYPEKEYBOARD_NEC98\n" ); break; case DI8DEVTYPEKEYBOARD_NEC98LAPTOP: DevMsg( "DI8DEVTYPEKEYBOARD_NEC98LAPTOP\n" ); break; case DI8DEVTYPEKEYBOARD_NEC98106: DevMsg( "DI8DEVTYPEKEYBOARD_NEC98106\n" ); break; case DI8DEVTYPEKEYBOARD_JAPAN106: DevMsg( "DI8DEVTYPEKEYBOARD_JAPAN106\n" ); break; case DI8DEVTYPEKEYBOARD_JAPANAX: DevMsg( "DI8DEVTYPEKEYBOARD_JAPANAX\n" ); break; case DI8DEVTYPEKEYBOARD_J3100: DevMsg( "DI8DEVTYPEKEYBOARD_J3100\n" ); break; } break; case DI8DEVTYPE_JOYSTICK: DevMsg( "JOYSTICK\n" ); switch ( subType ) { default: break; case DI8DEVTYPEJOYSTICK_LIMITED : DevMsg( "DI8DEVTYPEJOYSTICK_LIMITED\n" ); break; case DI8DEVTYPEJOYSTICK_STANDARD: DevMsg( "DI8DEVTYPEJOYSTICK_STANDARD\n" ); break; } break; case DI8DEVTYPE_GAMEPAD: DevMsg( "GAMEPAD\n" ); switch ( subType ) { default: break; case DI8DEVTYPEGAMEPAD_LIMITED: DevMsg( "DI8DEVTYPEGAMEPAD_LIMITED\n" ); break; case DI8DEVTYPEGAMEPAD_STANDARD: DevMsg( "DI8DEVTYPEGAMEPAD_STANDARD\n" ); break; case DI8DEVTYPEGAMEPAD_TILT: DevMsg( "DI8DEVTYPEGAMEPAD_TILT\n" ); break; } break; case DI8DEVTYPE_DRIVING: DevMsg( "DRIVING\n" ); switch ( subType ) { default: break; case DI8DEVTYPEDRIVING_LIMITED: DevMsg( "DI8DEVTYPEDRIVING_LIMITED\n" ); break; case DI8DEVTYPEDRIVING_COMBINEDPEDALS: DevMsg( "DI8DEVTYPEDRIVING_COMBINEDPEDALS\n" ); break; case DI8DEVTYPEDRIVING_DUALPEDALS: DevMsg( "DI8DEVTYPEDRIVING_DUALPEDALS\n" ); break; case DI8DEVTYPEDRIVING_THREEPEDALS: DevMsg( "DI8DEVTYPEDRIVING_THREEPEDALS\n" ); break; case DI8DEVTYPEDRIVING_HANDHELD: DevMsg( "DI8DEVTYPEDRIVING_HANDHELD\n" ); break; } break; case DI8DEVTYPE_FLIGHT: DevMsg( "FLIGHT\n" ); switch ( subType ) { default: break; case DI8DEVTYPEFLIGHT_LIMITED: DevMsg( "DI8DEVTYPEFLIGHT_LIMITED\n" ); break; case DI8DEVTYPEFLIGHT_STICK: DevMsg( "DI8DEVTYPEFLIGHT_STICK\n" ); break; case DI8DEVTYPEFLIGHT_YOKE: DevMsg( "DI8DEVTYPEFLIGHT_YOKE\n" ); break; case DI8DEVTYPEFLIGHT_RC: DevMsg( "DI8DEVTYPEFLIGHT_RC\n" ); break; } break; case DI8DEVTYPE_1STPERSON: DevMsg( "1STPERSON\n" ); switch ( subType ) { default: break; case DI8DEVTYPE1STPERSON_LIMITED: DevMsg( "DI8DEVTYPE1STPERSON_LIMITED\n" ); break; case DI8DEVTYPE1STPERSON_UNKNOWN: DevMsg( "DI8DEVTYPE1STPERSON_UNKNOWN\n" ); break; case DI8DEVTYPE1STPERSON_SIXDOF: DevMsg( "DI8DEVTYPE1STPERSON_SIXDOF\n" ); break; case DI8DEVTYPE1STPERSON_SHOOTER: DevMsg( "DI8DEVTYPE1STPERSON_SHOOTER\n" ); break; } break; case DI8DEVTYPE_DEVICECTRL: DevMsg( "DEVICECTRL\n" ); switch ( subType ) { default: break; case DI8DEVTYPEDEVICECTRL_UNKNOWN: DevMsg( "DI8DEVTYPEDEVICECTRL_UNKNOWN\n" ); break; case DI8DEVTYPEDEVICECTRL_COMMSSELECTION: DevMsg( "DI8DEVTYPEDEVICECTRL_COMMSSELECTION\n" ); break; case DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED: DevMsg( "DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED\n" ); break; } break; case DI8DEVTYPE_SCREENPOINTER: DevMsg( "SCREENPOINTER\n" ); switch ( subType ) { default: break; case DI8DEVTYPESCREENPTR_UNKNOWN: DevMsg( "DI8DEVTYPESCREENPTR_UNKNOWN\n" ); break; case DI8DEVTYPESCREENPTR_LIGHTGUN: DevMsg( "DI8DEVTYPESCREENPTR_LIGHTGUN\n" ); break; case DI8DEVTYPESCREENPTR_LIGHTPEN: DevMsg( "DI8DEVTYPESCREENPTR_LIGHTPEN\n" ); break; case DI8DEVTYPESCREENPTR_TOUCH: DevMsg( "DI8DEVTYPESCREENPTR_TOUCH\n" ); break; } break; case DI8DEVTYPE_REMOTE: DevMsg( "REMOTE\n" ); switch ( subType ) { default: break; case DI8DEVTYPEREMOTE_UNKNOWN: DevMsg( "DI8DEVTYPEREMOTE_UNKNOWN\n" ); break; } break; case DI8DEVTYPE_SUPPLEMENTAL: DevMsg( "SUPPLEMENTAL\n" ); switch ( subType ) { default: break; case DI8DEVTYPESUPPLEMENTAL_UNKNOWN: DevMsg( "DI8DEVTYPESUPPLEMENTAL_UNKNOWN\n" ); break; case DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER: DevMsg( "DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER\n" ); break; case DI8DEVTYPESUPPLEMENTAL_HEADTRACKER: DevMsg( "DI8DEVTYPESUPPLEMENTAL_HEADTRACKER\n" ); break; case DI8DEVTYPESUPPLEMENTAL_HANDTRACKER: DevMsg( "DI8DEVTYPESUPPLEMENTAL_HANDTRACKER\n" ); break; case DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE: DevMsg( "DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE\n" ); break; case DI8DEVTYPESUPPLEMENTAL_SHIFTER: DevMsg( "DI8DEVTYPESUPPLEMENTAL_SHIFTER\n" ); break; case DI8DEVTYPESUPPLEMENTAL_THROTTLE: DevMsg( "DI8DEVTYPESUPPLEMENTAL_THROTTLE\n" ); break; case DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE: DevMsg( "DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE\n" ); break; case DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS: DevMsg( "DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS\n" ); break; case DI8DEVTYPESUPPLEMENTAL_DUALPEDALS: DevMsg( "DI8DEVTYPESUPPLEMENTAL_DUALPEDALS\n" ); break; case DI8DEVTYPESUPPLEMENTAL_THREEPEDALS: DevMsg( "DI8DEVTYPESUPPLEMENTAL_THREEPEDALS\n" ); break; case DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS: DevMsg( "DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS\n" ); break; } break; } }