Fixed mouse getting stuck in the middle of the overlay in some games.
parent
6dfe11503b
commit
5f8a454e3f
|
@ -18,13 +18,15 @@ bool Windows_Hook::start_hook()
|
||||||
{
|
{
|
||||||
GetRawInputBuffer = ::GetRawInputBuffer;
|
GetRawInputBuffer = ::GetRawInputBuffer;
|
||||||
GetRawInputData = ::GetRawInputData;
|
GetRawInputData = ::GetRawInputData;
|
||||||
|
SetCursorPos = ::SetCursorPos;
|
||||||
|
|
||||||
PRINT_DEBUG("Hooked Windows\n");
|
PRINT_DEBUG("Hooked Windows\n");
|
||||||
|
|
||||||
BeginHook();
|
BeginHook();
|
||||||
HookFuncs(
|
HookFuncs(
|
||||||
std::make_pair<void**, void*>(&(PVOID&)GetRawInputBuffer, &Windows_Hook::MyGetRawInputBuffer),
|
std::make_pair<void**, void*>(&(PVOID&)GetRawInputBuffer, &Windows_Hook::MyGetRawInputBuffer),
|
||||||
std::make_pair<void**, void*>(&(PVOID&)GetRawInputData , &Windows_Hook::MyGetRawInputData)
|
std::make_pair<void**, void*>(&(PVOID&)GetRawInputData , &Windows_Hook::MyGetRawInputData),
|
||||||
|
std::make_pair<void**, void*>(&(PVOID&)SetCursorPos , &Windows_Hook::MySetCursorPos)
|
||||||
);
|
);
|
||||||
EndHook();
|
EndHook();
|
||||||
|
|
||||||
|
@ -169,6 +171,18 @@ UINT WINAPI Windows_Hook::MyGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI Windows_Hook::MySetCursorPos(int x, int y)
|
||||||
|
{
|
||||||
|
if (get_steam_client()->steam_overlay->ShowOverlay()) {
|
||||||
|
POINT p;
|
||||||
|
GetCursorPos(&p);
|
||||||
|
x = p.x;
|
||||||
|
y = p.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Windows_Hook::Inst()->SetCursorPos(x, y);
|
||||||
|
}
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Windows_Hook::Windows_Hook() :
|
Windows_Hook::Windows_Hook() :
|
||||||
|
|
|
@ -26,11 +26,13 @@ private:
|
||||||
// Hook to Windows window messages
|
// Hook to Windows window messages
|
||||||
decltype(GetRawInputBuffer)* GetRawInputBuffer;
|
decltype(GetRawInputBuffer)* GetRawInputBuffer;
|
||||||
decltype(GetRawInputData)* GetRawInputData;
|
decltype(GetRawInputData)* GetRawInputData;
|
||||||
|
decltype(SetCursorPos)* SetCursorPos;
|
||||||
|
|
||||||
static LRESULT CALLBACK HookWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
static LRESULT CALLBACK HookWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
static UINT WINAPI MyGetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader);
|
static UINT WINAPI MyGetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader);
|
||||||
static UINT WINAPI MyGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader);
|
static UINT WINAPI MyGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader);
|
||||||
|
|
||||||
|
static BOOL WINAPI MySetCursorPos(int x, int y);
|
||||||
public:
|
public:
|
||||||
virtual ~Windows_Hook();
|
virtual ~Windows_Hook();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue