当按一个键时 操作系统都进行了那些操作
来源:百度知道 编辑:UC知道 时间:2024/05/25 05:01:57
能不能更深入的分析下
比如说 键盘的扫描码
完整的解释这个过程有点难。
首先,一般键盘都是矩阵键盘,当你暗下一个键,相当于一个开关关闭了,手指按下的过程对键盘里的芯片来说是很长的时间,所以这个信号一般能被键盘捕捉到。键盘对这个信号进行编码,以扫描码的形式通过键盘和电脑的连线送给电脑的CPU,这个信号对CPU来说是一个中断信号,一收到这个信号,CPU就去处理这个信号。怎么处理呢,首先把这个扫描码从端口(就是键盘插在主板上的端口)读到内存,存放着。如果你是在记事本里敲键盘,那么记事本这个软件就把内存里的这个扫描码读到显卡的显存里(已经过转化,变成ASCII码),显卡驱动把这个ASCII码译码,然后按照这个码,用电子管打亮相应的点,如果是液晶,就驱动液晶分子显示出对应的字符,相当于相应的字符被点亮了,屏幕上就看到了。
键盘键A 当然首先是产生了一个按键消息了,然后有很多程序对这个消息进行处理,比如全局的钩子,输入焦点的程序等等。
因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它。WINDOWS 将负责把击键消息送到具有输入焦点的那个应用程序中去。尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点。有输入焦点的那个应用程序的标题条总是高亮度显示的。 实际上您可以从两个角度来看键盘消息:一是您可以把它看成是一大堆的按键消息的集合,在这种情况下,当您按下一个键时,WINDOWS就会发送一个WM_KEYDOWN给有输入焦点的那个应用程序,提醒它有一个键被按下。当您释放键时,WINDOWS又会发送一个WM_KYEUP消息,告诉有一个键被释放。您把每一个键当成是一个按钮;另一种情况是:您可以把键盘看成是字符输入设备。当您按下“a”键时,WINDOWS发送一个WM_CHAR消息给有输入焦点的应用程序,告诉它“a”键被按下。实际上WINDOWS 内部发送WM_KEYDOWN和WWM_KEYUP消息给有输入焦点的应用程序,而这些消息将通过调用TranslateMessage翻译成WM_CHAR消息。WINDOWS窗口过程函数将决定是否处理所收到的消息,一般说来您不大会去处理WM_KEYDOWN、WM_KEYUP消息,在消息循环中TranslateMessage函数会把上述消息转换成WM_CHAR消息。在我们的课程中将只处理WM_CHAR。