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

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

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

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


person makurisan    schedule 08.02.2019    source источник


Ответы (1)


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

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;
person Michael T    schedule 13.09.2019