fix: 缩短全局快捷键取词等待时间至180ms#521
Conversation
将键盘释放等待和剪贴板复制等待的超时时间从1000ms/1500ms统一缩短至180ms,提升快捷键触发时获取选中文本的响应速度。
There was a problem hiding this comment.
Code Review
This pull request reduces the timeout constants KEY_RELEASE_WAIT_TIMEOUT_MS and CLIPBOARD_COPY_WAIT_TIMEOUT_MS to 180ms. The reviewer identified that this change will introduce several issues, including failure on Linux due to its 500ms polling interval, key release conflicts, and copy timeouts on slower systems. The reviewer suggested more robust timeout values, including platform-specific adjustments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| const KEY_RELEASE_WAIT_TIMEOUT_MS = 180 | ||
| const CLIPBOARD_COPY_WAIT_TIMEOUT_MS = 180 |
There was a problem hiding this comment.
将 KEY_RELEASE_WAIT_TIMEOUT_MS 和 CLIPBOARD_COPY_WAIT_TIMEOUT_MS 统一缩短至 180ms 虽然能提升正常情况下的响应速度,但在以下场景中会引入严重的正确性问题和 Bug:\n\n1. Linux 平台完全失效:\n 在 src/main/core/native/index.ts 中,Linux 平台的剪贴板监控是通过每 500ms 轮询一次实现的(this._pollTimer = setInterval(..., 500))。如果将 CLIPBOARD_COPY_WAIT_TIMEOUT_MS 设为 180ms,在 Linux 上将几乎总是触发超时,导致无法获取选中的文本。\n\n2. 按键释放等待冲突:\n 在 src/main/core/doubleTapManager.ts 中,单次按键的最大持续时间 MAX_TAP_DURATION 被定义为 300ms。如果用户按键时间在 180ms 到 300ms 之间(这在日常使用中非常普遍),waitForAllKeysReleased 会在按键释放前提前超时,导致模拟发送 Ctrl+C / Cmd+C 时用户仍物理按着修饰键,从而引发组合键冲突(例如变成 Ctrl+Alt+C),导致复制失败。\n\n3. 复杂应用或低配系统下的复制超时:\n 在一些重型应用(如 IDE、Electron 应用)或系统卡顿、负载较高时,应用响应 Ctrl+C 并写入剪贴板的时间很容易超过 180ms,导致取词频繁失败。\n\n建议:\n- 将 KEY_RELEASE_WAIT_TIMEOUT_MS 设为至少 300ms(与 MAX_TAP_DURATION 保持一致)。\n- 将 CLIPBOARD_COPY_WAIT_TIMEOUT_MS 在 Linux 下设为至少 600ms(大于 500ms 轮询间隔),在其他平台设为 400ms 以兼顾响应速度与稳定性。
const KEY_RELEASE_WAIT_TIMEOUT_MS = 300\nconst CLIPBOARD_COPY_WAIT_TIMEOUT_MS = process.platform === 'linux' ? 600 : 400- 新增 autoCopy 配置项,默认禁用(避免无关快捷键产生副作用) - UI 添加开关控件,支持单独配置每个快捷键 - 双重判断机制:指令类型需要文本 AND 用户启用自动复制 - 新增 updateGlobalShortcutConfig API 支持配置热更新 - 迁移部分 internal: 通道至普通通道(快捷键相关 API)
将键盘释放等待和剪贴板复制等待的超时时间从1000ms/1500ms统一缩短至180ms,提升快捷键触发时获取选中文本的响应速度。