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


Ответы (0 шт):