三击检测
要先在配置中开启三击功能,如果未开启,否则不会被编译进去
#if USER_KEY_THRICE_EN
//按键三击检测
AT(.com_text.bsp.key)
u16 key_three_press_process(u16 key_val)
{
key_thrice_t *s = &key_thrice_cb;
u16 key_return = key_val;
if (s->cnt) {
s->cnt--;
}
if (s->cnt == 1) {
return s->val;
}
if (((key_val & KEY_TYPE_MASK) == KEY_DOUBLE) && (!s->cnt)) {
s->val = key_val;
s->cnt = s->stable;
key_return = NO_KEY;
} else if ((s->cnt) && ((key_val & KEY_TYPE_MASK) == KEY_SHORT_UP) && ((key_val & 0xff) == (s->val & 0xff))) {
s->cnt = 0;
s->val = NO_KEY;
//printf("thrice pressed\n");
return (KEY_THREE | (key_val & 0xff)); //三击按键
}
return key_return;
}
#endif // USER_KEY_THRICE_EN
本文深入探讨了按键三击检测算法的实现细节,包括如何通过配置开启三击功能,以及具体的检测流程。该算法首先检查是否已启用三击功能,然后通过状态机的方式判断是否检测到三击操作,最后返回相应的按键值。
1240

被折叠的 条评论
为什么被折叠?



