macOS下的清歌输入法输出的空格变成全角的问题

我在 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+. 组合键之后,空格确实恢复正常宽度了,但新问题马上出现:逗号变成半角 ,、句号变成 .、引号变成直引号 ",整篇文章的标点全成了英文风格。

我想要的其实是「中文标点 + 半角空格」这种组合,而它只存在于「自定义」方案里。
在设置面板里选:

  1. 打开清歌输入法的设置,切到「标点符号」页;
  2. 在三个单选框里选第三个「自定义」,并且在自定义设置中,按键"空格"的"输出标点"是"半角空格";
  3. 关闭设置窗口。

这样就OK了。

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):
wechat qrcode of codelast
以及我的微信视频号:

发表评论