Skip to content

Commit

Permalink
Always use a VK in MapVirtualKeyW(..., MAPVK_VK_TO_VSC)
Browse files Browse the repository at this point in the history
Fixes #2873.
  • Loading branch information
DHowett committed Oct 15, 2019
1 parent 0691c21 commit c5d1cbb
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
8 changes: 4 additions & 4 deletions src/host/ut_host/ClipboardTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -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))
{
Expand All @@ -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)
{
Expand Down
3 changes: 2 additions & 1 deletion src/types/convert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c5d1cbb

Please sign in to comment.