diff --git a/src/modules/keyboardmanager/common/Helpers.cpp b/src/modules/keyboardmanager/common/Helpers.cpp index ffbffacc70..ec188d758c 100644 --- a/src/modules/keyboardmanager/common/Helpers.cpp +++ b/src/modules/keyboardmanager/common/Helpers.cpp @@ -26,3 +26,19 @@ IInspectable getSiblingElement(IInspectable const& element) parentElement.Children().IndexOf(frameworkElement, index); return parentElement.Children().GetAt(index + 1); } + +// Function to return if the key is an extended key which requires the use of the extended key flag +bool isExtendedKey(DWORD key) +{ + switch (key) + { + case VK_RCONTROL: + case VK_RMENU: + case VK_NUMLOCK: + case VK_SNAPSHOT: + case VK_CANCEL: + return true; + default: + return false; + } +} diff --git a/src/modules/keyboardmanager/common/Helpers.h b/src/modules/keyboardmanager/common/Helpers.h index 9371ecd8e5..7a2d3bc8e2 100644 --- a/src/modules/keyboardmanager/common/Helpers.h +++ b/src/modules/keyboardmanager/common/Helpers.h @@ -32,3 +32,6 @@ std::vector convertWStringVectorToIntegerVector(const std::vector(&__ImageBase); - if (action_object.get_name() == L"RemapKeyboard") + if (action_object.get_name() == L"RemapKeyboard") { if (!CheckEditKeyboardWindowActive()) { @@ -325,6 +325,10 @@ public: keyEventArray[index].type = inputType; keyEventArray[index].ki.wVk = keyCode; keyEventArray[index].ki.dwFlags = flags; + if (isExtendedKey(keyCode)) + { + keyEventArray[index].ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; + } keyEventArray[index].ki.dwExtraInfo = extraInfo; }