【问题标题】:Identify key uniquely from WM_KEYDOWN message从 WM_KEYDOWN 消息中唯一地识别键
【发布时间】:2011-11-10 19:03:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: winapi keyboard keypress scancodes


    【解决方案1】:

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

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

    键盘设备驱动程序解释扫描码并翻译 (映射)它到一个虚拟键码,一个与设备无关的值,定义为 识别密钥用途的系统。

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 2012-05-25
      • 2010-10-11
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      相关资源
      最近更新 更多