实现的代码存放在http://download.csdn.net/detail/lzh445096/8767199
1.qt键盘驱动映射的实现(kbdhander.h kbdhander.c)
qt的键盘驱动通常使用一个QsocketNotifier类的对象来检测通过open系统调用打开的键盘设备文件。QsocketNotifier会调用键盘在linux内核空间的file_operations结构体中的轮询函数(poll函数),当有键盘输入时,会放入linux键盘驱动创建的输入缓冲区中,poll函数的返回值会在缓冲区空闲时发生变化。当QsocketNotifier检测到这种变化之后会产生一个activated信号,此信号的槽函数为readKbdData(),槽函数调用read从键盘设备文件中读出内核空间键盘驱动定义的缓冲区中数据。此数据包括type、code和value三个分量,把每个code值与qt库中的标准qt按键值一一对应来定义,这样qt就能感知linux按键的输入了,这就是键盘映射的原理。
开发平台:TMX320DM365
2.ui界面的实现(aa.ui)
按下实际的某个物理键,要在ui界面上某个控件有此事件的响应,一般用事件过滤器eventFilter实现,在界面的菜单设计中常常涉及按键焦点的移动、按下确认键后弹出子菜单、获得焦点控件的高亮显示、窗体和背景的透明显示等,这些都是qt应用层的事情。
此次界面实现了左右键控制焦点切换、子菜单显示和获得焦点控件变红色及窗体透明显示
菜单界面