什么是Win32虚拟密钥代码0xFF用于并在某处记录?

时间:2011-01-17 21:25:02

标签: windows keyboard-events

我的上网本支持触控板上的多点触控手势。当您向左或向右滑动三指时,它会向活动窗口发送一些消息 - 对于某些窗口,这意味着发送页面向上​​/向下按键。

根据Spy ++的说法,为刷卡发送的实际消息是:

      
  • WM_KEYDOWN,虚拟键= 0xFF
  •   
  • WM_KEYDOWN,虚拟键= VK_NEXT
  •   
  • WM_KEYUP,虚拟键= VK_NEXT
  •   
  • WM_KEYUP,虚拟键= 0xFF

我的问题是:这个0xFF虚拟密钥代码是什么,是否在某处记录?在winuser.h中没有相应的#define。

2 个答案:

答案 0 :(得分:3)

在大多数笔记本电脑上,VK 0xff对应于“Fn”键。

答案 1 :(得分:1)

0xFF是键盘布局代码中使用的值,表示"没有映射"。这是在Windows DDK / SDK的kbd.h中定义的方式:

#define VK__none_   0xFF

没有指定含义的每个扫描代码都通过宏映射到此虚拟键代码。例如,扫描代码0没有映射:

#define T00 _EQ(                           _none_                    )

如果Fn键产生0xFF,那是因为Fn键的扫描码没有映射,不是因为0xFF表示Fn键。 Fn键没有标准扫描码;这取决于制造商,因此不太可能映射到标准键盘布局中有意义的任何内容。

至于为什么会发送VK 0xFF:它可能不是。制造商特定的按键和按钮有时会(从硬件)发送扫描代码,该代码未映射到任何内容,但可以通过扫描代码检测到。当制造商的软件检测到密钥时,它会采取一些操作,例如发送VK_NEXT(但可能操作取决于设置或哪个应用程序具有焦点)。焦点应用程序也会看到按键,但通常什么都不做,因为没有该扫描代码的映射(wParam为0xFF)。

您可以在WM_KEYDOWN消息的lParam的16-23位找到扫描码。