下面这段是引言,和按键程序实质内容没有任何关系,可以当P话,可直接跳到分割线的地方。
最近自己在琢磨按键程序,之前弄了,按键单击程序,程序可以实现读取按键的几个状态,然后根据需求使用。单击按键的几个状态如下:
单击后,马上返回按键值
单击后,释放之后,返回按键值
单击后,按住不放,多次返回按键值
但是在其上面扩展双击和三击以及多击程序时,遇到了麻烦(其实就是不会啦),于是在网上看了某个老师的经典按键程序,里面讲了单击和双击,拿着源程序理解了半天,终于一知半解了(一知半解的状态就是能读懂思想,但是闭卷完全自己写,写不出)。但是个人觉得其中的消抖部分还有按键释放的部分还可以改善,还有根据其思路扩展了三击以及N击,于是写了这篇博客供自己以后遗忘时参考以及跟大家分享。
正文:
此按键程序的实现的功能是单个独立按键的[单击],[长按],[双击],[三击]以及[多击]。本文分为三个部分,
第一个部分是说[单击],[长按]的程序;
第二部分是讲[双击];
第三部分是讲[三击],[多击];
一、[单击]、[长按]程序
1. 简单介绍本按键程序的单击和长按
首先说一下单击,长按的响应情况,就是按多久算单击或者长按,按下按键马上返回有效键值,还是释放之后返回有效键值等等,下面说下它在什么情况下返回有效的【单击】和【长按】。
首先看一张时序图:
注:
T1:是单击的按键消抖时长,这里预设的是30ms,也可以根据需求自行定义;
T2:是单击时,按键释放的有效时间段,提前或者超过这个时间段释放的按键都再是单击了。提