Feature: 智慧中英無縫自動切換(仿華碩智慧輸入法,連續誤鍵達門檻時自動轉 ABC 模式並送出英數字) - #608
Conversation
…l on consecutive errors.
…nsecutive typing errors auto-switch.
… to ABC on consecutive errors.
…eys for consecutive error auto-switch.
…bols in Chinese mode.
…errors auto-switch.
…ctivation after ABC auto-switch.
…utiveErrors to true.
|
黃老師您好。感謝您的 PR 以及對敝專案的支持。 但這個 PR 無法複用,因為有下述疑慮。比起現成的 PR,一份更詳實的 LLM 專用功能需求書可能更符合實際利益、也減少雙方的 token 消耗,也不會在「產品主管」行為層面產生與產品特性設計有關的衝突。 我逐個講清楚:
我接下來試試用 Deepseek 反推您的 PR 看看能不能推出您原本實際上想要的需求。 |
|
沒有關係,這份 PR 也是我個人的實驗而已,所以我並沒有把它變成是一份正式的 PR,目前還是草稿的階段。你就參考我的實作即可,不一定要合併。 |
|
@doggy8088 功能需求應該會盡量與您的需求對齊。但「代碼參考與否」,不是我不信任您其人,而是我不信任您這次用的這個 LLM。在這個手術中,一個及格的 LLM 不應該在制定手術計畫的時候活生生地無視掉 |
|
這 PR 我先關了。下週等我休息過來再慢慢處理。 |
|
(備忘, 由 Deepseek-v4-flash API 藉由 Kimi Code CLI Harness 開具。) FR608(FeatureRequest)手術前調查報告:連續鍵入錯誤自動切換英數模式(Auto-Switch to Alphanumerical on Consecutive Typing Errors)
一、背景:本功能想解決的產品問題使用者處於中文打字模式(注音排列,繁體或簡體皆然)時,若實際上在鍵入英文/英數文字(例如
產品期望:輸入法能偵測「使用者明顯在打英文/英數」的連續輸入,累積達門檻後自動把這段英數字串一次完整遞交、並將輸入切換到系統英數輸入源,無需使用者手動切換。產品體驗基準為**仿華碩智慧輸入法(ASUS Smart IME)**的注音/英文混合智慧辨識——「連續誤鍵達門檻時自動轉 ABC 模式並送出英數字」。(此為 PullReq608 標題與內文所述之原始動機。) 功能家族定位:本功能屬 MixedAlnum(中英混打)功能家族——與「手動分流」(注音槽與 ASCII buffer 並存、按 Space 遞交)同為「在中文模式下輸入英數」的手段:前者手動、本功能自動切源。兩者共用同一處理路徑(注音 bopomofo keyblock)與設定區位,開關應與 MixedAlnum 開關同列於「行為設定」頁、同一 Section(見 §三)。 二、產品需求(功能本體)2.1 核心功能在注音(bopomofo)鍵盤排列的打字路徑(涵蓋繁體與簡體中文模式,見 §2.2)且英數模式(isASCIIMode)未啟用時,若同一輸入 session 內連續出現「無法被解析為適用讀音(plausible reading)的按鍵」,則:
承接優先序(與手動分流的關係):當 2.2 適用範圍(實作派遣——已核實的執行事實)先釐清兩個正交軸:vChewing 的「輸入法模式(繁體/簡體)」與「鍵盤排列(注音/拼音)」彼此獨立。簡體中文模式也能使用注音排列——支持原生簡體中文注音打字是唯音輸入法的使命之一。因此「簡中」≠「拼音」。
結論:
2.3 「連續鍵入錯誤」的判定判定單一按鍵是否為「錯誤鍵」(代表使用者偏離中文、意圖輸入英數)時,唯一權威來源是當前載入的 Lexicon(LMAssembly)所給出的「適用讀音集合」(見 §4.1,即「Tekkon 不能替 Lexicon 擦屁股」的核心原則),而非任何靜態、寫死於 Tekkon 的音節集合。 判定對象(本版釐清):此處判定的對象是自最近一次重置以來、連續鍵入的「原始鍵串」(按鍵入順序映射成的注音鍵序),不是注拼槽(composer)的即時狀態。原因是 Tekkon 注拼槽對同類注音符號採覆寫語義(後鍵覆寫前鍵,見 判定的二元輸出:
計數語義:未出現錯誤鍵的合法注音鍵段永不計數;一旦鍵串出現首個錯誤鍵,計數對象即為該段未遞交鍵串的整體長度(自重置後首鍵起算、含錯誤發生前的按鍵),達閾值即以整段鍵串作為英數字串遞交(DoD1 之 關鍵取捨(產品必須):
2.4 遞交後的行為(session 層)
三、功能開關與選項(Shared 層)事主裁示:「Shared 層面的開關新增有些道理,暫不予否定;但內容還需研判。」故以以下為需求建議;開關預設值經事主裁示為關閉(
四、設計約束(事主裁示的原則,先決於需求)以下為事主對 PullReq608 的否決理由所提煉出的硬性原則。實作必須遵循;任何偏離都應視為偏離產品需求。 4.1 「適用讀音」由 Lexicon(LMAssembly)給出,Tekkon 不得代勞
4.2 邏輯集中於 Typewriter(MixedAlnum)層,InputHandler Protocol 保持乾淨
4.3 自動切源落地不得假設美規 ABC 鍵盤佈局
4.4 必須涵蓋簡體中文(含原生的簡體中文注音)
4.5 必須涵蓋「只用系統 CpLk 切換中英文輸入源」的使用者(不得以
|

Feature: 智慧中英無縫自動切換(仿華碩智慧輸入法,連續誤鍵達門檻時自動轉 ABC 模式並送出英數字)
📌 背景與動機 (Motivation & Background)
在日常使用繁體中文注音輸入法時,經常會遇到忘記切換輸入法,便直接敲入英文指令、路徑或程式碼的情境(例如在終端機輸入
git log、cd ../、sudo apt、mkdir等)。以往的處理流程中,這些按鍵會被組字引擎處理為破碎且不合邏輯的注音符號或漢字(例如
cd ../會變成ㄏㄉ加上無法完成的符號,git log變成錯誤字詞),使用者必須先連按 Backspace 全部清除,手動切換至英文輸入法後重新輸入。參考「華碩智慧輸入法」(ASUS Smart IME)的注音/英文混合智慧辨識體驗,本 PR 為唯音輸入法引進了「智慧中英無縫自動切換」機制:
🚀 核心功能與架構設計 (Key Features & Architecture)
1. 國語合法音節與前綴檢驗 (
Tekkon.allValidMandarinSyllables)git時,g(ㄕ) +i(ㄛ) 在國語中不存在ㄕㄛ這個合法音節,能夠立即識別結構破壞並判定為英文輸入,避免誤判。2. 未完成字鍵保留機制 (
inFlightComposerKeys)git log中的g單按為合法的聲母ㄕ)。git log而非遺失開頭字元。3. 空格、標點符號與指令路徑連續性支援
)、點號(.)、斜線(/)、減號(-)等符號均視為英文指令的一環,持續累積直到門檻觸發,完整支援cd ../、ls -la等終端機指令。[、]、\、-、=等標點按鍵時,不受干擾,依然正常輸出「、」、、、—、=等中文全形標點。4. 系統 ABC 優先切換與唯音英數模式雙層保障
TISSelectInputSource優先切換至 macOS 系統原生的 ABC 輸入法。isASCIIMode = true),確保在任何環境下皆能正常轉為英數輸入。5. 偏好設定與門檻自訂 (Opt-in & Configurable Threshold)
defaultValue = false),100% 保持向後相容性,完全不影響現有使用者的輸入習慣。SettingsCocoa) 與 macOS 14+ SwiftUI (SettingsUI)。6. 嚴格模式隔離
.imeModeCHT)生效;簡體中文模式、拼音輸入模式或中英混合模式下皆不觸發,避免邏輯衝突。🛠 變更清單 (Detailed Changes)
vChewing_Tekkon:Tekkon_Constants.swift: 增加allValidMandarinSyllables國語合法音節與前綴清單。vChewing_Typewriter:InputHandler_CoreProtocol.swift: 實作連續錯誤計數、合法標點優先放行、音節合法性檢查與自動切換送字邏輯。InputHandler.swift/MockedInputHandlerAndStates.swift: 加入inFlightComposerKeys狀態管理。SessionHost.swift/InputSession_DarwinSurface.swift: 提供跨模組的switchToSystemABCInputSource委託橋接。vChewing_IMKUtils:IMKUtils_TIS.swift: 新增selectSystemABCInputSource()。vChewing_Shared:UserDef.swift: 新增kAutoSwitchToAlphanumericalOnConsecutiveErrors(Bool, 預設 false) 與kConsecutiveTypingErrorsThreshold(Int 3...8, 預設 5)。PrefMgrProtocol.swift/PrefMgr_Core.swift: 增加對應屬性與@AppProperty宣告。vChewing_SettingsUI:VwrSettingsPaneGeneral.swift/VwrSettingsPaneCocoaGeneral.swift: 加入開關及門檻設定選項。vChewingIME_macOS:Localizable.strings(zh-Hant, zh-Hans, en, ja): 完整四國語言在地化字串。TypewriterTests:InputHandlerTests_AutoSwitchOnErrors.swift: 17 個單元測試,涵蓋git log、cd ../、sudo apt、mkdir、標點符號[]、自訂門檻 (3 vs 5)、退格清除、簡體/拼音模式忽略等情境。🧪 測試驗證 (Test Verification)
TypewriterPackageTests全數 179 個測試案例通過(swift test)。make release),程式簽署與 App Bundle 打包皆正常無誤。cd ../於連續第 5 鍵自動切換為 ABC 並送出cd ../。git log於連續第 5 鍵(l)自動切換為 ABC 並送出git l,後續按鍵直接以 ABC 模式輸入og。su3正常輸出中文「你」。[與]正常輸出全形標點符號「」不受干擾。