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 |