Qt/E中的键盘设备管理

简介: 转载请注明出处:http://www.cnblogs.com/baizx/ 键盘设备在Qt中表现为QWSKeyboardHandler的一个实例,为了支持各种各样的键盘设备,Qt提供了QWSKeyboardHandler接口,各种键盘设备只需要在收到底层操作系统键盘设备的按键以后调用QWSKeyboardHandler的processKeyEvent函数即可将键盘信息传递到Qt系统中,然后由QWSServer分发给适当的客户端。
转载请注明出处:
http://www.cnblogs.com/baizx/

键盘设备在Qt中表现为QWSKeyboardHandler的一个实例,为了支持各种各样的键盘设备,Qt提供了QWSKeyboardHandler接口,各种键盘设备只需要在收到底层操作系统键盘设备的按键以后调用QWSKeyboardHandlerprocessKeyEvent函数即可将键盘信息传递到Qt系统中,然后由QWSServer分发给适当的客户端。QWSKeyboardHandler最重要的函数就是提供了processKeyEvent,方便其子类调用该函数将键码传递到Qt系统中。列出了Qt预置的所有的键盘驱动,详细信息可以参考Qt官方帮助文档。

img_dc9583c622d684d038c6fec52b516505.jpe

2- 6 QWSKeyboardHandler继承关系图

如果要实现自定义的键盘设备,那么可以通过继承QWSKeyBoardHandler来实现,主要工作分为两部分,一部分是设备初始化,另外一部分工作就是等待用户按键,并将信息传递到qt系统。

具体流程可以参照下图:

                                     img_d44938f37f57812d13a98bbf6d5dcd7b.jpe

底层键盘设备已经由驱动负责了,这里只需打开设备,并监听设备描述符,将可读信号关联到自定义的slot上,当有按键数据可读取时直接进行读取。

另外一部分工作就是等待用户按键,并传递到qt系统内部。见下图

                                                                            img_4d59eaf5098903a6bc67f3f1daa55e91.jpe

从底层键盘设备读取出来的数据格式可能各种各样,如果符合Linux标准输入输出接口,那么就不用做任何改动, 但是经常我们会有一些特殊的按键设置,必须进行一定的转换,这些工作就要在此步完成。然后由


void QWSServer::processKeyEvent ( int unicode, int keycode,  modifiers, bool isPress, bool autoRepeat )   [static]


这是一个静态函数,因此可以直接使用,这些参数中最重要的是keycode,要将自定义的按键值转换为Qt内部的键码,比如:Qt::Key_Delete等等,modifiers是用于组合按键,像ctrl,shift的处理。第一个参数unicode一般没用, 可以忽略。

Qt中键盘驱动是通过环境变量QWS_KEYBOARD来确定,如果没有则使用默认的,如果有则使用用户指定的,使用方法和Qt中的鼠标设备一样,可以参考

http://www.cnblogs.com/baizx/archive/2010/04/08/1707790.html


目录
相关文章
|
4月前
|
存储 机器学习/深度学习 人工智能
Qt魔法书:打造自定义鼠标键盘脚本(二)
Qt魔法书:打造自定义鼠标键盘脚本
180 0
|
4月前
|
开发框架 Linux API
Qt魔法书:打造自定义鼠标键盘脚本(一)
Qt魔法书:打造自定义鼠标键盘脚本
61 0
Qt实用技巧:将QWidget作为输入窗口,接收键盘消息、输入法并且控制输入法悬浮工具栏位置控制
Qt实用技巧:将QWidget作为输入窗口,接收键盘消息、输入法并且控制输入法悬浮工具栏位置控制
HMI-5-[QtKeyEvent]:解决Qt键盘事件无法获取到上下左右等按键并实现键盘解析
HMI-5-[QtKeyEvent]:解决Qt键盘事件无法获取到上下左右等按键并实现键盘解析
418 0
HMI-5-[QtKeyEvent]:解决Qt键盘事件无法获取到上下左右等按键并实现键盘解析
|
2月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
135 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
1月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
43 0
|
18天前
|
23天前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
59 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
1月前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01