如何将VK扫描代码转换为所选语言的适当字符

时间:2015-06-09 20:01:32

标签: windows winapi keyboard scancodes

我有一个多语言的应用程序,我必须将VK扫描代码转换为当前键盘布局指定的相应字符,前提是它们映射到某些字符表示而不仅仅是动作,状态或其他元使用。我如何实现这一点,以便它可以使用不同的语言在不同的Windows上移植?

我可以为VK扫描代码编写映射函数,但在WinUser.h文件中,我读的内容如下:

#define VK_OEM_4          0xDB  //  '[{' for US
#define VK_OEM_5          0xDC  //  '\|' for US
#define VK_OEM_6          0xDD  //  ']}' for US
#define VK_OEM_7          0xDE  //  ''"' for US

这表明如果键盘不在美国,这可能会有所不同。必须有一个函数我可以通过键盘驱动程序调用来做适当的映射,对吧?

1 个答案:

答案 0 :(得分:0)

可靠的解决方案是处理WM_CHAR条消息。将字符输入与击键分离为您提供映射,不仅支持内置Windows键盘布局,还支持IME,语音API,手写和其他第三方输入方法。 MapVirtualKeyToUnicode和相关函数依赖于Windows内核中关于死键的内部状态,因此无法保证始终返回正确的字符。