KeyMinder:让 macOS 记住每个应用的输入法 #
KeyMinder 是什么? #
KeyMinder 是一款原生的 macOS 菜单栏工具,它会按应用(或按窗口)记住你上一次使用的键盘输入源(键盘语言布局),并在你切换焦点时自动切换过去。
在 macOS 上同时使用中文、英文、日文等多种输入源是常态,但系统默认不会区分应用——你在浏览器里用中文输入,切到终端却还是中文,切回聊天窗口又忘了切回来。KeyMinder 解决的正是这个高频却容易被忽视的痛点:它监听系统的焦点变化事件,识别当前获得焦点的应用或窗口,查询此前为该标识保存的输入源并自动切换;若没有记录,则套用你设定的默认输入源。
整个工具驻留在菜单栏,无主窗口、无 Dock 图标,所有映射关系仅保存在内存中,不上传、不落盘,兼顾效率与隐私。项目基于 MIT 协议开源,完全使用 Swift/Cocoa 编写,无任何外部依赖。
KeyMinder 有哪些亮点特色? #
- 按应用记忆输入源:为每一个应用单独保存你上次使用的键盘布局,下次切回该应用时自动恢复,无需手动按
Control + Space反复切换。 - 支持按窗口粒度识别:除按应用维度外,还可基于焦点窗口进行区分,让同一应用的不同窗口拥有各自的输入源。
- 焦点变化即时响应:通过监听 macOS 的
AXFocusedUIElementChangedNotification事件,在焦点切换的瞬间完成输入源切换,几乎无感知延迟。 - 菜单栏常驻、零干扰:以状态栏图标形式运行,不占用 Dock、不弹出多余窗口,界面极简,随用随走。
- 隐私安全,映射仅存内存:官方明确说明所有映射关系都保存在内存中,不写入磁盘、不上传服务器,敏感输入行为不外泄。
- 登录自动启动:通过
LaunchAgent(~/Library/LaunchAgents/com.alextuby.KeyMinder.plist)实现开机自启,配置一次即可长期生效。 - 100% 原生实现,无外部依赖:纯 Swift/Cocoa 编写,没有第三方库包袱,体积小巧、运行轻量。
- 开源免费:基于 MIT License 开源,代码公开可审计,作者 Oleksandr Tubolets 持续维护。

