You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至macOS Monterey后切换键盘布局的AppleScript脚本失效求助

修复Monterey下失效的AppleScript键盘布局切换脚本

我升级到Monterey时也遇到过一模一样的问题!Apple在这个版本里调整了菜单栏代理的权限机制和UI交互逻辑,原来依赖点击TextInputMenuAgent菜单的方式变得不稳定——哪怕能定位到菜单选项,也可能因为系统权限或菜单加载时序问题导致点击失效。

方案1:直接通过系统API设置(推荐)

这种方法完全避开了UI模拟的坑,直接调用系统底层接口设置键盘布局,稳定性和可靠性都高很多:

changeKeyboardLayout("Squirrel")
on changeKeyboardLayout(layoutName)
    tell application "System Events"
        set current keyboard layout to layoutName
    end tell
end changeKeyboardLayout

只要你的layoutName和系统里显示的键盘布局名称完全一致(注意大小写和空格),这个脚本就能直接生效,不需要纠结菜单层级或点击时序。

方案2:修复模拟点击的逻辑(适合特殊场景)

如果因为某些原因必须用模拟点击的方式,可以调整代码,增加菜单展开的延迟,并确保权限到位:

changeKeyboardLayout("Squirrel")
on changeKeyboardLayout(layoutName)
    tell application "System Events"
        tell process "TextInputMenuAgent"
            set inputMenuBarItem to menu bar item 1 of menu bar 2
            -- 先点击展开菜单,给系统一点响应时间
            click inputMenuBarItem
            delay 0.1
            -- 再点击目标布局选项
            click menu item layoutName of menu 1 of inputMenuBarItem
        end tell
    end tell
end changeKeyboardLayout

另外一定要检查权限:打开「系统设置」→「隐私与安全性」→「辅助功能」,把你用来运行脚本的应用(比如Script Debugger、Script Editor)添加进去,否则系统会阻止脚本模拟点击操作。

你提到用索引定位到"U.S."但点击没反应,本质是因为Monterey里菜单展开的速度变慢了,脚本执行点击时菜单还没完全加载完成,加上delay 0.1就能解决这个时序问题。

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:58:12