用 tslib 为 MiniGUI 提供触摸屏的 IAL 引擎
-1-
用 tslib 为 MiniGUI 提供触摸屏的 IAL 引擎
(陈云川 ybc2084@163.com UESTC,CD 2007-04-16)
摘要:本文给出了一种通过tslib为MiniGUI提供触摸屏的IAL引擎的方法.测试情况表明, 该方法能够有效工作.同时,由于tslib作为高层接口所具有的抽象能力,这种方法 也应该能够在多种其它平台上工作. 关键字:MiniGUI,触摸屏,IAL引擎,tslib,ARM-Linux
1 引言
GAL(Graphic Abstract Layer,图形抽象层)和 IAL(Input Abstract Layer,输入抽象层) 是 MiniGUI 的两个基础设施,MiniGUI 的高度可移植性在很大程度上也是由于这两个接口 提供了独立于硬件的抽象能力.但是 GAL 和 IAL 并不是生来就存在的,它们也需要通过底 层代码来实现,通常把实现这两个接口的底层代码称之为"图形引擎"和"输入引擎" .GAL 和 IAL 与 MiniGUI 的关系,就好比驱动程序与操作系统的关系一样.那么,为什么本文只 提 IAL 引擎的实现而不提 GAL 引擎的实现呢 原因是这样的:Linux 系统提供了一种基础 设施——FrameBuffer,通过这个设施,Linux 下的图形输出有了统一的接口.FrameBuffer 既在桌面系统中存在,也大量的存在于基于 Linux 的嵌入式系统中.由于 MiniGUI 可以通 过 FrameBuffer 获得统一的图形引擎接口,因此其适应性大大提高,也就很少需要再为 MiniGUI 编写 GAL 驱动层了.但是对于输入而言,由于 Linux 没有提供统一的接口,因此 常常不得不为 MiniGUI 编写 IAL 驱动层. 在参考文献[1]中,对如何开发定制的输入引擎做了详细的说明.但作者不打算沿袭其套 路,而是采用另外一种方法来为MiniGUI构建输入引擎——事实表明,这种做法是有效的, 并且在某种程度上更具通用性.
2 实现过程
为了便于叙述,以下在提到源代码路径时,都表示是相对于/home/cyc/minigui/而言的. 比如:libminigui-1.3.3/src/ial/ial.c 就等价于/home/cyc/minigui/libminigui-1.3.3/src/ial/ial.c.
2.1 MiniGUI 的 IAL 接口定义
首先来看看 MiniGUI 中的 IAL 接口是如何定义的 (见 libminigui-1.3.3/src/include/ial.h) : typedef struct tagINPUT { char* id;
陈云川 ybc2084@163.com UESTC,CD 2007-04-16
用 tslib 为 MiniGUI 提供触摸屏的 IAL 引擎
-2-
// Initialization and termination BOOL (*init_input) (struct tagINPUT *input, const char* mdev, const char* mtype); void (*term_input) (void); // Mouse operations int (*update_mouse) (void); void (*get_mouse_xy) (int* x, int* y); void (*set_mouse_xy) (int x, int y); int (*get_mouse_button) (void); void (*set_mouse_range) (int minx, int miny, int maxx, int maxy); void (*suspend_mouse) (void); int (*resume_mouse) (void); // Keyboard operations int (*update_keyboard) (void); const char* (*get_keyboard_state) (void); void (*suspend_keyboard) (void); int (*resume_keyboard) (void); void (*set_leds) (unsigned int leds); // Event #ifdef _LITE_VERSION int (*wait_event) (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except, struct timeval *timeout); #else int (*wait_event) (int which, fd_set *in, fd_set *out, fd_set *except, struct timeval *timeout); #endif char mdev [MAX_PATH + 1]; }INPUT; extern INPUT* cur_input; MiniGUI 通过一个 INPUT 结构体来表示一个输入引擎.下面简要介绍一下后面将会用 到的 INPUT 结构体的各个成员. id init_input term_input update_mouse get_mouse_button 输入引擎的名称; 输入引擎的初始化函数; 输入引擎的终止函数; 更新鼠标位置; 获取鼠标按键值;
- 触屏手机通用java下载 > 用tslib为MiniGUI提供触摸屏的IAL引擎
-
用tslib为MiniGUI提供触摸屏的IAL引擎
下载该文档 文档格式:PDF 更新时间:2007-12-07 下载次数:0 点击次数:1文档基本属性 文档语言: 文档格式: pdf 文档作者: vfmlonyeni 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: SOA 分类: 创建时间: 上次保存者: Administrator 修订次数: 427 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 14 段落数: 229 字节数: 151445 备注: 1 演示格式: On-screen Show 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- PDF格式下载
- 更多文档...
-
上一篇:"2009年桂林市事业单位公开考试招聘工作人员聘前公示(...
下一篇:电路与电工技术课程教学大纲
点击查看更多关于触屏手机通用java下载的相关文档
- 您可能感兴趣的
- 通用触屏手机java游戏 手机触屏通用java主题 通用java手机触屏软件 通用java手机触屏赛车 通用触屏手机java 触屏版java手机qq通用 通用java手机全触屏 通用java手机触屏愤怒 通用java手机触屏qq
- 大家在找
-
- · 理想的名言警句
- · ppt组织结构图模板
- · tcl手机
- · 天府学院微积分下期末
- · 行道树教案
- · 不规则界面wpf
- · 化工操作规程
- · 2012考研英语词汇mp3
- · 2011卡罗拉怎么样
- · 初三英语单词表
- · /seo.asp
- · 成本核算的方法和步骤
- · 汽车驾驶技巧图解
- · 数据库系统概念第四版
- · 8年级上册语文课本
- · 程序员2010合订本下载
- · 扭环形计数器
- · 阑尾在身体的哪边
- · 下列项目中,不应记入“财务费用”账户的是()
- · dota影魔桌面壁纸
- · 天车维修常识
- · 就业形势ppt
- · 2011年司法考试押题
- · 如何提高员工综合素质
- · vfp数据库与表.doc
- · 武汉大学数学物理方法
- · 变电所需要什么记录
- · 2010年中华医药视频
- · 金太阳2012高三二联
- · 小学语文教案
- 赞助商链接