MeowOS for HiBy R3 Pro II — 公共发布版本(历史已重置)
• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC) • 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库) • 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo 增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
This commit is contained in:
commit
245bee2946
136 files changed
+32730
No files matched your search
@@ -0,0 +1,69 @@
|
||||
/* meow_touch.c — 实现 Launcher 统一触摸接口(见 meow_touch.h)。 */
|
||||
#include "meow_touch.h"
|
||||
|
||||
void mt_reset(meow_touch *mt)
|
||||
{
|
||||
mt->down = 0;
|
||||
mt->valid = 0;
|
||||
mt->down_x = -1;
|
||||
mt->down_y = -1;
|
||||
mt->last_x = -1;
|
||||
mt->last_y = -1;
|
||||
}
|
||||
|
||||
void mt_abs(meow_touch *mt, int x, int y)
|
||||
{
|
||||
if (x >= 0) mt->last_x = x;
|
||||
if (y >= 0) mt->last_y = y;
|
||||
/* 已按下且原点未锁,且两轴终于都有效 → 锁原点(goodix 时序免疫:只认 down 之后
|
||||
* 的首个有效坐标,绝不锁残留 -1/上一手势旧坐标)。 */
|
||||
if (mt->down && !mt->valid && mt->last_x >= 0 && mt->last_y >= 0) {
|
||||
mt->down_x = mt->last_x;
|
||||
mt->down_y = mt->last_y;
|
||||
mt->valid = 1;
|
||||
}
|
||||
}
|
||||
|
||||
int mt_down(meow_touch *mt)
|
||||
{
|
||||
mt->down = 1;
|
||||
mt->valid = 0;
|
||||
/* 本次以「无坐标」起步:BTN_TOUCH 先于 ABS(本设备实测),down 前的 last 是上一
|
||||
* 手势残留(-1/旧坐标),必须丢弃,只认 down 后到来的首个有效 ABS。 */
|
||||
mt->last_x = -1;
|
||||
mt->last_y = -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int mt_up(meow_touch *mt, int *dx, int *dy)
|
||||
{
|
||||
int tx = mt->down_x, ty = mt->down_y;
|
||||
int was_valid = mt->valid;
|
||||
int ddx = mt->last_x - tx, ddy = mt->last_y - ty;
|
||||
int adx = ddx < 0 ? -ddx : ddx, ady = ddy < 0 ? -ddy : ddy;
|
||||
if (dx) *dx = ddx;
|
||||
if (dy) *dy = ddy;
|
||||
/* 复位手势态(down/valid);保留 down_x/y 供 mt_in 判定按钮命中,调用方下一手势
|
||||
* 再由 mt_down 重置。 */
|
||||
mt->down = 0;
|
||||
mt->valid = 0;
|
||||
if (!was_valid || tx < 0 || ty < 0) return 0; /* 从未锁到有效坐标:ghost/残留,丢本次 */
|
||||
if (adx >= MEOW_TOUCH_SWIPE_THRESH || ady >= MEOW_TOUCH_SWIPE_THRESH) return 0; /* 滑动 */
|
||||
return 1; /* 有效 tap */
|
||||
}
|
||||
|
||||
int mt_in(meow_touch *mt, int x, int y, int w, int h)
|
||||
{
|
||||
return mt->down_x >= x && mt->down_x < x + w &&
|
||||
mt->down_y >= y && mt->down_y < y + h;
|
||||
}
|
||||
|
||||
/* 全局左缘返回判定(A-0):原点在左缘 + 向右位移≥MEOW_EDGE_SWIPE 且横向主导。
|
||||
* 与 SDK meow_ui_input.c 的 EDGE_W/SWIPE_THRESH 同一语义,供设置页/应用列表复用。 */
|
||||
int meow_edge_back(int down_x, int dx, int dy)
|
||||
{
|
||||
int ady = dy < 0 ? -dy : dy;
|
||||
if (down_x >= 0 && down_x < MEOW_EDGE_W && dx >= MEOW_EDGE_SWIPE && ady < dx)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user