设为首页收藏本站

全球主机交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: discuz
查看: 532|回复: 0
打印 上一主题 下一主题

实现技术分析

[复制链接]
  • TA的每日心情
    擦汗
    2020-8-11 18:34
  • 签到天数: 243 天

    [LV.8]以坛为家I

    跳转到指定楼层
    楼主
    发表于 2015-4-21 11:52: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绘图机制,对于我们一般的应用程序也


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|手机版|中国U网    

    GMT+8, 2024-6-29 12:47 , Processed in 0.087471 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表