Vastiny

Apr 17, 2023

黑魔法:如何让 Mac 只保留一个输入法

因为 Mac 上使用的一直都是 Rime 输入法,也叫鼠须管,中英文一个键就可以切换。如果保留一个以上的输入法,总是会在切换应用后,输入法自动切换为系统默认的输入法 ABC,导致不确定是哪个输入法,也不知道是不是中文输入状态。所以之前一直使用的方法是修改 com.apple.HIToolbox.plist 文件,让输入法 Rime 保留为唯一的输入法。这里最新的系统 macOS Ventura 13 在升级输入法后发现设置失效了,这里重新记录一下成功的案例。

操作步骤

1. 备份 com.apple.HIToolbox.plist 文件

1
cp ~/Library/Preferences/com.apple.HIToolbox.plist{,_1}

会拷贝 ~/Library/Preferences/com.apple.HIToolbox.plist 文件到同目录下的 ~/Library/Preferences/com.apple.HIToolbox.plist_1

2. 将当前活跃输入法选为「英文」输入法

3. 转换 plist 文件为 xml 格式

1
plutil -convert xml1 ~/Library/Preferences/com.apple.HIToolbox.plist

因为 plist 有两种格式,一种是二进制的,直接用编辑器打开是乱码,所以需要用工具转为 xml 格式,方便编辑。

4. 修改 com.apple.HIToolbox.plist 文件

用编辑器打开 com.apple.HIToolbox.plist,删除掉 AppleEnabledInputSources 键下不需要的输入法dict。我这里删除后只剩下这些。可以不用拷贝,直接编辑系统上的文件到类似的内容即可。然后保存文件

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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AppleCurrentKeyboardLayoutInputSourceID</key>
<string>com.apple.keylayout.ABC</string>
<key>AppleDictationAutoEnable</key>
<integer>0</integer>
<key>AppleEnabledInputSources</key>
<array>
<dict>
<key>Bundle ID</key>
<string>com.apple.CharacterPaletteIM</string>
<key>InputSourceKind</key>
<string>Non Keyboard Input Method</string>
</dict>
</array>
<key>AppleInputSourceHistory</key>
<array>
<dict>
<key>Bundle ID</key>
<string>im.rime.inputmethod.Squirrel</string>
<key>Input Mode</key>
<string>im.rime.inputmethod.Squirrel.Hans</string>
<key>InputSourceKind</key>
<string>Input Mode</string>
</dict>
</array>
</dict>
</plist>

5. 重启系统

保存文件后,其它都不要操作,直接重启 Mac 系统。启动后就会发现菜单栏只剩下一个输入法了。

OLDER > < NEWER