【发布时间】:2019-05-02 22:58:37
【问题描述】:
我们可以使用GetKeyNameText() 来检索表示键名的字符串。有什么方法可以反过来,即为给定的键名获取扫描码或虚拟键?
我想将键名写入配置文件,以便用户轻松编辑它们。当我读入配置文件时,我需要做 GetKeyNameText() 的相反操作。
【问题讨论】:
标签: c windows winapi scancodes
我们可以使用GetKeyNameText() 来检索表示键名的字符串。有什么方法可以反过来,即为给定的键名获取扫描码或虚拟键?
我想将键名写入配置文件,以便用户轻松编辑它们。当我读入配置文件时,我需要做 GetKeyNameText() 的相反操作。
【问题讨论】:
标签: c windows winapi scancodes
不是个好主意,这些名称不是固定的:
键名是根据当前安装的键盘布局翻译的,因此该函数可能会针对不同的输入语言环境给出不同的结果。
如果你很绝望,我想你可以在循环中调用GetKeyNameText,尝试所有可能的扫描码。
MapVirtualKey 可以将扫描码转换为虚拟键,如果您也需要这样做的话。虚拟键在所有键盘和所有 Windows 版本中都是稳定的。
我建议您硬编码一些常见的名称,并具有虚拟键,如 A-Z、0-9、Ctrl、Alt、Shift、Home、Insert 等,并将它们存储为英文文本。只存储其他奇怪键的扫描码。
【讨论】: