Skip to content

[windows] OpenLess 前台时默认右 Ctrl 热键不触发 #85

@Cooper-X-Oak

Description

@Cooper-X-Oak

背景

在 Windows 上,默认热键绑定为 rightControl。当焦点位于外部窗口(如 Notepad)时,全局热键路径正常;但当 OpenLess 主窗口自身处于前台时,按默认右 Ctrl 没有反应。

复现

  1. 启动 OpenLess(Windows)
  2. 保持默认热键 rightControl
  3. 点击 OpenLess 主窗口让其处于前台
  4. 按实体 Right Ctrl

实际结果

  • 主窗口前台时没有进入原本的全局热键触发路径
  • 日志显示 UI/DOM 能收到 ControlRight,但 WH_KEYBOARD_LL 路径没有对应 Windows key event 日志

对照证据

  • OpenLess 前台时有:
    • [ui-key] type=keydown key=Control code=ControlRight ...
  • 同时没有:
    • [hotkey] Windows key event ...
  • Notepad 前台时同一个实体 Right Ctrl 仍会出现:
    • [hotkey] Windows trigger pressed vk=163
    • [coord] hotkey pressed ...

修复思路

为 Windows 主窗口增加前台键盘兜底:

  • 主窗口 keydown/keyup 上报当前 event.key / event.code
  • 后端按当前 hotkey.trigger 进行匹配
  • 命中后复用既有 coordinator 的 pressed/released/cancel 语义
  • 保持全局 hook 路径不变,仅补足 OpenLess 自己前台时的缺口

验证

  • OpenLess 前台下,默认 rightControl 已恢复:
    • [window-hotkey] pressed trigger=RightControl code=ControlRight repeat=false
    • [coord] hotkey pressed mode=Toggle phase=Idle
  • Notepad 前台下,全局 hook 行为仍保持正常

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions