You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
LimeIME Preference Table — iOS Spec vs Android Pre/Post Back-port
3-way comparison of every preference item in the LimeIME settings tree across:
iOS current/spec — LimeIME-iOS/LimeSettings/Views/PreferencesTabView.swift, aligned to docs/LIME_SETTINGS.md §8 and Android current preference strings
Android pre-back-port — commit 6791ab7b (parent of the "Step 3" back-port series), three flat PreferenceCategory blocks (lime_keyboard / lime_im / lime_mapping)
Android current — HEAD app/src/main/res/xml/preference.xml, 7 sectioned categories + 1 nested sub-screen, aligned to iOS §8.1–§8.7 (with §8.3 and §8.8 consolidated away, §8.9 folded into §8.4.1; auto_cap moved into §8.7)
Legend
Default uses the android:defaultValue literal (strings keep their XML quoting); empty cell = no default declared
Category = the PreferenceCategory android:key (Android) or the iOS section heading
pref_section_* category keys + the reverse-lookup sub-screen wrapper strings are NEW in the back-port
Items moved between categories show their cross-source section number in bold as a hint
(hidden — no UI) · always true (UI removed from pref_section_im_behaviour; LIMEPreferenceManager.getSelectDefaultOnSliding() returns true)
Swipe vs paged candidate selection. The paged alternative is obsolete on modern iOS/Android, so the toggle was removed and the value is hardcoded to true (free-scroll). Stored UserDefaults / SharedPreferences entry is ignored.
Position index of emoji in candidate strip; default 5. Value 0 disables inline emoji candidates. When comma/period full-width Chinese punctuation is present at that slot, emoji insertion moves after it so punctuation stays before emoji.
similiar_list
Picker / ListPreference
20 · 建議字顯示數量 · §8.4 輸入法行為 · gated by similiar_enable (§8.6 toggle) on iOS
"20" · 建議字顯示數量 · lime_mapping (§8.6)
"20" · 建議字顯示數量 · pref_section_im_behaviour
Suggestion-count limit: 0 / 10 / 20 / 30 / 40 / 50. Re-categorised from §8.6 to §8.4 on both iOS and Android current; pre-back-port Android kept it in §8.6 (lime_mapping).
reverse_lookup_screen
Drill-down / PreferenceScreen
(screen) · 字根反查設定 · §8.4.1 字根反查設定
(flat entries in lime_im; no wrapper)
(screen) · 字根反查設定 · pref_section_im_behaviour
Opens the reverse-lookup sub-screen. Last item in §8.4 on both platforms.
Auto-capitalize the first letter of English sentences. iOS gates updateShiftForAutoCap() (which reads textDocumentProxy.autocapitalizationType) on this pref. Android LIMEService.loadSettings() reads via LIMEPreferenceManager.getAutoCaptalization().
5.2 IMDetailView — per-IM prefs (cross-listed)
These prefs are not in the Preferences tab. They live inside the IM Detail page, gated by tableNick. Listed here for completeness.
IM Detail 版本 is canonical in the im table as title = "version" and desc = <version text>. The legacy {table}mapping_version preference is retained only as a display fallback for older installs, followed by im.source and then im.name. New .lime and .cin imports populate im.version from @version@ and %version; legacy %cname is used only as a fallback when %version is missing.
Custom-IM only on both platforms. Surfaces inside IMDetailView, not in Preferences tab. Removed from preference.xml in the back-port; re-surfaced in ImDetailFragment per ANDROID_BACKPORT_GAP.md §2.2/P1.3.
accept_symbol_index
Toggle / CheckBox
false · 啟動符號對應 · IMDetailView (custom-IM only)
(no defaultValue) · 啟動符號對應 · lime_mapping · summary=允許使用符號為輸入法字根
Same as above. Custom-IM only; moved to IMDetailView.
auto_commit
Picker / ListPreference
0 · 電話鍵盤自動上屏 · IMDetailView (array10 only)
"0" · 電話鍵盤自動上屏 · lime_im
"0" · 電話鍵盤自動上屏 · ImDetailFragment (array10 only)
array10 phone-numpad auto-commit. Surfaces in IM Detail when tableNick == "array10" on both platforms (ImDetailFragment.java:193-218 + IMDetailView.swift:108-122).
Phonetic soft-keyboard variant (standard/HSU/ETEN26/…). Surfaces in IM Detail when tableNick == "phonetic" on both platforms (ImDetailFragment.java:220+ + IMDetailView.swift:94).
backup_on_delete_{tableNick}
Toggle / CheckBox
true · 刪除時備份已學習記錄 · IMDetailView (per-IM, not for related)
(new)
true · 刪除時備份已學習記錄 · ImDetailFragment (per-IM)
Per-IM. Stored in UserDefaults.standard / default SharedPreferences (not the App Group / shared keyboard prefs). Controls whether learned records are backed up before clearTable.
restore_on_import_{tableNick}
Toggle / CheckBox
true · 還原已學習記錄 · IMInstallView (per-IM)
(new)
true · 還原已學習記錄 · ImInstallFragment (per-IM)
Per-IM. Same storage tier as backup_on_delete_*. Controls whether backed-up records are automatically restored after re-import/re-download.
8.4.1 Reverse Lookup (字根反查設定) — Sub-screen
In iOS this is a drill-down picker in the Preferences tab. In Android pre-back-port it was a flat list of 13 ListPreferences inside lime_im. In Android current the 13 entries are wrapped in PreferenceScreen key="reverse_lookup_screen" (title="字根反查設定", summary="輸入字根無候選字時,以其他輸入法字根標注說明。"); both wrapper strings are NEW in the back-port.
Every entry below: type=ListPreference, android:defaultValue="none", dialogTitle=@string/im_reverse_lookup_list (輸入法字根反查). The XML keeps entries=@array/im_reverse_lookup / entryValues=@array/im_reverse_lookup_codes as a safe fallback, but runtime Android and iOS replace the picker choices with 無 plus the currently enabled IM display names. On iOS the visible rows are also limited to the enabled IMs from the IM list tab path. Stored values remain none or the matching IM table code (cj, phonetic, dayi, etc.), so the preference keys and reverse-lookup lookup tables do not change.
Pref Key
iOS picker label
Android title (both versions)
custom_im_reverselookup
自建
自建字根反查
cj_im_reverselookup
倉頡
倉頡字根反查
scj_im_reverselookup
快倉
快倉字根反查
cj5_im_reverselookup
倉頡五代
倉頡五代字根反查
ecj_im_reverselookup
速成
速成字根反查
dayi_im_reverselookup
大易
大易字根反查
bpmf_im_reverselookup
注音
注音字根反查
ez_im_reverselookup
輕鬆
輕鬆字根反查
array_im_reverselookup
行列
行列字根反查
array10_im_reverselookup
行列 10
行列10字根反查
wb_im_reverselookup
筆順五碼
筆順五碼字根反查
hs_im_reverselookup
華象直覺
華象直覺字根反查
pinyin_im_reverselookup
拼音
拼音字根反查
Android-only prefs (no iOS counterpart) — current category pref_section_physical_keyboard (外接鍵盤)
Prefs REMOVED from preference.xml in the back-port
Pref Key
Old category
Old default
Where it surfaces now
auto_commit
lime_im
"0"
ImDetailFragment when tableCode == "array10" (ANDROID_BACKPORT_GAP.md §2.2/P1.4)
phonetic_keyboard_type
lime_im
"standard"
ImDetailFragment when tableCode == "phonetic" (ANDROID_BACKPORT_GAP.md §2.2/P1.5)
accept_number_index
lime_mapping
(none)
ImDetailFragment when tableCode == "custom" (ANDROID_BACKPORT_GAP.md §2.2/P1.3)
accept_symbol_index
lime_mapping
(none)
ImDetailFragment when tableCode == "custom"
Strings newly added in the back-port
7 pref_section_* category-title strings (pref_section_appearance, pref_section_feedback, pref_section_im_behaviour, pref_section_han_convert, pref_section_related_learning, pref_section_english_dictionary, pref_section_physical_keyboard). pref_section_font_display and pref_section_advanced were initially added in the back-port but later removed when §8.3 and §8.8 were consolidated away.
Default-value changes (Android pre→current) — alignment with iOS
Pref
iOS default
Pre-back-port default
Current default
Status
keyboard_theme
6
"0"
"6"
Defaults now use value 6 (系統設定 / system follow) on both iOS and Android current. Android current includes value 6 and resolves it to light/dark at runtime.
keyboard_size
"1"
"1"
"1"
All defaults are now "1" (一般). Re-aligned across both platforms 2026-05-14.
font_size
"1"
"1"
"1"
All defaults are now "1" (一般). Re-aligned across both platforms 2026-05-14.
smart_chinese_input
true
false
true
Aligned to iOS. preference.xml defaultValue flipped false→true; Java accessor LIMEPreferenceManager.java:434 already returned true for unset key.
auto_chinese_symbol
false
false
false
iOS reconciled to false (matches Android — no divergence).
backup_on_delete_{tableNick}
true
(runtime default false)
true
At parity. ImDetailFragment.java:169 reads with default true; the bug referenced at the stale line 121 has been fixed.
Category re-organisation (Android pre→current)
Pre-back-port had 3 flat categories (lime_keyboard / lime_im / lime_mapping). Current has 7 categories + 1 nested sub-screen, aligned to iOS §8.1–§8.7 (§8.3 / §8.8 / §8.9 consolidated). Mapping of where each pref moved:
pref_section_font_display (§8.3) and pref_section_advanced (§8.8) both deleted: contents moved into §8.1 / §8.4 / §8.6, and the reverse_lookup_screen sub-screen now appears as the final row inside §8.4.
Android pre-back-port: git show 6791ab7b:LimeStudio/app/src/main/res/xml/preference.xml (xml-v17 byte-identical). String resolution via git show 6791ab7b:LimeStudio/app/src/main/res/values/strings.xml.
Android current: LimeStudio/app/src/main/res/xml/preference.xml; strings in app/src/main/res/values/strings_settings.xml and strings.xml.