首页
登录 | 注册

Qt/E中的键盘设备管理

转载请注明出处:
http://www.cnblogs.com/baizx/

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


2- 6 QWSKeyboardHandler继承关系图

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

具体流程可以参照下图:

                                    

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

notifier = new QSocketNotifier(kbdFD, QSocketNotifier::Read, this);

connect(notifier, SIGNAL(activated(int)),this,SLOT(readKeyboardData()));

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

                                                                           

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


void QWSServer::processKeyEvent ( int unicode, int keycode, Qt::KeyboardModifiers 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


相关文章

  • CTRL组合键 Ctrl + A 全选 Ctrl + B 整理 收藏夹 Ctrl + C 复制 Ctrl + D 删除/添加收藏 (在Word中是修改选定字符格式,在IE及傲游中是保存为收藏) Ctrl + E 搜索助理 在Word中是段落 ...
  • Java中的鼠标和键盘事件 1.使用MouseListener借口处理鼠标事件 鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出 鼠标事件类型是MouseEvent,主要方法有: getX(),getY() 获取鼠标位 ...
  • QT下如何添加net-snmp库进行开发
    修改工程下的.pro文件,添加如下内容 其中添加的-lrt选项是由于利用交叉编译工具进行编译时,会提示undefined reference to 'clock_gettime',该问题是由于在链接时没有链接librt库导致的,添加该选项即 ...
  • ES6 新增了let命令,用来声明局部变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束. var a = 99; // 全局变量a f(); // f是函数,虽然定义在调用的后面,但是函 ...
  • Qt Creator Pro文件根据不同编译器自动选择对应的第三方库
    开发环境: Ubuntu 16.04 x64 + Qt Creator 4.7.2 + Qt-4.8.7 目标板: TI am335x开发板 编译工具: arm-arago-linux-gnueabi-gcc   开发中需要链接FFmpeg ...
  • 一. 概念解释     PDF:概率密度函数(probability density function), 在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号