键盘是计算机的标准配件之一,也是基本的程序输入装置。虽然目前大多数游戏程序以鼠标或者使游戏杆来作为主要的输入设备。相比之下,以键盘操纵游戏的方式似乎变得不太重要,但有时候还是会使用键盘来设计一些快速键的功能,例如跳过片头动画、结束游戏等
1、虚拟键码
在早期非Windows系统的机器上,如果一般应用程序要取得使用者键盘的输入,就必须去取得输入按键的“扫描码(Scan code)”。扫描码由实际的键盘硬件所产生,但是由于不同国家不同区域所使用的键盘设备可能不同,因此Windows系统便发展了一套标准。其解决办法就是对所有键盘的按键定义出一组通用的“虚拟键码”,也就是说在Windows系统下所有的按键都会被视为虚拟键(包含鼠标键在内),而每一个虚拟键都有其对应的一个虚拟键码。
2、键盘消息
Windows系统是一个消息驱动的环境,一旦使用者在键盘上进入输入操作,那么系统便会接受到对应的键盘消息。下面是最常见的3中键盘消息:
WM_KEYDOWN:按下按键消息
WM_KEYUP:松开按键消息
WM_CHAR:字符消息
当某一按键被按下时,伴随着这个操作所产生的是以虚拟键码类型传送的WM_KEYDOWN与WM_KEYUP消息。当程序接受到这些消息时,便可由虚拟键码的信息来得知是哪个按键被按下。
此外,WM_CHAR则是当按下的按键为定义域ASCII中的打印字符时,便发出此字符消息。前面介绍的消息循环中的Translate()函数的作用便是当按下的按键为打印字符时,便将虚拟键码消息进行转换并且发出字符消息