macOS Sierra下多语言输入法快捷切换方案

升级到Sierra之后,最痛苦的就是Karabiner用不了了,但我用Karabiner只有两个需求,一个是把对调caps lock和control按钮,另外就是使用command和option一键切换输入法。前两天实在受不了尝试降级,然而不愧是苹果,降级之后无法恢复高版本备份,于是只好又恢复回来,折腾一天之后最后完成了一样的功能。

使用工具:
BetterTouchTool https://www.boastr.net/ Mac下最好用的手势工具,当然也可以用来修改键盘
inputsource https://github.com/hnakamur/inputsource 调用系统的”NSTextInputContext”API来实现切换输入法,懒得自己写,于是上Github找了个过来用。

实现目标:
左command键变为切换英文输入法
右command键变为切换日语输入法
右option键变为切换(第三方)中文输入法

实现方法:
左command键及右command键
由于mac的系统API BUG(https://github.com/tekezo/Karabiner/blob/version_10.15.0/src/core/server/Resources/vkchangeinputsourcedef.xml#L210-L236)在CJK输入法切换的时候会出现失灵情况,到Sierra也没有修复,不愧是bugOS,所以需要一个小诀窍来解决这个问题。
Mac的日语键盘中有JIS_EISU和JIS_KANA两个按钮,使用这两个按键切换输入法的时候不会受到影响,所以英语和日语输入法切换就映射到这两个键就行。

Screen Shot 2017-01-29 at 20.37.58在BTT中添加好按键后,选择执行Apple Script脚本,填入以下内容:

tell application “System Events”
key code 102 (KANA为104)
end tell

option键切换中文输入法
由于并没有按键可以直接切换中文输入法,而且我是用的是第三方输入法,所以需要避免一下BUG,请自行修改下inputsource目录,如果要当前输入法名称,可以直接运行inputsource获取。因为我装了isHUD来显示输入法状态,免得每次按键都修改,所以增加了一个判断。

set IME to do shell script “/usr/local/bin/inputsource”
if IME is “com.baidu.inputmethod.BaiduIM.pinyin” then
else
do shell script “/usr/local/bin/inputsource com.baidu.inputmethod.BaiduIM.pinyin”
tell application “System Events”
key code 102
key code 49 using command down
end tell
end if

Leave a Reply

Your email address will not be published. Required fields are marked *