解析 Qt 如何支持矩阵键盘

移动开发
本文介绍的是Qt 如何支持矩阵键盘,矩阵键盘属于自定义的键盘,按下之后并不能像标准ps2、usb键盘那样对系统输入标准按键,都是自己写的按键处理函数。

Qt 如何支持矩阵键盘是本文介绍的内容,不多说,先来看内容的详细介绍。前几天想在fs2410开发板上做这件事情,然后移植一个Qt游戏,拿4x4矩阵键盘控制没找到资料,但是有类似的论文,就郁闷了,这个问题也能写成论文?后来搞定了觉得很简单。

矩阵键盘属于自定义的键盘,按下之后并不能像标准ps2、usb键盘那样对系统输入标准按键,都是自己写的按键处理函数。

我们想要按下矩阵键盘,被Linux识别为数字、字母等,就像一个标准102键盘那样(当然键没有那么多)

就可以使用input子系统

如何编写矩阵键盘的input子系统驱动,可以参考当前内核的/drivers/input/keyboard/gpio_keys.c

我给的代码基于2.6.22.6 ,连BIT_MASK都没有。

其实非常简单了,定义一个全局static struct input_dev* vkeyboard_idev = NULL;

在初始化里

  1. //注册input子系统  
  2.  
  3. vkeyboard_idev = input_allocate_device();  
  4. if(vkeyboard_idev == NULL)  
  5. {  
  6. printk(KERN_ERR "input_allocate_device error\n");  
  7.  
  8. }  
  9.  
  10. vkeyboard_idev->evbit[0] = BIT(EV_KEY);  
  11. bitmap_fill(vkeyboard_idev->keybit, KEY_MAX);  
  12. bitmap_fill(vkeyboard_idev->relbit, REL_MAX);  
  13. bitmap_fill(vkeyboard_idev->absbit, ABS_MAX);                 
  14. vkeyboard_idev->name = "vkeyboard";  
  15. vkeyboard_idev->phys = "vkeyboard/input0";  
  16. vkeyboard_idev->open = vkeyboard_input_dev_open;  
  17. vkeyboard_idev->close = vkeyboard_input_dev_close;  
  18. for(i = 0; i < KEY_MAX; i++)  
  19. {  
  20. input_set_capability(vkeyboard_idev, EV_KEY, i);  
  21. }  
  22. __set_bit(EV_KEY, vkeyboard_idev->evbit);  
  23. input_register_device(vkeyboard_idev); 

注销

  1. input_unregister_device(vkeyboard_idev); 

当驱动判断到按键按下时 (回车键为例)

  1. input_event(vkeyboard_idev, EV_KEY, KEY_ENTER,1);  
  2. input_sync (vkeyboard_idev); 

当驱动判断到按键抬起

  1. input_event(vkeyboard_idev, EV_KEY, KEY_ENTER,0);  
  2. input_sync (vkeyboard_idev); 

然后是qt跟这个input设备的联系了

我使用的是qt-embedded-4.5.2 ,

加载矩阵键盘后多了一个 /dev/event1

小结:Qt 如何支持矩阵键盘的内容介绍完了,希望本文对你会有所帮助吧,更多资料要或许,请参考编辑推荐。

所以指定环境变量

export set QWS_KEYBOARD=USB:/dev/event1 即可

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-30 13:49:00

Qt 键盘 聚焦

2011-07-05 14:06:17

编译 Qt

2011-09-06 16:00:08

QT平台静态库

2011-06-22 10:27:32

QT 键盘 焦点

2011-06-29 15:14:22

Qt Embedded 键盘

2011-06-29 15:36:21

Qt Embedded 键盘

2011-06-09 15:18:07

QT 编译

2011-06-08 15:27:24

QT QT 4.5 编译

2011-09-09 17:59:26

QT Widget

2011-07-01 15:04:49

Qt 内省

2011-06-23 15:32:05

Qt Windows消息

2011-08-25 16:38:06

EditPluslua

2011-06-22 15:50:45

QT 线程

2011-06-27 09:15:21

QT Creator

2011-07-01 14:39:08

Qt Quick

2010-07-29 10:40:12

2011-08-30 16:08:24

Qt4.7Qt Quick

2009-04-15 08:10:44

AndroidGoogle移动OS

2011-09-06 10:36:10

QT平台

2011-06-09 14:56:53

QT 编译
点赞
收藏

51CTO技术栈公众号