📄 rd_usekey.h
字号:
#ifndef _USE_KEY_H_
#define _USE_KEY_H_
/***********************************************************
* 声明库说明:按键处理声明库 *
* 版本: v2.00 *
* 作者: 傻孩子 *
* 创建日期: 2005年11月27日 *
* -------------------------------------------------------- *
* [支 持 库] *
* 支持库名称:LIB_Config.h *
* 需要版本: ---- *
* 支持库说明:库函数配置声明库 *
* -------------------------------------------------------- *
* [版本更新] *
* 修改: 傻孩子 *
* 修改日期: 2006年4月15日 *
* 版本: v1.3 *
* *
* 修改: 傻孩子 *
* 修改日期: 2006年4月23日 *
* 版本: v1.31 *
* *
* 修改: 傻孩子 *
* 修改日期: 2006年5月5日 *
* 版本: v1.32 *
* *
* 修改: 王卓然 *
* 修改日期: 2007年2月25日 *
* 版本: v2.00 *
* -------------------------------------------------------- *
* [版本历史] *
* v1.3以下 1、提供了对键盘缓冲区的支持。 *
* 2、支持长按键处理。 *
* 3、需要外部提供一个毫秒级的延时计数器。 *
* 4、需要外部提供一个有返回值得键盘扫描 *
* 函数,该函数需要做基本的去抖。 *
* 5、可以外部定义缓冲区大小,空键值。 *
* 6、增加了一个入口键盘扫描码的噪声抑制参 *
* KEY_PRESS_DELAY,该值为毫秒级的单向 *
* 递减数值,即如果值不为零,则减到0为。 *
* 如果键盘响应过于迟钝,可以适当改小该 *
* 参数值。 *
* v1.3 修改了头文件的组织形式,对外的接口模式 *
* 对一些时间计数器进行了分类和统一宏定义 *
* 允许外部通过宏定义将这些接口连接到实际 *
* 的计数器上。同时兼容从前的版本。 *
* v1.31 修正了按键去抖计数器会干扰外部单向计数 *
* 器的错误。 *
* v1.32 允许选择自动刷新按键和手动刷新按键两种模式 *
* v2.00 支持长按键以重复的间隔触发。 *
* -------------------------------------------------------- *
* [说 明] *
* 1、在外部合适的位置(毫秒中断程序)增加 *
* USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE来保证 *
* 头文件的正常使用。 *
* 2、可以通过定义KEY_BUFF_SIZE来设置键盘缓冲区 *
* 的大小。 *
* 3、可以通过定义KEY_PRESS_DELAY来设置去抖得 *
* 时间常数。 *
* 4、可以通过_USE_KEY_PRESS_SCAN_FUNC_INTERFACE *
* 来连接用于键盘扫描的函数。该函数必须返回 *
* 扫描码。 *
* 5、通过GetKeyCode()函数来获得缓冲区状态,当 *
* 该函数返回True时,可以从ReturnKeyNum和 *
* ReturnLongPressKeyNum中分别获取按键和长 *
* 按键的扫描码,两个值不能同时不为KeyNull *
* 6、允许通过_USE_KEY_MANUL_REFRESH来选择自动刷 *
* 新按键缓冲区的模式。 *
* 7、可以通过宏_USE_KEY_LONG_PRESS_DELAY_TIME来 *
* 定义长按键的最小判定时间。 *
* 9、可以通过宏_USE_KEY_LONG_PRESS_REPEAT来打开 *
* 长按键重复触发功能。 *
* 8、宏_USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL可 *
* 以用来设定长按键时重复触发的最小时间间隔等 *
* 级。取值范围是0至4,数值越大,时间间隔越小 *
* 默认情况下为2,即一秒钟重复4次。 *
***********************************************************/
/********************
* 头 文 件 配 置 区 *
********************/
# include "RD_MacroAndConst.h"
/********************
* 系 统 宏 定 义 *
********************/
/*------------------*
* 常 数 宏 定 义 *
*------------------*/
/*------------------*
* 动 作 宏 定 义 *
*------------------*/
#ifndef _USE_KEY_MANUL_REFRESH
# define USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE do\
{\
Add_Key_Code();\
g_wKeyPressTimeCounter++;\
if (g_wKeyPressDelayCounter) g_wKeyPressDelayCounter--;\
}while(0);
#else
# define USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE
#endif
/********************
* 函 数 引 用 区 *
********************/
extern void Add_Key_Code(void);
extern unsigned char Get_Key_Code(void);
/********************
* 全局变量引用区 *
********************/
extern unsigned char g_cReturnKeyNum;
extern unsigned char g_cReturnLongPressKeyNum;
extern unsigned int g_wKeyPressTimeCounter;
extern unsigned int g_wKeyPressDelayCounter;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -