C语言按键代码
unsignedintKey2Process()if(KEY2==1)
//有按键
if(startkey2flag==0)
//是新的按键按下
startkey2flag=1;
key2downtime=G_timeba;
shortkey2flag=0;
returnNOKEY;
el
//已经开始按键计时,当检测按键计时超过长按时间则
不管释放没有,直接判
断一次长按,并清除标志
if(G_timeba-key2downtime>LONGKEYTIME)
//大于长按时间,判断为长按
startkey2flag=0;
returnLONGKEY;
el
shortkey2flag=0;
}
//判断是否是双击第二次按下
if(key2doubleflag==2)if(G_timeba-
key2doublewaittime
//在没有超过双击等待时间内检测到再次按键,把标志
改为
1,并设置时间等
待释放
key2doubleflag=1;
key2downtime=G_timeba;
returnNOKEY;
el
//超了时间,属于新的一次按键
startkey2flag=1;
key2doubleflag=0;
key2downtime=G_timeba;
returnNOKEY;
el
//没事做
returnNOKEY;
el
//无按键,或是按键抖动或是按键释放
if(startkey2flag==1)
//当前有按键待决
if(G_timeba-key2downtime>LONGKEYTIME)
//大于长按时间,判断为长按
startkey2flag=0;
returnLONGKEY;
el
//不到长按时间,可能是短按或是长按的抖动
if(G_timeba-key2downtime>SHORTKEYTIME)
startkey2flag=0;
//大于短按时间,下面开始计时,判断是抖动还是真正
释放
if(shortkey2flag==1)if(G_timeba-
key2uptime>JITTERTIME)
//大于抖动时间,判断是真正的短按释放
if(key2doubleflag==1)
//有双击标志,说明是双击的第二次释放
key2doubleflag=0;
startkey2flag=0;
shortkey2flag=0;
returnDOUBLEKEY;
el
//没有双击标志,看时间是否超过双击等待间隔
if(G_timeba-key2uptime>WAITDOUBLETIME)
//大于双击间隔,说明是单击
key2doubleflag=0;
shortkey2flag=0;
shortkey2flag=1;
returnSHORTKEY;
el
//可能是双击第一次释放,也可能是单击释放,先做
2标志,表示待定,如果在规定时间又按下,说明是
双击
key2doubleflag=2;
key2doublewaittime=G_timeba;
returnNOKEY;
el
//时间短,是抖动,继续检测,啥事都不做
returnNOKEY;
el
//第一次碰到释放,做标志,开始记录释放时间
key2uptime=G_timeba;
shortkey2flag=1;
returnNOKEY;
}
el
//当前没有按键,啥事都不做
returnNOKEY;
returnNOKEY;
本文发布于:2022-11-12 22:47:55,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/7145.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |