dinput: Explicitly define ASCII and Unicode methods in keyboard.
This commit is contained in:
parent
0f24b9e86f
commit
9f9e376239
|
@ -58,6 +58,14 @@ static inline SysKeyboardImpl *impl_from_IDirectInputDevice8W(IDirectInputDevice
|
||||||
{
|
{
|
||||||
return (SysKeyboardImpl *) iface;
|
return (SysKeyboardImpl *) iface;
|
||||||
}
|
}
|
||||||
|
static inline IDirectInputDevice8A *IDirectInputDevice8A_from_impl(SysKeyboardImpl *This)
|
||||||
|
{
|
||||||
|
return (IDirectInputDevice8A *)This;
|
||||||
|
}
|
||||||
|
static inline IDirectInputDevice8W *IDirectInputDevice8W_from_impl(SysKeyboardImpl *This)
|
||||||
|
{
|
||||||
|
return (IDirectInputDevice8W *)This;
|
||||||
|
}
|
||||||
|
|
||||||
static BYTE map_dik_code(DWORD scanCode, DWORD vkCode)
|
static BYTE map_dik_code(DWORD scanCode, DWORD vkCode)
|
||||||
{
|
{
|
||||||
|
@ -302,11 +310,9 @@ const struct dinput_device keyboard_device = {
|
||||||
keyboarddev_create_deviceW
|
keyboarddev_create_deviceW
|
||||||
};
|
};
|
||||||
|
|
||||||
static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState(
|
static HRESULT WINAPI SysKeyboardWImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface, DWORD len, LPVOID ptr)
|
||||||
LPDIRECTINPUTDEVICE8A iface,DWORD len,LPVOID ptr
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
|
SysKeyboardImpl *This = impl_from_IDirectInputDevice8W(iface);
|
||||||
TRACE("(%p)->(%d,%p)\n", This, len, ptr);
|
TRACE("(%p)->(%d,%p)\n", This, len, ptr);
|
||||||
|
|
||||||
if (!This->base.acquired) return DIERR_NOTACQUIRED;
|
if (!This->base.acquired) return DIERR_NOTACQUIRED;
|
||||||
|
@ -330,14 +336,18 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState(
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState(LPDIRECTINPUTDEVICE8A iface, DWORD len, LPVOID ptr)
|
||||||
|
{
|
||||||
|
SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
|
||||||
|
return SysKeyboardWImpl_GetDeviceState(IDirectInputDevice8W_from_impl(This), len, ptr);
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* GetCapabilities : get the device capabilities
|
* GetCapabilities : get the device capabilities
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI SysKeyboardAImpl_GetCapabilities(
|
static HRESULT WINAPI SysKeyboardWImpl_GetCapabilities(LPDIRECTINPUTDEVICE8W iface, LPDIDEVCAPS lpDIDevCaps)
|
||||||
LPDIRECTINPUTDEVICE8A iface,
|
|
||||||
LPDIDEVCAPS lpDIDevCaps)
|
|
||||||
{
|
{
|
||||||
SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
|
SysKeyboardImpl *This = impl_from_IDirectInputDevice8W(iface);
|
||||||
DIDEVCAPS devcaps;
|
DIDEVCAPS devcaps;
|
||||||
|
|
||||||
TRACE("(this=%p,%p)\n",This,lpDIDevCaps);
|
TRACE("(this=%p,%p)\n",This,lpDIDevCaps);
|
||||||
|
@ -346,7 +356,7 @@ static HRESULT WINAPI SysKeyboardAImpl_GetCapabilities(
|
||||||
WARN("invalid parameter\n");
|
WARN("invalid parameter\n");
|
||||||
return DIERR_INVALIDPARAM;
|
return DIERR_INVALIDPARAM;
|
||||||
}
|
}
|
||||||
|
|
||||||
devcaps.dwSize = lpDIDevCaps->dwSize;
|
devcaps.dwSize = lpDIDevCaps->dwSize;
|
||||||
devcaps.dwFlags = DIDC_ATTACHED;
|
devcaps.dwFlags = DIDC_ATTACHED;
|
||||||
if (This->base.dinput->dwVersion >= 0x0800)
|
if (This->base.dinput->dwVersion >= 0x0800)
|
||||||
|
@ -363,10 +373,16 @@ static HRESULT WINAPI SysKeyboardAImpl_GetCapabilities(
|
||||||
devcaps.dwFFDriverVersion = 0;
|
devcaps.dwFFDriverVersion = 0;
|
||||||
|
|
||||||
memcpy(lpDIDevCaps, &devcaps, lpDIDevCaps->dwSize);
|
memcpy(lpDIDevCaps, &devcaps, lpDIDevCaps->dwSize);
|
||||||
|
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SysKeyboardAImpl_GetCapabilities(LPDIRECTINPUTDEVICE8A iface, LPDIDEVCAPS lpDIDevCaps)
|
||||||
|
{
|
||||||
|
SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
|
||||||
|
return SysKeyboardWImpl_GetCapabilities(IDirectInputDevice8W_from_impl(This), lpDIDevCaps);
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* GetObjectInfo : get information about a device object such as a button
|
* GetObjectInfo : get information about a device object such as a button
|
||||||
* or axis
|
* or axis
|
||||||
|
@ -450,9 +466,11 @@ static HRESULT WINAPI SysKeyboardWImpl_GetDeviceInfo(LPDIRECTINPUTDEVICE8W iface
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* GetProperty : Retrieves information about the input device.
|
* GetProperty : Retrieves information about the input device.
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI SysKeyboardAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface,
|
static HRESULT WINAPI SysKeyboardWImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface,
|
||||||
REFGUID rguid, LPDIPROPHEADER pdiph)
|
REFGUID rguid, LPDIPROPHEADER pdiph)
|
||||||
{
|
{
|
||||||
|
SysKeyboardImpl *This = impl_from_IDirectInputDevice8W(iface);
|
||||||
|
|
||||||
TRACE("(%p) %s,%p\n", iface, debugstr_guid(rguid), pdiph);
|
TRACE("(%p) %s,%p\n", iface, debugstr_guid(rguid), pdiph);
|
||||||
_dump_DIPROPHEADER(pdiph);
|
_dump_DIPROPHEADER(pdiph);
|
||||||
|
|
||||||
|
@ -471,72 +489,72 @@ static HRESULT WINAPI SysKeyboardAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface,
|
||||||
|
|
||||||
didoi.dwSize = sizeof(DIDEVICEOBJECTINSTANCEW);
|
didoi.dwSize = sizeof(DIDEVICEOBJECTINSTANCEW);
|
||||||
|
|
||||||
hr = SysKeyboardWImpl_GetObjectInfo((LPDIRECTINPUTDEVICE8W)iface , &didoi,
|
hr = SysKeyboardWImpl_GetObjectInfo(iface, &didoi, ps->diph.dwObj, ps->diph.dwHow);
|
||||||
ps->diph.dwObj, ps->diph.dwHow);
|
|
||||||
if (hr == DI_OK)
|
if (hr == DI_OK)
|
||||||
memcpy(ps->wsz, didoi.tszName, sizeof(ps->wsz));
|
memcpy(ps->wsz, didoi.tszName, sizeof(ps->wsz));
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return IDirectInputDevice2AImpl_GetProperty( iface, rguid, pdiph );
|
return IDirectInputDevice2AImpl_GetProperty( IDirectInputDevice8A_from_impl(This), rguid, pdiph );
|
||||||
}
|
}
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SysKeyboardAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface,
|
||||||
|
REFGUID rguid, LPDIPROPHEADER pdiph)
|
||||||
|
{
|
||||||
|
SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
|
||||||
|
return SysKeyboardWImpl_GetProperty(IDirectInputDevice8W_from_impl(This), rguid, pdiph);
|
||||||
|
}
|
||||||
|
|
||||||
static const IDirectInputDevice8AVtbl SysKeyboardAvt =
|
static const IDirectInputDevice8AVtbl SysKeyboardAvt =
|
||||||
{
|
{
|
||||||
IDirectInputDevice2AImpl_QueryInterface,
|
IDirectInputDevice2AImpl_QueryInterface,
|
||||||
IDirectInputDevice2AImpl_AddRef,
|
IDirectInputDevice2AImpl_AddRef,
|
||||||
IDirectInputDevice2AImpl_Release,
|
IDirectInputDevice2AImpl_Release,
|
||||||
SysKeyboardAImpl_GetCapabilities,
|
SysKeyboardAImpl_GetCapabilities,
|
||||||
IDirectInputDevice2AImpl_EnumObjects,
|
IDirectInputDevice2AImpl_EnumObjects,
|
||||||
SysKeyboardAImpl_GetProperty,
|
SysKeyboardAImpl_GetProperty,
|
||||||
IDirectInputDevice2AImpl_SetProperty,
|
IDirectInputDevice2AImpl_SetProperty,
|
||||||
IDirectInputDevice2AImpl_Acquire,
|
IDirectInputDevice2AImpl_Acquire,
|
||||||
IDirectInputDevice2AImpl_Unacquire,
|
IDirectInputDevice2AImpl_Unacquire,
|
||||||
SysKeyboardAImpl_GetDeviceState,
|
SysKeyboardAImpl_GetDeviceState,
|
||||||
IDirectInputDevice2AImpl_GetDeviceData,
|
IDirectInputDevice2AImpl_GetDeviceData,
|
||||||
IDirectInputDevice2AImpl_SetDataFormat,
|
IDirectInputDevice2AImpl_SetDataFormat,
|
||||||
IDirectInputDevice2AImpl_SetEventNotification,
|
IDirectInputDevice2AImpl_SetEventNotification,
|
||||||
IDirectInputDevice2AImpl_SetCooperativeLevel,
|
IDirectInputDevice2AImpl_SetCooperativeLevel,
|
||||||
SysKeyboardAImpl_GetObjectInfo,
|
SysKeyboardAImpl_GetObjectInfo,
|
||||||
SysKeyboardAImpl_GetDeviceInfo,
|
SysKeyboardAImpl_GetDeviceInfo,
|
||||||
IDirectInputDevice2AImpl_RunControlPanel,
|
IDirectInputDevice2AImpl_RunControlPanel,
|
||||||
IDirectInputDevice2AImpl_Initialize,
|
IDirectInputDevice2AImpl_Initialize,
|
||||||
IDirectInputDevice2AImpl_CreateEffect,
|
IDirectInputDevice2AImpl_CreateEffect,
|
||||||
IDirectInputDevice2AImpl_EnumEffects,
|
IDirectInputDevice2AImpl_EnumEffects,
|
||||||
IDirectInputDevice2AImpl_GetEffectInfo,
|
IDirectInputDevice2AImpl_GetEffectInfo,
|
||||||
IDirectInputDevice2AImpl_GetForceFeedbackState,
|
IDirectInputDevice2AImpl_GetForceFeedbackState,
|
||||||
IDirectInputDevice2AImpl_SendForceFeedbackCommand,
|
IDirectInputDevice2AImpl_SendForceFeedbackCommand,
|
||||||
IDirectInputDevice2AImpl_EnumCreatedEffectObjects,
|
IDirectInputDevice2AImpl_EnumCreatedEffectObjects,
|
||||||
IDirectInputDevice2AImpl_Escape,
|
IDirectInputDevice2AImpl_Escape,
|
||||||
IDirectInputDevice2AImpl_Poll,
|
IDirectInputDevice2AImpl_Poll,
|
||||||
IDirectInputDevice2AImpl_SendDeviceData,
|
IDirectInputDevice2AImpl_SendDeviceData,
|
||||||
IDirectInputDevice7AImpl_EnumEffectsInFile,
|
IDirectInputDevice7AImpl_EnumEffectsInFile,
|
||||||
IDirectInputDevice7AImpl_WriteEffectToFile,
|
IDirectInputDevice7AImpl_WriteEffectToFile,
|
||||||
IDirectInputDevice8AImpl_BuildActionMap,
|
IDirectInputDevice8AImpl_BuildActionMap,
|
||||||
IDirectInputDevice8AImpl_SetActionMap,
|
IDirectInputDevice8AImpl_SetActionMap,
|
||||||
IDirectInputDevice8AImpl_GetImageInfo
|
IDirectInputDevice8AImpl_GetImageInfo
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !defined(__STRICT_ANSI__) && defined(__GNUC__)
|
|
||||||
# define XCAST(fun) (typeof(SysKeyboardWvt.fun))
|
|
||||||
#else
|
|
||||||
# define XCAST(fun) (void*)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const IDirectInputDevice8WVtbl SysKeyboardWvt =
|
static const IDirectInputDevice8WVtbl SysKeyboardWvt =
|
||||||
{
|
{
|
||||||
IDirectInputDevice2WImpl_QueryInterface,
|
IDirectInputDevice2WImpl_QueryInterface,
|
||||||
IDirectInputDevice2WImpl_AddRef,
|
IDirectInputDevice2WImpl_AddRef,
|
||||||
IDirectInputDevice2WImpl_Release,
|
IDirectInputDevice2WImpl_Release,
|
||||||
XCAST(GetCapabilities)SysKeyboardAImpl_GetCapabilities,
|
SysKeyboardWImpl_GetCapabilities,
|
||||||
IDirectInputDevice2WImpl_EnumObjects,
|
IDirectInputDevice2WImpl_EnumObjects,
|
||||||
XCAST(GetProperty)SysKeyboardAImpl_GetProperty,
|
SysKeyboardWImpl_GetProperty,
|
||||||
IDirectInputDevice2WImpl_SetProperty,
|
IDirectInputDevice2WImpl_SetProperty,
|
||||||
IDirectInputDevice2WImpl_Acquire,
|
IDirectInputDevice2WImpl_Acquire,
|
||||||
IDirectInputDevice2WImpl_Unacquire,
|
IDirectInputDevice2WImpl_Unacquire,
|
||||||
XCAST(GetDeviceState)SysKeyboardAImpl_GetDeviceState,
|
SysKeyboardWImpl_GetDeviceState,
|
||||||
IDirectInputDevice2WImpl_GetDeviceData,
|
IDirectInputDevice2WImpl_GetDeviceData,
|
||||||
IDirectInputDevice2WImpl_SetDataFormat,
|
IDirectInputDevice2WImpl_SetDataFormat,
|
||||||
IDirectInputDevice2WImpl_SetEventNotification,
|
IDirectInputDevice2WImpl_SetEventNotification,
|
||||||
|
@ -560,4 +578,3 @@ static const IDirectInputDevice8WVtbl SysKeyboardWvt =
|
||||||
IDirectInputDevice8WImpl_SetActionMap,
|
IDirectInputDevice8WImpl_SetActionMap,
|
||||||
IDirectInputDevice8WImpl_GetImageInfo
|
IDirectInputDevice8WImpl_GetImageInfo
|
||||||
};
|
};
|
||||||
#undef XCAST
|
|
||||||
|
|
Loading…
Reference in New Issue