反向操作GetKeyNameText

时间:2019-05-02 22:58:38

标签: c windows winapi scancodes

我们可以使用GetKeyNameText()来检索代表键名的字符串。有什么方法可以做相反的操作,即获取给定密钥名称的扫描码或虚拟密钥吗?

我想将键名写入配置文件,以便用户可以轻松地对其进行编辑。当我读入配置文件时,我需要做相反的GetKeyNameText()

1 个答案:

答案 0 :(得分:2)

这不是一个好主意,这些名称不是常量:

  

根据当前安装的键盘的布局来翻译键名,因此该功能对于不同的输入语言环境可能会给出不同的结果。

如果您不顾一切,我想您可以在循环中调用GetKeyNameText尝试所有可能的扫描代码。

MapVirtualKey可以将扫描代码转换为虚拟密钥,如果您也需要这样做的话。虚拟键在所有键盘和所有Windows版本中都是稳定的。

我建议您对一些常用名称进行硬编码,并使用虚拟键(例如A-Z,0-9,Ctrl,Alt,Shift,Home,Insert等)并将其存储为英文文本。仅存储其他奇怪密钥的扫描代码。