上一篇: 汇编中MOV和LEA的区别 下一篇:汇编立即数与机器码之间转换[CAL

键盘虚拟码和扫描码转换方法MapVirtualKey

调用键盘钩子回调函数,需要构造参数LPARAM,其中16-23位是按键的扫描码。

键盘扫描码可以使用Windows API函数MapVirtualKey来获取。

MapVirtualKey函数原型:

UINT WINAPI MapVirtualKey(
  _In_ UINT uCode,
  _In_ UINT uMapType
);

MapVirtualKey函数参数详解:

uCode:定义一个键的扫描码或虚拟键码。该值如何解释依赖于uMapType参数的值。

uMapType:定义将要执行的翻译。该参数的值依赖于uCode参数的值。取值如下:

MAPVK_VK_TO_VSC 0:代表uCode是一虚拟键码且被翻译为一扫描码。若一虚拟键码不区分左右,则返回左键的扫描码。若未进行翻译,则函数返回O。

MAPVK_VSC_TO_VK 1:代表uCode是一扫描码且被翻译为一虚拟键码,且此虚拟键码不区分左右。若未进行翻译,则函数返回0。

MAPVK_VK_TO_CHAR (2):代表uCode为一虚拟键码且被翻译为一未被移位的字符值存放于返回值的低序字中。死键(发音符号)则通过设置返回值的最高位来表示。若未进行翻译,则函数返回0。

MAPVK_VSC_TO_VK_EX 3:代表uCode为一扫描码且被翻译为区分左右键的一虚拟键码。若未进行翻译,则函数返回0。

返回值:返回值可以是一扫描码,或一虚拟键码,或一字符值,这完全依赖于不同的uCode和uMapType的值。若未进行翻译,则函数返回0。

推荐阅读

最新发表