不要获取某些键的ASCII码

时间:2015-07-20 11:24:32

标签: c++ winapi ascii

我一直在制作一个项目,其中一个项目就是使用键盘上按下的键。它读取每个键的ASCII码,但有些键不会发出任何信号,例如:' 。 ',' /',' ; '等等...

char i;

while(1){
    for(i = 0; i <= 190; i++){
        if(GetAsyncKeyState(i) == -32767)
            key_pressed(i, "KEYS.TXT");
    }
}

这是我监控按键的方式。

1 个答案:

答案 0 :(得分:3)

GetAsyncKeyState()使用virtual key codes,而非ASCII值。 其中一些代码与ASCII值一致(例如,A两者都是0x41),但不是全部。

在这种情况下,如果您想知道是否按下了;(或:)键,您将使用VK_OEM_1(或0xBA)

您可以使用VkKeyScan()将ASCII代码转换为虚拟密钥代码。 (我还没有测试过,所以不能告诉你它是否真的有效)