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绘图机制,对于我们一般的应用程序也
|