2

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

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

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

Microsoft Keyboard Layout Creator 加载这些布局时不会出错。在阿拉伯语 (102) 上有问题的键为空。在因纽特语 - 有问题的拉丁文布局键包含大括号字符“}”。

我不明白,键盘布局创建者如何读取这个字符。

4

0 回答 0