全球主机交流论坛

标题: 实现技术分析 [打印本页]

作者: zguw1234    时间: 2015-4-21 11:52
标题: 实现技术分析

linux下的GUI系统的基础,x server是一个用户态的程序。

他的功能,主要体现在两个方面。

1. 获取键盘、鼠标等输入设备的输入。并将这类信息通知给应用程序。

2. 接收应用程序的绘图请求,实施具体的绘图操作。


下面分别分析这两方面功能的实现:


一、获取键盘、鼠标等输入设备的输入

过程大致如下:

a)内核态

用户按键盘或移动鼠标

键盘或鼠标的驱动程序,在其中断处理程序中,调用input_event函数对输入事件进行处理。

然后,input_event函数在其结尾处,调用如下代码,将输入事件同步到  /dev/input/event0 之类的文件。

handle->handler->event(handle, type, code, value);

b)用户态

用户态程序,通过C库函数open,打开 /dev/input/event0 之类的文件得到相应的文件描述符fd,通过select轮询fd是否有数据可读。

一旦有数据可读,通过C库函数read读取fd,即可获得键盘或鼠标的输入信息。

下面的网页,提供了一个代码示例。

http://blog.csdn.net/lanmanck/article/details/8423669


二、绘图

x server是通过frame buffer机制进行绘图的。

由于x server是标准的用户态程序。因此,他所用的frame buffer绘图机制,对于我们一般的应用程序也







欢迎光临 全球主机交流论坛 (http://bbs.cuwww.com/) Powered by Discuz! X3.2