Always use a VK in MapVirtualKeyW(..., MAPVK_VK_TO_VSC) (#3199)

Fixes #2873.
This commit is contained in:
Dustin L. Howett (MSFT) 2019-10-17 14:58:41 -07:00 committed by Michael Niksa
parent a02a5d9986
commit 9e5792ba51
2 changed files with 6 additions and 5 deletions

View file

@ -176,7 +176,7 @@ class ClipboardTests
const short keyState = pInputServices->VkKeyScanW(wch);
VERIFY_ARE_NOT_EQUAL(-1, keyState);
const WORD virtualScanCode = static_cast<WORD>(pInputServices->MapVirtualKeyW(wch, MAPVK_VK_TO_VSC));
const WORD virtualScanCode = static_cast<WORD>(pInputServices->MapVirtualKeyW(LOBYTE(keyState), MAPVK_VK_TO_VSC));
VERIFY_ARE_EQUAL(wch, keyEvent->GetCharData());
VERIFY_ARE_EQUAL(isKeyDown, keyEvent->IsKeyDown());
@ -217,7 +217,7 @@ class ClipboardTests
const short keyScanError = -1;
const short keyState = pInputServices->VkKeyScanW(wch);
VERIFY_ARE_NOT_EQUAL(keyScanError, keyState);
const WORD virtualScanCode = static_cast<WORD>(pInputServices->MapVirtualKeyW(wch, MAPVK_VK_TO_VSC));
const WORD virtualScanCode = static_cast<WORD>(pInputServices->MapVirtualKeyW(LOBYTE(keyState), MAPVK_VK_TO_VSC));
if (std::isupper(wch))
{
@ -232,8 +232,8 @@ class ClipboardTests
events.pop_front();
const short keyState2 = pInputServices->VkKeyScanW(wch);
VERIFY_ARE_NOT_EQUAL(keyScanError, keyState);
const WORD virtualScanCode2 = static_cast<WORD>(pInputServices->MapVirtualKeyW(wch, MAPVK_VK_TO_VSC));
VERIFY_ARE_NOT_EQUAL(keyScanError, keyState2);
const WORD virtualScanCode2 = static_cast<WORD>(pInputServices->MapVirtualKeyW(LOBYTE(keyState2), MAPVK_VK_TO_VSC));
if (isKeyDown)
{

View file

@ -206,7 +206,8 @@ std::deque<std::unique_ptr<KeyEvent>> SynthesizeKeyboardEvents(const wchar_t wch
SHIFT_PRESSED));
}
const WORD virtualScanCode = gsl::narrow<WORD>(MapVirtualKeyW(wch, MAPVK_VK_TO_VSC));
const auto vk = LOBYTE(keyState);
const WORD virtualScanCode = gsl::narrow<WORD>(MapVirtualKeyW(vk, MAPVK_VK_TO_VSC));
KeyEvent keyEvent{ true, 1, LOBYTE(keyState), virtualScanCode, wch, 0 };
// add modifier flags if necessary