Skip to content

fix(hid): add macOS drag compatibility for OTG and CH9329 - #304

Merged
mofeng-git merged 4 commits into
mofeng-git:devfrom
drgnchan:fix/ch9329-macos-drag
Sep 10, 2026
Merged

fix(hid): add macOS drag compatibility for OTG and CH9329#304
mofeng-git merged 4 commits into
mofeng-git:devfrom
drgnchan:fix/ch9329-macos-drag

Conversation

@drgnchan

@drgnchan drgnchan commented Aug 28, 2026

Copy link
Copy Markdown

Closes #303

CH9329 连接部分 macOS 目标机时,绝对鼠标拖拽会在短暂移动后中断。本 PR 为 OTG 和 CH9329 增加默认关闭的实验性「macOS 拖拽兼容模式」,让绝对输入下的按钮边沿使用绝对报告,拖拽移动和滚轮使用相对报告。

实现

  • 两个后端共用 hid.mouse_macos_drag 配置、状态机和设置页开关;兼容旧 PR 字段 ch9329_macos_drag 的读取。
  • 保留原始 15 位输入坐标,累计小数余量;大位移均匀分包并保留两个方向的总量,避免截断丢失和逐事件强制 ±1 造成的速度差异。
  • 将当前视频采集尺寸同步到 HID,并在后端重载、OTG/MSD 重建后保留配置及尺寸。
  • 按键通道锁定到所有按钮释放,拖拽中的输入模式切换不会使释放发往错误通道;释放时更新两种报告的按钮状态。
  • OTG 需同时启用相对和绝对鼠标接口,前后端均校验。CH9329 同时开启 Linux 兼容开关时,本模式优先。
  • 原生相对输入继续使用相对按钮报告;此选项不修复相对模式点击问题。关闭时保留两个驱动既有的报告策略。

本地验证

  • cargo test --offline --locked --target x86_64-unknown-linux-gnu --lib:490 passed,0 failed。
  • cd web && npm run build:通过(Vue 类型检查及 Vite 构建)。
  • 修改过的 Rust 文件 rustfmt --check:通过;git diff --check:通过。
  • 新增覆盖位移累计/分包、往返移动、1080p/4K、拖拽滚轮、输入模式切换、复位、OTG 模拟端点、尺寸更新和配置校验;保留并更新 CH9329 报告队列测试。

实机验证边界

原 PR 作者曾报告在 CH9329 V3.0 / macOS 26.5.2 上验证旧实现可拖拽,并记录持续按住期间原始 USB 报告没有提前清空按钮位。这些是旧实现的用户反馈。

本次 OTG 扩展及位移换算修改没有 macOS 环境,未进行 macOS 实机测试。OTG 临时文件模拟端点和 CH9329 命令队列测试仅验证本地报告生成,不能证明目标 macOS 已正确解释拖拽。设置页及文档均标明实验性。

相对移动受鼠标加速、显示缩放和多屏布局影响;松手仍携带最后的客户端绝对坐标,可能存在落点偏差或光标跳位。低波特率下大位移分包可能增加延迟,需后续实机验证。

使用方法及后续验证范围见 docs/macos-drag-compatibility.md

@liaokaiaizxl liaokaiaizxl left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在Mac OS系统下的确存在这个情况,我分别换了苹果13,15,26都存在这个温问题,要请及时完成审核以便修复此问题

@liaokaiaizxl

Copy link
Copy Markdown

确实存在这个问题,请及时给与修复

@mofeng-git
mofeng-git changed the base branch from main to dev September 6, 2026 03:24
@mofeng-git mofeng-git changed the title fix(hid): add CH9329 macOS drag compatibility fix(hid): add macOS drag compatibility for OTG and CH9329 Sep 10, 2026
@mofeng-git
mofeng-git merged commit aef1362 into mofeng-git:dev Sep 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(hid): CH9329 在 macOS 下无法持续拖拽

3 participants