关 闭

新闻中心

EEPW首页>工控自动化>设计应用> MiniGUI中开发实现键盘输入设备方案解析

MiniGUI中开发实现键盘输入设备方案解析

作者: 时间:2012-05-14 来源:网络 收藏

3.2 编写小输入引擎

3.2.1 底层输入操作函数实现

对于小输入,鼠标操作接口函数不用进行任何操作,直接返回即可,主要需要编写的是keyboard_update及wait_event函数。当。 MiniCUI应用程序运行时,相关的底层事件处理例程会不断调用wait_event函数查询是否有输入事件发生,故在该函数中调用小驱动的 read函数,获取用户输入的按键信息。若有键盘事件发生,则返回IAL_KEYEVENT,底层事件处理例程就会调用keyboard_update函数进行处理,获取当前键盘状态。

需要注意的是,由于系统以很高的频率不断调用wait_event函数,因此当该函数捕捉到键按下事件时,需要一定时间(如100 ms)延时再返回,以避免一次按键产生多次键盘事件。

使用一个一维数组state[128]记录按键的状态。该数组定义在include/common.h中。State[128]中每个元素均对应一特定的按键,如果某一元素为l,说明它所对应的键被按下,否则该键未被按下。因此,key-board_update函数要做的工作就是,根据键盘扫描驱动程序的返回值,更新state[128]数组的元素值,从而向上层驱动程序和应用程序反映按键状态。可见,若想实现任意标准键盘按键功能,只需修改keyboard_update函数里相应的键值映射,或直接修改键盘驱动里的键值映射数组为对应的标准键盘按键的系统扫描码。

3.2.2 初始化及终止函数实现

在初始化函数中先打开小键盘,成功以后对输入引擎的其他成员(底层输入操作接口函数)赋值,返回TRUE。终止清除函数的主要工作是关闭键盘输入文件。输入引擎相关内容的格式可参照src/ial/目录下的其他输入引擎。至此,完成了小键盘输入引擎(mykbd.c文件)的开发。

3.3 输入引擎的使用原理

在 src/ial/ial. c中,用inputs结构数组定义了支持的所有输入引擎信息。系统启动后,将根据.cfg配置文件,在inputs结构中寻找特定的输入引擎作为当前的输入引擎。然后,调用该引擎的初始化函数,对全局变量cur_input(表当前使用的输入引擎)的其他成员函数进行赋值。

在src/sever/server.c中,函数IdleHandler4Server凋用输入引擎中IAL_WaitEvent成员函数,检查是否有底层输入事件发生。当有事件发生时,检查是鼠标(触摸屏)事件还是键盘事件发生,并分别用parseEvent(msg_que, event)处理这些事件。parseEvent函数中首先调用Getl-wevent(event,1we)函数。该函数利用IAL引擎中相应底层操作函数收集底层输入事件1we(该结构定义在paxseEverlt函数中),parseEvent再将收集到的这些事件转化为上层能理解的消息。具体实现细节可参考server.c文件。

4 键盘输入在MiniGuI中的实现步骤

4.1 加载小键盘驱动

有两种方法加载:一是把该驱动加载入内核;二是可以将编译的*.o文件拷贝到目标板根文件系统巾,目标板启动后用insmod命令动态加载。

DIY机械键盘相关社区:机械键盘DIY




评论


相关推荐

技术专区

关闭