Qte4 下添加自定义按键驱动和USB同时使用
来源:互联网 发布:淘宝联盟 京东 编辑:程序博客网 时间:2024/05/16 01:53
经过一天的推敲代码,终于找到了些眉目。网上好多都是以qt plug的方式添加自定义驱动。此方法在下测试过,但不能和USB键盘同时使用,不知道方法不对还是在下功力太浅。
好了,开始介绍同时使用的方法。
第一、参照原有文件编写自己的类。
1、参照src/gui/embedded/下面的qkbdusb_qws.cpp和qkbdusb_qws.h,复制成自己的类的定义和实现,取名为qkbdbutton_qws.h 和qkbdbutton_qws.cpp。
2、把qkbdbutton_qws.h里的类名改成自己的类名(自己取)。
3、把qkbdbutton_qws.cpp里的类名改成自己的类名。
4、定义结构体,替换usb的结构体。
struct InputData
{
unsigned int dummy1;
unsigned int dummy2;
unsigned short type;
unsigned short code;
unsigned int value;
unsigned int dummy3;
unsigned int dummy4;
unsigned int dummy5;
unsigned int dummy6;
};
5、修改readKeyboardData()函数。
void QWSHomeButtonPrivate::readKeyboardData()
{
InputData event;
int n = read(fd, &event, sizeof(InputData));
Qt::KeyboardModifiers modifiers = Qt::NoModifier;
int unicode = 0xffff;
int key_code = 0;
// 可以根据自己特定的硬件值来设定。
switch (event.code)
{
case 7: key_code=Qt::Key_Up;break; //
case 4: key_code=Qt::Key_Down;break; //
case 3: key_code=Qt::Key_Left;break; //
case 5: key_code=Qt::Key_Right;break; //
case 6: key_code=Qt::Key_Enter;break; // Enter
case 8: key_code=Qt::Key_Escape;break; // Enter
default: break;
}
handler->processKeyEvent(unicode, key_code, modifiers, event.value != 0, false);
}
好了,五分之一的工作完成了。哈哈,你说是不是太简单了,我笑而不语,因为下面的工作更加的简单。
二、把自己的类加添到QWSUsbKeyboardHandler(device)中,让它运转起来。
1、在src/gui/embedded/qkbddriverfactory_qws.cpp文件,在头定义文件中,把自己刚才的文件qkbdbutton_qws.h添加进来。
#include "qkbdbutton_qws.h"
2、在create()函数中找到USB的定义(在编译qt时,开启USB键盘的选项)。
按照USB的写法添加自己的定义。如下
# ifndef QT_NO_QWS_KBD_USB
if (driver == QLatin1String("usb"))
return new QWSUsbKeyboardHandler(device);
//***************modify start.
if (driver == QLatin1String("mybutton"))//不要试图改成大写,因为上面有猫腻。
return new QWSHomeHandler(device);
//***************modify end.
# endif
3、在keys()函数中找到USB定义添加自己的类名到QStringList中。
#ifndef QT_NO_QWS_KBD_USB
list << QLatin1String("USB");
//*********************modify start。
list << QLatin1String("BUTTON");
//*********************modify end。
#endif
又搞定了,马拉松到了五之二处了,好高兴啊。
三、让你的qte能读取到你的按键类。
1、在src/gui/embedded/qwindowsystem_qws.cpp中,修改函数openKeyboard()。添加:
QWSKeyboardHandler *handler = QKbdDriverFactory::create(type, device);
setKeyboardHandler(handler);
//***********************modify start.
QWSKeyboardHandler *handler1 = QKbdDriverFactory::create("button", device);
setKeyboardHandler(handler1);
//***********************modify end.
搞定,这步好简单。
四、修改pri文件,让你的类编译到qte库中。
1、打开文件src/gui/embedded/embedded.pri
在最后添加自己的文件。
# ***********************modify start.
HEADERS += embedded/qkbdbutton_qws.h
SOURCES += embedded/qkbdbutton_qws.cpp
# ***********************modify end.
搞定了这步,同志们,开始编译你的qte吧。
五、export 自己的按键和USB,搞定,这回真正的大功告成了。
经过测试,完美运行。
- Qte4 下添加自定义按键驱动和USB同时使用
- Android下添加自定义按键
- android:添加usb键盘+按键布局和映射的修改
- android:添加usb键盘+按键布局和映射的修改
- android:添加usb键盘+按键布局和映射的修改
- android:添加usb键盘+按键布局和映射的修改
- android:添加usb键盘+按键布局和映射的修改
- Android下添加新的自定义键值和按键处理流程
- Mstar Android下添加新的自定义键值和按键处理流程
- Android下添加新的自定义键值和按键处理流程
- android添加自定义按键
- 添加自定义按键
- 添加USB驱动
- fl2440添加USB驱动
- 内核添加USB驱动
- 全志R16平台Android下添加自定义按键
- Linux下USB从(USB gadget) 驱动配置与使用
- Linux下USB从(USB gadget) 驱动配置与使用
- 在防火墙的例外中注册程序(Windows7和XP)
- 学习。。学习啊。。
- 项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序的解决办法
- 元搜索
- 宏_M_IX86,_M_AMD64和_M_X64
- Qte4 下添加自定义按键驱动和USB同时使用
- FW: Windows 的数据类型
- 《PL/SQL 语言开发参考手册》之六:HANDLE EXCEPTION
- 点击窗口之外的区域将弹出窗口关闭
- Hopedot vos 与影子系统、沙盘、云端的区别
- 直流电机的工作原理
- 用SqlDataAdapter填充DataSet和更新数据库
- 如果
- DB2连接串参数详解