static HRESULT WINAPI SysKeyboardWImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface, LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) { HRESULT res; res = IDirectInputDevice2WImpl_GetObjectInfo(iface, pdidoi, dwObj, dwHow); if (res != DI_OK) return res; if (!GetKeyNameTextW((DIDFT_GETINSTANCE(pdidoi->dwType) & 0x80) << 17 | (DIDFT_GETINSTANCE(pdidoi->dwType) & 0x7f) << 16, pdidoi->tszName, sizeof(pdidoi->tszName)/sizeof(pdidoi->tszName[0]))) return DIERR_OBJECTNOTFOUND; _dump_OBJECTINSTANCEW(pdidoi); return res; }
/****************************************************************************** * GetObjectInfo : get object info */ HRESULT WINAPI JoystickWGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface, LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) { static const WCHAR axisW[] = {'A','x','i','s',' ','%','d',0}; static const WCHAR povW[] = {'P','O','V',' ','%','d',0}; static const WCHAR buttonW[] = {'B','u','t','t','o','n',' ','%','d',0}; HRESULT res; res = IDirectInputDevice2WImpl_GetObjectInfo(iface, pdidoi, dwObj, dwHow); if (res != DI_OK) return res; if (pdidoi->dwType & DIDFT_AXIS) sprintfW(pdidoi->tszName, axisW, DIDFT_GETINSTANCE(pdidoi->dwType)); else if (pdidoi->dwType & DIDFT_POV) sprintfW(pdidoi->tszName, povW, DIDFT_GETINSTANCE(pdidoi->dwType)); else if (pdidoi->dwType & DIDFT_BUTTON) sprintfW(pdidoi->tszName, buttonW, DIDFT_GETINSTANCE(pdidoi->dwType)); _dump_OBJECTINSTANCEW(pdidoi); return res; }
/****************************************************************************** * GetObjectInfo : get information about a device object such as a button * or axis */ static HRESULT WINAPI SysMouseWImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface, LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) { static const WCHAR x_axisW[] = {'X','-','A','x','i','s',0}; static const WCHAR y_axisW[] = {'Y','-','A','x','i','s',0}; static const WCHAR wheelW[] = {'W','h','e','e','l',0}; static const WCHAR buttonW[] = {'B','u','t','t','o','n',' ','%','d',0}; HRESULT res; res = IDirectInputDevice2WImpl_GetObjectInfo(iface, pdidoi, dwObj, dwHow); if (res != DI_OK) return res; if (IsEqualGUID(&pdidoi->guidType, &GUID_XAxis)) strcpyW(pdidoi->tszName, x_axisW); else if (IsEqualGUID(&pdidoi->guidType, &GUID_YAxis)) strcpyW(pdidoi->tszName, y_axisW); else if (IsEqualGUID(&pdidoi->guidType, &GUID_ZAxis)) strcpyW(pdidoi->tszName, wheelW); else if (pdidoi->dwType & DIDFT_BUTTON) wsprintfW(pdidoi->tszName, buttonW, DIDFT_GETINSTANCE(pdidoi->dwType) - 3); _dump_OBJECTINSTANCEW(pdidoi); return res; }