VK_MENU + VK_F[N} не посылает WM_SYSKEYDOWN
Приветсвую. Я столкнулся с проблемой при обработке клавиш в WinAPI. Проблема возникает сочетании Alt и клавиш F1, F2 и т.д. Т.е. я зажимаю F2, то всё ок. Вижу и нажатие и отжатие. Если зажимаю ALT + Q тоже ок:
INFO WM_SYSKEYDOWN: key: 18
INFO WM_SYSKEYDOWN: key: 81
INFO WM_KEYUP: key: 18
INFO WM_KEYUP: key: 81
А вот если зажимаю Alt + F1, то:
INFO WM_SYSKEYDOWN: key: 18
INFO WM_SYSKEYUP: key: 113
INFO WM_KEYUP: key: 18
113 (VK_F2) нажалась, но не произошло события на отжатие. Почему? Тут даже prevent события через return не помогает. И проблема осталась. Почему-то только с F[N] Проблему можно воспроизвести на любом WinAPI примере. Вот мой текущий код обработки клавиш:
LRESULT CALLBACK wndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
WindowPlatformData *window = (WindowPlatformData *)GetPropW(hwnd, L"MYWINDOW");
switch (uMsg)
{
case WM_SYSKEYUP:
logInfo("WM_SYSKEYUP: key: %d", wParam);
return TRUE;
case WM_SYSKEYDOWN:
logInfo("WM_SYSKEYDOWN: key: %d", wParam);
return TRUE;
case WM_KEYDOWN:
logInfo("WM_KEYDOWN: key: %d", wParam);
return TRUE;
case WM_KEYUP:
logInfo("WM_KEYUP: key: %d", wParam);
return TRUE;
case WM_CLOSE:
window->readyToClose = true;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
}
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
}
Хочу понять в чём причина проблем. В документации Microsoft написано только про Alt + F10