键盘驱动

Qt Embedded 键盘驱动分析(下)

不羁岁月 提交于 2019-12-01 23:33:31
键盘驱动插件究竟是怎么工作的呢?怎么才能让它来响应板子上的按键消息呢?这些疑问需要分析一个完整的键盘处理插件才能回答,下面我们就来看看最基本的pc101这个键盘插件是怎么实现的吧。首先,说到插件, 先要实现一个插件的框架,这个框架的代码要遵循Qt中的插件规范,还要符合键盘驱动插件的特点。 听起来很难?呵呵,其实非常简单, 只有两个函数需要自己实现。 涉及的代码: 键盘plugin框架:src/plugins/kbddrivers/usb/main.cpp 键盘driver handler的实现:src/gui/embedded/qkbdusb_qws.cpp 实现插件框架 main.cpp class QUsbKbdDriver : public QKbdDriverPlugin { public: QUsbKbdDriver(); QStringList keys() const; QWSKeyboardHandler* create(const QString &driver, const QString &device); }; keys就是返回当前driver插件的键值,只要不和其他插件键值冲突就行。create返回你实现的QWSKeyboardHandler派生类的实例。 实现键盘处理实例 qkbdusb_qws.h class QWSUsbKeyboardHandler

Qt Embedded 键盘驱动分析(上)

流过昼夜 提交于 2019-11-30 19:34:26
为了保持QtEmbedded对硬件最小化的依赖程度,QtEmbedded所有硬件相关的操作都采用插件的封装形式,并且大部分功能都可以从程序外部运用环境变量的方式来配置。这样一来我们只要针对不同的硬件写好不同的插件,为不同硬件平台提供不同的启动脚本就可以了,换了硬件,代码却不需要修改。 Qt Embedded的键盘操作是这种插件封装形式的典范,我们就以此为例,对Qt Embedded的硬件操作一窥究竟。 1、告诉QtEmbedded你需要哪个驱动 QWS_KEYBOARD这个环境变量就是你需要了解的全部。 设置该变量的方法为在运行QtE server程序之前用下面的命令设置: export QWS_KEYBOARD= <driver>[:<driver specific options>] driver参数即驱动的类型, 如“usb”、“tty”等, 在下篇中我们再详细讨论这个。 options则指定硬件设备名, 如/dev/input/event0, 这个参数就要按你的硬件实际情况来提供了。 2、载入用户需要的驱动插件 这个环境变量是如何工作的呢? 今天我们讲述的重点放在QtE的几个文件上: 读取环境变量, 载入相应的键盘驱动插件:src/gui/embedded/qwindowsystem_qws.cpp 创建键盘处理函数类的实例:src/gui/embedded