0

我尝试使用 wParam 提供的虚拟键代码,但效果不佳:

  • 多个键映射到同一个键码
  • 有些键根本无法识别
  • 虚拟键似乎适应了键盘布局(我不想要/不需要)

然后我看到 lParam 会给我一个扫描码和一个“扩展”标志,当这样计算时,它似乎为键盘上的每个键产生不同的值:

value = (lParam & 0x01FF0000) >> 16;

即使在不同的键盘/系统中,这个值对于键盘上的同一个键是否总是相同的?

4

1 回答 1

1

不同键盘的扫描码可能不同。最好使用虚拟键码。从http://msdn.microsoft.com/en-us/library/ms646267(v=vs.85).aspx

分配给键盘上的每个键的是一个称为扫描码的唯一值,它是键盘上键的设备相关标识符。当用户键入一个键时,键盘会生成两个扫描码——一个是在用户按下键时,另一个是在用户释放键时。

键盘设备驱动程序解释扫描代码并将其转换(映射)为虚拟键代码,这是由系统定义的与设备无关的值,用于识别键的用途。

于 2011-09-06T22:12:24.160 回答