xbox-kernel/private/inc/dinputp.h
2020-09-30 17:17:25 +02:00

218 lines
8.2 KiB
C

#if DIRECTINPUT_VERSION <= 0x0300
/*
* Old GUIDs from DX3 that were never used but which we can't recycle
* because we shipped them.
*/
DEFINE_GUID(GUID_RAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(GUID_UAxis, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(GUID_VAxis, 0xA36D02E5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
#endif
#define DIEFT_PREDEFMIN 0x00000001
#define DIEFT_PREDEFMAX 0x00000005
//#define DIEFT_PREDEFMAX 0x00000006
#define DIEFT_TYPEMASK 0x000000FF
#define DIEFT_FORCEFEEDBACK 0x00000100
#define DIEFT_VALIDFLAGS 0x0000FE00
#define DIEFT_ENUMVALID 0x040000FF
/*
* Name for the latest structures, in places where we specifically care.
*/
#if (DIRECTINPUT_VERSION >= 900)
typedef DIEFFECT DIEFFECT_DX9;
typedef DIEFFECT *LPDIEFFECT_DX9;
#else
typedef DIEFFECT DIEFFECT_DX6;
typedef DIEFFECT *LPDIEFFECT_DX6;
#endif
BOOL static __inline
IsValidSizeDIEFFECT(DWORD cb)
{
return cb == sizeof(DIEFFECT_DX6)
|| cb == sizeof(DIEFFECT_DX5);
}
#define DIEFFECT_MAXAXES 32
#define DIEFF_OBJECTMASK 0x00000003
#define DIEFF_ANGULAR 0x00000060
#define DIEFF_COORDMASK 0x00000070
#define DIEFF_REGIONANGULAR 0x00006000
#define DIEFF_REGIONCOORDMASK 0x00007000
#define DIEFF_VALID 0x00000073
#define DIEP_GETVALID_DX5 0x000001FF
#define DIEP_SETVALID_DX5 0xE00001FF
#define DIEP_GETVALID 0x000003FF
#define DIEP_SETVALID 0xE00003FF
#define DIEP_USESOBJECTS 0x00000028
#define DIEP_USESCOORDS 0x00000040
#define DIES_VALID 0x80000001
#define DIES_DRIVER 0x00000001
#define DIDEVTYPE_MAX 5
#define DI8DEVCLASS_MAX 5
#define DI8DEVTYPE_MIN 0x11
#define DI8DEVTYPE_GAMEMIN 0x14
#define DI8DEVTYPE_GAMEMAX 0x19
#define DI8DEVTYPE_MAX 0x1D
/*
* If any change is made to the order or number of devices in the range
* DI8DEVTYPE_GAMEMIN to DI8DEVTYPE_MAX CJoy_InitFromHwc must be updated.
*/
#define DI8DEVTYPEJOYSTICK_MIN_BUTTONS 5
#define DI8DEVTYPEGAMEPAD_MIN_BUTTONS 6
#define DI8DEVTYPEDRIVING_MIN_BUTTONS 4
#define DI8DEVTYPEFLIGHT_MIN_BUTTONS 4
#define DI8DEVTYPE1STPERSON_MIN_BUTTONS 4
#define DIDEVTYPE_TYPEMASK 0x000000FF
#define DIDEVTYPE_SUBTYPEMASK 0x0000FF00
#define DIDEVTYPE_ENUMMASK 0xFFFFFF00
#define DIDEVTYPE_ENUMVALID 0x00010000
#define DIDEVTYPE_RANDOM 0x80000000
#define MAKE_DIDEVICE_TYPE(maj, min) MAKEWORD(maj, min) //
#define GET_DIDEVICE_TYPEANDSUBTYPE(dwDevType) LOWORD(dwDevType) //
/*
* Name for the 5.0 structure, in places where we specifically care.
*/
typedef DIDEVCAPS DIDEVCAPS_DX5;
typedef DIDEVCAPS *LPDIDEVCAPS_DX5;
BOOL static __inline
IsValidSizeDIDEVCAPS(DWORD cb)
{
return cb == sizeof(DIDEVCAPS_DX5) ||
cb == sizeof(DIDEVCAPS_DX3);
}
#define DIDF_VALID 0x00000003 //
#define DIA_VALID 0x0000000F
#define DIAH_MAPMASK 0x0000003F
#define DIAH_VALID 0x8000003F
#define DIDBAM_VALID 0x00000007
#define DIDSAM_VALID 0x00000003
#define DICD_VALID 0x00000001
#define DIDIFTT_VALID 0x0000000F
#define DIDIFT_IMAGE2D_BMP 0x80000000
#define DIDIFTF_VALID 0x80010000
#define DIDIFT_VALID ( DIDIFTT_VALID | DIDIFTF_VALID )
#define DIDAL_VALID 0x0000000F //
#define HAVE_DIDEVICEOBJECTINSTANCE_DX5
typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE_DX5A;
typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE_DX5W;
typedef DIDEVICEOBJECTINSTANCE DIDEVICEOBJECTINSTANCE_DX5;
typedef DIDEVICEOBJECTINSTANCEA *LPDIDEVICEOBJECTINSTANCE_DX5A;
typedef DIDEVICEOBJECTINSTANCEW *LPDIDEVICEOBJECTINSTANCE_DX5W;
typedef DIDEVICEOBJECTINSTANCE *LPDIDEVICEOBJECTINSTANCE_DX5;
typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCE_DX5A;
typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCE_DX5W;
typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE_DX5;
BOOL static __inline
IsValidSizeDIDEVICEOBJECTINSTANCEW(DWORD cb)
{
return cb == sizeof(DIDEVICEOBJECTINSTANCE_DX5W) ||
cb == sizeof(DIDEVICEOBJECTINSTANCE_DX3W);
}
BOOL static __inline
IsValidSizeDIDEVICEOBJECTINSTANCEA(DWORD cb)
{
return cb == sizeof(DIDEVICEOBJECTINSTANCE_DX5A) ||
cb == sizeof(DIDEVICEOBJECTINSTANCE_DX3A);
}
#define DIDOI_NOTINPUT 0x80000000
#define DIDOI_ASPECTUNKNOWN 0x00000000
#define DIDOI_RANDOM 0x80000000
#define DIGDD_RESIDUAL 0x00000002 //
#define DIGDD_VALID 0x00000003 //
#define DISCL_EXCLMASK 0x00000003 //
#define DISCL_GROUNDMASK 0x0000000C //
#define DISCL_VALID 0x0000001F //
/*
* Name for the 5.0 structure, in places where we specifically care.
*/
typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE_DX5A;
/*
* Name for the 5.0 structure, in places where we specifically care.
*/
typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE_DX5W;
#ifdef UNICODE
typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
typedef DIDEVICEINSTANCE_DX5W DIDEVICEINSTANCE_DX5;
#else
typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
typedef DIDEVICEINSTANCE_DX5A DIDEVICEINSTANCE_DX5;
#endif // UNICODE
typedef DIDEVICEINSTANCE DIDEVICEINSTANCE_DX5;
typedef DIDEVICEINSTANCEA *LPDIDEVICEINSTANCE_DX5A;
typedef DIDEVICEINSTANCEW *LPDIDEVICEINSTANCE_DX5W;
#ifdef UNICODE
typedef LPDIDEVICEINSTANCE_DX5W LPDIDEVICEINSTANCE_DX5;
#else
typedef LPDIDEVICEINSTANCE_DX5A LPDIDEVICEINSTANCE_DX5;
#endif // UNICODE
typedef DIDEVICEINSTANCE *LPDIDEVICEINSTANCE_DX5;
typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCE_DX5A;
typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCE_DX5W;
#ifdef UNICODE
typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
typedef LPCDIDEVICEINSTANCE_DX5W LPCDIDEVICEINSTANCE_DX5;
#else
typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
typedef LPCDIDEVICEINSTANCE_DX5A LPCDIDEVICEINSTANCE_DX5;
#endif // UNICODE
typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE_DX5;
BOOL static __inline
IsValidSizeDIDEVICEINSTANCEW(DWORD cb)
{
return cb == sizeof(DIDEVICEINSTANCE_DX5W) ||
cb == sizeof(DIDEVICEINSTANCE_DX3W);
}
BOOL static __inline
IsValidSizeDIDEVICEINSTANCEA(DWORD cb)
{
return cb == sizeof(DIDEVICEINSTANCE_DX5A) ||
cb == sizeof(DIDEVICEINSTANCE_DX3A);
}
#define INITINSTANCEGUID(guidInstance, bDeviceId)\
{\
(guidInstance).Data1 = (DWORD)bDeviceId;\
(guidInstance).Data2 = 0;\
(guidInstance).Data3 = 0;\
*((PLONGLONG)&(guidInstance).Data4) = 0;\
}
#define IS_VALID_GUID_INSTANCE(guidInstance)\
(((256 > (guidInstance).Data1)&&\
(0 == (guidInstance).Data2)&&\
(0 == (guidInstance).Data3)&&\
(0 == *((PLONGLONG)&(guidInstance).Data4))) ? TRUE : FALSE)
#define DEVICEIDFROMGUID(guidInstance) ((BYTE)((guidInstance).Data1))
#define DIRCP_MODAL 0x00000001 //
#define DIRCP_VALID 0x00000000 //
#define DISFFC_NULL 0x00000000
#define DISFFC_VALID 0x0000003F
#define DISFFC_FORCERESET 0x80000000
#define DIGFFS_RANDOM 0x40000000
#define DISDD_VALID 0x00000001
#define DIECEFL_VALID 0x00000000
#define DIFEF_ENUMVALID 0x00000011
#define DIFEF_WRITEVALID 0x00000001
#if DIRECTINPUT_VERSION >= 0x0700 //
#define DIMOUSESTATE_INT DIMOUSESTATE2 //
#define LPDIMOUSESTATE_INT LPDIMOUSESTATE2 //
#else //
#define DIMOUSESTATE_INT DIMOUSESTATE //
#define LPDIMOUSESTATE_INT LPDIMOUSESTATE //
#endif //
#define DIKBD_CKEYS 256 /* Size of buffers */ //
//
#define DIK_PRTSC DIK_SNAPSHOT /* Print Screen */