我在 macOS 上用清歌输入法打中文,按下空格键出来的那段空白,宽度莫名其妙变成了原来的两倍(目测),我琢磨着应该是不小心按了什么快捷键切换了输入法的 全角/半角模式 导致的,于是找了一下问题,记录成文。
一句话结论:按出来的是全角空格(U+3000),而不是半角空格(U+0020)。原因是清歌的「标点方案」被切到了「只使用中文标点」,这个方案里的空格就是全角空格。
1、查找修改全角/半角模式的快捷键
我平常从不使用清歌输入法的快捷键来改设置,所以我完全没概念自己到底是按了什么快捷键改错的设置,于是网上搜了一下,该快捷键是"Ctrl+.",
文章来源:https://www.codelast.com/
2、清歌输入法的本地配置
清歌在 macOS 上把设置存在 NSUserDefaults 里,域名叫 com.aodaren.inputmethod.Qingg,用 defaults 命令就能读出来。先看标点方案这个键:
$ defaults read com.aodaren.inputmethod.Qingg kPunctuationType
0
值是 0。再看两份标点表——一份是清歌内置的默认表,一份是用户「自定义」保存的表:
$ plutil -p "/Library/Input Methods/Qingg.app/Contents/Resources/QGDefaultPunctuation.plist" | tail -5
"$" => "¥"
"空格" => "全角空格"
$ plutil -p ~/Library/Application\ Support/Qingg/Data/QGUserPunctuation.plist
{
"_" => "——"
"-" => "-"
"," => ","
...
"空格" => "半角空格"
}
真相:
- 内置的「中文标点」方案里,空格被定义成全角空格;
- 我自己那份「自定义」方案里,空格是半角空格,同时逗号句号引号都是中文的;
-
而当前生效的
kPunctuationType是0,也就是「只使用中文标点」。
顺着这个键,在清歌的设置面板(App 内的「标点符号」页)里能看到三个单选框,它们绑定的就是这个键:
| kPunctuationType | 方案 | 空格 | 标点 |
|---|---|---|---|
| 0 | 只使用中文标点 | 全角空格 | 中文 |
| 1 | 只使用英文标点 | 半角空格 | 全英文 |
| 2 | 自定义 | 以用户表为准(我的是半角空格) | 以用户表为准(我的是中文) |
也就是说,我原本一直用的是 2(自定义:中文标点 + 半角空格),不知什么时候被切成了 0。顺手看一眼 plist 的修改时间:stat -f "%Sm" ~/Library/Preferences/com.aodaren.inputmethod.Qingg.plist,时间正好是我发现问题的前几分钟——基本可以确认是手滑按了快捷键改了设置。
顺便说一句,清歌的面板里其实还写着一行提示:「• 切换快捷键:Ctrl+ .」,只是平时不会注意到。
文章来源:https://www.codelast.com/
3、按了 Ctrl+. 之后:空格对了,标点全成英文了
按 Ctrl+. 组合键之后,空格确实恢复正常宽度了,但新问题马上出现:逗号变成半角 ,、句号变成 .、引号变成直引号 ",整篇文章的标点全成了英文风格。
我想要的其实是「中文标点 + 半角空格」这种组合,而它只存在于「自定义」方案里。
在设置面板里选:
- 打开清歌输入法的设置,切到「标点符号」页;
- 在三个单选框里选第三个「自定义」,并且在自定义设置中,按键"空格"的"输出标点"是"半角空格";
- 关闭设置窗口。
这样就OK了。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):

以及我的微信视频号:
