AppleScript无法直接修改macOS键盘布局,但可通过shell命令写入com.apple.HIToolbox.plist并重启HIToolbox服务切换输入源,或模拟Control+Space快捷键轮换;两种方式均需在“辅助功能”中授权对应应用。

AppleScript 本身不能直接修改 macOS 的键盘布局设置(比如切换到“ABC”或“简体中文-拼音”),因为系统键盘布局属于受保护的系统偏好设置,AppleScript 没有原生命令去写入 com.apple.HIToolbox 或 NSGlobalDomain 中的输入法配置。但你可以通过组合 AppleScript + shell 命令间接实现「切换当前输入源」——这是最实用、最稳定的方式。
用 AppleScript 切换已启用的输入法
macOS 允许脚本通过 defaults 和 touch 触发输入源切换,前提是目标输入法已在「系统设置 > 键盘 > 输入源」中启用并排序好。AppleScript 可调用 shell 命令模拟「Control+Space」或「Command+空格」快捷键,但更可靠的是直接指定输入源 ID 切换:
- 先查出已启用输入源的完整标识符(如
com.apple.keylayout.ABC或com.apple.inputmethod.SCIM.ITABC):在终端运行defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSourceHistory - 用 AppleScript 执行切换命令(需配合
do shell script):do shell script "defaults write ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSourceHistory -array 'com.apple.keylayout.ABC'"
然后重启输入法服务:do shell script "killall HIToolbox" - 注意:该操作会重置整个输入源历史顺序,仅推荐用于固定切换(如开机后强制设为 ABC),不适合高频动态切换
用 AppleScript 模拟快捷键切换输入源
如果你只是想模拟用户按 Control + 空格 或 Command + 空格 来轮换已启用的输入法,这是最简单且无需权限的方法:
- AppleScript 调用 System Events 发送按键组合:
tell application "System Events" to key code 49 using {control down}(对应 Control+Space) - 确保「系统设置 > 键盘 > 键盘快捷键 > 输入源」中已启用「选择上一个输入源」或「选择下一个输入源」,且快捷键与脚本一致
- 此方式不依赖输入源 ID,兼容性好,但要求当前界面焦点允许接收快捷键(例如不能在全屏游戏或某些沙盒 App 中生效)
自动化前必须完成的系统授权
无论用哪种方式,只要涉及 UI 操作(如发送按键、访问输入法状态),AppleScript 都需要「辅助功能」权限:
- 前往「系统设置 > 隐私与安全性 > 辅助功能」
- 点击「+」添加你运行脚本的 App(如「脚本编辑器」「自动操作」「终端」或导出的 .app)
- 若使用「自动操作」封装 AppleScript,还需把「自动操作」App 本身加入授权列表
- 缺少授权会导致脚本静默失败或弹出权限提示
更稳定的替代方案:快捷指令 + 键盘快捷键
对普通用户来说,比纯 AppleScript 更推荐的做法是:
- 在「快捷指令」App 中新建一个快捷指令,添加「设置键盘布局」操作(macOS Sequoia 15 及更新版本原生支持)
- 为该快捷指令分配全局键盘快捷键(如 ⌘⌥K),可在任意场景一键切换
- 如需兼容旧系统,可用快捷指令调用同一段 AppleScript,再统一授权一次即可


















