mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed hotkeys not working with default dinput8 keyboard hook
Fixes hotkeys not working in Beach Life after intro movie.
This commit is contained in:
parent
a442239ac1
commit
a5636bef12
@ -10,8 +10,7 @@ namespace
|
||||
{
|
||||
Compat::CriticalSection g_logCs;
|
||||
std::ofstream g_logFile;
|
||||
static std::ostringstream g_initialLogStream;
|
||||
|
||||
std::ostringstream g_initialLogStream;
|
||||
}
|
||||
|
||||
namespace Compat
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <tuple>
|
||||
|
||||
#include <Windows.h>
|
||||
#include <hidusage.h>
|
||||
#include <winternl.h>
|
||||
|
||||
#include <Common/BitSet.h>
|
||||
@ -249,6 +250,24 @@ namespace
|
||||
return { MulDiv(pt.x, 100, dpiScale), MulDiv(pt.y, 100, dpiScale) };
|
||||
}
|
||||
|
||||
BOOL WINAPI registerRawInputDevices(PCRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize)
|
||||
{
|
||||
LOG_FUNC("RegisterRawInputDevices", Compat::array(pRawInputDevices, uiNumDevices), uiNumDevices, cbSize);
|
||||
if (1 == uiNumDevices &&
|
||||
HID_USAGE_PAGE_GENERIC == pRawInputDevices->usUsagePage &&
|
||||
HID_USAGE_GENERIC_KEYBOARD == pRawInputDevices->usUsage &&
|
||||
pRawInputDevices->hwndTarget)
|
||||
{
|
||||
char className[32] = {};
|
||||
GetClassNameA(pRawInputDevices->hwndTarget, className, sizeof(className));
|
||||
if (0 == strcmp(className, "DIEmWin"))
|
||||
{
|
||||
return LOG_RESULT(FALSE);
|
||||
}
|
||||
}
|
||||
return LOG_RESULT(CALL_ORIG_FUNC(RegisterRawInputDevices)(pRawInputDevices, uiNumDevices, cbSize));
|
||||
}
|
||||
|
||||
void resetKeyboardHook()
|
||||
{
|
||||
Gdi::GuiThread::execute([]()
|
||||
@ -421,6 +440,7 @@ namespace Input
|
||||
g_physicalToLogicalPointForPerMonitorDPI = reinterpret_cast<decltype(&PhysicalToLogicalPointForPerMonitorDPI)>(
|
||||
GetProcAddress(GetModuleHandle("user32"), "PhysicalToLogicalPointForPerMonitorDPI"));
|
||||
|
||||
HOOK_FUNCTION(user32, RegisterRawInputDevices, registerRawInputDevices);
|
||||
HOOK_FUNCTION(user32, SetCursorPos, setCursorPos);
|
||||
HOOK_FUNCTION(user32, SetWindowsHookExA, setWindowsHookExA);
|
||||
HOOK_FUNCTION(user32, SetWindowsHookExW, setWindowsHookExW);
|
||||
|
@ -462,6 +462,15 @@ std::ostream& operator<<(std::ostream& os, const POINTS& p)
|
||||
<< p.y;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const RAWINPUTDEVICE& input)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(input.usUsagePage)
|
||||
<< Compat::hex(input.usUsage)
|
||||
<< Compat::hex(input.dwFlags)
|
||||
<< input.hwndTarget;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const RECT& rect)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
|
@ -42,6 +42,7 @@ std::ostream& operator<<(std::ostream& os, const OSVERSIONINFOEXA& vi);
|
||||
std::ostream& operator<<(std::ostream& os, const OSVERSIONINFOEXW& vi);
|
||||
std::ostream& operator<<(std::ostream& os, const POINT& p);
|
||||
std::ostream& operator<<(std::ostream& os, const POINTS& p);
|
||||
std::ostream& operator<<(std::ostream& os, const RAWINPUTDEVICE& input);
|
||||
std::ostream& operator<<(std::ostream& os, const RECT& rect);
|
||||
std::ostream& operator<<(std::ostream& os, const SIZE& size);
|
||||
std::ostream& operator<<(std::ostream& os, const STYLESTRUCT& ss);
|
||||
|
Loading…
x
Reference in New Issue
Block a user