最近做一些项目,对按键操作要求比较复杂,要实现按键按下、弹起、组合、长按等不同状态的响应,之前写过一篇按键实现的文章,现在把代码重新优化了一下,分享给大家,代码实现了下面功能:
- 按下:(按键被按下去,但没有松开)
- 弹起 : (松开按键)
- 重复:(按键被一直按住,键值重复出现,像电脑键盘一样,按住一个字符不放它就能一直输入)
- 长按:(按住一定时间不松开)
- 按下时长:(记录按键从按下到弹起的时间)**
采用时间片轮询方式扫描按键动作,带消抖功能,运行稳定,可移植性好,不同平台,只要简单修改硬件相关的部分。
这个按键实现方法可以满足绝大部分应用的需求,后面有示例讲解
先上代码一堵为快,程序不难,主要部分都有注释,代码有点长,但是可移植性好,可读性强,有不懂的可以留言交流
H文件
/************************************************************
Copyright (C), 2013-2020
@FileName: key.h
@Author : 祥子 QQ:570525287
@Version : 3.0
@Date : 2020-10-23
@Description: 按键扫描
@Function List:
@History :