applescript 无法原生切换 macos 输入法,但可通过 inputsource 工具配合快捷键模拟实现:先安装 inputsource 并配置 path,再用 applescript 循环执行 control-option-space 并轮询当前输入源,直至匹配目标 id,最后可封装为快捷指令或快速操作使用。
applescript 本身不能直接设置或切换 macos 输入法,但可以配合外部工具(如 inputsource 命令行工具)和系统事件模拟,实现“按需跳转到指定输入法”的效果。它不是原生支持的功能,但属于稳定、免付费的实用方案。
前提:安装 inputsource 工具
macOS 没有内置命令查询/设置当前输入源,需依赖开源小工具 inputsource(GitHub 上维护良好,轻量安全):
- 下载编译好的二进制文件(如
inputsource),放入/usr/local/bin/或其他 PATH 路径下; - 终端执行
inputsource应返回类似com.apple.inputmethod.SCIM.ITABC(简体拼音)或com.apple.keylayout.ABC(美式英文); - 若提示权限问题,运行
sudo chmod +x /path/to/inputsource。
AppleScript 核心逻辑:循环+按键模拟
由于系统不提供“切换到某输入法”的 API,常用策略是:不断触发系统默认切换快捷键(Control-Option-Space),同时轮询当前输入法,直到匹配目标 ID:
- 用
do shell script "inputsource"获取当前输入法标识符; - 用
tell application "System Events" to key code 49 using {control down, option down}模拟快捷键; - 加短延时(
delay 0.1)避免过快导致识别失败; - 重复直到
nowInput等于目标字符串(如"com.apple.keylayout.ABC")。
封装为快捷指令或服务
单独运行 AppleScript 效率低,建议整合进 macOS 自动化流程:
- 在“快捷指令”App 中新建快捷指令,添加“运行 AppleScript”操作,粘贴脚本;
- 为其分配全局快捷键(如
⌃⌥⌘P切中文、⌃⌥⌘E切英文); - 或通过“自动操作”(Automator)保存为“快速操作”,在右键菜单或触控栏调用。
注意事项与限制
该方法实际可靠,但有几点必须留意:
- 需确保“键盘 > 快捷键 > 输入源”中,“选择下一个输入源”已启用且未被其他软件拦截;
- 首次运行前,至少两种输入法必须已启用并出现在菜单栏;
- 部分全屏应用(如 Final Cut Pro、游戏)可能拦截 System Events,此时脚本会暂停或失败;
- 输入法 ID 字符串区分大小写,务必从
inputsource实际输出中复制,不要手写猜测。











