macOs 下设置Capslock切换输入法

如果你有以下需求,不妨一试:

  • 使用搜狗输入法(为了词库)
  • 外接键盘,想实现内置/外置键盘的 cmd 和 opt 位置一致
  • 想用 Capslock 一键切换中/英

预防杠精:

系统自带拼音输入法/搜狗输入法都可以设置 caps 切换中英,为何折腾?

答:很多场景,例如各种登录的 pwd input 获得焦点时,系统会自动把输入法切换为自带的英语输入法,这时你是不知情的,你不得不用 ctrl + space 切换回中文输入法。这个过程需要确认,有种反复插拔 usb 的感觉。

你把默认的英文输入法删除了不就好了?

答:首先删不掉,10.14 之前有方法可以 hack,但不推荐,有坑,而且不安全。

实现方法

下载Karabiner,安装之,重启系统

Karabiner是一个 mac 下修改键盘映射的工具

关闭搜狗的中英切换快捷键

此步骤在于避免误操作,从此以后只有两种输入法:英文/中文,互相的状态也单一,纯粹

设置切换输入法的快捷键为 command+control+option+shift+p

我知道默认的快捷键是ctrl+space,设成这个几乎不会用到的快捷键,可以省出ctrl+space,设置成更常用的功能

利用 Karabiner 将Capslock映射为command+control+option+shift+p

配置文件地址在 ~/.config/karabiner/karabiner.json,这里只贴出关键配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"complex_modifications": {
"parameters": {
"basic.simultaneous_threshold_milliseconds": 50,
"basic.to_delayed_action_delay_milliseconds": 500,
"basic.to_if_alone_timeout_milliseconds": 1000,
"basic.to_if_held_down_threshold_milliseconds": 500
},
"rules": [
{
"manipulators": [
{
"description": "Change caps_lock to command+control+option+shift+p.",
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "p",
"modifiers": [
"left_command",
"left_control",
"left_option",
"left_shift"
]
}
],
"type": "basic"
}
]
}
]
}

交换 cmd/opt

保证外接键盘的键位和内置键盘一样,不然会疯掉

后记

按照以上设置,可以实现不用考虑内置/外置键盘,只需要 caps 就能在中/英之间切换,就算 pwd input 自动切换成英文输入法了,只要发现了点一下 caps 就好,不用再反复确认到底是输入法切换了还是中英状态切换了
设置开机启动什么的不赘述了

缺点

大小写指示灯再也不会亮了

本文完。