【问题标题】:How to translate hardware ascii to hardware scan code in win32如何在win32中将硬件ascii转换为硬件扫描码
【发布时间】:2009-09-01 08:35:49
【问题描述】:

有没有办法把一个字符翻译成它对应的硬件扫描码(不是虚拟键码)?我需要它来与古老的硬件设备通信。

【问题讨论】:

  • 哪个古硬件设备??
  • 一个老式的自制嵌入式系统。它接受发送给它的原始键盘扫描码。我制作了一个 C# 应用程序来控制它,我希望发送给它的数据可读。

标签: windows visual-studio winapi


【解决方案1】:

似乎最直接的方法是使用 MapVirtualKey 或 MapVirtualKeyEx 将 VK 代码转换为扫描代码。

可以使用VkKeyScan获取VK扫描码的字符(根据MS文档提取包含VK码的低字节)。所以要得到'X'的扫描码:

 UINT VKCode=LOBYTE(VkKeyScan('X'));
 UINT ScanCode=MapVirtualKey(VKCode,0);

【讨论】:

  • 更完整的答案是,先用VkKeyScan把key转成virtualkeycode,再用MapVirtualKey转成scancode
  • 其实在现实生活中试过这个,然后有问题;重读 MS 文档后,我将 LOBYTE 添加到上面的解决方案代码中
猜你喜欢
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 2010-12-03
相关资源
最近更新 更多