Skip to content

iTerm2 无法写入且弹窗不弹出 #3

Description

@zch200

问题描述

在 iTerm2 中使用语音输入,文本无法写入终端输入框,且结果弹窗也不弹出。

根因分析

iTerm2 的 AX 元素被 classifyFocus() 归类为 .editableText(AXRole = AXTextArea 属于 knownTextRoles),进入 L1 → L2 → L3 写入链路:

  • L1 (AXSelectedText):已有 false-positive 检测,正确返回 false
  • L2 (AXValue splice):AXUIElementSetAttributeValue 返回 .success 但值未真正写入。L2 返回 true,函数提前退出,弹窗不显示
  • L3 / popup:未执行到

尝试过的修复

在 L2 添加通用 value-unchanged 验证(写入后重读 AXValue 比对),但导致浏览器和企微等异步更新 AX 的应用回归。已回滚。

建议方案

  1. 基于 bundle ID 跳过 L2(com.googlecode.iterm2、com.apple.Terminal 等),让流程落到 L3 Cmd+V 粘贴
  2. 需要实际日志验证 L3 在 iTerm2 中是否能成功粘贴
  3. 若 L3 也失败,考虑将终端模拟器强制走 .unavailable 路径

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions