Определить, есть ли на раскладке клавиатуры AltGr под Windows

Кто-нибудь знает хороший метод, как мы можем проверить из кода на C/C++, есть ли на фактической раскладке клавиатуры клавиша ALTGR или нет?

Я думаю, что лучшим способом было бы прочитать и интерпретировать файл раскладки клавиатуры, например, "KBDGR.DLL" для немецкого языка, но API для этого не существует, а то, что существует, недостаточно документировано.

Есть ли другой способ сделать это?

0 ответов

Я знаю, что это было давно - это лучшее, что я придумал

BOOL CMonitor::LayoutHasAltGr(HKL keyboard_layout)
{
    BOOL hasAltGr = FALSE;
    int scancode;

    for (WORD i = 32; i < 256; ++i)
    {
        scancode = VkKeyScanEx((TCHAR)i, keyboard_layout);
        if (scancode != -1 && (scancode & 0x600) == 0x600)
        {
            // Ctrl + Alt means AltGr
            hasAltGr = TRUE;
            break;
        }
    }

    return hasAltGr;
Другие вопросы по тегам