按键时的扫描码不同。 Microsoft规范是错误的吗?

时间:2009-11-20 00:27:03

标签: windows winapi keyboard-layout scancodes

我正在使用Windows XP专业版SP3。标准英文键盘。我住在美国;从未触及键盘设置。库存安装。所以,当我按下检查我的程序返回的扫描码时,它们如下:

A = 30
S = 31
D = 32
F = 33
G = 34

当我查看microsoft规范时(文档的第11页:: http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc)它说:

A = 31
S = 32
D = 33
F = 34
G = 35

他们被1关闭!有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您引用的Microsoft键盘扫描代码规范有六列。对于A键:

关键位置:31
键盘:A
扫描1制作:1E
扫描1次休息:9E
扫描2制作:1C
扫描2次中断:F0 1C

看起来“扫描2”集是一个备用硬件扫描代码,它与原始IBM PC扫描代码(“扫描1”)不同。请注意,“密钥位置”为31,“scan 1 make”为30.这可能有助于解释您最初发布的值所看到的内容。也许你可以试着看看像Esc这样的键和每个组中的键都很不一样(而不仅仅是一个,我认为这是误导性的。)

您没有说出使用哪种API或Windows消息来获取您报告的扫描代码值,但如果您查看详细文档中的任何内容,您可能会找到更多信息。

答案 1 :(得分:-1)

键盘驱动程序是否在硬件级别出现故障或键盘驱动程序有问题?