• 触屏手机通用java下载 > 用tslib为MiniGUI提供触摸屏的IAL引擎
  • 用tslib为MiniGUI提供触摸屏的IAL引擎

    免费下载 下载该文档 文档格式:PDF   更新时间:2007-12-07   下载次数:0   点击次数:1
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:vfmlonyeni
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    用 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 输入引擎的名称; 输入引擎的初始化函数; 输入引擎的终止函数; 更新鼠标位置; 获取鼠标按键值;

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • 通用触屏手机java游戏  手机触屏通用java主题  通用java手机触屏软件  通用java手机触屏赛车  通用触屏手机java  触屏版java手机qq通用  通用java手机全触屏  通用java手机触屏愤怒  通用java手机触屏qq