ToUnicodeEx用零填充缓冲区并返回1

时间:2014-01-15 11:13:38

标签: windows winapi keyboard keyboard-layout

我使用ToUnicodeEx函数将扫描码和虚拟键码转换为Unicode字符。在大多数情况下,它的工作方式如documentation中所述。但是在某些键盘布局中的某些键上,ToUnicodeEx用零填充缓冲区但返回1.根据MSDN,它表示写入缓冲区的一个字符。但缓冲区中的第一个值包含0.我应该如何解释这些值组合?

我在以下情况中发现了这种行为:

  • 阿拉伯语(102)(00010401)扫描码:0x1f,虚拟键:0x53'S',按下Shift键,未按下其他修饰键。
  • Inuktitut - Latin(0000085d)scancode:0x1b,虚拟键:0xdd VK_OEM_6,Shift按下,CapsLock打开,其他修饰符未按下。

Microsoft Keyboard Layout Creator加载这些布局时没有错误。在阿拉伯语(102)键上有问题是空的。在Inuktitut上 - 带问题的拉丁布局键包含大括号字符'}'。

我不明白,键盘布局创建器如何读取此字符。

0 个答案:

没有答案