在得到了本次扫描的稳定值_matrix以后,我们将其与上次得到的稳定值previous_matrix作比较,从而确定与上次扫描时相比,此刻键盘上的按键情况是否发生了变化,以及此刻键盘上是否有键按下。如果发现键盘上没有任何键被按下,则打开键盘中断,再次切回到中断模式。如果键盘上有键被按下,并且是不同于上次扫描到的被按下键,我们立刻调用按键处理函数_key,它会调用键盘驱动中的上层函数handle_scancode。如果键盘上按下的键就是上次按下的那个键,我们将递增一个计数器,当这个计数器达到某个指定值以后,我们就启动所谓的Autorepeat功能,即用户一直按着某个键,驱动程序自动重复产生键盘输入。该计数器在被按下键发生变化时置0。但是只要键盘上仍然有键处于被按下状态,我们就将当前读到的键盘稳定值current_matrix拷贝到previous_matrix中去,并且再次将前面描述的定时器对象挂到内核定时器队列中,过一段时间以后再次扫描整个键盘,直至键盘上没有键被按下。
4结束语
随着信息社会以及计算机软硬件技术的进步,嵌入式信息产品的设计和应用得到了迅速的发展,需要为自己的嵌入式Linux系统添加特殊键盘驱动的需求也越来越普遍。本文在介绍了Linux中键盘驱动程序的整体框架以后,以S3C2410开发板上的一个特殊键盘为例子,重点描述了在嵌入式Linux环境下,为特殊键盘编写驱动程序时需要完成的工作,为类似的开发提供了一种思路和参考。
责任编辑:ct
关于嵌入式技术就介绍完了,您有什么想法可以联系小编。