在Windows下检测键盘布局上是否具有AltGr

时间:2019-02-08 08:54:31

标签: windows keyboard keyboard-layout

有人知道一种好方法,如何在C / C ++中从代码中检查实际的键盘布局是否带有ALTGR键?

我认为最好的方法是读取和解释键盘布局文件,例如用于德语的“ KBDGR.DLL”,但执行此操作的API不存在,并且所存在的内容也没有得到充分记录。

还有其他方法吗?

1 个答案:

答案 0 :(得分: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;