1.7 KiB
1.7 KiB
Ubuntu 鼠标按键状态修复(2026-11-06)
本轮只修复盒子端 Moonlight 的输入状态,不修改 Ubuntu、麒麟或 Windows 虚拟机配置。
根因
绝对鼠标会话在连接中断、焦点切换或 SDL 队列丢失最后一个 BUTTONUP 时,客户端原来只释放键盘按键,未释放远端鼠标按钮。Ubuntu 会继续保持左键按下状态,因此窗口关闭、最大化、最小化按钮和拖拽都会表现为“点不到/卡住”。
修复
新增 0006-vdi-release-stuck-mouse-buttons.patch:
- 会话退出时显式发送左、中、右、X1、X2 五个鼠标按钮的释放事件;
- SDL 窗口失焦时同样清理按钮状态;
- 保留现有绝对坐标、KMS 捕获、原生 Ubuntu 光标和拖拽顺序处理。
验证
- RKMPP 客户端重新编译成功;
- SDL 事件边界、输入优先级、绝对坐标移动→按下→移动→释放 1000 轮测试全部通过;
- 新客户端通过原生光标握手、KMS 捕获、2560×1440 H.264 硬件解码启动;
- 会话退出后 Ubuntu 已恢复普通 Sunshine,原生光标守护为 inactive;
- 旧客户端 SHA256:
5d4330f703d7f8e053bc3795ca42bdaf231c9e9dd8ebb00a612013adbcccee03; - 新客户端 SHA256:
a09140efb4400a63153e2063358dda6ebea166be20c5b9b882e667230b0ac61e。
盒子端旧客户端和两台 Linux 原生光标配置已备份到 ~/vdi-terminal/backups/mouse-release-20261106-20261106-095251/;如果回归出现异常,可以恢复旧二进制和旧校验值。
这次修复针对“按键状态残留”导致的点击/拖拽失效。画面编码和网络造成的帧延迟仍由 KMS/virtio 读回与 Ubuntu 端 libx264 软件编码决定。