新闻中心

EEPW首页>嵌入式系统>设计应用> 嵌入式Linux中基于Qt/Embedded的键盘接口设计

嵌入式Linux中基于Qt/Embedded的键盘接口设计

作者: 时间:2011-01-13 来源:网络 收藏

一个插件的实现,通常至少需要两个类:一个是插件封装器类,它实现了插件的通用API函数;另外一个是一个或多个处理器类,每个处理器类都实现了一种用于特殊类型插件的API。通过封装器类才能访问这些处理器类。下面是具体的实现过程:
首先要实现一个自己的MyKeyDriverPlugin类,这个类继承了QKbdDriverPlugin类,需要重新实现QKbdDriverPlugin::keys()函数和QKbdDriverPlugin::create()函数。
f.JPG
keys()函数返回一个插件的键值,这个键值不能和其他的键值相冲突。create()函数返回一个给定键值的QWSKeyboardHandler派生类的实例。

在.cpp文件的最后,必须添加一个下面这样的宏:Q_EXPORT_PLUGIN2(keyboard,MyKeyDriverPlugin)
第一个参数项是目标库名字去除任意扩展符、前缀或者版本号之后的基本名。第二个参数则是插件的类名。
第二个要实现的类是处理类MyKeyboardHandler,这个类需要继承QWSKeyboardHandler类。当驱动捕获到键盘数据时,系统会通过套接字监听键盘信息,并在MykeyboardHandler::readKbdData()中对捕捉到的扫描数据进行处理并封装,然后向服务器端发送键盘事件。
①打开键盘设备并初始化,一般调用open()函数。
g.JPG
②监控键盘设备,调用QScoketNotifier监控键盘设备kbdFd。
k.jpg

③发生键盘事件时读取键盘事件,读取键盘事件后将键值、按下等信息翻译成Qt内部键盘事件的格式,并通过调用processKeyEvent将事件分发出去。
l.jpg
5 键盘插件在应用程序中的使用
将键盘插件编译后生成一个libkeyboard.so的动态库,这个动态库的名字是由Q_EXPORT_PLUGIN2宏的第一个参数决定的。派生插件默认存储在标准插件目录下的子目录中,如果它们没有存储在正确的目录下Qt不会找到这些插件,所以要在使用的文件系统中创建Qt的标准插件目录。
要想应用程序在启动的时候能够正确加载键盘插件还要设置Linux系统中的环境变量:
QWS_KEYBOARD=MyKeyHandler:/dev/kbd
MyKeyHandler对应着key()函数中的键值,kbd是在/dev文件夹下的键盘设备文件。Qt应用程序开始运行后要根据 QWS_KEYBOARD这个环境变量创建一个MyKeyboardHandler类。窗口部件响应服务器分发的键盘事件还要重新实现如下函数。

}

本文引用地址://m.amcfsurvey.com/article/151098.htm
linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

关键词:键盘接口嵌入式

评论


相关推荐

技术专区

关闭