Samsung 6410 矩阵键盘驱动移植
目录
1 概述:...1
2 驱动文件:...1
3 编译到内核:...2
4 驱动文件分析:...2
4.1 s3c-keypad.h.2
4.2 s3c-keypad.c.3
5 应用层获取键盘事件...4
由于项目需要用到键盘操作,所以移植了6410的键盘驱动程序,先GOOGLE一下前辈的精华,在结合自己实际移植情况,做一些简单记录,以备忘。
因为移植都还比较顺利,本文描述的也比较简单,有不足或错误的地方,欢迎大家讨论,学习交流。
内核版本: 2.6.28
硬件部分:略,基本按DATASHEET来
上层应用:QT2.2.0
欢迎讨论:QQ 67016879 或 [email protected]
移植好的驱动下载: http://download.csdn.net/detail/lxj_com2006/4381793
linux2.6.28/drivers/input/keyboard/s3c-keypad.h
linux2.6.28/drivers/input/keyboard/s3c-keypad.c
make menuconfig
选择 DeviceDrivers -> Input device support -> Keyboards -> S3C keypad support
将驱动编译进内核
先看头文件,头文件是非常可帮助了解文件结构和接口的。
linux内核封装了keypad到应用层的接口,驱动程序从按键设备获取中断后,利用一个定时器,检测那些按键是否,按下(防抖),弹起,长按键等,分类出不同的事件通过 input_report_key 函数送入 linux,而应用层则通过和linux的底层通讯,可以主动或被动获得这些消息,然后再分发出去。
如QT中:我们在写窗口程序时,只要覆盖相关虚函数:
void keyReleaseEvent(QKeyEvent *event);
void keyUpEvent(QKeyEvent *event);
通过QKeyEvent可以获得键盘不同事件和键码,并进行自己的流程处理。
注:还有些复杂按键,如:2,3组合键等,在此略。