docs: APPS.md §3.5 看门狗表对齐现状(虚拟返回键M2.21已移除/SIGUSR1仅裸沉浸App+SDK护栏) + KEY_CONTROL_DESIGN 偏差3/4标已落地(M2.81 NowPlaying横划+媒体键路由)
This commit is contained in:
1 parent
4e3edd7952
commit
673f85e4ab
2 files changed
+6
-6
No files matched your search
@@ -184,16 +184,16 @@
|
||||
|
||||
| 特性 | 行为 |
|
||||
|---|---|
|
||||
| 虚拟返回键 | 看门狗独立 mmap `/dev/fb0`(RGB565 自适应),每 100ms 重画左上角 48×48 返回按钮(深色底+白箭头);读 `/dev/input/event1` 触摸,按下落在按钮区 → `SIGTERM` 应用 → 1s 后 `SIGKILL`(应用卡死也能退出)。**v6.4 防抖**(针对"启动误杀"):`last_x/y=-1` 起始(无坐标的按下丢弃)、BTN_TOUCH 按实际值匹配边沿(消除失同步翻转)、仅短按 ≤600ms 有效、启动后先 drain 一次、**冷却期 2.5s**(实测幽灵触摸窗口 1.2–2.25s;此窗内返回键不响应,改 `COOLDOWN_MS` 可调) |
|
||||
| 沉浸模式 | 应用写 `/tmp/meowapp_state` 内容为 `1` → 看门狗不画按钮、只识别「左缘 24px 内起点向右滑 >50px」手势 → 发 `SIGUSR1`;写 `0` 或删除 → 恢复虚拟键 |
|
||||
| 虚拟返回键 | **已移除(M2.21 起)**:全局左缘返回手势取代左上角返回键,看门狗不再画按钮。历史行为:独立 mmap fb0 画 48×48 返回键 + 命中 SIGTERM(保留备查) |
|
||||
| 沉浸模式 | 应用写 `/tmp/meowapp_state` 内容为 `1` → 看门狗识别「左缘 24px 内起点向右滑 >50px」手势。**M2.89 起 SIGUSR1 只对「裸沉浸 App」(非 framework=1 且 immersive)发送**(236:SDK 框架 App 走 `on_swipe` 处理返回,发 SIGUSR1 会误杀——ncm signal=16 崩溃的根因);SDK 侧另有 SIGUSR1 护栏(`sigusr1_guard`,记日志+吞掉)双保险 |
|
||||
| 看门狗自退出 | 应用进程消失(`kill(pid,0)` ESRCH)或 launcher SIGTERM → 退出 |
|
||||
| 强制退出兜底 | 应用运行期(launcher 处于 waitpid):**音量减连按 3 次**(间隔 < `hotkey_seq_gap`,与主序列同阈值)→ SIGTERM → 0.5s → SIGKILL → 恢复。⚠️ 响应音量键的应用(如示例 hello)会先自行退出(`exit:key`),强杀序列是**不响应音量键/卡死应用**的兜底 |
|
||||
| 长按电源 | 硬件级强制关机(设备固有),最终兜底 |
|
||||
| 测试模式 | `meow_watchdog <pid> --sim-tap N` / `--sim-swipe N`,无触摸设备也可验证 |
|
||||
|
||||
**应用协议约定**:
|
||||
- 默认(非沉浸)由看门狗画返回键,应用**不必**处理返回手势
|
||||
- **⚠️ 返回键信号 = `SIGTERM`**(看门狗 `handle_touch` 按钮命中 → `kill(app_pid, SIGTERM)`→1s→`SIGKILL`);`SIGUSR1` **仅**是沉浸左缘滑动手势,不是返回键。com 与 SIGTERM 默认终止会**不画 BYE** 直接死,故示例 hello 安装 `SIGTERM` 处理器:画 BYE + `exit(0)`,使返回键呈现确定性的「bye → 立即退出」(v6.8,Bug 2)。
|
||||
- 默认(非沉浸)SDK 框架 App 由 SDK `on_swipe` 处理左缘返回;**看门狗虚拟返回键已移除(M2.21)**,返回语义全走手势
|
||||
- **⚠️ `SIGUSR1` 仅**是裸沉浸 App 的左缘滑动手势(M2.89 起看门狗不对 framework=1 的 SDK App 发),不是返回键;框架 App 另有 SDK `sigusr1_guard` 护栏吞掉漏网 SIGUSR1。裸 App 的 SIGTERM 默认终止会**不画 BYE** 直接死,故示例 hello 安装 `SIGTERM` 处理器:画 BYE + `exit(0)`(v6.8,Bug 2)。
|
||||
- **⚠️ 应用启动后须防 goodix 幽灵触摸**(v6.8,Bug 2 根因):goodix 在启动触摸的尾部发出一段幽灵触摸(实测启动后 1.2-2.25s,§18.16),无防护时应用会**误把幽灵当下按而立即退出画 BYE**,且 launcher 菜单会把同一幽灵重放成行点击而**重开应用**(用户看到「bye 后又回 hello 主界面、需再点一次」)。hello v6.8 增加 `COOLDOWN_MS=2500`:启动后前 2.5s 忽略一切按下边沿,只有用户**真正**的下按才触发退出。launcher 侧同步在应用退出后 drain + 冷却(见 §4.7)。
|
||||
- 沉浸应用写 `/tmp/meowapp_state`,处理 `SIGUSR1` 作为「返回事件」
|
||||
- 应用异常卡死 → 虚拟返回键(若可见)→ SIGKILL;沉浸态卡死 → 音量减连按 3 次(强杀序列)
|
||||
|
||||
Reference in new issue
Block a user