2
3
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-14 02:27:40 -04:00

Zrax's fix to re-enable the numlock key

37d6c12b94
This commit is contained in:
John Johns
2021-06-04 20:31:06 -07:00
parent c914ba5bac
commit 062bfd40d3
2 changed files with 1 additions and 59 deletions

View File

@ -76,18 +76,15 @@ fCapsLockKeyDown(false),
fAltKeyDown(false),
fCtrlKeyDown(false),
fCapsLockLock(false),
fPrevNumLockOn(false),
fControlMode(STANDARD_MODE)
{
fInstance = this;
fStartedUpWithNumLockOn = ((GetKeyState(VK_NUMLOCK) & 1) != 0);
InitKeyboardState();
}
plKeyboardDevice::~plKeyboardDevice()
{
if (fStartedUpWithNumLockOn)
ForceNumLock(true);
}
void plKeyboardDevice::InitKeyboardState()
@ -168,29 +165,6 @@ void plKeyboardDevice::Shutdown()
{
}
#if HS_BUILD_FOR_WIN32
void plKeyboardDevice::ForceNumLock(hsBool on)
{
if (on != ((GetKeyState(VK_NUMLOCK) & 1) != 0))
{
OSVERSIONINFO info;
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&info);
if (info.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
keybd_event( VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 );
keybd_event( VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 );
}
else
{
UInt8 keyState[256];
GetKeyboardState(keyState);
keyState[VK_NUMLOCK] = keyState[VK_NUMLOCK] ^ 1;
SetKeyboardState(keyState);
}
}
}
#endif //HS_BUILD_FOR_WIN32
void plKeyboardDevice::HandleKeyEvent(plOSMsg message, plKeyDef key, bool bKeyDown, hsBool bKeyRepeat)
{
@ -199,13 +173,6 @@ void plKeyboardDevice::HandleKeyEvent(plOSMsg message, plKeyDef key, bool bKeyDo
if ((key >= 0) && (key < 256))
fKeyboardState[key] = bKeyDown;
#if HS_BUILD_FOR_WIN32
if (key == VK_NUMLOCK && bKeyDown)
{
ForceNumLock(false);
}
#endif // HS_BUILD_FOR_WIN32
if (key == KEY_SHIFT)
{
fShiftKeyDown = bKeyDown;
@ -242,27 +209,10 @@ void plKeyboardDevice::HandleWindowActivate(bool bActive, HWND hWnd)
if (bActive)
{
fCtrlKeyDown = false;
#if HS_BUILD_FOR_WIN32
{
fPrevNumLockOn = ((GetKeyState(VK_NUMLOCK) & 1) != 0);
ForceNumLock(false);
hsBool oldLock = fCapsLockLock;
fCapsLockLock = (GetKeyState(KEY_CAPSLOCK) & 1) != 0;
if (fCapsLockLock != oldLock)
plAvatarInputInterface::GetInstance()->ForceAlwaysRun(fCapsLockLock);
}
#endif
}
else
{
ReleaseAllKeys(); // send key-up events for everything since we're losing focus
#if HS_BUILD_FOR_WIN32
{
if (fPrevNumLockOn)
ForceNumLock(true);
}
#endif
}
}

View File

@ -121,10 +121,6 @@ public:
virtual hsBool IsCapsLockKeyOn();
virtual void Shutdown();
#if HS_BUILD_FOR_WIN32
void ForceNumLock(hsBool on);
#endif
static hsBool IgnoreCapsLock() { return fIgnoreCapsLock; }
static void IgnoreCapsLock(hsBool ignore) { fIgnoreCapsLock = ignore; }
@ -133,10 +129,6 @@ public:
static plKeyboardDevice* GetInstance() { return fInstance; }
static char KeyEventToChar( plKeyEventMsg *msg );
protected:
hsBool fStartedUpWithNumLockOn; // maintaining a separate flag since apparently the other one can get confused
hsBool fPrevNumLockOn;
};
class plPlate;