未定义和未分配的虚拟键码有什么区别?

问题描述 投票:1回答:1

我想知道未定义和未分配的virtual key codes之间是否有区别,以及是否存在任何已知的原因,为什么它们似乎在数字序列中随机散布而不是例如在末尾分组在一起。

是否已声明未分配(只是未分配值)而未定义?如果是这样,它们被声明为什么?我相信保留的内容供将来使用,如果我写错了,请纠正我。

我不知道Windows API代码在哪里(在Windows上的某个地方),以便编程语言可以使用它,所以我不知道上面的代码是如何工作的。

windows winapi keyboard-events keyboard-input
1个回答
0
投票

对于早期的程序员,真正的键代码是由实际的键盘硬件生成的。这些密钥代码在Windows文件中称为“扫描代码”。在IBM兼容型号上,扫描代码16是Q键,17是W键,18是E,19是R,20是T,21是Y,依此类推。此时,您会发现扫描代码基于键盘的实际布局。 Windows开发人员认为该代码过于依赖于设备,因此他们尝试通过定义所谓的虚拟键控代码来以与设备无关的方式来处理键盘。其中一些虚拟键代码无法在IBM兼容型号上生成,但可以在其他制造商生产的键盘或将来的键盘上找到。

例如,0xC1-D7是保留的,0xD8-DA是未分配的,我们可以在WinUser.h中看到定义,0xC1 - 0xC2:保留,0xC3 - 0xDA用作游戏手柄输入。

正如汉斯·帕桑(Hans Passant)所说,我们可以为自定义键选择一个“未定义”的数字,但不能为“保留”的数字。

© www.soinside.com 2019 - 2024. All rights reserved.