http://www.cnblogs.com/baizx/
键盘设备在Qt中表现为QWSKeyboardHandler的一个实例,为了支持各种各样的键盘设备,Qt提供了QWSKeyboardHandler接口,各种键盘设备只需要在收到底层操作系统键盘设备的按键以后调用QWSKeyboardHandler的processKeyEvent函数即可将键盘信息传递到Qt系统中,然后由QWSServer分发给适当的客户端。QWSKeyboardHandler最重要的函数就是提供了processKeyEvent,方便其子类调用该函数将键码传递到Qt系统中。列出了Qt预置的所有的键盘驱动,详细信息可以参考Qt官方帮助文档。
图2- 6 QWSKeyboardHandler继承关系图
如果要实现自定义的键盘设备,那么可以通过继承QWSKeyBoardHandler来实现,主要工作分为两部分,一部分是设备初始化,另外一部分工作就是等待用户按键,并将信息传递到qt系统。
底层键盘设备已经由驱动负责了,这里只需打开设备,并监听设备描述符,将可读信号关联到自定义的slot上,当有按键数据可读取时直接进行读取。
另外一部分工作就是等待用户按键,并传递到qt系统内部。见下图
从底层键盘设备读取出来的数据格式可能各种各样,如果符合Linux标准输入输出接口,那么就不用做任何改动, 但是经常我们会有一些特殊的按键设置,必须进行一定的转换,这些工作就要在此步完成。然后由
void QWSServer::processKeyEvent ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) [static]
Qt中键盘驱动是通过环境变量QWS_KEYBOARD来确定,如果没有则使用默认的,如果有则使用用户指定的,使用方法和Qt中的鼠标设备一样,可以参考
http://www.cnblogs.com/baizx/archive/2010/04/08/1707790.html