根因(实测确认) capture 用 EnumOutputs(0) 只采**主屏**,AuthOk 报告的 width/height 也是主屏; 但 input 注入带 MOUSEEVENTF_VIRTUALDESK,归一化 0..=65535 被映射到**整个虚拟 桌面**。双显示器机器上虚拟桌面(主屏 2560x1440 + 副屏 1920x1080 在左)比主屏 宽得多,手机画面与指针位置系统性错位——点主屏任务栏,指针落到别处。 单显示器时两个空间重合,所以桌面 viewer 联调从未暴露。 修法 MOUSEEVENTF_ABSOLUTE 不带 VIRTUALDESK 时,0..=65535 恰好映射到主显示器, 与采集空间一致。协议注释「鼠标坐标为虚拟桌面归一化」的语义由「整个虚拟桌面」 修正为「被采集的输出」——桌面 viewer 是绝对定位透传,行为不变。 验证(vivo S6 -> 本机双屏,修复后) - 手机拖微信标题栏:窗口跟随手指移动(drag-before/after 截图对比) - App 状态栏 norm 坐标与视图坐标换算一致(view=(643,222) norm=(39017,23968)) |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||