免费下载 KeyMinder #
以下为官方提供的安装包,点击链接即可下载。
| 文件名 | 描述 | 大小 | 下载 |
|---|---|---|---|
| KeyMinder-0.2.3.dmg | macOS 安装包(v0.2.3) | 2.5 MB | 夸克网盘 |
提示:KeyMinder 依赖 macOS 辅助功能(Accessibility)权限才能正常工作,首次启动后请按引导完成授权。
KeyMinder 如何使用? #
- 启动应用:安装并打开 KeyMinder 后,应用不会显示主窗口,而是直接在 macOS 菜单栏出现一个小图标,表示它已在后台运行。
- 授予辅助功能权限:首次运行时会弹出权限请求。前往「系统设置 → 隐私与安全性 → 辅助功能」,确认 KeyMinder 已在列表中并勾选启用;若未列出,请手动添加应用二进制文件。
- 设置默认输入源:点击菜单栏中的 KeyMinder 图标,选择你希望作为「兜底」的默认输入源。当某个应用或窗口还没有任何记录时,KeyMinder 会自动为它分配这个默认值。
- 正常使用即可:之后你无需做任何额外操作。在 A 应用里切到中文、在 B 应用里切到英文,KeyMinder 会分别记住;之后再在两者之间来回切换时,输入源会自动跟随焦点变化。
- 修改与调整:任何时候手动切换输入源,KeyMinder 都会同步更新对应的映射记录,做到「你怎么用,它就怎么记」。
进阶:项目提供
testAccessibilitySetup()函数用于调试辅助功能配置,maybeInstallLaunchAgent()用于安装登录自启的 LaunchAgent,日志会输出到控制台(stdout)。这些主要面向开发者与排障场景。
KeyMinder 的常见问题? #
KeyMinder 会把我的输入记录上传到服务器吗?
不会。官方明确说明所有输入源映射都保存在内存中,不上传、不落盘,因此也不存在云端同步或数据泄露风险。
为什么 KeyMinder 必须申请辅助功能权限?
KeyMinder 依赖 macOS 的 Accessibility API 来检测应用与窗口的焦点变化,没有该权限就无法感知你切换到了哪个应用,功能会完全失效。授权只用于读取焦点信息,不涉及键盘内容记录。
为什么在某些应用(比如 Spotlight)里切换不生效?
这是官方已知问题。KeyMinder 依赖 macOS 的 AXFocus 机制判断焦点,而 Spotlight 这类「浮动窗口」有时不会发出焦点变化通知,或者获得焦点时发出通知、切回时却不发出。对常规应用一般稳定可靠,少数特殊窗口可能存在偏差。
重启电脑后,之前的输入源记忆还在吗?
映射关系保存在内存中,因此应用重启或系统重启后记忆会重新建立。你设置的默认输入源仍会生效,日常使用中 KeyMinder 会很快重新学习各应用的使用习惯。
KeyMinder 支持 Windows 或 Linux 吗?
不支持。KeyMinder 是专为 macOS 打造的原生应用,使用 Swift/Cocoa 编写并调用 macOS 专有的 Accessibility API,没有跨平台版本。
提示权限已开启但功能仍无效怎么办?
建议先在「系统设置 → 隐私与安全性 → 辅助功能」中取消勾选再重新勾选,然后完全退出并重启 KeyMinder;若仍无效,可尝试移除该条目后重新添加应用二进制文件。
KeyMinder 如何安装? #
方式一:使用 DMG 安装包(推荐普通用户) #
- 从上方下载表格获取
KeyMinder-0.2.3.dmg文件。 - 双击打开 DMG 镜像,将
KeyMinder.app拖入「应用程序」文件夹。 - 首次运行时,macOS 可能提示「无法验证开发者」,可在「系统设置 → 隐私与安全性」中点击「仍要打开」放行。
- 启动后按提示前往「系统设置 → 隐私与安全性 → 辅助功能」授予权限。
- 授权完成后重启应用,菜单栏出现 KeyMinder 图标即表示安装成功。
方式二:从源码构建(面向开发者) #
- 克隆或下载 https://github.com/alextuby/KeyMinder 仓库代码。
- 使用 Xcode 打开
KeyMinder.xcodeproj,选择 macOS target 进行构建(Build)。 - 运行生成的 App,应用会主动请求辅助功能权限。
- 前往「系统设置 → 隐私与安全性 → 辅助功能」,若 KeyMinder 未出现在列表中,请手动添加。
- 确保复选框已勾选,然后重新启动应用。
- 在菜单栏图标中选择你的默认输入源。
注意事项:辅助功能权限是本应用运行的硬性前提;若权限被系统重置(例如更新系统后),需要重新授权。
KeyMinder 如何卸载? #
步骤一:退出并关闭应用 #
- 点击菜单栏中的 KeyMinder 图标,选择退出(Quit)。
- 打开「活动监视器」,确认没有残留的 KeyMinder 进程;如有,请手动结束。
步骤二:删除应用本体 #
- 若通过 DMG 安装:打开「访达 → 应用程序」,将
KeyMinder.app拖入废纸篓,然后清空废纸篓。 - 若通过 Xcode 构建:删除 Xcode 的 DerivedData 中对应的构建产物,或直接删除你手动放置的 App 文件。
步骤三:移除登录自启项(重要) #
KeyMinder 会安装一个 LaunchAgent 开机自启配置,卸载时建议一并删除:
- 打开「访达」,按
Command + Shift + G,输入~/Library/LaunchAgents/。 - 找到并删除
com.alextuby.KeyMinder.plist。 - 如已配置,可在「系统设置 → 通用 → 登录项」中确认并移除相关条目。
步骤四:清理权限与残留 #
- 前往「系统设置 → 隐私与安全性 → 辅助功能」,选中 KeyMinder 并点击减号移除。
- 由于 KeyMinder 的映射数据仅存于内存、不写入磁盘,通常不存在需要清理的配置文件或缓存目录;若你曾保留过自定义构建产物,建议一并手动删除以免误启动。
