在OS X中使用 Shift 键切换输入法

出于安全的考虑,最近弃用了搜狗输入法。开始使用OS X自带的输入法。 搜狗输入法有一个很实用的功能是使用shift键切换中英文输入法,但是自带的输入法没有这个功能。这让我难受了一段时间。

OS X中,切换输入法的快捷键只能设置为组合键(比如⌘+空格),无法设置为单个按键。通过正常的系统设置无法做到shift切换输入法。

后来想到Karabiner这个软件可以做按键映射,也许能解决这个问题,所以尝试了一下,最终搞定,记录一下过程。

  1. 打开Karabiner的设置界面,在Misc & Uninstall项中点击Open private.xml打开自定义设置的配置文件。

    Alt text

  2. 在配置文件private.xml中的root -> item节点下加入如下配置项,并保存文件。原理就是将左边的shift按键,映射为⌘+空格

     <item>                                                                      
       <name>Change Input Source with left shift key.</name>         
       <appendix>(Sending Command+Space when left shift key is pressed and released immediately)</appendix>
       <identifier>remap.shift_language_switch</identifier>
       <autogen>__KeyDownUpToKey__ KeyCode::SHIFT_L, KeyCode::SPACE, ModifierFlag::COMMAND_L, KeyCode::COMMAND_L
       </autogen>
     </item>
    
    private.xml 的说明文档在 https://pqrs.org/osx/karabiner/xml.html.en
    karabiner内置配置的样例文件在/Applications/Karabiner.app/Contents/Resources/include/ 注意我这里使用的是__KeyDownUpToKey__,而不是__KeyToKey__。它们的差别在于:
    • 使用__KeyToKey__映射时,只要shift键被按下并释放,那么就会触发映射。比如,当我用shift+u输入大写字母U时,也会触发⌘+空格
    • 使用__KeyDownUpToKey__映射时,仅当我按下并释放shift按键,同时没有按下其他任何按键时,才会触发⌘+空格
  3. 在Karabiner设置界面,Change key页面中,点击Reload XML。然后在页面下方的custom setting中,勾选上刚刚的配置项。配置就生效了。

    Alt text

Comments