查找在PreTranslateMessage中按下了哪个物理键

时间:2016-09-07 09:12:18

标签: windows winapi mfc keyboard

我想解决的问题是找出是否按下了通过USB连接的踏板。踏板实际上是一键键盘,映射到键B。

问题是PreTranslateMessage给了我键的Unicode值,所以如果语言栏设置为不同的语言,比如希伯来语,我会得到任意字母映射到键B的Unicode值,比如字母Nun在希伯来文。

我正在使用的代码是

BOOL CViewerDlg::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN)
        if (pMsg->wParam == 'B')
            videoSwitch();

    return CDialog::PreTranslateMessage(pMsg);
}

当语言栏选择了英语时,wParam包含十六进制42(=大写B),当选择希伯来语时,它包含十六进制e7,表示传递的Unicode字符就像是击键一样。

有没有办法找出按下了哪个物理键?

也许将踏板上的键(仅限第二个键盘)映射到其他键?

可能确定按键发起的键盘是什么?

0 个答案:

没有答案