如何在win32中将硬件ascii转换为硬件扫描码

Ela*_*ich 4 windows winapi visual-studio

有没有办法将字符转换为其相应的硬件扫描码(而不是虚拟键码)?我需要它来与古老的硬件设备进行通信。

Ele*_*tal 5

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

VK扫描码的字符可以使用VkKeyScan获取(根据MS文档提取包含VK代码的低字节)。因此,要获取“X”的扫描码:

 UINT VKCode=LOBYTE(VkKeyScan('X'));
 UINT ScanCode=MapVirtualKey(VKCode,0);
Run Code Online (Sandbox Code Playgroud)

  • 更完整的答案是,使用VkKeyScan将按键转换为virtualkeycode,然后使用MapVirtualKey将其转换为scancode (2认同)