macOS 中英文输入法切换终极解决方案

作为一个对工具有绝对掌控欲的强迫症程序员来说,无法得心应手的切换中英文输入法一直让我耿耿于怀。我想实现的是不用看通知栏就能知道当前输入法的状态,一键切换到自己需要的输入法,做到对输入法的绝对掌控。

使用环境:

  • macOS Sierra 版本10.12.4

具体问题:

  1. 不喜欢自带的简体拼音,使用的是搜狗。搜狗自带英文模式,但有时候会误操作切换到 ABC,而 ABC 和搜狗之间切换的快捷键ctrl + space很不方便。

  2. 不同的程序需要不同的输入法。程序间的切换导致输入法的频繁切换,很多时候都会忘记切换输入法,增多错误输出,降低工作效率。

  3. 通知栏的输入法状态并不醒目,而且需要切换眼光焦点到通知栏才能获知当前输入法,打断工作思路。

需求:

  1. 初级需求是把ctrl + space快捷键改为左shift
    高级需求是把中英文输入法绑定到不同的按键,好处是你不需要知道当前的输入法是什么,就能一键切换到想要的输入法。

  2. 初级需求是系统能够记住每个程序的输入法状态,切换到另外一个程序再切换回来的时候,还原输入法。
    高级需求是为每个程序设置初始输入法,不管新打开程序也好,还是从其它程序切换回来也好,都能固定输入法为初始值。

    自带的自动切换到文稿的输入法就可以满足初级需求。缺点是只在程序快速切换时有意义,比如从 A 程序切换到微信回复个消息立刻切换回来。但如果切换到 Chrome 浏览网页,20分钟后再切换回 A 程序,输入法状态是否被还原已经没有意义。因为你可能已经忘记了当时的输入法,还是要通过看通知栏才能知道当前输入法是什么,做不到绝对掌控。

  3. 初级需求是能够用余光便可以得知当前输入法状态。

    其实这个问题已经不太重要。因为在需求2得以解决的情况下,基本上可以做到任意时刻都知道当前的输入法状态。在需求1得以解决的情况下,可以一键切换到自己想要的输入法,不需要知道当前的输入法状态。

解决方案

  1. 放弃搜狗的英文模式,使用 ABC + 搜狗。使用 InputSourceSelector + Keyboard Maestro 绑定中英文输入法到不同快捷键,使用 Karabiner 将快捷键映射到左右command按键上。

  2. 使用 Keyboard Pilot 为每个程序设置初始输入法。

  3. 使用 ShowyEdge 为不同的输入法设置不同的通知栏颜色。

绑定输入法到特定按键

  1. 下载 InputSourceSelector 并解压(下载链接

  2. 启动终端,输入cd ~/Downloads/InputSourceSelector-master ,输入make,输入InputSourceSelector current,如果输出当前的输入法则表明 InputSourceSelector 安装成功。
    这里写图片描述

  3. 下载 Karabiner-Elements 并安装(下载链接

  4. 修改其配置文件,路径为~/.config/karabiner/karabiner.json,配置代码较长,以文本形式上传(下载链接)。将代码粘贴在"rules": [后即可,该配置总共做了三项工作:

    将 左Shift 键修改为 F17 键;
    将 左command 键修改为 F18 键;
    将 右command 键修改为 F19 键
    

    以上修改仅在单独按键时生效,和其他按键组合时无效。比如按左shift + s时,仍然输出S,而单击左shift时则为F17

  5. 打开系统偏好设置键盘快捷键输入法,双击选择上一个输入法的快捷键ctrl + space,按左shift,将其修改为F17

  6. 下载 Keyboard Maestro 并安装(破解版下载链接) 密码:mfdl

  7. 添加Maestro,设置如下图:

说明:

  1. 直接使用 KarabinerKeyboard Maestro 的切换输入法功能,出现间歇性失灵的问题,表现为输入法切换为中文了,但输出仍为英文。因此采用快捷键的方式切换输入法。

  2. 由于系统默认快捷键ctrl + space是组合按键,会出现间歇性无法切换的问题。因此修改快捷键为F17

  3. 直接使用 Keyboard Maestro 中的JavaScript脚本判断当前输入法速度较慢,大概需要350ms。因此使用 InputSourceSelector 获取当前输入法。

为每个程序设置初始输入法

Keyboard Pilot破解版下载链接

根据输入法变换通知栏颜色

ShowyEdge下载链接

效果图(英文输入法)
这里写图片描述
效果图(搜狗输入法)
这里写图片描述
英文输入法的红色是我桌面背景本身的颜色
搜狗输入法的蓝色设置见下左图,透明度设置见下右图
这个颜色是和桌面背景颜色叠加而成,桌面背景不同,效果会有所差异

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章