mirror of
https://github.com/libretro/ppsspp.git
synced 2024-12-02 22:26:25 +00:00
Release held keys on the keyboard when window focus is lost.
This commit is contained in:
parent
c51b117ba2
commit
f90aebcebf
@ -103,6 +103,7 @@ static RECT g_normalRC = {0};
|
||||
static std::wstring windowTitle;
|
||||
extern bool g_TakeScreenshot;
|
||||
extern InputState input_state;
|
||||
static std::vector<int> keyboardKeysDown;
|
||||
|
||||
#define TIMER_CURSORUPDATE 1
|
||||
#define TIMER_CURSORMOVEUPDATE 2
|
||||
@ -1083,13 +1084,15 @@ namespace MainWindow
|
||||
}
|
||||
|
||||
if (wParam == WA_INACTIVE) {
|
||||
// Force-release TAB, which is the most annoying one when alt tabbing
|
||||
// This isn't exactly a correct solution but will fix this annoyance for many.
|
||||
// Force-release all held keys on the keyboard to prevent annoying stray inputs.
|
||||
KeyInput key;
|
||||
key.deviceId = DEVICE_ID_KEYBOARD;
|
||||
key.keyCode = NKCODE_TAB;
|
||||
key.flags = KEY_UP;
|
||||
NativeKey(key);
|
||||
|
||||
for (auto i = keyboardKeysDown.begin(); i != keyboardKeysDown.end(); ++i) {
|
||||
key.keyCode = *i;
|
||||
NativeKey(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1546,12 +1549,20 @@ namespace MainWindow
|
||||
key.keyCode = windowsTransTable[GetTrueVKey(raw->data.keyboard)];
|
||||
if (key.keyCode) {
|
||||
NativeKey(key);
|
||||
|
||||
const bool keyNotHeld = std::find(keyboardKeysDown.begin(), keyboardKeysDown.end(), key.keyCode) == keyboardKeysDown.end();
|
||||
if (keyNotHeld)
|
||||
keyboardKeysDown.push_back(key.keyCode);
|
||||
}
|
||||
} else if (raw->data.keyboard.Message == WM_KEYUP) {
|
||||
key.flags = KEY_UP;
|
||||
key.keyCode = windowsTransTable[GetTrueVKey(raw->data.keyboard)];
|
||||
if (key.keyCode) {
|
||||
NativeKey(key);
|
||||
NativeKey(key);
|
||||
|
||||
auto keyHeld = std::find(keyboardKeysDown.begin(), keyboardKeysDown.end(), key.keyCode);
|
||||
if (keyHeld != keyboardKeysDown.end())
|
||||
keyboardKeysDown.erase(keyHeld);
|
||||
}
|
||||
}
|
||||
} else if (raw->header.dwType == RIM_TYPEMOUSE) {
|
||||
|
Loading…
Reference in New Issue
Block a user