免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 816 | 回复: 0
打印 上一主题 下一主题

自定义小键盘对MINIGUI1.6.2的支持 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-30 15:14 |只看该作者 |倒序浏览
屏幕移植好了,中文显示也没问题了,最后一步,输入设备键盘的移植,这个移植没有前面这些这么容易,因为涉及到两层驱动的开发,第一步就是键盘的LINUX驱动的开发,这个是常规的驱动开发和MINIGUI没啥关系,也相对比较容易,能写驱动的基本都知道怎么写的。
第二步是关键,MINIGUI弄了一个抽象层出来叫引擎,可以连接MINIGUI和特定设备之间的纽带。道理很简单就看怎么实现了。 对于怎么加一个新引擎进入MINIGUI呢?其实这种东西很死板,MINIGUI的开发公司都提供一套他们的流程,以后版本的改变都可能发生改变,所以要一个个掌握太花时间了,没必要,还是用自己喜欢的老一套,“借壳上市”,哈哈!SRC的/ial目录下早就有现成的键盘,触摸屏的引擎了,所以套一个,直接修改,哈哈!这样可以省去很多麻烦的事情和出错的机会!我用smdk2410这个引擎来做我的壳!修改里面的代码就可以直接上我的键盘了。
代码参考px255b.c
几个关键函数
static int mouse_update(void)
static void mouse_getxy(int *x, int* y)
static int mouse_getbutton(void)
触摸屏或者鼠标的函数,这三个函数负责取得鼠标的参数,是一些回调函数,同样角色的函数在键盘里也一样出现了
keyboard_update; 根据驱动读得的按键值来更新返回到MINIGUI的键盘数组,同时进行键盘键值的转换。
keyboard_getstate; 返回键盘数组
最关键的函数出来了:
static int wait_event (int which, fd_set *in, fd_set *out, fd_set *except,
                struct timeval *timeout)
是一个定时被调用的轮询函数,用它来实现对键盘的扫描,也是从这里得到键盘的键值,这样keyboard_update 和keyboard_getstate才能把键盘的值送给MINIGUI,MINIGUI再把这些值转成消息,这个函数的返回值IAL_KEYEVENT 表示有键盘输入事件发生,如果没读到键值就不要返回这个值了,不然会引起MINIGUI去调用keyboard_update,keyboard_getstate这两个函数。

BOOL Init2410Input (INPUT* input, const char* mdev, const char* mtype)
void Term2410Input (void)
打开和关闭键盘驱动的函数,还有input的初始化这个就比较简单了,看一下应该就明白了。
BOOL Init2410Input (INPUT* input, const char* mdev, const char* mtype)
{
    kb_fd = open ("/dev/miniport", O_RDONLY);
    if (kb_fd
        fprintf (stderr, "SMDK2410: Can not open key board!\n");
        return FALSE;
    }

    input->update_mouse = mouse_update;
    input->get_mouse_xy = mouse_getxy;
    input->set_mouse_xy = NULL;
    input->get_mouse_button = mouse_getbutton;
    input->set_mouse_range = NULL;

    input->update_keyboard = keyboard_update;
    input->get_keyboard_state = keyboard_getstate;
    input->set_leds = NULL;

    input->wait_event = wait_event;
   
    return TRUE;
}

void Term2410Input (void)
{
    if (kb_fd >= 0)
       close(kb_fd);
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72877/showart_1354348.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP