34 lines
1.1 KiB
C
34 lines
1.1 KiB
C
#ifndef APP_TOUCH_H
|
||
#define APP_TOUCH_H
|
||
|
||
#include <stdint.h>
|
||
|
||
/* ==================== 手势类型 ==================== */
|
||
typedef enum {
|
||
GESTURE_NONE = 0, /* 无手势(状态机未产出) */
|
||
GESTURE_TAP, /* 单击:稳定按下 + 释放(位移小) */
|
||
GESTURE_LONG_PRESS, /* 长按:稳定按下超过 1000ms */
|
||
GESTURE_REPEAT, /* 长按后的重复触发:每 120ms */
|
||
GESTURE_DRAG, /* 拖动:按下后位移超过阈值 */
|
||
GESTURE_RELEASE, /* 释放:从按下到抬起(无位移或未触发长按) */
|
||
} app_touch_gesture_t;
|
||
|
||
/* ==================== 手势结果 ==================== */
|
||
typedef struct {
|
||
app_touch_gesture_t gesture; /* 产出的手势 */
|
||
uint16_t x, y; /* 当前坐标 */
|
||
uint16_t down_x, down_y; /* 按下起点(DRAG/RELEASE 判断用) */
|
||
} app_touch_result_t;
|
||
|
||
/* ==================== 对外 API ==================== */
|
||
|
||
/* 重置状态机(页面切换/开机时可选调用) */
|
||
void app_touch_reset(void);
|
||
|
||
/* 核心:喂一个采样点,产出手势。
|
||
* 由 touch_task 每 20ms 调用一次。
|
||
* 有手势返回对应 gesture,无手势返回 GESTURE_NONE。 */
|
||
app_touch_result_t app_touch_process(uint16_t x, uint16_t y, uint8_t pressed);
|
||
|
||
#endif /* APP_TOUCH_H */
|