定制Mac的输入法切换按键为左Shift
目前,自己用的是搜狗输入法和Spacemacs,发现高概率偶现一个问题:
每次都要重启Emacs才能解决,十分蛋疼!!!
于是,想着是不是只有搜狗+Emacs才会有这个问题,因为:
- 其他场景(包括Vim)都没有遇到过
- 搜索不到相关问题,其他输入法应该没有
(自己用的搜狗+双拼,不知道是否有影响)
抱着试试的心态,决定放弃搜狗,直接用自带的输入法(也支持双拼)
过程中,遇到一个问题,就是搜狗支持 left-shift
切换中英文,
而系统的ABC和简体拼音却是通过 right-shift
(其实是 Caps Lock
,但是自己通过 Karabiner-Elements 映射成了 right-shift
)切换的。
自己很不习惯,且 left-shift
离小拇指更近,肯定比 right-shift
合理。
那么如何如何让 left-shift
支持切换呢?
直接映射成 Caps Lock
是不行的,因为这样 left-shift
的各种组合键就不能用了。
准确地说,我需要的是 left-shift
在单击时切换输入法,作为组合键时保留自己的能力。
可以利用 Karabiner-Elements 的 complex_modifications rules
实现,
参考: macOS 快速切换中英文输入法的快捷键是什么? - 知乎
在 系统偏好设置-键盘-快捷键
配置一个输入法切换的快捷键,注意:
在系统设置中键盘输入法设置切换上一个输入法,注意,下一个输入法不要选择,这样只要按这一个组合键输入法就会循环切换,当然我们肯定不会直接按个这组合键.
需要注意的是,亲测发现上面知乎回答提供脚本有点问题,导入之后没有标题和描述,完整格式应该如下:
{
"title": "Map Lft-Ctl+Open-Bracket to Close-Bracket",
"rules": [
{
"description": "单击左右Shift切换输入法!",
"manipulators": [
{
"from": {
"key_code": "left_shift"
},
"to": [
{
"key_code": "left_shift"
}
],
"to_if_alone": [
{
"key_code": "0",
"modifiers": [
"left_control",
"left_option",
"left_command"
]
}
],
"type": "basic"
},
{
"from": {
"key_code": "right_shift"
},
"to": [
{
"key_code": "right_shift"
}
],
"to_if_alone": [
{
"key_code": "0",
"modifiers": [
"left_control",
"left_option",
"left_command"
]
}
],
"type": "basic"
}
]
}
]
}
接下来就是导入了,由于 Karabiner-Elements 只支持从在线网站导入,这里也花了点时间,具体来说,可以通过在浏览器发起一个导入:
karabiner://karabiner/assets/complex_modifications/import?url=xxxxx
xxxxx 就是本地路径编码后的值。
参考:keyboard - Karabiner elements custom complex rule - Ask Different
以上,就可以在单击 left-shift
时切换输入法,而不影响其组合键的使用了。