专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 虚拟键码扫描码:虚拟键码 »正文

虚拟键码扫描码:虚拟键码

来源: 发布时间:星期四, 2009年2月12日 浏览:104次 评论:0


虚拟键码保存在WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP讯息wParam参数中此代码标识按下或释放

又是「虚拟」您喜欢这个词吗?虚拟指是假定存在於思想中而不是现实世界中些事物也只有熟练使用DOS组合语言编写应用程式程式写作者才有可能指出为什么对Windows键盘处理如此基本键码是虚拟而不是真实

对於早期程式写作者来说真实键码由实际键盘硬体产生在Windows文件中将这些键码称为「扫描码(scan codes)」在IBM相容机种上扫描码16是Q键17是W键18是E、19是R20是T21是Y等等这时您会发现扫描码是依据键盘实际布局Windows开发者认为这些代码过於和设备相关了於是他们试图通过定义所谓虚拟键码以便经由和装置无关方式处理键盘其中些虚拟键码不能在IBM相容机种上产生但可能会在其他制造商生产键盘中找到或者在未来键盘上找到

您使用大多数虚拟键码名称在WINUSER.H表头档案中都定义为以VK_开头表6-2列出了这些名称和数值(十进位和十 6进位)以及和虚拟键相对应IBM相容机种键盘上下表也标出了Windows执行时是否需要这些键下表还按数位顺序列出了虚拟键码

前 4个虚拟键码中有 3个指是滑鼠键:

表6-2

十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
1 01 VK_LBUTTON 滑鼠左键
2 02 VK_RBUTTON 滑鼠右键
3 03 VK_CANCEL ˇ Ctrl-Break
4 04 VK_MBUTTON 滑鼠中键

您永远都不会从键盘讯息中获得这些滑鼠键代码在下章可以看到我们能够从滑鼠讯息中获得它们VK_CANCEL代码是个虚拟键码它包括同时按下两个键(Ctrl-Break)Windows应用程式通常不使用此键

表6-3中键--Backspace、Tab、Enter、Escape和Spacebar-通常用於Windows程式不过Windows般用字元讯息(而不是键盘讯息)来处理这些键

表6-3



十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
8 08 VK_BACK ˇ Backspace
9 09 VK_TAB ˇ Tab
12 0C VK_CLEAR Num Lock关闭时数字键盘5
13 0D VK_RETURN ˇ Enter (或者另个)
16 10 VK_SHIFT ˇ Sht (或者另个)
17 11 VK_CONTROL ˇ Ctrl (或者另个)
18 12 VK_MENU ˇ Alt (或者另个)
19 13 VK_PAUSE Pause
20 14 VK_CAPITAL ˇ Caps Lock


27 1B VK_ESCAPE ˇ Esc
32 20 VK_SPACE ˇ Spacebar

另外Windows程式通常不需要监视Sht、Ctrl或Alt键状态

表6-4列出前 8个码可能是和VK_INSERT和VK_DELETE起最常用虚拟键码:

表6-4

十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
33 21 VK_PRIOR ˇ Page Up
34 22 VK_NEXT ˇ Page Down
35 23 VK_END ˇ End
36 24 VK_HOME ˇ Home
37 25 VK_LEFT ˇ 左箭头
38 26 VK_UP ˇ 上箭头


39 27 VK_RIGHT ˇ 右箭头
40 28 VK_DOWN ˇ 下箭头
41 29 VK_SELECT
42 2A VK_PRINT
43 2B VK_EXECUTE
44 2C VK_SNAPSHOT Pr Screen
45 2D VK_INSERT ˇ Insert
46 2E VK_DELETE ˇ Delete
47 2F VK_HELP

[Page] 注意许多名称(例如VK_PRIOR和VK_NEXT)都和键上标志区别而且也和卷动列中识别字不统Pr Screen键在平时都被Windows应用程式所忽略Windows本身回应此键时会将视讯显示点阵图影本存放到剪贴板中假使有键盘提供了VK_SELECT、VK_PRINT、VK_EXECUTE和VK_HELP大概也没几个人看过那样键盘

Windows也包括在主键盘上字母和数位键虚拟键码(数字键盘将单独处理)



表6-5

十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
48-57 30-39 无 ˇ 主键盘上0到9
65-90 41-5A 无 ˇ A到Z

注意数字和字母虚拟键码是ASCII码Windows程式几乎从不使用这些虚拟键码;实际上程式使用是ASCII码字元字元讯息

表6-6所示代码是由Microsoft Natural Keyboard及其相容键盘产生:

表6-6

十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
91 5B VK_LWIN 左Windows键
92 5C VK_RWIN 右Windows键
93 5D VK_APPS Applications键

Windows用VK_LWIN和VK_RWIN键打开「开始」功能表或者(在以前版本中)启动「工作管理员程式」这两个都可以用於登录或登出Windows(只在Microsoft Windows NT中有效)或者登录或登出网路(在Windows for Applications中)应用程式能够通过显示辅助资讯或者当成捷径键看待来处理application键



表6-7所示代码用於数字键盘上键(如果有话):

表6-7

十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
96-105 60-69 VK_NUMPAD0到VK_ NUMPAD9 NumLock打开时数字键盘上0到9
106 6A VK_MULTIPLY 数字键盘上*
107 6B VK_ADD 数字键盘上+
108 6C VK_SEPARATOR
109 6D VK_SUBTRACT 数字键盘上-
110 6E VK_DECIMAL 数字键盘上.
111 6F VK_DIVIDE 数字键盘上/

最後虽然多数键盘都有12个功能键但Windows只需要10个而位元旗标却有24个另外程式通常用功能键作为键盘加速键这样它们通常不处理表6-8所示按键:

表6-8



十进位 十 6进位 WINUSER.H识别字 必需? IBM相容键盘
112-121 70-79 VK_F1到VK_F10 ˇ 功能键F1到F10
122-135 7A-87 VK_F11到VK_F24 功能键F11到F24
144 90 VK_NUMLOCK Num Lock
145 91 VK_SCROLL Scroll Lock

另外还定义了些其他虚拟键码但它们只用於非标准键盘上或者通常在大型主机终端机上使用查看/ Platform SDK / User Interface Services / User Input / Virtual-Key Codes可得到完整列表

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: