fix(macos): 字符集声明去掉 Latn,修复系统设置不出「用 Caps Lock 切换 ABC」 (#540)

字符集带 Latn 时系统把青简归成拉丁类输入源,只有 TICapsLockLanguageSwitchCapable 这个键时设置项仍不出现;顶层与模式级只留 Hans。

Refs #211
This commit is contained in:
holysheng
2026-10-12 12:53:54 +08:00
committed by GitHub
parent 1eced5e34e
commit 08cca80613
2 changed files with 5 additions and 3 deletions
+3 -3
View File
@@ -43,7 +43,8 @@
<string>app.qingjian.inputmethod</string>
<key>TISIntendedLanguage</key>
<string>zh-Hans</string>
<!-- 允许系统设置里打开「用 Caps Lock 在 ABC 与青简之间切换」;缺省不开,青简自己的 Caps Lock 英文模式不变(#211) -->
<!-- 允许系统设置里打开「用 Caps Lock 在 ABC 与青简之间切换」;缺省不开,青简自己的 Caps Lock 英文模式不变(#211)。
另外要求字符集不含 Latn:带着它系统会把青简归成拉丁类输入源,这个设置项根本不出现在系统设置里(鼠须管 1.0.1 同款坑) -->
<key>TICapsLockLanguageSwitchCapable</key>
<true/>
<key>tsInputMethodIconFileKey</key>
@@ -51,10 +52,10 @@
<!-- 模板图:系统只取 alpha,按深浅色自动反色 -->
<key>TISIconIsTemplate</key>
<true/>
<!-- 只声明汉字:多一个 Latn 都会被系统按拉丁类输入源处理,见上面 Caps Lock 切换的说明 -->
<key>tsInputMethodCharacterRepertoireKey</key>
<array>
<string>Hans</string>
<string>Latn</string>
</array>
<!-- 输入模式:系统登记、启用的是模式 app.qingjian.inputmethod.Hans,顶层 ID 是它的父项;
@@ -72,7 +73,6 @@
<key>tsInputModeCharacterRepertoireKey</key>
<array>
<string>Hans</string>
<string>Latn</string>
</array>
<key>tsInputModeDefaultStateKey</key>
<true/>
+2
View File
@@ -382,6 +382,8 @@ CC-CEDICT 表(`dict-convert cedict`)保留为备用来源,覆盖面广但
系统登记、启用、切换的都是模式,顶层 ID 只是父项,所以 `--register` 启用的是 `tsVisibleInputModeOrderedArrayKey` 的第一项;
模式显示名在 `InfoPlist.strings` 按模式 ID 给,缺了对话框里显示裸 ID。没有模式时标准文本视图(备忘录等)切不过去、
「添加输入法」列表也不出现(#31)。
**Caps Lock 切换**:系统设置里的「用大写锁定键切换 ABC」要出现并认青简为目标,除 `TICapsLockLanguageSwitchCapable = true` 外,
顶层与模式级 `…CharacterRepertoireKey` 都不能带 `Latn`——带了系统把输入源归成拉丁类,这个设置项根本不显示(鼠须管 1.0.1 修的同款坑,#211)。
**图标**:顶层 `tsInputMethodIconFileKey` 与模式里的 Menu / AlternateMenu / Palette 三个图标键都指向同一张 22×16pt 模板 PDF
(黑色键帽镂空图形,`TISIconIsTemplate` 让系统只取 alpha 按深浅色反色),鼠须管、Fcitx5 同此尺寸与形式,小了整体偏小、
非模式路径会被非等比压进 16×16。系统自带输入法下拉菜单里的「拼」「あ」是苹果私有素材(KeyboardLayouts.framework),