-
Notifications
You must be signed in to change notification settings - Fork 10
更新履歷
- 修正:[所有發行版] 修復了威注音偏好設定的「開發道場」當中某些與內文組字區下劃線有關的選項「對選字模式不起作用」的故障。雖然此處偏好設定畫面僅提到了標記模式,但威注音從幾個月前引入「選字模式下,組字區內可實時預覽選字結果」的特性時起就對選字模式也啟用了粗細分段下劃線的設計,而某些 EBA 客體應用(詳見下文)對此有相容性故障。
- 行為:[所有發行版] 從該版輸入法更新開始,威注音輸入法會主動檢查客體應用是否是「以 Electron 這款 Web 框架構築的應用(簡稱 EBA 客體應用)」。如果是的話,則會對當前客體應用強制啟用浮動選字窗、以規避可能在 EBA 應用內出現的輸入法內文組字區相容性故障。藉由對這幾年的故障提報的綜合分析來看,每一款 EBA 應用都可能或多或少會有與威注音的相容性問題(除非啟用浮動組字窗),故可知今後的 EBA 應用對 IMKTextInput 與內文組字區有關的 API 的行為完全不可預測。而 EBA 應用的開發者們往往因為自身的語言障礙等原因無法重現這個問題、更無法積極檢查並解決這類問題。這些原因使得威注音開發者再也無法事先信任任何 EBA 應用是否有認真實作 IMKTextInput 協定、再無任何心力給每個有相容性故障的 EBA 應用逐一擦屁股,只得出此下策。使用者仍可以在威注音偏好設定的「開發道場」內關掉這個預設行為。
- 行為:[所有發行版] 從該版輸入法更新開始,如果當前作業系統版本是 macOS 10.15 或更新版的話,則所有的異步操作均會盡可能改用 Swift Concurrency 完成。在更舊版的系統內運作時,威注音仍會繼續使用 Grand Central Dispatch。
- 行為:[所有發行版] 針對田所選字窗的的預設文字顏色的實現方式做了一些調整、使其參數值不再依賴作業系統自身的 API。
- 研發:[所有發行版] 將辭典建置腳本的行為做了更改:先就地製作 SQL 純文字檔案,再將其直接轉換成 SQLite 檔案。
- 研發:[所有發行版] 針對 Xcode 16 與 Swift 6 做了建置策略相容處理。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道/鳴潮語料更新;全字庫資料更新為 v2024-06-26 版本。
- 修正:[所有發行版] 為了因應部分使用者的自訂辭典資料量過於龐大之現狀,威注音輸入法將記憶體使用上限閾值由 384MB 上調至 1024MB。當威注音輸入法的實際記憶體使用量超出該閾值時,威注音輸入法會主動自盡、自動重新啟動。
- 修正:[所有發行版] 解決了在點滅 CapsLock 鍵時「會有浮動組字窗在螢幕上殘留顯示」的故障。該故障當且僅當關掉了系統內建的 CapsLock 英數切換功能時才會觸發。
- 體驗:[所有發行版] 對浮動組字窗與田所選字窗的候選字詞高亮底色做了少許調適,也針對浮動組字窗啟用了圓角窗體設計。
- 體驗:[所有發行版] 田所選字窗:允許使用者將「橫向多列選字窗最低單元寬度」設定為兩個 Emoji 或兩個漢字。
- 行為:[所有發行版] 微調了針對使用者語彙檔案內的單漢字字音配對的預設權重指派策略與控頻策略。
- 研發:[所有發行版] 鐵恨注拼引擎升級至 v1.6.0,加快了建置速度。
- 研發:[所有發行版] 允許使用一個新的終端機命令、將當前輸入法的所有使用者自訂語彙資料寫入到一個單獨的 JSON 檔案內。
- 該功能便於其他輸入法開發者們匯入威注音輸入法的使用者自訂語彙資料。
- 推薦以 Bash 或 Zsh 來執行該命令。
- 不包含關聯詞語資料:
~/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing --dump-user-dict > ~/Downloads/Dumped.json
- 包含關聯詞語資料:
~/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing --dump-user-dict-all > ~/Downloads/Dumped.json
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:[所有發行版] 緊急修復了一處與「SecureEventInput 濫用行為偵測模組」有關的記憶體洩漏故障。
- 故障原因:與 IOKit 有關的 Unmanaged CoreFoundation 物件在「電腦待機休眠時拿不到結果的情況下」沒能被及時主動釋放掉,導致累積的記憶體洩漏。
- 行為:[所有發行版] 「SecureEventInput 濫用行為偵測模組」不會再在下述應用場景執行主動偵測:桌面鎖定、帳號未登入、帳號切換畫面、螢保畫面。
- 研發:[所有發行版] 這次的威注音輸入法官方安裝包均改用 Xcode 15.3(Swift 5.10)建置。須知:目前威注音輸入法的專案建置要求仍是至少 Xcode 14.2.0,但未來恐有變數。
- 研發:[所有發行版] 統整了輸入法的各個內部模組之間的相依關係。
- 研發:[主流發行版] 新增了 vChewingDebuggable 臨時建置目標,以便第三者參與對威注音輸入法的自願排障測試。該建置目標會將威注音輸入法見製成一個普通的 SwiftUI macOS App(而非輸入法),可以放心用來下斷點、而不用擔心整個 macOS 桌面因此失去響應。該建置目標生成的 App 會單獨使用一套 UserDefaults 容器,且與該建置目標有關的任何偏好設定修改都不會影響到威注音輸入法自身的偏好設定。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:[所有發行版] 修復了客體管理器視窗內的清單窗格「不顯示滾動條」的故障。
- 修正:[所有發行版] 修復了「SwiftUI 版偏好設定視窗內建的使用者語彙編輯器」可能「無法成功監視該檔案的來自其它程式的修改」的一處 KVO 故障。
- 體驗:[所有發行版] 新增了一個選項,允許使用者自主設定 Command+Option+Ctrl+Enter 要遞交的內容。該內容可以是盲文點字或各種帶注音標記的字句。
- 體驗:[所有發行版] 新增盲文點字輸出支援,分別對應「1947 國語點字」與「2018 國通盲文」這兩個現行標準。
- 威注音輸入法對盲文點字的支援僅限於「將給定的讀音資料以點字陣列的形式遞交」這一個特性。
- 這是最實際的做法,因為「拿破音字匹配讀音」這種功能需求在原理上是不可能準確實作的。
- 威注音輸入法對盲文點字的支援僅限於「將給定的讀音資料以點字陣列的形式遞交」這一個特性。
- 體驗:[所有發行版] 新增「服務選單」功能。該功能可在選字窗內以當前候選字(及其可利用的可能存在的讀音資料)作為參數依據、來顯示可用的服務:
- 有些服務是寫死在輸入法內部的,都有著各自的 ObjC Selector 名稱作為呼叫依據。這類服務的查詢結果會被直接寫入剪貼簿。
- 有些服務是 URL,可以叫出對應的 App 來查詢相關參數。如果是以 https 或 http 開頭的話,會用瀏覽器叫出網頁來查詢。
- 當個別情況下的選字窗內沒有讀音資料可用的話(比如波浪符號選字窗),則某些依賴讀音資料的服務不會出現在服務選單內。
- 該選單可以用波浪符號鍵在選字窗內呼叫出來,也可以在輸入法偏好設定內自己決定是否可以在選字窗內使用「Shift+?」呼叫。
- 與同期小麥注音正在開發的同名功能相比,威注音輸入法的該功能的實作方式一如既往地完全不同,且允許使用者自訂該選單的內容與順序。
- 如果你在輸入法主選單內找不到「服務選單編輯器」這個選單項的話,可以嘗試在輸入法主選單顯示時摁下 Option 鍵。
- 威注音的服務選單不具備唸讀功能。威注音輸入法的唸讀功能僅限組音區,相關選項請洽輸入法偏好設定的「一般設定」頁面。
- 考慮到時代因素,威注音的服務選單對漢字的編碼查詢僅支援 Unicode CodePoint 查詢。目前沒有提供除此之外的編碼查詢的計畫。
- 如果「服務選單編輯器」內的服務全都被刪掉的話,則服務選單功能會進入停用狀態。
- 行為:[所有發行版] 針對「單個漢字的字音配對」專門制定了新的控頻方法:不再一次性無腦槓到最高權重/最低懲戒權重,而是每次操作都會挪一次該候選字在選字窗當中的排序位置。
- 該選項目前僅對輸入法內建的注音輸入模式有效,且對逐字選字模式無可用影響:組字選字模式會強行套用倚天中文 DOS 系統內建的注音輸入法的候選字排序。
- 行為:[所有發行版] 因應服務選單功能的引入,威注音從這一版開始有了下述行為變化:
- 無法再將波浪符號鍵對應的符號設為選字鍵。
- 根據輸入法偏好設定內的與服務選單有關的某些選項的開關狀態,問號「?」也會有無法被設為選字鍵的情況。
- 想要從波浪符號選單直接藉由「Option+波浪符號鍵」跳轉到「漢音鍵盤符號模式的話」,需要多按一次這個熱鍵組合,因為第一次按下時會先切換到服務選單。
- ……除非你在「服務選單編輯器」內刪掉了全部的服務。
- 研發:[所有發行版] 將 PrefMgr 由 MainAssembly 剝離、塞到了 Shared 這個更基層的模組內。這給今後的功能開發帶來了一些便利。
- 辭典:[所有發行版] 針對「一繁對多簡」的情況,修復了在組字選字模式下使用簡體中文原廠詞庫時「倚天中文 DOS 系統候選字排序資料」的一些簡體字映射失誤。
- 辭典:[所有發行版] 例行語彙資料更新。
一句話總結:本次更新沒有功能上的變化,對使用者而言變化了的內容只有原廠辭典。
- 研發:[所有發行版] 針對整個語言模組套件(LMAssembly)做了架構調整:
- 將半衰記憶模組修改成「語言模組副本化模組(LMInstantiator,下稱「LMI」)」的內部從屬模組,對外互動過程一律通過 LMI 模組來完成。
- 將倚天中文 DOS 候選字詞排列資料整合到 Swift 原始程式碼內,不再讀取單獨的 JSON 檔案。
- 將 LMAssembly 的所有對外 API 做了精實案,僅對外開放必要之 API。
- 研發:[所有發行版] 全專案淘汰 NSJSONSerialization API 的使用、以 Swift Foundation 內建的 JSON Codec 取而代之。
- 辭典:[所有發行版] 例行語彙資料更新(也是此次版本更新的重點):
- 刪除了一些源自於 LibTaBE 的錯誤詞音配對。
- 篩檢了原廠繁體中文詞庫出現的個別簡體中文詞語、全部訂正為繁體中文。
- 對星穹鐵道的語料做了一些跟得上遊戲版本變化的內容增補。
- [SP1] 修正:[所有發行版] 解決了田所選字窗的字根反查區域在某些情況下「更新不及時、會殘留前一筆查詢結果」的故障。
- [SP1] 修正:[Aqua 紀念版] 解決了「關於」視窗內的右下角的按鈕堆疊在 macOS 10.9 系統下的顯示異常。
- [SP1] 修正:[主流發行版] 解決了 App 型安裝包不顯示產品著作權資訊的故障。
- 修正:[所有發行版] 解決了 macOS 10.9 - 10.12 的輸入法選單在「摁 Alt 鍵執行不同的功能、顯示不同的選單內容」會導致 NSMenuItem 與它們對應的 selectors 對位發生錯位的問題。詳情見下文。
- 修正:[所有發行版] 解決了 AppKit 版偏好設定視窗當中的唸讀設定無法立刻生效的故障。
- 修正:[所有發行版] 修復了 Dvorak-QwertyCMD 鍵盤佈局的映射錯誤。
- 修正:[所有發行版] 解決了 AppKit 版偏好設定在 macOS 10.9 系統下的日語/英語介面的排版擁擠問題。
- 修正:[所有發行版] 解決了在「匯入奇摩輸入法自訂詞資料庫」之後、偏好設定視窗內的使用者語彙編輯器「不自動重新載入內容」的故障。
- 體驗:[所有發行版] 新增了一個可選功能:使用輸入法內建的 CNS11643 全字庫資料庫來對語言模組的輸出資料做自動過濾、僅允許那些有採用 CNS11643 全字庫規定讀音的結果輸出至輸入法的組字引擎與選字窗內。
- 體驗:[Aqua 紀念版] 針對 macOS 10.9 - 10.12 重新設計了「匯入奇摩輸入法自訂詞資料庫 TXT 檔案」的圖形介面交互方式。現在起,除了下文要提到的 NSConnection 通訊手段直接匯入奇摩輸入法自訂詞資料庫以外,您還可以將從奇摩輸入法匯出的該資料庫的 TXT 檔案直接從 Finder 拽入至「輸入法偏好設定->偏好設定->匯入奇摩輸入法自訂詞資料庫->請將檔案拽到這邊」這個按鈕上、來完成對 TXT 資料庫檔案的匯入操作。
- 體驗:[所有發行版] 允許直接藉由 NSConnection 通訊的手段向奇摩輸入法發出資料請求、藉此匯入奇摩輸入法的使用者自訂詞資料庫的內容。這個功能只會在使用者主動使用時才會觸發。
- 體驗:[所有發行版] 新增了一個功能選項,讓田所選字窗在顯示符號時將符號描述(統一碼碼位點)顯示於字根反查清單的位置。該功能預設啟用。
- 行為:[所有發行版] 針對 macOS 10.9 - 10.12 另外研究了一套 NSMenu 輸入法選單應對方案,解決了上文提到的 selectors 錯位的故障。新方案帶來的唯一副作用:在 macOS 13 及之前版本的系統下會無視 NSMenuItem.isAlternative 特性、強制顯示本該摁了 Alt 才會顯示的選單項。macOS 14 不受該副作用所影響。
- 研發:[所有發行版] 嘗試解決了 AppKit 版偏好設定視窗的一些已知的 Constraints 衝突。
- 研發:[所有發行版] 重新統一整理了整個 App 對於情態視窗的掛接目標。
- 辭典:[所有發行版] 例行語彙資料更新。
- [SP1] 修正:[所有發行版] 緊急修復了 AppKit 版偏好設定視窗「無法更改當前編輯的使用者語彙資料種類」的故障。
- 修正:[Aqua 紀念版] 在 macOS 10.9 - 10.12 系統下移除了「匯入奇摩輸入法自訂詞資料庫」按鈕,因為該按鈕對 NSOpenPanel 的呼叫會觸發這幾版 macOS 系統的內建缺陷、使得整個桌面停止響應。下一版威注音輸入法會對該功能在這幾版系統下的使用交互方式重新設計。
- 作為備選方案,威注音 Aqua 紀念版在 3.8.0 版引入了一個新功能:允許使用終端指令匯入奇摩輸入法的自訂詞資料庫。
- 該終端指令的使用方法為「
~/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing --import-kimo 奇摩輸入法TXT檔案路徑
」。 - 威注音主流發行版也已經在 3.8.0 SP1 版引入對該終端指令的支援。
- 該終端指令的使用方法為「
- 作為備選方案,威注音 Aqua 紀念版在 3.8.0 版引入了一個新功能:允許使用終端指令匯入奇摩輸入法的自訂詞資料庫。
- 修正:[Aqua 紀念版] 解決了以 Xcode 15 建置出來的 App 安裝程式在 macOS 10.9 - 10.14 系統下「無法正常啟動」「無法正常處理 TISInputSource CoreFoundation 物件的 ARC 行為」這兩處崩潰故障。至此,Xcode 14.2 不再成為剛需。
- 修正:[Aqua 紀念版] 修正了輸入法版本更新檢查模組在不滿主流發行版所要求的系統版本下提示「切換到主流發行版」的錯誤行為。
- 體驗:[所有發行版] 對 AppKit 版偏好設定視窗做了精實案,使之擁有與 SwiftUI 版偏好設定視窗同等品質的完成度與使用體驗。這也減去了對 AppKit 版偏好設定視窗的新選項實作(包括相關內容的本地化工作)時的額外維護成本。所有的介面選項元素全部都是基於 UserDefaults 的既定資料動態生成的。// 前一版威注音輸入法更新已經對 SwiftUI 版的偏好設定視窗做過同樣的精實案。
- 體驗:[所有發行版] 新增了一個與選字游標有關的選項,允許輸入法在叫出選字窗的時候糾正不合理的端點選字游標位置。該選項預設啟用。
- 體驗:[所有發行版] 給浮動組字窗的游標新增了陰影,提升其辨識度。
- 體驗:[所有發行版] 新增了一個與選字游標有關的選項,允許輸入法在選字窗顯示的時候使用 J / K 鍵移動組字區內的游標。這個選項專門用來照顧 PIME 版新酷音輸入法使用者的習慣。該選項不預設啟用,且有下述條件限制:
- 必須是普通的、有用到組字區打字時的選字狀態。
- 比如說逐字選字模式、漢音鍵盤符號模式、波浪符號選單等情況就無法使用該特性。
- 必須是直接敲 J / K 鍵、且不得有任何修飾鍵被按下。
- 這一點與 PIME 新酷音略有不同:PIME 新酷音對此未做出這種條件檢查限制。
- 一旦啟用該特性的話,威注音輸入法會禁止 J / K 鍵用作選字鍵。
- 如果磁帶模組當前載入的磁帶所規定的選字鍵有用到這兩個鍵的話,則當前磁帶的選字鍵定義資料會被威注音輸入法忽略掉。
- 必須是普通的、有用到組字區打字時的選字狀態。
- 行為:[所有發行版] 對之前允許輸入法在選字窗顯示的時候「使用 Alt(+Shift)+前後方向鍵來挪動組字區內的游標」的特性新增了下述條件限制:
- 必須是普通的、有用到組字區打字時的選字狀態。
- 比如說逐字選字模式、漢音鍵盤符號模式、波浪符號選單等情況就無法使用該特性。
- 必須是普通的、有用到組字區打字時的選字狀態。
- 行為:[所有發行版] 糾正了 NSEvent 在身為 flagsChanged 事件時轉譯為 KBEvent 的過程當中「違規存取自身不存在的屬性(
characters
charactersIgnoringModifiers
isARepeat
)」這一錯誤行為。這個錯誤行為會導致 macOS 系統 consle 狂噴「NSInternalInconsistencyException」錯誤。 - 研發:[所有發行版] 全專案統整了對檔案與目錄的開啟方法,採用專用的 enum 統一管理這一類行為。
- 研發:[所有發行版] 不只 AppKit 版偏好設定視窗被做了精實案,軟體的輸入法選單、關於視窗、以及客體管理器也都做了同樣的精實案,使得輸入法本體徹底擺脫了對專有 XIB 的依賴。
- 研發:[所有發行版] 針對按鍵訊號調度模組當中的「普通打字模式(注音/磁帶)」「內碼輸入模式」「漢音鍵盤符號模式」這三個子模式的輪替切換功能做了重構,設計了專有的 Enum 來管理對這三個子模式的輪替切換行為。這方便了未來對如何實作「允許使用者停用個別模式」等新特性的可行性探究。
- 辭典:[所有發行版] 例行語彙資料更新。
- 修正:[所有發行版] 解決了「SecureEventInput 濫用行為偵測模組」無法正確檢測螢幕保護程式狀態的故障。
- 修正:[所有發行版] 解決了「SecureEventInput 濫用行為偵測模組」不檢測電腦睡眠狀態狀態的設計缺陷。
- 體驗:[所有發行版] 允許在選字窗內移動組字區內的游標:
- 使用「Alt+文字輸入方向上的前後方向鍵」熱鍵的話,會以(在叫出選字窗之前的)組字區既定字詞節點為單位來移動游標游標。
- 使用「Shift+Alt+文字輸入方向上的前後方向鍵」熱鍵的話,則會依單個幅位長度(讀音)移動游標。此謂「逐幅移動」。
- 如果在逐幅移動游標時出現「游標位於字元中間」的情況的話,則會朝著當前的游標移動方向將游標移動到當前節點的邊界線上。
- 體驗:[所有發行版] 允許使用者自訂數字小鍵盤的輸入行為。此前僅支援「直接遞交半形數字符號」這一種行為;而現在則追加了五種新的行為選項。
- 體驗:[所有發行版] 從現在起,當您有將選字窗的高亮配色方案設定為跟隨系統/客體軟體的配色方案時,浮動組字窗的配色也會有對應的改變。
- 行為:[所有發行版] Shift 按鍵事件偵測模組的延遲從 0.3 秒改為 0.2 秒。
- 研發:[所有發行版] 全專案改用了全新的 KBEvent Struct 作為威注音輸入法專用的按鍵訊號通訊格式。
- 該更動乃是為了應對威注音輸入法今後可能的跨平台移植需求。
- 該更動也使得輸入法的按鍵處理速度有了明顯提升,畢竟是 Swift 原生的 Struct。
- 該格式擁有與 NSEvent 互相轉化對譯的能力。
- 研發:[所有發行版] 重構了語言模組管理器:重新設計了該管理器對語言模組的交互方式。
- 研發:[所有發行版] 針對按鍵調度做了輕度翻修,使其對 ModifierFlags 的處理更加精確。
- 研發:[主流發行版] 針對 SwiftUI 偏好設定介面的內容呈現機制做了大翻新。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新,以及全字庫資料更新至 2024年1月15日 的版本。
- 修正:[所有發行版] 解決了因為 SQLite 日誌導致的記憶體用量失控的故障。從這一版開始將不再啟用任何 SQLite 日誌。
- 因為威注音只有原廠辭典會用到 SQLite、且這類資料通常都是唯讀資料,所以從原理上就對日誌功能特性沒有需求。
- 修正:[所有發行版] 解決了原廠辭典資料建構腳本當中的 Segmentation Fault 故障。
- 修正:[所有發行版] 解決了內文組字區「在組音區有內容時,將游標始終顯示在文字輸入方向的最前方」的故障。
- 體驗:[所有發行版] 新增唸讀模式,可以在注音模式(而非磁帶模式)下唸出自己敲出的讀音。
- 該功能可用於一些特殊場合,比如啞巴或有口頭表達障礙的人士可以在做簡報的時候讓威注音替自己把話講出來……等。
- 該模式會佔用一點點記憶體(平均不到 10MB),且在關掉之後可能需要重新啟動輸入法、讓系統釋放對應的記憶體佔用。
- 該功能可在輸入法偏好設定內配置,有三檔選項可供選擇:
- 不唸讀:什麼都不唸出來,也就是關掉這個功能。該選項為預設值。
- 僅在用聲調鍵確認時:當且僅當組音區的讀音被成功插入組字引擎時,才會唸一遍。
- 實時唸讀組音區的任何變化:只要組音區的內容有變化,組音區的內容就會被整個唸出來。
- 這個特性比較適合動態注音佈局學習者,但多少有些聒噪了。
- 體驗:[所有發行版] 聯想詞模式升級為關聯詞語模式;現在起,在沒有開啟逐字選字模式時,也可以使用關聯詞語模式。
- 威注音的關聯詞語模式不會用到內文組字區。這樣一來,雖然在某些方面的體驗上不如小麥注音的新版聯想詞功能(小麥PR412),但也躲開了「拿破音字嘗試自動匹配讀音」這種永遠都無法正確實作的功能需求。
- 雙方對該模式的實作思路完全不同,感興趣者可以自行比對。
- 威注音的關聯詞語只會以當前內文組字區的(在文字輸入方向上的)最前方的「字音配對」與「字詞節點詞音配對」為最長檢索依據。
- 該功能也會嘗試獲取「不考慮讀音」時的檢索結果。
- 如果該節點的幅長(讀音長度)與字元數量不相等的話,則這種情況下不考慮以讀音作為檢索依據。
- 在沒有開啟逐字選字模式時,關聯詞語選字窗的觸發熱鍵為 Shift+Enter。
- 威注音的關聯詞語專用辭典可在輸入法偏好設定內自訂,且這次功能更新並未修改使用者關聯詞語辭典的檔案格式。
- 藉由 Windows 9x/NT3/NT4/2000/XP/2003 內建全拼輸入法 / ㄅ半輸入法的相關字詞編輯工具生成的使用者關聯詞語檔案可直接使用,需先以 UTF-8 編碼存檔。
- 威注音的關聯詞語模式不會用到內文組字區。這樣一來,雖然在某些方面的體驗上不如小麥注音的新版聯想詞功能(小麥PR412),但也躲開了「拿破音字嘗試自動匹配讀音」這種永遠都無法正確實作的功能需求。
- 行為:[所有發行版] 這一版開始,威注音輸入法的「SecureEventInput 濫用行為偵測模組」會轉而使用與當代 macOS 相容的「用來偵測當前螢幕是否被鎖定」的 API、以圖進一步減少對 com.apple.loginwindow 的「SecureEventInput 濫用行為」誤報。
- 該模組在偵測到這一類行為的時候,會主動知會使用者,藉此明確與此有關的「輸入法可用性故障」的責任歸屬。
- 該模組不會對有這類犯行的執行緒有任何砍殺操作,使用者可利用系統內建的 Activity Monitor 等手段自行實施相關操作。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:[所有發行版] 解決了上一個版本復發的「舊的輸入法會話控制副本會干涉新的輸入法會話副本的選字窗的顯示」的故障。
- 修正:[所有發行版] 解決了磁帶模組在換插磁帶的時候「沒能徹底先清空之前的磁帶在記憶體內的資料」的故障。
- 修正:[所有發行版] 解決了威注音輸入法在繁體中文模式下叫出 macOS 語音輸入時「只能使用簡體中文語音輸入」的故障。
- 研發:[所有發行版] 對磁帶模組的磁帶內容讀取解析流程做了重構,使之更容易維護。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:[所有發行版] 天權星組字引擎升級至 v2.7.3,重新將 KeyValuePaired 與 Unigram 變成 Struct,以修复在某些极端情况下「Swift 的 Set 當中被塞入了兩個『明明完全不同、卻被判定為相同』的 Class、從而崩掉整個軟體」的情況。
- 體驗:[所有發行版] 解決了在某些情況下會出現的「之前的打字輸入會話副本所用的選字窗殘留在螢幕上」的故障。
- 體驗:[所有發行版] 為了照顧 macOS 14 Sonoma 迄 14.2.1 版為止的上下文輸入法提示器當中的狗屄倒肏的輸入法圖示顯示效果,威注音臨時更換了輸入法選單圖示(因為是一條線上的螞蚱)。等到啥時候 Apple 給出官方的開發說明文件、來允許且指導第三方使用者怎樣實作該圖示的時候,威注音輸入法會再更換選單圖示。
- 行為:[所有發行版] 此次更新引入了全新的 InputToken 敲字代令處理系統。
- 目前可藉由下述詞語輸入來觸發動態生成的候選內容:
- 「時間」「星期」「今年年度、去年年度、明年年度、前年年度、後年年度」;
- 「當前時區、目前時區、所在時區」;
- 「今天日期、明天日期、昨天日期、前天日期、後天日期」;
- 以往可以直接輸入「日期」迅速輸入當前日期,但從該版本起必須輸入「今天日期」。
- 該敲字代令系統有著比較豐富自由的可訂製性,可以允許使用者自訂一些威注音輸入法不方便直接內建的功能、以滿足各自的私下需求。
- 打比方說沒準哪天日本天皇又駕崩了、導致日本曆法又進入了新的紀年,但作業系統對新的紀年的支援往往要晚幾週甚至幾個月、對作業系統版本也有要求。此時就可以用代令系統自己動手豐衣足食。
- 舉例說你想用愛迪生發明鎢絲燈泡的那一年(1879 年)來紀年的話,往使用者語彙檔案裡面插入「
MACRO@DATE_YEARDELTA:-1879 ㄞˋ-ㄉㄧˊ-ㄕㄥ-ㄐㄧˋ-ㄋㄧㄢˊ -114.514
」這一行就可以了。因為用到了「-114.514」這個懲戒權重,所以這個敲字代令不會干擾到組字引擎的正常組字。 - 更多敲字代令範例可參見這一版威注音的主流發行版的原始碼倉庫當中的「InputTokenTests.swift」檔案。
- 目前可藉由下述詞語輸入來觸發動態生成的候選內容:
- 行為:[所有發行版] 新增對 CIN2 v2.4 標準的支援:
%keys_to_directly_commit
用來讓輸入法故意放棄對被該行參數值包括的字元對應的按鍵訊息的「標點符號/字母」輸入處理。這可以用來略過輸入法本身對某些按鍵內建的原廠標點符號資料定義。 - 行為:[所有發行版] 不再在「系統桌面鎖定」或「螢幕保護程式正在運行」時偵測
com.apple.loginwindow
對 SecureEventInput 的濫用行為存否,因為這種情況下一定不是在濫用。如果仍有與該執行緒有關的 SecureEventInput 濫用警告出現、且確實有妨礙到您對威注音等第三方輸入法的正常使用的話,請洽 Apple Support,因為這種情況下很可能是 macOS 的軟體功能缺陷。 - 研發:[所有發行版] 取消了對 Xcode 15 專案建置過程當中的 Build-Script Sandboxing 的支援,因為該特性會妨礙原廠辭典腳本的正常工作(SQLite Segmentation Fault)。該修改不會影響最終建置出來的軟體的行為。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新。
- [SP1] 修正:[所有發行版] 修復了 SwiftUI 偏好設定視窗在某些情況下「不顯示全頁捲動條」的行為異常。
- [SP1] 修正:[所有發行版] 修復了令磁帶模式無法正常工作的一處故障。
- [SP1] 修正:[所有發行版] 修復了辭典編譯腳本在 Xcode 14.2 當中可能會出現的 SQLite Segmentation Fault 故障。
- 修正:[所有發行版] 重新统整了與 Sandbox URL Bookmark 有關的 API 的使用方法。這在理論上應該能夠解決在某些使用者的電腦上在舊版系統下「記不住使用者自訂語彙目錄位置」「記不住磁帶模組檔案位置」的故障。如果仍有遇到相關問題者,歡迎提報故障。
- 修正:[所有發行版] 天權星組字引擎升級到 v2.7.2,增補了一處防呆設計。
- 修正:[所有發行版] 修正了輸入法偏好設定內與「盡量使用外置原廠辭典檔案」有關的一處開關邏輯判斷錯誤。
- 修正:[所有發行版] 修正了步天歌繁簡轉換引擎的一處與 SQLite API 用法有關的記憶體洩漏故障。該引擎主要用於使用者就地加詞刪詞功能、以及磁帶模式的繁簡轉換。
- 體驗:[所有發行版] 允許使用終端機將當前輸入法偏好設定的絕大多數內容傾印成一份備份檔案。該備份檔案的實質是 Shell 腳本、需要在終端機內使用 pipeline 語句來指定寫到哪個新檔案當中(否則只會在終端機螢幕上顯示一遍腳本內容)。只需要將該腳本直接在終端機內運行、就可以將該檔案內的輸入法偏好設定恢復到電腦當中。需要注意的事項有:
- 命令用法參考範例:
~/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing --dump-prefs > ~/Downloads/vChewingPrefBackup.sh
- 任何涉及到檔案路徑的偏好設定內容均不在備份範圍內,因為會有 Sandbox 資料位置存取相容問題。因為 Sandbox 機制的存在,威注音輸入法在存取一個手動指定的目錄時必須由使用者藉由圖形介面親自點開這個資料夾/檔案才可以(將檔案拽入到路徑控制項內也可以,因為也是使用者親自在圖形介面操作)。
- 該功能的設計交互特性決定了該功能不適合用來製作圖形介面版本。如果您希望將這個備份恢復過程自動化的話,您或許可以借助其他的輔助工具(比如 crontab)搭配您自己寫的其它 Shell 腳本工具來一同使用。
- 如果您用的威注音輸入法是您自己組譯建置的版本的話,請簽名,否則該命令可能會用 NSLog 的形式抱怨說簽名資料不存在。這並不影響傾印過程。
- 命令用法參考範例:
- 行為:[所有發行版] 修正了在當前系統偏好設定已經手動統一鎖定過強調色的情況下「輸入法仍舊優先讀取客體軟體的強調色」的行為錯誤。現在起,除非當前系統偏好設定的強調色已經設定為出場預設值(該預設值在 macOS 11 開始是「多色」),否則輸入法不會讀取客體軟體自身的強調色。
- 研發:[所有發行版] 全專案重新檢討了 SQLite Statement Pointer 的使用方法,且改用了更安全的使用方法來使用相關的 SQLite API。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:[所有發行版] 修復了田所選字窗的多行/多列模式在「當前選字窗的候選字資料池的內容不足一頁」的情況下「無法一次性將當前頁面的內容全部顯示完畢」的後端資料池處理故障。
- 修正:[主流發行版] 修復了「關於」視窗的「確定」按鈕無法關閉該視窗的故障。
- 修正:[Aqua 紀念版] 為了因應偏好設定視窗在 macOS 10.9 Mavericks 下捲動視窗內容時「會崩掉 WindowServer」的故障,本次更新對 Cocoa 版偏好設定視窗的排版機制做了調整:對「行為設定」頁籤取消了「視窗內容可捲動」的設計,轉而採用威注音 1.2 版時使用的多頁籤模式、將該總頁內容拆成兩個子頁籤來顯示。這樣可以成功繞過該故障(可以視為 macOS 10.9 的系統固有缺陷)。
- 修正:[所有發行版] 修復了 App 版安裝程式在安裝成功之後的提示文字的本地化翻譯失誤。
- 修正:[主流發行版] 修復了 App 版安裝程式的一些 SwiftUI 美工缺陷。
- 體驗:[所有發行版] 因應 Apple 在 MacBook Pro 產品線對 8GB 運行記憶體的病態執著,威注音輸入法全專案針對原廠辭典改採 SQLite 資料庫、將記憶體佔用從原先的約 120MB 銳減至大約 30MB 以內。
- 這樣可以盡量避免一些因 Apple Silicon 機種休眠或「將硬碟當作記憶體空間使用」等特性而導致的輸入法隨機故障。這些故障都是在 Intel Mac 電腦上打死都無法重現的。
- 與記憶體佔用統計有關的特別說明:
-
- 如果有開過偏好設定等視窗的話,相關視窗物件的記憶體回收行為不可控,故此時的記憶體佔用量約為 70MB 以內(以 SwiftUI 新版偏好設定視窗為準)。
-
- 使用者辭典以及 CIN 磁帶資料的記憶體空間佔用得另外計算。
-
- 體驗:[所有發行版] 對田所選字窗在多欄縱向陳列模式下的「當前列」的背景色做了些許調整、使其與橫向多行陳列模式時的「當前行」的背景色一致。
- 體驗:[所有發行版] 預設情況下,選字窗的高亮候選字的背景色將會是客體應用自身的 accentColor、其次是系統的 accentColor。該特性不會在啟用康熙文字轉換模式或 JIS 日本簡化字轉換模式的時候生效(以便讓使用者明白該模式被啟用了)。使用者可藉由輸入法偏好設定關閉該特性。
- 體驗:[所有發行版] 在藉由輸入法偏好設定啟用偵錯模式時,輸入法選單頂端會顯示「在您叫出選單的那一刻」輸入法的記憶體佔用量。
- 行為:[所有發行版] 因為 SQLite 格式的原廠詞庫不再需要將原廠辭典內容實時放在記憶體內,故修改了威注音輸入法的記憶體最大利用上限的安全閾值:從 768MB 下調至 384MB,仍可應對極個別使用者對自訂辭典的空前容量需求。
- 和之前的版本一樣,威注音輸入法會在每次 activateServer() 的時候檢查自身的記憶體佔用情況,且在佔用量超過這個閾值時自盡、自動重新啟動輸入法、以釋放記憶體空間。
- 辭典:[所有發行版] 例行語彙資料更新+原神/星穹鐵道語料更新,另更新全字庫資料(2023 年 11 月 06 日的版本)。
- 修正:[SP2][所有發行版] 解決了 SP1 不慎引入的與 Caps Lock 狀態判定有關的 IOReg API 使用不規範之處,不會再造成 IOSystemService 的無盡佔用。
- 修正:[SP2][主流發行版] 解決了「偏好設定->語彙編輯」畫面當中的「…」按鈕「無法正常開啟 Finder」的故障。
- 體驗:[SP2][所有發行版] 在「偏好設定->辭典設定」頁面的右下角新增了「匯入奇摩輸入法自訂詞資料庫」的按鈕、可以直接讀入由雅虎奇摩輸入法匯出的 TXT 格式的自訂詞資料庫。該功能不會匯入當前輸入法內已有的詞語。
- 修正:[SP1][所有發行版] 解決了 CapsLock 開關提示在 macOS 14 系統下「始終顯示中文狀態ON」的故障。
- 修正:[SP1][所有發行版] 撤銷了一處對 CodeRunner 的相容性設計,以解決在 JetBrains IDE 下無法遞交文字的故障。
- 修正:[主流發行版] 解決了 PKG 版安裝包在某些電腦上會在開始安裝時報稱「安裝失敗」的故障。
- 體驗:[所有發行版] 在「偏好設定->行為設定」當中新增了一個選項:允許使用者在打字時讓輸入法忽略掉威注音內建的 Caps Lock 處理。該特性用來照顧那些早已習慣微軟新注音的行為策略的使用者們。如果您開啟了這個特性的話,則 CapsLock 鍵在被點滅的時候是無論如何都不會彈出威注音的飄窗通知的。
- 體驗:[所有發行版] 在「偏好設定->行為設定」當中新增了一個選項,同時允許兩件事情:一、CapsLock 滅燈時連帶關閉以「Shift 鍵 / JIS 英數鍵」控制的英數輸入模式(要求至少 macOS 12);二、在藉由「JIS 英數鍵」關閉其所控制的英數輸入模式時,CapsLock 自動滅燈。註:CapsLock 亮燈的時候,威注音輸入法無法判斷 Shift 鍵的單次敲擊行為。
- 體驗:[所有發行版] 田所選字窗現改用對眼睛略微溫和的視窗背景色彩。
- 體驗:[所有發行版] 波浪符號選單現新增「部首」分類,按筆畫數量做了細分。
- 體驗:[主流發行版] SwiftUI 版偏好設定畫面的語彙編輯器的捲動條的顯示行為做了一些小調整。
- 體驗:[Aqua 紀念版] 的偏好設定畫面的「行為設定」頁面現支援捲動特性、以應對其日益變長的內容顯示篇幅。這樣對採 1024x768 外接顯示器的電腦而言會更友善一些。
- 體驗:[所有發行版] 輸入法通知飄窗的位置做了一些小調整、使之不再遮擋 macOS 自身彈出的系統通知。這也可以讓使用者不再誤以為「有訊息來了」。
- 行為:[所有發行版] 有鑑於這十幾年來 macOS 平台經常出現「某些應用在後檯濫用 SecureEventInput API、導致系統內所有第三方輸入法全部罷工」的情況,威注音引入了一套新的後檯自動掃描機制(每六十秒一次掃描,會在電腦休眠時暫停掃描)、自動檢查是否有這樣的害蟲執行緒。當發現有這種執行緒的時候,威注音會自動彈出視窗告知使用者「就是這個執行緒害得所有第三方輸入法在輸入法選單內灰掉用不了」。因為威注音有做過沙箱處理(最好的謠言粉碎機),所以不能替您結束這種害蟲執行緒、只能由您自己藉由活動監視器(Activity Monitor)或終端機手動結束之。該掃描特性可在「偏好設定->開發道場」內停用。
- 行為:[所有發行版] 威注音現照顧逐字選字模式使用者幾十年來的肌肉記憶習慣、內建了倚天中文 DOS 環境下的ㄅ半注音的候選字順序資料。任何不受倚天中文 DOS 環境支援的候選字都會排在之後的頁數。該特性僅影響威注音的逐字選字模式。
- 行為:[所有發行版] 在除了 BBEdit / TextWrangler 以外的 App 當中遞交文本之前,威注音輸入法現在會先移除內文組字區的顯示內容。
- 研發:[主流發行版] 的系統最低需求提升至 macOS 12 Monterey。在比這個更舊的系統內安裝的主流發行版本會被更新提示引導至 [Aqua 紀念版] 的下載頁面(支援 macOS 10.9 Mavericks 至 macOS 12 Monterey)。// 註:之所以保留了主流發行版對 macOS 12 的支援,是因為不想妨礙到藉由 Homebrew 途徑安裝威注音的使用者們(Homebrew 仍在支援 macOS 12,直至 2024 年底為止)。
- 研發:[主流發行版] 的 App 版安裝程式改採 SwiftUI 徹底重寫。該重寫不影響 Aqua 紀念版的 App 版安裝程式。
- 研發:[主流發行版] 的「關於」視窗改採 SwiftUI 徹底重寫。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:解決了輸入法內部所有「全形文字沒有以佔據全形寬度的方式來顯示」的故障(之前漏掉了田所選字窗)。該故障是 macOS 14.0 所引入的,但不見得一定會得到解決(因為是 Apple 故意的設計、但實作很爛),所以 App 開發者們只能給每一處 NSAttributeString 都手動加註「.kern = 0」。
- 修正:解決了在某些情況下「直接敲入的英文字符會被隨後敲入的空格置換掉」的故障。解決方式就是徹底刪掉「TISDoubleSpaceSubstitution」這個 plist 屬性本身。
- 修正:解決了橫版浮動組字窗內的排版格式失誤的故障。該故障由前一個版本不慎引入。
- 修正:修復了一處與
TISCreateInputSourceList
有關的(理論上的)記憶體位置存取行為管理失誤。 - 體驗:在輸入法偏好設定內新增了一個功能選項(目前暫時放在「開發道場」頁面),名曰「強化型組字區安全防護」,允許對「所有的用來接收文字輸入的客體軟體」一律啟用浮動組字窗。這可以徹底杜絕任何客體 App 「擅自讀取內文組字區來用」的可能。欲知詳情者,請洽「純靠北工程師7ci」。
- 體驗:針對 macOS 12 Montery 為止的 macOS 系統取消了 SwiftUI 版偏好設定視窗的支援。因應此項變化,本次更新專門給 Cocoa 版偏好設定視窗新增了一些「只能在 macOS 10.15 開始的系統才可能會用到」的選項。
- 體驗:針對 macOS 13 開始的系統重新設計了 SwiftUI 版的偏好設定視窗。
- 體驗:移除了屎綠色的應用程式偏好設定畫面主題配色。該配色現完全聽從作業系統的安排。
- 行為:延伸了 Aqua 紀念版的系統支援範圍。該紀念版現在支援 macOS 10.9 Mavericks 至 macOS 12 Monterey、且只能用 Xcode 14 建置(推薦 Xcode 14.2)。如果用 Xcode 15.0 建置的話,哪怕用了舊版系統的 SDK,也會在 macOS 10.9 系統下在處理某些 TISInputSource 有關的 CoreFoundation 物件時出現記憶體釋放行為失控之錯誤。
- 行為:從這一版開始,威注音不會再在系統登入介面執行軟體新版檢查。
- 行為:從這一版開始,在不足 macOS 13 的系統當中,輸入法檢查更新時會優先檢查 Aqua 紀念版的更新。
- 研發:現暫時移除田所選字窗的 SwiftUI 支援。等過幾年真的再需要用 SwiftUI 重做的話,屆時應該能寫得更好。
- 研發:主流發行版與 Aqua 紀念版都針對 Xcode 14.2 做了調整、使得專案本身可以正常建置。
- 研發:主流發行版的 Xcode 專案針對 Xcode 15 的「建置時腳本沙箱」特性做了相容性調整。
- 研發:全專案移除對 (Sindresorhus) Preferences 以及 (ShapsBenkau) SwiftUIBackports 的依賴。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:修復了因為 macOS 14 Dev Beta 7 的
NSAttributedString.Key.kern
特性選項的預設值「非零」所導致的工具提示視窗排版故障。從這一版開始,由輸入法手動將該特性選項強制設為 0。 - 修正:修復了兩處與 UserDefaults Plist 鍵值名稱有關的拼寫錯誤。因此,在各位升級輸入法之後,請根據各自的需求來重新設定這幾個選項:「以固定順序來陳列選字窗內的候選字」、「允許使用右側的 Shift 鍵切換英數輸入模式」。
- 修正:在新增使用者語彙(或者控頻)的時候,不會再在漂白相關的半衰記憶資料時將當前輸入法繁簡模式對應的各自的半衰記憶模組搞錯。
- 修正:修改了 Shift 中英文切換功能所用的 Shift 按鍵判定機制。現在起,該判定模組會要求前後兩個 NSEvent 彼此的 KeyCode 雷同。這會在某些個別使用者的電腦上藉由「Shift+方向鍵」等按鍵組合時、防止對該中英切換開關的誤觸。
- 體驗:磁帶模組做了升級,現在會在磁帶內有定義
%quick
但尚未查詢到手動給定的簡碼資料時自動生成簡碼資料。這些自動生成的資料的字根是「僅需以給定的檢索內容開頭」還是「與給定的檢索內容完全匹配」,則與磁帶內是否有%flag_disp_partial_match
有關。舉例說行列輸入法的使用者群體所習慣的情況是前者,那就不要在行列輸入法的磁帶檔案內出現%flag_disp_partial_match
這一行。 - 體驗:考慮到很多使用者對 3.5.2 版前後引入的「選字窗位置反應當前候選字詞的長度」的特性不適應,所以給這個功能特性新增了開關。
- 體驗:考慮到很多使用者對 3.5.3 版引入的「多行選字窗在預設情況下、會摺疊得只顯示一行」的特性不適應,所以給這個功能特性新增了開關。一旦關閉的話,田所選字窗的多行選字窗將始終展頁顯示。
- 行為:在使用者就地加詞、刪詞、控頻時,輸入法不再強制給被修改的檔案整理格式、而是僅會修復可能缺失的 EOF 標記。
- 行為:在試圖就地新增使用者語彙時,輸入法會先檢查該詞音配對是否已被登記到詞彙濾除表當中。僅當發現沒被列入(過濾掉)時,才會新增使用者語彙(或升頻);如果有被列入(過濾掉)的話,則會先「僅」將該詞音配對從詞彙濾除表刪除。標記模式當中的工具提示也做了對應的調整。
- 行為:在就地加詞、刪詞、控頻的時候,不會在完成任務之後同時重新載入使用者辭典檔案和語彙排除表檔案,而是按需決定要重新讀取的資料。
- 行為:輸入法記憶體佔用封印上限由 512MB 改為 768MB,方便某些極個別人群對巨型使用者辭典檔案的需求。超過這個封印上限的話,輸入法會自動重新啟動。
- 研發:全專案將
[self] in
置換成[weak self] in
,將這一類記憶體洩漏的可能性掐死在搖籃當中。 - 研發:優化了對使用者語彙檔案的 EOF 標記的檢查與修復方法,使之不再需要載入整個檔案便可完成任務。
- 研發:修復了一處專案配置失誤。現在起,在建置/封存專案的時候,會生成 dSYM 檔案。
- 研發:如果兩次 setMarkedText() 先後設定的內容雷同的話,則第二次 setMarkedText() 會被跳過執行。此舉是為了嘗試緩解該輸入法在 Final Cut Pro X 當中編輯字幕時的體驗,因為 FCPX 無法在編輯字幕的時候忽略掉內文組字區內的內容。
- 研發:調整了一處與中英文輸入模式有關的判定、將其從 SessionCtl 挪到 InputHandler 當中,但願此舉能夠避免威注音在某些個別的客體軟體內的中英文輸入模式切換異常。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:解決了一個與 macOS 14 Sonoma 有關的惡性相容性故障:如果使用者辭典目錄或磁帶檔案在 iCloud Drive 裡面的話,在系統剛升級到 macOS 14 之後,威注音輸入法在使用時會觸發 GateKeeper 機制、系統會詢問使用者「是否允許威注音存取受 iCloud Drive 管理的檔案」。本次更新會解決輸入法在出現這個畫面時的「系統整個畫面操作失去響應長達幾十秒」的故障。該故障乃威注音輸入法的 GCD 設計不慎觸發 macOS 一處設計缺陷所使然。從這一版開始,威注音不會再在這種情況下觸發該系統缺陷。
- 修正:解決了半衰記憶模組在排除過期記憶(或溢出掉最舊的記憶資料)時的崩潰故障。
- 修正:解決了半衰記憶模組在某些情況下「無法生成正確的三元圖檢索用字串」的故障。打比方:當你敲「東京都前任知識」且藉由選字窗將「知識」改選成「知事」的話,此時生成的記憶資料會且「僅會」在這個詞的後方是「東京都前任」的時候才會生效。此時「東京都」「前任」「知事」正好組成三元圖(Trigram)記憶。
- 修正:解決了可能會因為「將 NSEvent 放入 Set 集合」而導致的輸入法崩潰故障。現已取消此類行為設計。
- 修正:解決了在區位內碼輸入模式下無法正確處理方向鍵事件的故障。
- 修正:解決了輸入法在某些情況下會讓某個控制會話「卡死在漢音鍵盤符號模式」的故障。
- 修正:針對「漢音鍵盤符號模式」與「區位內碼輸入模式」解決了「某些有處理過的功能按鍵操作會被漏給客戶端」的故障。
- 體驗:田所選字窗新增展頁功能。當您啟用了田所選字窗的多行/多列功能時,田所選字窗在剛剛叫出來的時候會以單行/單列顯示,直到您觸發翻頁/翻行行為的時候才會展開頁面為多行/多列顯示。這使得田所選字窗在這方面的行為上與微軟新注音輸入法和 macOS 內建注音輸入法幾乎一致。
- 行為:因應威注音輸入法的技術發展需求等原因,威注音輸入法從這一版開始移除了對 IMK 選字窗的支援。詳情請洽輸入法偏好設定內的「IMK 選字窗去哪裡了?」按鈕。
- 行為:從現在起,當啟用語彙置換模式時,在將當前組字區的內容遞交出去的時候,當且僅當目前的內文組字區剛好是可取代對象的話,則整個遞交出去的內容都會被置換掉。// 這個特性的觸發條件必須是「當且僅當」,不然會導致嚴重的效能問題:組字區越長,效能問題越嚴重,轉換結果也就越容易不可控。
- 研發:將輸入法主程式專案的一些主要功能模組統一塞入一個單獨的 Swift Package 內進行管理、謂之「輸入法主體總成模組」。這包括但不限於:輸入法控制會話模組、輸入法應用程式代理模組(AppDelegate)、語言模型管理模組、按鍵輸入調度模組、有限態械模組,等。利用 Swift Package 的特性,威注音輸入法本身迎來了睽違超過一年多的單元測試(被寫在了輸入法主體總成模組內),且單元測試本身所使用的 UserDefaults 與威注音輸入法運行時的 UserDefaults 彼此隔離、不受影響。目前的單元測試範圍不算廣泛,但會隨著將來由使用者群體提報的故障來擴大測試範圍。
- 研發:對整個輸入法按鍵事件控制流程的修飾標記判定做了精簡,僅會處理經過 .deviceIndependentFlagsMask 篩過的修飾標記集合。
- 研發:改用 KVO 來通知使用者偏好設定畫面「是時候重新載入資料了」。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:田所選字窗 Cocoa 版利用 CoreGraphics 徹底重寫,徹底解決了在 Intel Mac 電腦上的兩個故障:
- 修正了因介面渲染低效導致的操作遲鈍故障。該遲鈍故障在 Apple Silicon 機種內極難察覺,但在 Intel Mac 電腦上的使用體驗只能用地獄來形容。
- 無論 CPU 種類,之前的 Cocoa 版田所選字窗都有記憶體利用過多的故障(雖然不至於洩漏),也在這次重寫更新當中得到了修正。畢竟,之前是給每個候選字詞都初期化一個用 Swift 做過 SubClass 處理的特製 NSTextField,加上 NSStackView,一頁(四行的)畫面平均使用的 NSView 的數量恐超過三十;而現在只需要一個 NSView 採 CoreGraphics 繪製介面。因為沒有用到 CoreAnimation Layer,所以:哪怕在 VMWare 虛擬機內無法正常使用顯示卡驅動加速,也不會有介面繪製上的瑕疵。自然也就允許田所選字窗在所有版本的 macOS 當中的美術風格統一(SwiftUI 版的美術設計則另論)。
- 註:由於類似的操作遲鈍故障也出現在 SwiftUI 版的田所選字窗內(恐與 CPU 指令優化有關),所以威注音輸入法不建議 Intel Mac 的使用者啟用 SwiftUI 版田所選字窗。
- 體驗:輸入法偏好設定的「使用者辭典檔案目錄」以及「磁帶檔案目錄」的自訂用「…」按鈕迎來一處新調整:當您摁住 Option 鍵再點這個按鈕的時候,會直接以 Finder 開啟該路徑。
- 體驗:將主流發行版特有的「修改使用者辭典檔案目錄」以及「磁帶模式」功能下放給威注音輸入法 Aqua 紀念版(v0.5.25)。
- 技術層面說明:macOS 10.13 之前的版本的系統會在輸入法自身呼叫 NSOpenPanel 的時候令自身與客體應用陷入無限停止響應的狀態。更甚者,此時任何嘗試切換到的其他客體應用也會陷入同樣的狀態。除了強制斷電重新開機以外,就只能藉由遠端 SSH 連到目前的電腦上、以終端命令強行終止輸入法執行緒。因此,威注音輸入法不能對 macOS 10.12 及之前的系統開放對 NSOpenPanel 的存取。這也是這兩個重磅級功能從威注音問世以來便長期缺席於這幾版 macOS 的原因。好在目前終於找到了替代解決方案:讓使用者從 Finder 將輸入法辭典目錄/磁帶檔案直接拽入輸入法偏好設定內的 NSPathControl 路徑控制項當中。
- 行為:從該版開始,威注音會正確處理 KeyUp 事件,且會刻意忽略一些以 .command 觸發的熱鍵(包括剪貼簿熱鍵)。
- 行為:從該版開始,就地輪替候選字詞時,輪替順序與選字窗內的候選字詞陳列順序完全一致。
- 行為:從該版開始,輸入法偏好設定視窗的標題列、以及輸入法關於視窗內都會顯示您當前安裝的威注音輸入法的簽名日期時間戳。這有助於參與 beta 測試的人們弄清楚自己安裝的是哪個版本。
- 行為:在某些極端個例當中,使用者半衰記憶模組的記憶檔案可能會出現故障、導致輸入法崩潰。從這一版開始,輸入法在偵測到這種崩潰時,不再直接移除這類有問題的記憶檔案,而是直接對這些檔案做更名留檔處理、以便今後的進階偵錯之需。
- 研發:簡化了對 CFDictionary 的一些處理。
- 研發:將主流發行版當中的 App Sandbox 檔案路徑書籤管理模組向下移植給 Aqua 紀念版。
- 研發:優化了對 NSAttributedString 的 BoundingDimension 的計算方法,且縮減了這個計算方法在整個輸入法專案內的使用場合。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:訂正了輸入法偏好設定當中與 IMK 選字窗有關的錯誤描述。
- 修正:解決了近期改用 JSON 辭典資料格式時對逐字選字模式自訂檔案(plist)支援失效的故障。
- 修正:解決了選字窗的位置在某些情況下會亂跳的故障。
- 體驗:更換了選字模式下的內文組字區下劃線格式,使其顯示邏輯類似於 macOS 內建的日語輸入法。
- 體驗:從現在起,藉由「縱向佈局的 IMK 選字窗」使用磁帶模式的簡碼選字時,簡碼候選字會以閃電標記開頭、以提醒使用者「目前可以使用簡碼候選字」。
- 行為:從現在起,當且僅當一個 CIN2 磁帶的花牌鍵「不是字母鍵」的場合,才可以單獨敲出這個符號。對此限制感到困擾的話,可以在每次輸入符號時(用熱鍵)關掉磁帶模式來輸入。
- 行為:如果當前載入的 CIN 磁帶檔案包含單獨的「
%quick
」或「%flag_disp_partial_match
」行、且該磁帶檔案尚未實裝「%quick begin
…%quick end
」章節的話,輸入法會自動讓磁帶模組找出前六十個候選字(單個漢字)作為簡碼候選字。 - 研發:棄用 Xcode 15 Beta 建置手段,因為測試版的 Toolchain 可能會導致 SIGTRAP / SIGILL 錯誤。本次版本使用 Xcode 14.3 建置。
- 研發:給輸入法的 info.plist 新增了
TISIconLabels
參數。 - 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:天權星引擎升級至 v2.7.1,修復了「在組字器內刪掉最後一個讀音的時候,因為 walkedNodes 沒被清空的原因,導致內文組字區在某些功能模式下的內容顯示失常」的故障。從現在起:當你在嘗試用 Shift+BackSpace 析構掉組字區內唯一一個漢字的讀音的時候,內文組字區將會正常顯示這個漢字的去掉聲調的讀音、而不顯示額外的不該顯示的漢字內容殘留。
- 修正:針對 BackSpace 鍵做了一系列功能補充升級改進,以應對磁帶模式的簡碼選字功能的需求。從現在起,當你逐字刪掉組筆區當中的某個最新輸入的字根的時候,簡碼選字窗不會再消失,除非當前組筆區為空、或當前的字根組合沒有對應的簡碼資料。
- 體驗:從這一版開始,針對聯想詞模式的「Enter 鍵確認漢字」的開關的預設值被改為「關閉」。另新增 Shift+Enter 備用組合鍵、可以在聯想詞模式當中始终確認當前高亮的聯想字詞。
- 體驗:在簡碼選字狀態更新時,選字窗不再「僅根據組筆區內字根數量的多寡變化,來調整自身的視窗座標位置」。
- 體驗:對整個輸入法的 IMK 選字窗行為處理流程做了徹底重構。現在起,IMK 選字窗也支援 CIN2 磁帶的簡碼選字特性。然而,因為 IMK 選字窗的固有缺陷與限制,威注音輸入法的 IMK 選字窗在使用 CIN2 簡碼選字功能時,有下述限制(可能會挑戰到行列輸入法的傳統使用者群體的既有習慣):
- 簡碼選字鍵只有「123456789」且無法變更:用以自訂 IMK 選字窗選字鍵的 API 全都是廢掉的。
- IMK 選字窗不允許在單個候選字陣列內出現雷同重複的候選字詞,否則會出現介面操作紊亂的情況(該特性倒是看上去完全符合常理就是了)。雖然有保守治療方案,但這會導致簡碼選字窗無法一次性顯示盡可能多的簡碼候選字。於是威注音輸入法只得在 IMK 簡碼選字窗當中剔除掉所有的空碼、且去除重複的簡碼候選字。這樣改出來的體驗對行列輸入法的新手而言完全沒問題,但卻與行列輸入法的傳統使用者群體幾十年來的肌肉記憶水火不容……他們比較適合使用威注音預設的田所選字窗,可以滿足他們的習慣特性需求。
- IMK 選字窗的 Annotation 功能是空實作(也就是相關的 API 啥也不幹),於是在原理上暫無可實現反查顯示功能之手段(macOS 內建的五筆輸入法倒是有反查特性就是了)。為了方便使用者區分「是不是簡碼選字模式」,在使用 IMK 選字窗的橫版陣列佈局的時候,簡碼選字窗會顯示為橫版單列佈局。
- 與之前一樣的是,因為 IMK 選字窗的 API 功能限制,在 macOS 10.13 High Sierra 系統下的 IMK 選字窗橫版佈局僅有單列佈局可用(因為這一版系統內的 IMK 選字窗多列佈局完全不支援選字鍵)。
- 註:筆者有將上文提到的某些個別故障專門在 WWDC 2023 找 Apple 的專員討論過,但對方不是輸入法組員、所知情報有限,只是傳達意見說 Apple 輸入法團隊「現階段無權給出任何答覆」。
- 體驗:新增了一個功能,允許在逐字選字模式下以空格鍵遞交當前選字窗內被高亮選中的候選字。該功能預設啟用,可能會挑戰到威注音輸入法舊版使用者們的行為偏好,屆時可以藉由輸入法偏好設定來停用該功能特性。
- 體驗:現在開始可以在磁帶模式內藉由花牌鍵敲出花牌鍵原始對應的字元;與「花牌鍵不可用作首碼」有關的警告訊息挪到螢幕右上角、以飄雲通知視窗呈現。花牌鍵原始對應的字元資料將由威注音輸入法的注音輸入模式的原廠語彙資料辭典來提供。
- 體驗:CIN2 磁帶格式標準支援升級至 CIN v2.2:
- 新增了對「%symboldef」章節的支援。該章節的內容不會被統計為「%chardef」的內容,哪怕其坐落於「%chardef」章節的內部。
- 磁帶模組會自動判斷當前讀入的磁帶檔案的簡碼選字鍵是否「得同時摁住 Shift 才能起作用」:只要當前生效的簡碼選字鍵與「%chardef」當中用到的字根鍵有任何重合,則磁帶模組就會認定「當前磁帶的全部的有效簡碼選字鍵均得同時摁住 Shift 才能起作用」。
- 威注音輸入法的磁帶模組會檢查當前磁帶規定的「%selkey」在去除重複內容之後是否符合輸入法對選字鍵設定資料值的條件要求,且在發現不合規的情況下直接強制指派「1234567890」為簡碼選字鍵(是否需要摁住 Shift 則另論,上文有提及)。
- 如果因為當前的簡碼選字行為所用到的擊鍵順序「反而會觸發『%symboldef』章節當中的符號輸入」的話,則此時會臨時自動要求「摁住 Shift 鍵,簡碼選字鍵才會生效」。典型例子是「行列30」輸入法在摁「w」鍵之後的簡碼候選字,此時就得用「Shift+1」選「女」,因為「W → 1」會觸發符號選單「W1」。
- 行為:對 IMK 選字窗在 activateServer() 時的顯示狀態保護策略將僅在 activateServer() 函式呼叫開始的 800 毫秒內才會被呼叫。這可以有效避免一些與逐字選字模式有關的相容性故障。
- 行為:從現在起,只要沒有啟用 IMK 選字窗,則與 IMK 選字窗有關的函式一個都不會被呼叫到。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- [SP2] 修正:修復了 Cocoa 版輸入偏好設定當中「磁帶模組:在已經敲出最長可能碼的時候自動組字」開關失效的故障。
- [SP2] 修正:修復了 Cocoa 版輸入偏好設定當中的選字鍵「無法自訂為 10 個」的故障。
- [SP2] 行為:現在起,在停用「磁帶模組:在已經敲出最長可能碼的時候自動組字」的時候,恐必須得使用「Shift+選字鍵」的方式才可以對簡碼進行選字。此乃現階段不得已而做出的特性調整。
- [SP1] 修正:解決了磁帶模式下的簡碼選字鍵失效的故障。
- 修正:在原理上解決了在諸如 MS Excel / Safari 等「單個 App 內部可能會叫出多個 IMKInputController 會話」的客體應用內出現的「Shift 中英模式切換狀態混亂」的故障:現在起,只要是客體應用的 bundle identifier 唯一標幟字串雷同,則所有對接了「持這種唯一標幟字串的客體」的 IMKInputController 會話都會共用 Shift 中英文切換狀態。
- 副作用:在關掉某款 App 之後,輸入法會記住那款被關掉的 App 的 Shift 中英文輸入模式開關的最終開關狀態、直到輸入法被重啟(或登入登出/重新開機)時才會丟失對於該開關狀態的記憶。
- 修正:解決了(復發的)在「剛切換到其他應用就立刻叫出輸入法的符號選字窗」時「IMK 選字窗剛顯示就會被關閉」的故障。這種「被關閉」的現象乃 IMK 選字窗自身的程式設計特性使然,威注音對此的應對方式就是:每次主動顯示 IMK 選字窗的時候,會再連續兩三次每隔幾百毫秒就檢查該視窗的可見狀態、發現不可見就再令其顯示出來。
- 體驗:CIN 磁帶模組更新至 CIN2.1 標準,藉此得以實現對諸如行列輸入法、五筆輸入法的簡碼輸入支援。
- 這對 CIN 檔案內容有如下要求(相比 CIN2.0 而言):
-
%nullcandidate
用來指明%quick
字段給出的候選字當中有哪一種是無效的。 -
%quick begin
至%quick end
之間則是簡碼資料字段,對應的 value 是單個字串、會被輸入法逐字拆分成一組候選字詞陣列。 -
%selkey
的內容現在會被威注音輸入法優先當作簡碼輸入時的專用選字鍵,但其數量必須得至少 6 個、至多 10 個。如果磁帶內的這一行的給定資料值不符合條件的話,則輸入法會自動另採1234567890
作為簡碼輸入專用選字鍵。 - 如果簡碼候選字的對應碼好死不死地包含了
%chardef
章節的某些內容的字根碼的話,則%chardef
章節的內容會被優先處理、優先度高於簡碼選字。
-
- 註1:您仍可以藉由「用方向鍵選擇、敲 Enter 鍵確認」或滑鼠點擊的方式來選擇您想要確認輸入的簡碼候選字。如果您載入的磁帶給出了超過一頁的簡碼候選字的話,可以用方向鍵翻頁、高亮選取您想要輸入的簡碼字。
- 註2:簡碼輸入模式目前無法支援 IMK 選字窗(因為實作難度過於複雜)。當威注音輸入法有啟用 IMK 選字窗的時候,輸入法將不會藉由磁帶讀取簡碼候選資料。
- 註3:此次的磁帶模組對於花牌鍵的設計並無任何改動。因暫時的可投入技術資源的限制,威注音此次更新暫時無法實作能夠完全符合行列輸入法規格標準的「*」「?」萬用字元支援。能用到這些功能的使用者們往往都是因為忘記了字根,所以可以切換回注音打字模式、再利用田所選字窗的磁帶字根反查顯示功能。除此之外,威注音輸入法目前的花牌鍵應該足夠滿足剩餘的萬用查碼需求。今後如有這方面的技術突破的話,會再考慮實作這兩個特性。
- 這對 CIN 檔案內容有如下要求(相比 CIN2.0 而言):
- 體驗:CIN 磁帶模組現可接受「需要摁住 Shift 才可以輸入的字根符號或花牌鍵」的輸入。
- 體驗:現可敲空格鍵取消 Big5 / GB 內碼輸入狀態。
- 體驗:在輸入法偏好設定內切換 IMK 選字窗 / 田所選字窗的時候,不再需要重新啟動輸入法。
- 體驗:新增「Ctrl+Shift+Command+[]」作為另一組備用的候選字詞輪替用熱鍵。
- 體驗:田所選字窗現會在自身介面重新繪製的時候自動更新視窗的起始座標點、以應對受反查結果變化而出現的視窗寬度變化。這有助於避免視窗因此抻出螢幕右側邊界的情況。
- 體驗:田所選字窗現允許使用者藉由拽動「除了候選字詞以外的部分」的方式來拽動視窗本身。
- 行為:出於與效能有關的疑慮,在 macOS 10.15 開始的系統內全新安裝威注音輸入法時,田所選字窗的預設形態現在會是 Cocoa 形態。
- 行為:現允許設定最多 10 個選字鍵(之前的上限是 9 個)。
- 研發:徹底重構了 InputHandler 對於傳入的按鍵訊號的分診邏輯;另有些許小修正。
- 研發:針對 Xcode 15 做了些許專案配置調整。
- 辭典:例行語彙資料更新+原神/星穹鐵道語料更新。
- 修正:解決了田所選字窗(SwiftUI 版)在除了橫版單列以外的排版模式下「不顯示反查結果」的故障。
- 修正:修正了半衰記憶模組在輸入法(重新)啟動時無法讀取 JSON 存檔的 Bug。
- 修正:將 Cocoa 版偏好設定當中的與基礎鍵盤佈局有關的說明文字更新為目前 SwiftUI 版偏好設定視窗當中的說明文字,以正確描述目前的威注音輸入法的軟體行為。
- 體驗:全專案改採 JSON 格式的原廠辭典、取代 plist,節省記憶體佔用與硬碟空間佔用,載入速度更快。
- 體驗:磁帶模組新增對於
%quick
區段的讀取支援、會自動將其與%chardef
區段融合(但優先權更高)。該區段常見於行列輸入法表格的某些發行版。 - 研發:對田所選字窗以及 CandidatePool 做了一些與物件交互特性有關的調整。
- 研發:對不包含文字訊息的按鍵輸入訊號的處理流程做了些許調整。
- 研發:天權星組字引擎 v2.7.0 更新,讓 KeyValuePaired 成為 Unigram 的派生型別、以便於滿足今後的開發目的,也解除了對 Foundation 的依賴。
- 研發:鐵恨注拼引擎 v1.5.1 更新,解除了對 Foundation 的依賴。
- 研發:改用 IMKInputController 專門提供的原生方法來生成 selectionRange() 和 replacementRange()。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:解決了在拼音模式下「注拼槽為空的時候,無法直接藉由主鍵盤區數字鍵輸入某些數字」的故障。
- 修正:解決了按鍵調度模組在處理組字行為邏輯時的某處判定失誤。
- 行為:從現在起,當使用 Ctrl+Command+Shift+D 切換繁體/簡體輸入模式的時候,會自動關掉當前的英文輸入模式。
- 行為:藉由調整輸入法 bundle plist 內容參數配置的方法,封堵了在某些新開箱的 mac 電腦內全新安裝威注音輸入法之後「敲兩下空格,會出現全形句號」的故障。雖然這是因為 macOS 的某個功能特性的原廠設定、而出現的異常行為,但這次的實現原理就是:將傳入的連續的兩個空格「取代為兩個西文半形空格,而不是某一個中文句號」,所以(理論上)不用再擔心 macOS 的這個功能特性是否被停用了。
- 體驗:新增對劉又銘擬音注音排列的支援,且同時對其「微軟新注音妥協形態」與「理想形態」這兩種輸入方案相容。
- 體驗:為了照顧色盲患者的使用體驗,從現在起,威注音將使用單色選單圖示、輔以特殊的漸變美工處理,以增強兩個輸入模式彼此的辨識度。
- 體驗:從現在起,當「聲調鍵成功覆寫位於游標身後的漢字」的時候,會出現對應的工具提示(兩秒)。
- 體驗:從現在起,威注音輸入法成功實現了對「聲調前置輸入」之情形的防呆功能支援。與上游相比,差異如下:
- 因為威注音所使用的注拼引擎(鐵恨)與上游的注拼引擎(OVMandarin)完全不同,所以該功能的實作方式有明顯的差異。
- 威注音在開啟該功能的情況下,允許藉由單獨敲一次 Enter 鍵以迅速輸入聲調符號(且直接遞交);上游需要敲兩次 Enter 鍵才可以。
- 威注音允許使用者自行停用該防呆功能;上游無法停用該功能。
- 體驗:現在起,當試圖輸入新的漢字的字音時,如果先敲了聲調鍵、且此時有啟用「聲調前置輸入」的話,則會出現專門的工具提示、來指引進一步的操作。
- 辭典:例行語彙資料更新+原神&星穹鐵道語料更新&全字庫更新(2023-05-19)。
- 修正:解決了與漢語拼音模式的空格鍵響應邏輯有關的一些故障。
- 體驗:從現在起,除了大千傳統、酷音大千26鍵、(偽)精業、IBM 以外的注音鍵盤排列,都可以藉由「基礎鍵盤佈局」設定來實現對 Dvorak 等英數鍵盤佈局的映射支援。
- 體驗:新增繁簡輸入模式切換專用熱鍵「Command+Control+Shift+D」,可在偏好設定內停用。之所以沒有採用小麥注音與奇摩輸入法的繁簡切換專用熱鍵(Control/Shift+Command+G),是因為這些熱鍵與很多軟體存在熱鍵衝突(可以在 DefKey 網站查詢到)。該選項會在您當前系統「尚未同時啟用威注音的繁&簡輸入模式」的時候自動啟用(截至 macOS 11)、或引領您在系統偏好設定內完成啟用過程(自 macOS 12 開始的話是如此)。
- 體驗:App 格式的備用版安裝程式不會再在系統「已經有啟用威注音輸入法」的情況下重複詢問使用者「是否啟用威注音輸入法」。
- 研發:改用 InputMethodKit 內建的(與 TSM 有關的)函式的生成結果、來作為內文組字區文字顯示的優先採用格式。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:解決了在藉由 macOS 系統內建 Emoji 面板輸入 Emoji 之後會導致輸入法崩潰的故障。
- 修正:解決了在切換系統黑暗模式開關之後、輸入法工具提示視窗的配色方案可能會出現的異常。
- 修正:鐵恨注拼引擎更新至 v1.4.1,解決了(雖然一直沒有爆發的)牽涉到與所有複合注音鍵盤佈局處理有關的一些邏輯故障。另註:該故障迄今為止一直沒發作的原因在於鐵恨注拼引擎本身的追加保險設計。
- 行為:除非開啟偵錯模式,否則會使用系統的提示聲、而非輸入法本身的貝斯撥弦聲。
- 辭典:例行語彙資料更新+原神語料更新。
- 修復:取消了在上一版引入的「將某些與狀態有關的任務另立專用執行緒隊列」的設計,試圖藉此解決與某些客體軟體不相容的故障(雖然崩潰的是客體軟體、而非輸入法本身)。這會取消對多核心 CPU 的一些充分利用,但實屬無奈之舉。如果 Line 自身還會再崩潰的話,請洽 Naver 提報其故障、並設法提供 Line 本身的崩潰報告給他們。
- 修復:解決了在某些包含同音異幅的候選字詞的選字窗內來回選字時的崩潰故障。
- 體驗:新增韋氏拼音輸入支援,但必須使用英文右引號鍵「'」來區分清濁音。因應該功能需求,鐵恨注拼引擎升級至 v1.4.0 版。
- 研發:針對 Cocoa 版偏好設定視窗改採動態方式來繪製國音分析器下拉選單,以節省本地化成本。
- 體驗:自這一版開始,每次 activateServer() 都會始終確認當前會話副本的簡繁模式與輸入法選單所顯示的當前輸入法簡繁模式是否一致、且會在發現不一致的時候更新當前會話副本內的簡繁模式。
- 辭典:例行語彙資料更新+原神語料更新。另更新全字庫資料至 3 月 24 日的版本。
- 修正:修復了 3.4.1 版不慎引入的「單個漢字無法藉由標記模式降頻」的故障。相關邏輯完全重寫:當且僅當該漢字讀音只剩一個漢字的時候,該字音配對才無法被濾除。
- 修正:修復了田所選字窗右鍵選單用以判斷「是否顯示濾除命令」的邏輯:當且僅當標記範圍(幅長)為單個漢字、且該幅長只剩一個結果在庫的時候,該字音配對才無法被濾除(也就是在右鍵選單當中不顯示該命令)。
- 修正:解決了「當游標前後的漢字的讀音相同的時候,在此時叫出的選字窗內會出現橫跨游標的候選字詞」的故障。因應該需求,天權星組字引擎升級至 v2.6.3。
- 行為:將按鍵處理邏輯與部分輸入法狀態處理任務強制分配到不同的 CPU 執行緒當中,藉此提升輸入法的整體反應速度。
- 研發:調整了在載入辭典資料時的多工處理方法。
- 辭典:在統計用以計算權重的 NORM 數值時,不再將原神語料庫納入統計範圍內。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:解決了「在組字區內實時預覽選字結果」的功能無法在浮動組字窗內生效的故障。
- 修正:解決了浮動組字窗「可能會因為游標位置的不同、而出現排版行高異動」的異常行為。
- 修正:解決了使用者語彙編輯器在前一次更新當中「喪失了標記重複內容的能力」的故障。
- 體驗:針對「Shift+字母鍵」新增了兩種行為模式,可以在且僅在組字區為空的時候直接遞交大寫或小寫字母。
- 體驗:允許使用「Shift+Command+前後方向鍵」或「Shift+Alt+前後方向鍵」在標記模式內以字詞節點為單位移動「標記專用游標」。
- 註:「Shift+Command+前後方向鍵」是為了應對 ThinkPad SK-8855 USB 鍵盤「不支援 Shift+Alt+→ 組合鍵」的現狀而引入的應對方案,暫時先不計入使用手冊。
- 辭典:例行語彙資料更新+原神語料更新,新增原神迄 3.5 版為止所有角色突破材料、武器突破材料、武器的名稱。
- 修正:解決了會將諸如「CapsLock+字母鍵」這種特殊的熱鍵組合「誤判為 Shift 單次敲擊」的故障。
- 修正:解決了使用者辭典格式整理模組「無法正確處理位於檔案中間的格式化標頭字串」的故障。
- 修正:糾正了 Caps Lock 中英文切換視窗的一處文字格式錯誤。
- 修正:移除了對漢音符號選單的某一處過剩的濾重處理。
- 體驗:新增「在組字區內實時預覽選字結果」的功能。因應此功能需求,天權星組字引擎更新至 v2.6.0 版。
- 研發:給 SessionCtl 擴充了另一個不需要參數的建構子,這樣能保證在重啟輸入法之後可以立刻敲字。
- 研發:改良了在標記模式下就地降頻時的組合鍵判定方法。
- 研發:對 LMMgr 語言模組管理單元做了結構調整,且引入了全新的 UserPhrase 結構單元、以簡化使用者語彙寫入流程。
- 研發:就與候選字詞有關的 Tuplet 單位新增了參數名稱。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:解決了在藉由田所選字窗滑鼠右鍵選單將某個讀音下的字詞刪光之後、組字引擎崩潰的故障。天權星組字引擎因此更新至 v2.5.4。
- 修正:解決了 SwiftUI 版偏好設定畫面「無法因為來自外部的 UserDefaults 變化而自動更新介面狀態」的故障。
- 修正:解決了 SwiftUI 版偏好設定畫面在 macOS 10.15 系統下的介面語言選項無法正常顯示「依系統設定」的故障。
- 行為:從這一版開始,您無法再藉由標記模式與田所選字窗右鍵選單來濾除單個漢字的字音配對。這避免了威注音的使用體驗遭到不慎破壞。
- 行為:「在 CapsLock 中英切換時顯示飄窗提示」的功能選項不再向 macOS 11 和 macOS 10.15 系統開放,因為該功能實際上要求至少 macOS 12。
- 體驗:工具提示視窗在 macOS 10.13 開始的系統內改採圓角外觀設計。
- 辭典:例行語彙資料更新+原神語料更新。
- [SP2] 修正:解決了在某些機種下才會出現的 SwiftUI 偏好設定在換頁時的顯示故障。
- [SP1] 修正:從這一版開始,在彈出新版本更新通知時,點 GitHub 按鈕不會再誤轉至 Gitee 下載頁面。
- [SP1] 行為:從這一版開始,不再對單個漢字的半衰記憶施加條件限制,只是會對此啟用更為激進的衰減策略。
- 修正:天權星組字引擎更新至 v2.5.2,解決了自威注音 1.9.0 開始一直存在的「組字區爬軌時會洩漏記憶體」的故障。
- 辭典:例行語彙資料更新+原神語料更新。
- 體驗:因應食雪漢計畫的成功,第三代田所選字窗得以用 Cocoa 技術完全重寫、以彌補 SwiftUI 天生的介面渲染效能不足的缺陷,相關功能變更如下:
- 滑鼠滾輪翻頁翻行功能,但不建議搭配 TrackPad 使用(因為體驗會很糟糕)。
- 因為用 Cocoa 技術重寫,所以得以下放給「macOS 10.9 - 10.12 專用」的威注音 Aqua 特別版。然而,NSStackView 多重嵌套設計在 macOS 10.9 系統下會有嚴重的渲染效率問題,所以該特別版會在使用多行/多列田所選字窗時仍舊使用古早排版、以保證操作效率。該故障不影響自 macOS 10.13 開始至今的系統版本。
- 古早介面排版模式不再對 macOS 10.13 開始的系統開放使用。
- macOS 10.15 開始的系統將會預設使用 Cocoa 版田所選字窗;SwiftUI 版田所選字窗現已被歸入「實驗性」功能分類。
- 體驗:新增對於組音區/組筆區/內碼輸入模式的 Alt+Backspace 按鍵行為:
- 對於組音區與組筆區,Alt+BackSpace 會清除未完成的字音/字根。
- 對於內碼輸入模式,Alt+BackSpace 會清除尚未完成輸入的內碼,但不會退出內碼輸入模式。
- 體驗:針對客體管理器新增 App 封包檔案滑鼠拽入之特性支援。
- 體驗:Alt(+Shift)+主鍵盤數字鍵可以在組字區有內容的時候輸入半形/全形數字。此外還解決了該功能在拼音模式下無法正常工作的故障。
- 行為:通知飄窗新增離場動畫。
- 行為:引入了與 IMK 選字窗有關的自救機制:當在將來的 macOS 當中使用 IMK 選字窗時(因使用其強制曝露之 IMK 選字窗 API 而)崩潰的時候,輸入法會對這種情況做出自我感知、且在下一次啟動輸入法時自動停用 IMK 選字窗。此設計乃是為了應對 Apple 今後可能會對 InputMethodKit 當中的 IMK 選字窗做出的改動。
- 辭典:例行語彙資料更新+原神語料更新。
- 體驗:因應昏睡紅茶計畫的成功,田所選字窗升級到第三代,新增下述特性:
- 提供了更簡潔的單行/單列選字窗模式。該模式下最多只可以顯示一筆 CIN 磁帶字根反查結果。
- 提供了古早介面排版模式:該模式僅用一個 NSAttributedString 在一個 NSTextView 的加持下完成選字窗的全部排版工作,得以讓田所選字窗支援比 macOS 10.15 更早的系統。由於這種技術實現方式帶來的限制,該模式不支援滑鼠點擊事件,且其多行縱排模式只能做成重力選字窗(重心在選字窗左側)。對於該特性的詳細介紹,請洽(macOS 10.15 開始可用的)SwiftUI 版輸入法偏好設定的「選字設定」頁籤內的說明。
- 行為:輸入法會記住你這次運行輸入法開始用過的最近的二十個客體軟體的封包標幟(bundle identifier),方便在藉由本次更新引入的新版客體管理器當中用來登記新客體。出於與資訊安全有關的的考量,該臨時記憶並不會存儲到 UserDefaults 當中,且會在每次重啟輸入法時丟失相關的記錄。
- 行為:自該版本開始,所有與選字窗的游標移動越界操作將不再觸發警告聲效。
- 研發:針對某些客體軟體對內文組字區下劃線處理行為失常的情況,本次更新升級了客體管理器,且在輸入法偏好設定當中的開發道場內新增了與此有關的相容性選項。
- 研發:針對這次的田所選字窗的升級,這次更新將幾乎所有與選字窗操作有關的行為處理都轉移到後端 CandidatePool 當中。
- 研發:根據 Apple 官方的開發說明資料,糾正了用以計算 NSAttributeString 面積的方法。
- 辭典:例行語彙資料更新+原神語料更新,另有對來自 LibTaBE 的錯誤讀音用字資料的全面清剿。
- 體驗:對 SwiftUI 版偏好設定介面做了大翻修,且給某些選項新增了註解說明。
- 體驗:在偏好設定內新增選項,允許使用者手動啟用「以『\』『¥』鍵呼叫漢音鍵盤符號模式」的功能。該功能不預設啟用,因為威注音在預設情況下會利用這個按鍵快速輸入成對的特殊括弧。
- 體驗:允許使用 Shift+Command+[] 在選字窗內選擇前一個/後一個候選字詞。
- 體驗:允許使用 Alt+Delete / Alt+BackSpace 在組字區內迅速刪除一個字詞節點。
- 行為:現在開始,當你停用了「敲 ESC 鍵以清空整個組字緩衝區」這個選項的話,敲 ESC 時,如果不存在尚未完成組字的讀音/字根的話,則會直接遞交當前組字區的內容(而不是什麼也不做)。
- 行為:現在起,藉由輸入法選單試圖清空半衰記憶模組的記憶資料的時候,不需要摁著 Alt 鍵,就可以同時清除繁體中文與簡體中文模式下的半衰記憶資料。
- 修正:移除了一個一直故障到現在的某個注音輸入糾錯設計。因此,現在可以明確了:敲「˙ㄚ」「ˇ一」這種「先敲聲調後敲注音」的情況不會單獨組成字音。如果當前組字區內已經有內容、且游標不是在(文字輸入方向上的)最後方的話,依照您的輸入法偏好設定而定,聲調鍵可能會嘗試複寫游標正後方的讀音的聲調。
- 修正:修復了在 macOS 10.9-10.12 系統下「因為當前系統版本可能沒有 ABC 佈局,而導致美規、法文、德文鍵盤佈局不可用」的故障。該修正是針對威注音主流版本與(macOS 10.9 專用的)威注音 Aqua 特別版的需求而做的,且僅對 macOS 10.9-10.12 生效。
- 研發:針對 generateStateOfInputting() 做了容錯設計:當組字區與組音區/組筆區均為空的時候,返回的狀態會是 IMEState.ofAbortion()。
- 研發:少許介面用語調整與介面圖示調整,另將輸入法選單圖示改裁為 macOS 13 開始的寬版圖示(亦與 macOS 10.13 至 macOS 12 相容)。
- 辭典:例行語彙資料更新+原神語料更新。
- 體驗:新增內碼輸入模式,敲一次「Alt+波浪符號鍵」可以叫出該模式;敲 Esc / Enter / Delete 離開該模式。
- 該模式的「實作方式」與「Zonble 給小麥注音開發的 Big5 輸入模式」完全不同,且允許你用內碼連續打字。
- 「威注音-繁/簡」的內碼輸入模式分別採 macOS 系統內建之「BIG5_HKSCS_1999」與「GB_18030_2000」碼頁。
- 體驗:新增近乎原版的漢音符號選單(去掉了九個重複字符),可以用「Alt+Shift+波浪符號鍵」叫出該選單。
- 體驗:新增漢音鍵盤符號輸入模式。該模式依照 Mengjuei Hsieh 在 2011 年整理的《漢音格式規格》一文完全實作。
- 需要先敲「波浪符號鍵」點開分類符號選單、然後再敲「Alt+波浪符號鍵」才會進入漢音鍵盤符號模式。
- 直接連續敲「Alt+波浪符號鍵」兩次的話,也可進入漢音鍵盤符號模式。(只敲一次的話,會進入內碼輸入模式。)
- 在成功輸入一次符號之後,該輸入模式會自動關閉。
- 修正:修復了在某些情況下「切換到別的應用時、會往之前的應用當中遞交尚未完成拼字的注音/字根」的故障。
- 研發:倉庫源碼格式改採 Google Swift Format Style,另對 SessionCtl 和 InputHandler 做了一些維護。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:緊急修復了橫向排列的田所選字窗在 macOS 10.15 和 macOS 11 系統下會導致輸入法崩潰的一處排版故障。
- 行為:在輸入法偏好設定介面當中不會再看到廉恥模式的勾選開關,除非當天是愚人節。只要不是愚人節,則該勾選開關會被自動恢復勾選。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:修復了自威注音輸入法 v1.2.0 首發版以來在英雄聯盟(全螢幕模式)對戰對話時「無法顯示工具提示、飄窗通知、非 IMK 選字窗、浮動組字窗等介面」的故障。其它依賴於 OpenGL 螢幕直繪的 macOS 電玩應用可能會得益於該修正。
- 修正:修復了自威注音輸入法 v2.0.0 SP2 版以來在英雄聯盟(全螢幕模式)對戰對話時「因 IMK 選字窗 WindowLevel 值設定過大、導致輸入法崩潰」的故障。其它依賴於 OpenGL 螢幕直繪的 macOS 電玩應用可能會得益於該修正。
- 體驗:優化了田所選字窗的橫向佈局模式的排版間距算法,使其在行為上盡量與 IMK 橫向矩陣選字窗一致。
- 行為:在輸入法偏好設定介面當中嘗試取消廉恥模式的勾選時,現在會給出警告視窗。
- 辭典:例行語彙資料更新+原神語料更新。
- 體驗:新增了幾套用以就地輪替候選字的熱鍵組合:
Shift+↑↓
、(Shift+) PC 選單鍵
、Ctrl+Command+[]
,以應對不同軟體/網站內的使用體驗差異。此舉也是為了應對「Webkit bug 251061」和「Chromium issue 1409762」這兩份故障提報「可能永世無法得到解決」的極端情況。 - 體驗:允許以 Alt+Shift+Enter 將當前組字區以 INMU 格式遞交。例:「意味深」⇨「意 味 深」。該功能在五線譜排版工業處理中文歌詞時會用得上(尤其是 Sibelius)。
- 體驗:就地輪替候選字時,工具提示視窗內會顯示當前候選字詞的字串。
- 體驗:鐵恨注拼引擎更新至 v1.3.2,新增了一些與「ㄓㄔㄕㄗㄘㄙ」有關的注音自動糾正的情形。
- 修正:修復了自 3.0.0 版開始出現的「半衰記憶模組會將任何只有單個漢字長度的單元圖都記住」的故障。從這一版開始,半衰記憶模組對這種情形的做法恢復至威注音 1.7.2 版的方案:不會記憶那種只有單個漢字長度的單元圖(「你他妳她祢她它牠再在」這幾個字除外)。
- 行為:半衰記憶模組現在對任何單元圖僅給出六個小時的半衰期(雙元圖與三元圖的半衰期約為一天)。
- 行為:調整了之前過於激進的不合規按鍵事件攔截處理策略,改為「僅在真的需要往組字引擎內插入內容時做激進判斷」。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:完善了針對 SHIFT 鍵單獨敲擊行為判斷模組的使用方法。偏好設定內的開發道場當中的相關選項因此而被淘汰、移除。
- 修正:改良了各種修飾鍵在單獨敲擊時的 NSEvent 前置邏輯處理流程。
- 體驗:考慮到部分人群的使用習慣,現允許單獨啟用左 SHIFT 鍵的中英切換功能。
- 體驗:允許使用 JIS 鍵盤的英數鍵來切換中英文模式。該功能沒有最低系統版本限制。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:修復了(自 3.1.1 版開始的)田所選字窗右鍵選單控頻/刪詞功能故障。
- 修正:更正了「是否允許選字窗使用右鍵選單」的條件判定。
- 行為:針對 Shift 中英文切換模組追加了一些按鍵條件判定,以試圖減少某些誤判情形。
- 辭典:例行語彙資料更新+原神語料更新。
- 修正:在輸入法狀態為空時,停止處理 Emacs 熱鍵。這可以避免包括「Ctrl+V」在內的相關熱鍵「會輸入垃圾字元」的問題。
- 行為:允許使用者改用由 libvChewing-data 部署在輸入法沙箱目錄內的原廠辭典檔案。該特性會在未來威注音輸入法專案(萬一)終止維護時派上用場。
- 體驗:SwiftUI 新版語彙編輯器新增幫助說明彈窗按鈕、方便檢閱內容填寫範例。Cocoa 版語彙編輯器仍以工具提示來行使該功能。
- 辭典:例行語彙資料更新+原神語料更新。
- 體驗:對 txt 格式的使用者辭典檔案的分析引擎做了運算效率調整,現在只需要消耗不到 50% 的時間就能完成載入。
- 行為:針對浮動組字窗與工具提示視窗補上了對當前書寫方向上下文的強制判定時機條件。
- 研發:從態械系統將對書寫方向模式的記錄功能盡數移出、全部遷移至會話管理模組。
- 辭典:例行語彙資料更新+原神語料更新。
- 體驗:在就地輪替候選字時,輸入法現在會藉由工具提示視窗顯示當前的輪替候選字順序編號。
- 辭典:例行語彙資料更新+步天歌繁簡轉換語料庫更新。
- 體驗:給注音反查視窗新增了熱鍵:「Ctrl+Option+/」叫出反查視窗,且該視窗可以用「Command+W」關閉。該熱鍵可以在偏好設定內停用。
- 體驗:調整了針對 macOS 10.14 為止的系統的 Cocoa 版偏好設定視窗的一些佈局,使之與威注音 Aqua 特別版的偏好設定介面佈局一致。
- 體驗:調整了輸入法內各種視窗出現時的視窗位置設定命令的執行時機。現在 Cocoa 版偏好設定視窗會一開始就顯示在右上角。
- 體驗:允許在選字狀態直接用「Shift+前後方向鍵」切換到標記狀態,省得再摁一次這個熱鍵組合。
- 辭典:例行語彙資料更新。
- 修正:修復了在重新點開 Cocoa 版語彙編輯器視窗時「編輯器內沒有自動載入資料」的故障。
- 修正:糾正了在以 (Shift+)Ctrl(+Option)+Command+Enter 就地遞交注音/拼音(或 HTML Ruby 注音/拼音)時的一些計算失誤。
- 修正:糾正了在 Ctrl+Option+Command+Enter 就地遞交 HTML Ruby 注音/拼音時「每個詞內的讀音之間的間距可能過大」的問題。然而有例外:對於字數與讀音數不相等的詞語節點,該問題無法解決。
- 修正:修復了在鞏固上下文時的作業範圍計算失誤。該失誤此前一直存在,只是非常難以觸發。
- 行為:在就地輪替候選字時,不再觸發使用者半衰記憶模組的觀測行為。
- 體驗:田所選字窗邊緣配色調整:在 macOS 黑暗介面模式下使用與 NSPanel 一致的(黑色)視窗邊緣顏色。
- 研發:因應部分上述功能修正需求,天權星組字引擎更新至 2.5.1 版,統整了游標跳轉表格的計算方式(詳見
[Node].cursorRegionMap()
),且新增了用以輔助計算漢字讀音陣列的方法(詳見[Node].smashedPairs()
)。 - 研發:因應部分上述功能修正需求,鐵恨注拼引擎更新至 1.3.1 版,精簡了某些工具函式的職能,將相關的陣列計算交給輸入法與組字引擎。
- 研發:精簡了就地候選字輪替函式的方法。
- 辭典:例行語彙資料更新。
- [SP1] 修正:解決了在 2.9.x 某版當中不慎引入的「剛剛切換到縱排輸入模式時,輸入法不能及時認識到該狀況」的故障。
- [SP1] 體驗:新版使用者語彙編輯器現在會在使用者點按「整理」按鈕時按需載入非當前繁簡體模式的核心語彙庫資料(之前則是需要你先手動切換一遍簡體中文輸入、或者關掉按需載入的功能)。
- [SP1] 研發:移除了在語言模組總成部件當中的一些重複的過程函式。
- [SP1] 研發:天權星組字引擎更新至 2.5.0,引入了 C# 版天權星引擎 2.5.0 所做出的些許修正(主要與參數防呆判定有關)。
- 體驗:新增注音反查功能,且允許在不啟用全字庫輸入模式的情況下查詢只有全字庫模式才可以輸入的漢字。
- 體驗:除了獨立的 NSAlert 訊息確認視窗、警告視窗以外,輸入法自身的視窗現在預設會在螢幕的四周顯示。這是為了防止這些視窗擋住位於螢幕中心的 NSAlert 視窗。
- 體驗:輸入法選單文字格式略有調整。
- 修正:解決了「某些視窗會重複顯示」的故障。
- 辭典:從這一版開始,哪怕不啟用全字庫輸入或康熙繁體中文模式,也可以輸入像是「啓、爲」這樣的少數當代繁體中文罕用字。
- 辭典:少許例行語彙資料更新。
- [SP3] 修正:解決了 SwiftUI 版使用者語彙編輯器的正文編輯區域的行高不等高的故障。
- [SP3] 修正:解決了 SP2 版在引入正文區域工具提示時對 SwiftUI 版使用者語彙編輯器的正文編輯區域帶來的故障。因此,不得不針對 SwiftUI 版使用者語彙編輯器犧牲掉這個工具提示。
- [SP3] 修正:解決了 Cocoa 版使用者語彙編輯器在關閉時部分記憶體釋放不充分的問題。
- [SP2] 體驗:針對新版使用者語彙編輯器的辭典正文編輯區域和權重填寫區域均新增工具提示、來指導使用者該怎樣填寫內容。
- [SP2] 體驗:當原廠詞庫尚未載入完畢的時候,現在輸入法不再阻攔功能鍵的輸入(包括空格鍵在內)。
- [SP2] 修正:修復了輸入法在修改過使用者語彙目錄之後「不自動讀入新目錄的內容」的故障。該故障存在於截至 3.0.0 SP1 版為止的所有版本的威注音輸入法內。
- [SP1] 修正:解決了 SwiftUI 版偏好設定內的語彙編輯頁面當中的正文輸入區域「在被滑鼠點過之後,已經輸入的內容變化會丟失或錯亂」的故障。
- [SP1] 行為:令 SwiftUI 版偏好設定內的語彙編輯頁面當中的「存檔」按鈕始終可用,使得其與 Cocoa 版的行為一致。
- [SP1] 體驗:在偏好設定內的語彙編輯頁面當中,允許在摁著 Option 鍵點「...」按鈕的時候呼叫 macOS 內建的文字編輯器來開啟當前編輯的辭典檔案。
- [SP1] 行為:對 SwiftUI 版偏好設定內的語彙編輯頁面的視窗邊緣佈局參數做了調整,稍微擴大了編輯區域的顯示面積。
- [SP1] 體驗:在偏好設定內的語彙編輯頁面當中,「整理」按鈕現在會自動檢查既有內容是否在詞音配對上是否與原廠辭典內容重複、且會在對應行尾自動追加重複註記,方便使用者自行維護其內容。該特性僅會在「自訂語彙」這個辭典類型當中生效。
- [SP1] 研發:在倉庫內補上了天權星組字引擎 v2.4.0 的 README.md 說明檔案。
- 體驗:針對 macOS 10.15 開始的系統專用的 SwiftUI 偏好設定面板新增了「語彙編輯」頁面。已知問題:
- 無法用 Tab 鍵在參數輸入格之間輪流切換。
- 在 macOS 10.15 系統下不支援 Command+S 熱鍵存檔的行為。
- 在 macOS 10.15 & macOS 11 系統下無法在「當前辭典檔案發生了來自該編輯器外部的修改」之後自動載入更新的內容。
- 體驗:針對 macOS 10.13 - macOS 10.14 專用的 Cocoa 偏好設定面板新增了「語彙編輯」頁面。與 SwiftUI 版的差異如下:
- 可以用 Tab 鍵在部分指定的參數輸入格之間切換。
- 始終支援 Command+S 熱鍵存檔的行為。
- 始終支援在「當前辭典檔案發生了來自該編輯器外部的修改」之後自動載入更新的內容,且同樣允許使用者暫時關掉該特性。
- 因技術能力所限,正文編輯區的文字更動事件偵測功能暫時無法實現,所以就將「存檔」按鈕設為「始終可用」。
- 體驗:盡量優化了 SwiftUI 版偏好設定畫面的鍵盤頁面的操作反應速度。現在,在修改選字鍵與鍵盤熱鍵有關的設定的時候,畫面不會再出現遲鈍的情況。(但與鍵盤佈局和注音排列的部分的遲鈍問題仍暫未找到解決辦法,只能回頭再調查了。)
- 體驗:移除了 SwiftUI 和 Cocoa 版偏好設定畫面的 Windows Aero 毛玻璃特效,藉此使得文字輸入框當中的提示字串更容易看清。
- 體驗:針對 macOS 10.15 開始的系統專用的 SwiftUI 偏好設定面板移除了開發道場當中的「編輯」按鈕。
- 體驗:移除了可能在某些電腦上死活都無法執行的舊版獨立型威注音語彙編輯器應用(因為原因始終無法查明)。
- 相關選單命令會直接藉由新彈出的 Finder 視窗告知使用者要修改的檔案的位置。
- 摁住 Alt 再點選單命令的話,可以藉由系統內建的 TextEdit 應用來開啟相關的辭典檔案。
- 體驗:允許以 Ctrl+Shift+Command+Enter 遞交以西文半形減號相連的注音字串。
- 體驗:修正了蜂鳴音效檔案的音質缺陷。
- 行為:不對 Spotlight 與 Raycast 啟用田所選字窗滑鼠右鍵選單,藉此迴避一個無法解決的 SwiftUI 行為缺陷。
- 行為:從現在起,在輸入法尚未完成原廠詞庫載入的情況下,輸入法不會接收處理文字輸入事件(直至載入完畢)、且會在傳入這類鍵盤事件時給出工具提示。
- 研發:簡化了 LMMgr 語言模組管理器內的檔案路徑存取處理方法。
- 研發:所有視窗的優先顯示方法均改為
NSApp.activate(ignoringOtherApps: true)
。 - 研發:因應新版使用者語彙編輯器介面的功能需求,LangModelAssembly 語言模型總成模組做了功能升級。
- 研發:輸入法本體對讀音索引鍵的處理方式由 String 改為 [String]。天權星組字引擎因此也做了對應的升級。鐵恨注拼引擎只修改了函式名稱,且相關的升級計畫暫時擱置;語言模組總成部件暫時只做了對外相容處理,相關的內容升級暫無必要。
- 辭典:例行語彙更新,另繼續新增部分原神語料。
- 體驗:自現在起,田所選字窗藉由滑鼠右鍵對指定候選字詞進行控頻或排除操作時,選字窗會持續顯示,且不會再強行遞交當前組字區內容。但有一個例外情形:你排除了這個單字讀音下唯一的一個候選字詞,此時會強行遞交當前組字區內容+重設組字引擎,以免遇上組字引擎崩潰的故障。
- 體驗:自現在起,藉由標記模式進行就地增刪詞/就地控頻的操作行為會立刻生效。但有一個例外情形:你排除了這個單字讀音下唯一的一個候選字詞時,已經輸入的相關內容不會發生變化,只會影響你新輸入的內容。
- 研發:天權星組字引擎升級至 v2.3.1,引入了「允許更新組字區內所有節幅內的所有節點內的單元圖陣列資料為最新的資料」這一全新特性、以實現上述產品體驗。
- 為了防止組字引擎崩潰,當語言模組引擎不再針對某些索引鍵提供結果的時候:
- 如果該節點的索引鍵陣列只有一個讀音的話,則該節點會被放置處理。
- 如果該節點的索引鍵陣列有多個讀音的話,則該節點會被移除。
- 為了防止組字引擎崩潰,當語言模組引擎不再針對某些索引鍵提供結果的時候:
- 辭典:全字庫資料更新至 2022-12-01 版;另附少量原神語料更新。
- [SP1] 修正:回退了 2.9.7 首發版引入的某處設計,使得輸入法得以像 2.9.6 版一樣與 Safari 完全相容。
- [SP1] 修正:解決了磁帶模組在某些情況下會雙倍佔用記憶體的問題。
- [SP1] 修正:解決了在就地切換繁簡輸入模式時「不能正常遞交既有的組字區內容」的故障。
- [SP1] 體驗:某些工具提示現在會擁有略微更久的螢幕顯示滯留時間。
- [SP1] 體驗:允許在田所選字窗內使用滑鼠右鍵選單對具體的候選字執行控頻或排除操作。該功能乃田所選字窗限定功能,對波浪符號選單無效,對聯想字詞無效,對分類符號選單無效。
- [SP1] 體驗:在就地增刪詞操作結束時的工具提示視窗現在會以配色區分不同的操作結果。
- [SP1] 研發:將非當前會話控制器內的田所選字窗副本與輸入調度模組副本都 nil 掉,以節省記憶體佔用。
- [SP1] 研發:優化了「檢測當前輸入環境是否為縱排輸入」與「檢測當前客體是否為輸入法自身的視窗」的次數與情形。
- [SP1] 研發:考慮到某些極端情形(比如巨型磁帶等),從這次更新開始威注音的記憶體佔用上限閾值提升至 512MB。到了這個限制時,威注音會自動重新啟動。一般情況下,不記入使用者語彙資料帶來的記憶體佔用的話,威注音佔用的記憶體空間大概是 80~110MB。
- 修正:解決了自 2.8.0 版以來田所選字窗一直存在的(與 SwiftUI 利用方法有關的)嚴重的記憶體洩漏問題:該問題會導致 2.9.6 版為止的田所選字窗在視窗消失的時候不能正常釋放記憶體空間、且無法重複利用之。
- 體驗:允許就所有客體應用共用「Shift 中英文模式切換」的開關狀態。該功能預設情況下是不啟用的,請自行在輸入法偏好設定內按需調整相關設定。
- 體驗:允許在組字區內「有且僅有尚未完成拼寫的注音/字根」的情況下以 Ctrl+Command+Enter 遞交注音文/字根。這有助於輸入那種並不在輸入法辭典內的注音(組合)。
- 體驗:哪怕沒有啟用半形標點模式,從這一版開始也可以在某些符號按鍵的選字窗內找到對應符號的半形版本。該功能僅對輸入法內建的原廠的標點符號定義資料有效。這個過程是根據原廠辭典的內容自動轉換來進行的,所以藉由威注音語彙庫的原始檔案看不到差異。
- 體驗:針對 macOS 10.15 開始的偏好設定介面的「開發道場」頁面新增了「語彙置換模式」的圖形介面切換開關。迄今為止「摁住 Alt 鍵再點輸入法選單」的方法仍舊可用。
- 辭典:例行語彙更新,另繼續新增部分原神語料。
- 修正:針對會話控制器取消了自 2.8.8 版以來引入的副本管理方法,藉此解決自該版以來一直存在的記憶體洩漏故障(同時影響到 Intel 與 Apple Silicon 機種)。
- 修正:修正了「安裝程式不會自動結束威注音語彙編輯器」的故障。
- 修正:磁帶模式現在不會因為失手先敲了花牌鍵就把組字區提前遞交掉。
- 體驗:威注音現在會在自身的記憶體佔用量超過 300MB 的時候自動重啟輸入法,屆時會給出 macOS 系統通知提示(會被專注模式與睡眠模式擋住的那種提示)。
- 體驗:就地加詞刪詞調頻成功時,現在會出現對應的工具提示。
- 研發:因為取消了會話控制器模組的副本管理設計(也就是說沒有跨副本干涉的能力了),於是這次換了一個新方法來解決 2.8.8 版試圖解決的「在剛剛切換到某個 App 就呼叫波浪鍵符號選字窗時、選字窗會突然消失的問題(此時輸入法仍處於選字狀態)」的問題:將相關的解決步驟放在 inputMode.didSet() 當中,這樣可以藉由 setValue() 來執行。原理:setValue() 一定會在非當前客體 App 對應的會話控制器模組副本的 deactivateServer() 之後才執行。
- 辭典:例行語彙更新,另繼續新增部分原神語料(包括原神生僻字)。
- [SP2] 修正:解決了「在切換繁體/簡體輸入模式時,會將尚未完成組合的注音/字根內容遞交出去」的故障。
- [SP2] 修正:解決了「剛剛叫出 Spotlight 敲字時,敲入的頭幾個鍵始終會被提前遞交」的問題。該問題自 2.9.5 GM 版不慎引入。
- [SP2] 研發:重構了 2.9.5 GM 與 SP1 當中與 SessionCtl 有關的全部的內容修改,且移除了某些本該避免的重複處理。
- [SP1] 修正:解決了自動更新檢查模組在按排程檢查更新時會謊報新版本通知的問題。
- [SP1] 修正:解決了「在敲了諸如 F1-F12 等保留鍵的時候,已經顯示的選字窗可能會重疊顯示、且持續殘留在螢幕上」的問題。
- [SP1] 研發:自 InputHandler 移除了全部的在按鍵報錯時觸發的「重新切換至目前原有的狀態」的行為,因為只會帶來負面效果。
- [SP1] 研發:現在,在使用田所選字窗時,如果啟用了輸入法的偵錯模式的話,則每次高亮選擇某個候選字的時候、都會在 console.app 內實時印出目前候選字的對應的統一碼編號及字元介紹說明。
- 修正:這次終於徹底修復了「在輸入法重啟之後,除非重新切換輸入法或當前視窗,否則無法立刻使用」的故障。
- 修正:修復了在某些 Apple Silicon 機種當中在 Safari 當中迅速切換頁籤時的輸入法未能及時就緒的問題。
- 體驗:更換了一套更容易辨識的輸入法選單圖示。
- 體驗:在啟用「敲字時自動糾正讀音組合」時,鐵恨注拼引擎現在會將「ㄩㄛ」自動糾正為「ㄨㄛ」。
- 研發:調整了 SessionCtl 會話控制模組的 (de)activation 控制方式,使得該狀態可追蹤、可用來專門應對。
- 研發:將 SessionCtl 當中的 (de)activateServer() 與 setValue() 函式的全文內容均做了 GCD 處理,提升輸入法在某些場合下的的反應速度。
- 辭典:例行語彙更新,另新增部分原神語料(包括原神生僻字)。
- [SP2] 修正:修復了「藉由 Ctrl+Command+Enter 熱鍵試圖遞交漢語拼音時,本該是空格的連字符卻變成數字 1」的故障。該故障自 2.9.4 SP1 版不慎引入。
- [SP2] 修正:修復了 2.9.4 首發版引入的「Shift+Space 無法在輸入法為空狀態的時候輸入全形空格」的故障。
- [SP2] 行為:自 2.9.4 SP2 版開始,威注音不再原廠隨贈「Alt(Option)+符號鍵」的選單內容。預設情況下,該熱鍵組合會直接輸入符號鍵原本代表的字元。您也可以藉由編輯威注音自訂語彙的方式、針對「_punctuation_list」索引鍵自行擴充自己想要的選單內容。詳情請洽威注音輸入法官方網站近期更新的說明手冊。
- [SP2] 行為:允許「Alt(Option)+符號鍵」在選字窗內反向輪替行/列。
- [SP2] 研發:移除了自 2.4.0 版換用單結構態械引擎以來一直名存實亡的 .ofNotEmpty() 狀態。
- [SP2] 研發:簡化了對使用者語彙濾除表的內容的套用流程。
- [SP1] 修正:移除了所有在磁帶模式下不需要進行的拼音注音轉換。
- [SP1] 修正:修復了 macOS 10.13 - 10.14 系統下無法在偏好設定視窗內修改注音排列(與拼音種類)的陳年故障。
- [SP1] 修正:修復了「無法就許氏鍵盤/倚天二十六鍵/星光/酷音大千二十六鍵正確處理陰平聲調輸入事件」的故障。該故障在 2.9.4 首發版當中不慎引入。
- 修正:糾正了鐵恨注拼引擎在拼音模式下接收注音音素資料登記時「沒能自動更正拼音輸入槽的內容」的設計缺陷。
- 修正:修復了拼音輸入模式與星光注音排列「無法正常處理某些被用作陰平聲調輸入鍵的數字鍵輸入行為」的故障。
- 修正:修復了許氏鍵盤等「沒有用到數字鍵的」動態注音排列「無法直接輸入數字」的問題。
- 修正:從現在起,輸入法會「阻止動態鍵盤佈局當中的注音文被原樣遞交出去」,改為遞交 ABC 鍵盤佈局的對應內容。
- 修正:修復了在「用小鍵盤敲數字」時「會忘記事先遞交既有組字區的內容」的問題。
- 修正:修復了在「摁著 Shift 敲直接遞交出去的英文字母」時「會忘記事先遞交既有組字區的內容」的問題。
- 修正:糾正了與「呼叫選字窗」的按鍵事件判斷邏輯當中的不合理的內容。
- 修正:從現在起,偏好設定內「在遞交時清理未完成拼寫的讀音」選項對磁帶模式「未完成拼寫的字根」亦生效。
- 體驗:將「在遞交時清理未完成拼寫的讀音」選項更名為「……未完成拼寫的讀音或字根」。
- 行為:在 Shift / CapsLock 切換中英文等場合會觸發 resetInputHandler()。經過仔細考量之後,決定在 resetInputHandler() 過程當中始終遞交既有的內容(也就是無視當前客體的 IMKTextInput 黑名單判定)。這樣會方便使用者進行中英文混輸。
- 研發:稍微調整了 console.app 某些偵錯記錄當中的內容種類豐富度。
- 辭典:例行語彙更新。
- [SP2] 行為:對整個輸入法的任何可能會產生意料之外的換行符的情形均做了封堵處理。
- [SP2] 行為:就所有反查結果自動濾除其中的任何形式的換行符。
- [SP2] 行為:本次更新已禁止所有語言模組在給輸入法傳送資料時摻入任何形式的換行符。
- [SP2] 修正:解決了「磁帶模組在換插磁帶時不會先清理既存的反查辭典」的問題。
- [SP2] 修正:修復了「磁帶模組無法正確處理以 CRLF 換行的磁帶檔案」這一設計缺陷。
- [SP1] 行為:現可在輸入法偏好設定的磁帶模式設定頁面內決定「是否在已經敲出最長可能碼的時候自動組字」。在啟用該功能的情況下,哪怕組筆區未滿,只要輸入法發現「不存在以當前輸入內容開頭的其它更長的其它碼」,就會自動組字。該功能可能與嘸蝦米輸入法的既有使用者群體的習慣相違,但卻也可能對嘸蝦米輸入法的初學者而言非常友好。
- [SP1] 行為:在停用「在已經敲出最長可能碼的時候自動組字」的情況下,如果在用磁帶模式敲字時出現組筆區內容已滿的情況的話,則組筆區會在接受新的字根按鍵訊號輸入時自動清空。
- [SP1] 行為:田所選字窗內的字根反查結果現在會先按照「該字根碼對應的結果數量多寡」由少到多進行排序、再按照字根字串的由短到長的長度來排序,最後依磁帶內的行列先後順序排序。
- 體驗:田所選字窗在 macOS 10.15 開始的系統(macOS 11 & 12 因系統 Bug 除外)下,哪怕不啟用開發道場的 langIdentifier 開關,也可以實現「在不同的簡繁模式下,用不同區域的字型來顯示候選字」特性。
- 修正:糾正了在全新安裝威注音輸入法且緊接著設定磁帶目錄之後「不會自動重新載入磁帶」的問題。
- 修正:糾正了某些 NSAlert 警告視窗在顯示時的音效播放時機。
- 修正:糾正了 LMInstantiator (語言模組副本化模組) 的函式 hasUnigramFor() 在某些情況下會謊報在庫情況的故障。
- 修正:改良了田所選字窗的排版設計。現在,在字根反查結果過多時,選字窗的排版不再崩壞。註:縱排矩陣選字窗仍會根據反查結果的多寡來調整視窗本身的寬度。
- 修正:藉由給天權星組字引擎引入的全新的保險設計,讓輸入法在插入「實際上不會有辭典結果」的讀音鍵的行為不會再導致爬軌操作而崩潰。該保險設計為:在插入讀音鍵的時候,如果 update() 過程當中沒有新增任何節點的話,則判定且回饋失敗的操作結果、且將組字器的節幅陣列恢復到「剛好要執行讀音鍵插入操作」之前的狀態。
- 研發:嘗試按照 IMK 的要求給 IMK 選字窗也引入了顯示字根反查的功能。但該功能實際上並不能生效,因為 IMK 給出的 API 是空殼函式、裡面沒有任何會去執行的內容。該問題由 Mzp 於 2017 年提報給 Apple(Radar: 34911503),然而到現在都沒有被修正。於是,截至目前為止,字根反查結果仍舊只會在田所選字窗內顯示。
- 辭典:例行語彙更新。
- 體驗:優化了磁帶資料的載入流程與時機。現在用熱鍵切換磁帶模式開關時不會再始終重新載入磁帶。
- 體驗:針對田所選字窗引入了字根反查顯示支援,會在該功能已啟用(預設情況下會啟用)且有反查結果的情況下、將反查結果顯示在選字窗的下方。該功能僅會在橫排輸入時生效,因為縱排輸入時田所選字窗所採用的最小精簡佈局並無空間可供反查結果來顯示。
- 體驗:調整了縱排輸入時田所選字窗所採用的最小精簡佈局的一些介面設計。
- 修正:修復了磁帶模組「無法正確處理由多個空格分欄的 CIN 磁帶檔案」的設計缺陷。
- 辭典:例行語彙更新。
- 體驗:磁帶模式新增對 CIN2 格式的資料讀入支援。然而,對 CIN2 特有的資料類型的運用,目前僅實現了對花牌鍵(wildcard key)以及單漢字字頻的支援。
- 體驗:磁帶模式新增花牌鍵模式。在 CIN2 檔案內有定義「%wildcardkey」且在「%keyname」章節沒有用到這個鍵的情況下,這個鍵才會生效:可以用來在僅輸入一個或多個不完全的起始碼的情況下提前確認漢字輸入、然後再在選字窗內選字;起始碼不能是花牌鍵。該功能可以讓五筆輸入法的磁帶擁有「萬能 Z 鍵」的功能、也能讓嘸蝦米輸入法的磁帶擁有萬能「;」鍵的功能,只需要在五筆的磁帶檔案頭插入一行「%wildcardkey z」、在嘸蝦米的磁帶檔案頭插入一行「%wildcardkey ;」即可。
- 體驗:因應某些使用者以 Micrsoft Excel 整理磁帶檔案內容的情況,磁帶模組會在檢測到當前行存在 Tab 符號的時候優先使用 Tab 符號來分欄(預設情況下是以空格鍵來分欄)。
- 體驗:在選擇磁帶檔案時,現在也可選擇以「.CIN2」和「.VCIN」結尾的檔案。
- 體驗:田所選字窗的每個候選字詞的內周邊距(padding)由 4 改為 3,讓選字窗顯得稍微更緊湊些。
- 體驗:輸入法的預設選字窗尺寸由 18 改為 16,與 macOS 內建注音輸入法一致。
- 體驗:每次重新啟動輸入法(或者剛開機)的時候,如果沒有開啟磁帶模式的話,則會先不急著載入磁帶內容。
- 修復:糾正了 2.9.0 版引入的「磁帶模式會被滲入輸入法自身的 plist 原廠注音詞庫的內容」的 bug。
- 修復:修正了某些情況下「在更換磁帶之後需要重啟輸入法」的設計缺陷。
- 修復:修正了上一版引入的一些不太合理的日語介面翻譯。
- 修復:糾正了對於無效磁帶目錄的警告視窗當中的某些文本內容的本地化失效的問題。
- 修復:修正了「在使用 Apple 動態注音鍵盤佈局時會在磁帶模式下藉由未定義的按鍵擅自敲出注音符號」的問題。
- 修復:修正了「磁帶模組會將章節末尾標記也添入與該章節對應的資料表內」的問題。
- 研發:對所有子語言模組由 struct 改為 class,試圖藉此降低少許記憶體佔用。
- 研發:令輸入法擁有了在空狀態下顯示臨時工具提示的能力。
- 研發:針對磁帶模組移除了對於「OpenVanilla 特有的 CIN 檔案開頭」的判斷。
- 辭典:例行語彙更新。
- 體驗:新增以「遠野」CIN 資料引擎驅動的磁帶模式。該模式類似於雅虎奇摩輸入法的 CIN 支援,允許使用者使用手頭的五筆、倉頡、嘸蝦米碼表來擴充威注音的筆畫輸入特性。然而,由於威注音輸入法不打算為此犧牲威注音自身的輸入體驗,所以至少目前階段的磁帶模式的使用體驗恐無法令 RIME 與 OpenVanilla 既有使用者群體輕鬆適應。此外,對於諸如「五筆輸入法的萬能Z鍵」這樣的萬能鍵,威注音目前無法提供支援,還請有心人對 CIN 檔案本身的設計上多花點心思(一定可以做到)。
- 體驗:新增了更便捷的縱排省略號輸入支援。現在敲「Alt+;」可以輸入縱排省略號。
- 體驗:田所選字窗右側內邊距略有增寬,藉此改善視覺平衡。
- 體驗:從現在開始,在手動再次啟用使用者語彙資料夾內容監視的功能的時候,會立刻重新載入使用者語彙檔案。
- 研發:糾正了 IMKUtils 工具套裝當中的幾處與 TISExtension 有關的類型安全處理失誤。
- 研發:針對 macOS 10.13 與 macOS 10.14 實驗性地提供了在系統偏好設定當中的輸入法設定面板,但僅用來顯示一些介紹文字。由於 macOS 10.15 開始迄今仍未解決的 bug,該功能無法在 macOS 10.15 開始的系統下生效。
- 辭典:例行語彙更新。
- 體驗:客體管理器現允許同時選取多個用以登記的客體 App。
- 研發:將 SessionCtl 內所有與選字窗處理有關的按鍵處理邏輯均移至 InputHandler 模組。
- 研發:針對 InputHandler 模組進行了大調整,移除了全部的非必要的 lambda expression。之前依賴 lambda expression 傳遞的指令由身為 delegate 的 SessionCtl 直接接收執行。
- 研發:糾正了田所選字窗套件的一處單元測試錯誤。
- 研發:針對 SessionCtl 的某一處不需要鞏固上下文的情形,不再鞏固上下文。
- 研發:簡化了 SessionCtl 在處理 .ofCommitting 狀態時的工序。現在 .ofCommitting 狀態在處理完畢之後會自動將當前 SessionCtl 會話的狀態轉為 .ofEmpty()。
- 辭典:例行語彙更新。
- [SP1] 修復:撤回了 2.8.7 版對鐵恨引擎引入的多餘的(且錯誤的)修改。
- 體驗:使田所選字窗在聯想詞模式下的視窗底部配色透明度始終為「不透明」,無論作業系統版本。(該問題影響範圍僅為 macOS 10.15 與 macOS 11。)
- 修復:糾正了 2.8.7 版引入的「重啟輸入法之後非得切換當前視窗才能用」的 bug。
- 修復:糾正了在剛剛切換到某個 App 就呼叫波浪鍵符號選字窗時、選字窗會突然消失的問題(此時輸入法仍處於選字狀態)。修復原理參見下文幾處「研發」更新。
- 修復:糾正了迄 2.8.7 版為止 SessionCtl 無法正確處理 deactivated 狀態的故障。修復原理參見下文幾處「研發」更新。
- 研發:針對所有單副本 NSWindowController 啟用 shared 副本設計,減輕 AppDelegate 的容量。
- 研發:讓田所選字窗在首次初期化的時候就自動從 UserDefaults 讀入候選字窗尺寸。
- 研發:給 SessionCtl 引入了可以存取且管理所有自身副本的能力。
- 研發:將 SessionCtl 的所有「能顯示的視窗」相關的控制型別副本都由靜態副本改為動態副本、藉此規避任何由「在切換到新的 App 開始敲字的那一刻之後、之前的 App 對應的 SessionCtl 副本才剛開始 deactivateServer()」可能帶來的不利影響。多個輸入法客體控制會話副本不會再互相干涉彼此的動態變數。倒是有 IMK 選字窗這個唯一例外:由於 IMK 選字窗被 Apple 強制套用 InputMethodKit 內部的共用副本,所以威注音專門針對這種情況引入了特殊的選字窗狀態復原處理。
- 研發:將 App 格式的安裝程式的源碼拆分成幾個 Swift 檔案,提升建置速度。
- 研發:將 App 格式的安裝程式當中的 ArchiveUtils 組件移除,因為完全用不到:直接將包含輸入法 App 本身的整個 App 格式的安裝程式做歸檔處理之後送交 Apple 公證即可。
- 研發:將 App 格式的安裝程式當中的 appBundleTranslocatedToARandomizedPath() 的 Objective-C 版原始作者 Credit 由 Zonble 糾正為 Lukhnos Liu 與 MJHsieh。該函式目前已被 Rob Mayoff 用 Swift 重寫。
- 辭典:例行語彙更新。
- 其它:調整了軟體視窗當中對上游內容的著作權標記方式。
- 由於威注音輸入法現在不再含有任何小麥注音的現成內容(能重寫的元件都重寫了),所以將上游著作權標記由「該專案由 OpenVanilla 小麥注音專案衍生而來」改為「該專案曾由 OpenVanilla 小麥注音專案 (MIT-License) 衍生而來」 。
- 無論是 App 格式的安裝程式、還是輸入法軟體本體的關於視窗,都會在授權合約文本的末端再追加顯示 2022 年 01 月 19 日版的上游授權合約原文。(之前僅在 PKG 格式的安裝程式的安裝步驟當中顯示。)
- 在 App 格式的安裝程式當中新增「App 格式的安裝程式繼承自 OpenVanilla (MIT-License)」字樣。該安裝程式非小麥注音所特有,而是自 OpenVanilla for macOS 承襲而來。App 格式的安裝程式僅作為備選安裝方式提供,可能會在今後某個合適的時候淘汰處理。
- 由於輸入法內的純 Swift 組字引擎 Megrez 2 用到的爬軌算法取自 Lukhnos Liu 的 C++ Gramambular 2,所以也對此專門做了著作權標記:「爬軌算法:Lukhnos Liu (Gramambular 2, MIT-License)」。需注意:
- 雖然 Gramambular 2 隨小麥注音首發,但不是小麥注音的成分、而是 Lukhnos Liu 的獨立作品,所以並非近期的 Dezonblization 行動的獵巫對象。請勿將 Lukhnos Liu 本人與 OpenVanilla 畫等號。
- 除了程式設計語言以外,Gramambular 2 與 Megrez 2 相比也有很多差異(特別是功能缺失非常多),比如「不支援對就地增刪詞模式的標記用游標的管理」「不支援以節點為單位的普通游標移動」等。
- 修復:修復了被威注音 2.8.6 曝露而出的一處與 Apple 動態注音鍵盤佈局訊號翻譯有關的設計缺陷。
- 該設計缺陷始於威注音 1.2.0。
- 修復原理就是對該訊號翻譯機制進行重新設計。
- 注意:從現在開始,如果你要使用哪個注音排列的話,只需要設定普通話/國音分析器的排列即可。
- 至於基礎鍵盤佈局,則僅會影響到螢幕鍵盤的內容顯示……除非國音分析器被設定為任意一種拼音。
- 修復:因應鍵盤訊號翻譯機制的重新設計,本次更新修復了(2.8.6 版的)在逐字選字模式(ㄅ半模式)下的選字敲字體驗失常的問題。相關體驗恢復至 2.8.5 為止的狀態。
- 修復:修正了一處與 IMK 縱排選字窗有關的選字鍵處理失誤。此前有這個失誤,但不會發作。這次是根除。
- 修復:田所選字窗不再處理在理論上無效的選字鍵事件。
- 修復:不再允許輸入法叫出空白的選字窗(該現象往往發生在辭典尚未完全載入的場合)。
- 修復:修復了(2.8.6 版的)選字窗在跨模式切換時的顯示遲滯問題。
- 體驗:因應鍵盤訊號翻譯機制的重新設計,偏好設定視窗內與鍵盤佈局和注音排列有關的資料值關聯配對限制已被全部解除。
- 體驗:給 macOS 10.15 開始的 SwiftUI 偏好設定視窗新增了能夠迅速設定「大千傳統」「倚天傳統」「漢語拼音」輸入模式的便捷按鈕。
- 體驗:田所選字窗在縱排輸入的場合現只會叫出縱向佈局的單欄選字窗。
- 體驗:田所選字窗的視窗美術風格小調整:圓角+視窗邊緣配色。
- 體驗:田所選字窗縱排矩陣模式不再在窗體最右側繪製分隔條。
- 體驗:經過綜合權衡評估之後,現決定自該版本開始僅對 Shift 英文模式啟用可自訂的英文鍵盤佈局。
- 研發:自整個專案清除了只會被 Voltaire 選字窗用到的對接相容內容。
- 研發:淘汰了 Zonble 的對「選字鍵自訂資料值錯誤」的錯誤處理方法。本次換用的全新的處理方法亦可判斷資料值是否存在無法列印的 ASCII 字元。
- 辭典:例行語彙更新,另外更新了《守望先鋒/鬥陣特攻》的英雄姓名清單(加入了 OW2 的三位新英雄)。
- 修復:重新檢討了所有與 client() 有關的函式、視情況將相關的計算任務分配到新的自由執行緒內。
- 修復:糾正了已被廢版的 2.8.5 SP2 當中不慎引入的「在 Xcode 內敲字時,輸入法反應非常遲鈍」的問題。
- 體驗:因 LINE 不徹底遵守 IMKTextInput 協定、阻止威注音輸入法的內文組字區顯示帶有標記功能的下畫線,所以將 LINE 與 Steam 並列為客體管理對象:強制啟用浮動組字窗。
- 體驗:客體管理視窗介面小調整:在新增客體時,NSAlert 的視窗不至於過長。
- 研發:將田所選字窗的 macOS 10.15 - macOS 11 專用 Backport 版本的內容合併至田所選字窗主封包內,且對內部計算架構做了簡化統整。
以下是從被廢版的 2.8.5 SP2 和 2.8.5 SP3 當中繼承來的更新:
- 修復:針對 macOS 11 為止的系統移除了自 2.8.0 首發版以來新增的所有與 CapsLock 有關的功能。原因:CapsLock 按鍵判定只能在 macOS 12 開始的系統內生效。
- 體驗:在安裝完畢之後提示使用者「在首次安裝之後,得重新登入」。
- 修復:糾正了「在 macOS 10.13 & 10.14 系統下,某些本該關閉的使用者偏好設定參數開關反而被開啟」的問題。
- 修復:糾正了「在使用 Apple 倚天注音鍵盤佈局時,田所選字窗的選字鍵會出現異常」的問題。
- 體驗:現在開始可以藉由輸入法偏好設定來指定田所選字窗的選字鍵所對應的鍵盤佈局(與英數鍵盤佈局綁定在一起了)。
- 體驗:對田所選字窗引入了威注音在此之前所具有的特性:在選字窗內循環翻頁、循環輪替候選字,等。
- 體驗:將輸入法選單的「編輯自訂語彙」重命名為「編輯威注音自訂語彙」,以免與 macOS 原生提供的「編輯使用者辭典」混淆。
- 辭典:對包含有「褐」的詞均新增其陸規審音。另附語料更新。
- [SP1] 修復:糾正了語言模組副本化模組無法處理被降頻過的字詞的問題。
- [SP1] 修復:糾正了降頻過後沒有剔除相關的使用者半衰語彙記憶記錄的設計缺陷。
- 體驗:將田所選字窗移植給 macOS 10.15 和 macOS 11 使用,但無法根據當前的輸入模式使用對應的視窗字型。
- 修復:解決了在系統有故意顯示滾動條的時候的田所選字窗排版異常。
- 辭典:例行語料更新。
- [SP3] 修復:解決了「在開發道場啟用『使用 .languageIdentifier 管理選字窗介面字型』功能、且以字母鍵作為選字鍵」時的介面渲染缺陷。
- [SP3] 修復:解決了在瘋狂重複切換開關時、通知飄窗副本過多導致記憶體洩漏與 CPU 佔用奇高的問題。現在最多只會同時殘留最近四條通知飄窗訊息。
- [SP3] 研發:進一步優化了通知飄窗的副本管理算法。
- [SP2] 體驗:優化了田所選字窗在以 Tab / Space 操作時的操作行為。
- [SP2] 修復:修正了 SP1 某處與田所選字窗有關的配色失誤。
- [SP2] 修復:修正了某個 Swift Package 的依賴項缺失的故障。
- [SP2] 修復:使用大中心配發機制解決了 Caps Lock 切換判定時的追加延遲問題。
- [SP1] 體驗:針對田所選字窗新增縱排矩陣佈局支援(類似微軟新注音 2003 開始的佈局)。
- [SP1] 體驗:允許在輸入法偏好設定內關掉與 Caps Lock 切換行為有關的飄窗通知。
- [SP1] 體驗:偏好設定視窗內容翻新,移除某些與選字窗有關的陳舊選項。
- [SP1] 糾正:威注音輸入法現要求在設定選字鍵時最少 6 個鍵、最多 9 個鍵。不過田所選字窗只會用到 6 個鍵。
- 體驗:淘汰了上游 Zonble 的 Voltaire-Swift 選字窗,改用了威注音獨家的「田所」橫排矩陣選字窗。由於田所選字窗以 SwiftUI 構建、用到了只有 macOS 12 開始才能使用的某些特性,所以 macOS 11 為止的系統只能使用 IMK 選字窗。
- 體驗:優化了通知飄窗對於舊訊息的淡出方式,且新增了「屏蔽同時出現的重複訊息」的特性。
- 體驗:Caps Lock 英數模式新增飄窗通知。
- 體驗:Caps Lock 英數模式也可以在偏好設定內設定專用的英數鍵盤佈局。
- 體驗:例行語彙更新,另附 2022-09-12 版的全字庫資料更新。
- 體驗:徹底重新設計了飄雲通知視窗。新的通知出現的時候將會始終出現在螢幕最右上角,且當時殘留顯示的舊通知的位置會下移+透明淡化。
- 體驗:重新設計了產品圖示。若要區分簡體/繁體輸入模式的話,請以選單圖示的左下角的顏色為準:該顏色與簡繁體模式的對應關係與之前版本一致。
- 研發:將這些組件塞成 Swift Package:飄雲通知視窗、浮動組字窗、工具提示視窗、Voltaire 選字窗。由於 IMK 選字窗依賴 bridging-header,所以無法做成 Swift Package。
- 研發:停用了飄雲通知視窗、浮動組字窗、工具提示視窗的滑鼠點拽位移特性。
- 研發:針對偏好設定模組與語言模組管理單元做了一些小調整。
- 辭典:例行語彙更新。
- [SP2] 糾正:自威注音 2.6.2 SP1 起,威注音這邊已經接獲多起與威注音輸入法安裝位置錯亂有關的問題提報。考慮到當時實際上想要解決的問題與 pkg 安裝包的處理無關、而與 AppDelegate 的行為順序以及 IMK Connection 有關,所以就趁這次 2.7.0 SP2 更新將 PKG 安裝包回退到 2.6.1 的行為模式:對所有的 macOS 版本均啟用「將安裝到錯誤位置的檔案自動糾正到正確的位置」的策略。
- [SP2] 研發:當藉由 Shift 鍵啟用英數輸入模式時,輸入法除了 Shift 按鍵模式切換判定以外、不再處理任何按鍵輸入。
- [SP2] 研發:簡化了 ctlInputMethod 當中對 Shift 中英模式切換的某些「屬性資料值變化後置處理」的流程、使其不再累贅。
- 體驗:僅新增了一個功能:在偏好設定介面內允許使用者自己決定在開啟輸入法時是否「按需載入簡繁體模式的原廠辭典資料」。
- 解除了對 macOS 10.13 High Sierra 的 IMKCandidates 封印。但有兩個缺陷無法解決:
- macOS 10.13 內建的 IMK 沒有開放對選字窗文字尺寸的設定功能。
- macOS 10.13 為止的 IMK 橫版矩陣選字窗是沒有「選字鍵」的概念的,所以橫版選字窗只能用單條的樣式。
- 注意:威注音輸入法用 bridging-header 強制曝露的與 IMKCandidates 有關的內部 API 均要求至少 macOS 10.14。
- 研發:因為 Xcode 14 會強制以為所有 Swift Package 的最低系統需求都是 macOS 10.13 High Sierra,所以從這一版開始放棄對 macOS 10.11 和 10.12 的支援。且又由於 NSGridView 的某些進階特性,所以威注音輸入法在這一版開始的實際最低系統需求為 macOS 10.13.4。
- 研發:因應最低系統版本的提升,針對 macOS 10.13 / 10.14 的偏好設定視窗已改用效率更高的 NSGridView 來排版、與 NSStackView 相輔相成。
- 研發:整個專案被大卸八塊、徹底重構,盡可能拆成多個 Swift Packages。
- 這樣可以讓整個專案更易於維護,也可提升專案建置速度。
- 但是 KeyHandler 不能拆出來。原因:KeyHandler 的依賴項 Tekkon 注拼引擎的建置時間特別長(超過 20s),且 Xcode 只會用單執行緒來建置在專案當中用到的 Swift Package。這會導致 KeyHandler 額外佔用單獨的執行緒編譯時間。且 KeyHandler 又是 ctlInputMethod 的依賴項。一旦將 KeyHandler 拆成包,整個專案的建置時間可能又會再延長個十五六秒甚至二十秒。
- 研發:使用了大中心派發機制來提升原廠辭典建置速度與輸入法辭典載入速度。這樣可以讓簡體/繁體雙模式的所有辭典的載入速度都可以同時在一秒中內完成。壞處就是記憶體佔用又變回不到 140MB,除非使用者啟用了「按需載入簡繁體模式的原廠辭典資料」。
- 研發:將偏好設定參數資料值管理模組(PrefMgr,舊稱 mgrPrefs)按照上游 Lukhnos Liu 的想法(而非 Zonble 的 DTO 提案)做成可以副本化的形態,但又與 Lukhnos Liu 的舉例不同:新的 PrefMgrProtocol 可以允許威注音今後在設計單元測試時搭建一個專用的 PrefMgrTestable 型別/結構,只用於 KeyHandler 的單元測試。
- 說一下為什麼不用 DTO:與小麥注音不同的是,威注音目前的按鍵訊號傳輸單位不是單獨的型別,而是 NSEvent 本體。威注音利用 NSEvent.charactersIgnoringModifiers 塞入「該訊號是否來自縱排輸入的情況」已經是對 NSEvent 的最大的可控修改了,且 NSEvent 實際上塞入一個 class object 作為其全新的資料存儲屬性(Swift 無法在 Extension 當中塞入靜態資料存儲屬性)。
- [SP3] 修復:解決了工具提示視窗在某些情況下的內容更新滯後的問題。現在,每當呼叫顯示工具提示視窗時,都會強制對其重新初期化。
- [SP3] 修復:解決了「在偏好設定內修改最短加詞長度之後、非得重新啟動輸入法才會生效」的問題。
- [SP2] 修復:修正了客體管理器視窗在 macOS 10.13 High Sierra 系統下變成黑底黑字的問題(Xcode 14 給 DataTable 預設的配色方案對 macOS 10.13 High Sierra 不相容)。
- [SP2] 行為:PKG 格式的安裝包自現在起不會再在 macOS 12 開始的系統下「對安裝到錯誤位置的檔案進行刪除操作」。原因:迄今為止使用的 PKG 安裝包在截至 macOS 11 為止的系統下確實是有在對錯誤的輸入法安裝位置進行糾偏(從「/Library/」挪至「~/Library/」),且該糾偏步驟可能與 macOS 12.6 的安全特性更新不相容。
- [SP1] 修復:修正了 Sandbox 配置當中有關 Input Method Connection Name 的記錄,解決了在 macOS 10.14 Mojave 系統下無法正常使用的問題。
- 修復:解決了首次安裝威注音輸入法之後「除非手動建立原廠辭典目錄」否則就會一直無限崩潰的問題。
- 修復:解決了「選字窗」「工具提示」「內文組字窗」會在多螢幕的狀態下亂跑的問題。
- 修復:解決了 App 格式的安裝包安裝完輸入法之後、輸入法會被 macOS 的門衛機制隔離掉的問題。
- 辭典:例行語彙更新。
- 體驗:浮動組字窗新增縱排書寫模式支援。因技術限制,該功能僅對 macOS 10.14 開始的系統有效。
- 體驗:從現在起,在「管理客體應用」當中登記的所有客體應用均不會存取到任何來自組字區的內容、直至使用者藉由輸入法手動遞交其內容(手動「上屏」)為止。對於被登記的客體應用而言,任何藉由切換輸入法或切換輸入模式導致的 keyHandler 重設行為,都會導致組字區的內容的直接銷毀、防止客體應用獲取到你沒打算手動遞交出去的組字區內容。有兩點需要特別解釋:
- 該設計有效防止某些客體應用(特別是聊天客體應用與社群網站的聊天發文系統)擅自拿使用者的組字區的內容來做敲字行為預測分析。
- 從軟體行為倫理角度來看,只要不是使用者手動遞交的內容,均不應該被接受文字輸入的應用拿來做基於語意或關鍵詞的分析。不巧的是,macOS 的 InputMethodKit 的內文組字區的內容並不歸輸入法管轄、而是歸客體應用所管轄。是享受內文組字區的方便性呢?還是享受浮動組字窗的安全性呢?這是一種「魚與熊掌不可兼得」的情況。
- 修復:修正了在使用浮動組字窗的時候「可以用英數與符號輸入突破浮動組字窗容量上限」的問題。
- 辭典:例行語彙更新。
- [SP2] 體驗:允許在輸入法偏好設定內專門為 Shift 切換到的英文輸入模式指定鍵盤佈局種類(可以換成 DVORAK 等)。
- [SP1] 修復:使「工具提示」「浮動組字窗」在 non-retina 螢幕解析度下的繪製不再模糊。
- [SP1] 修復:解決了「在 Shift 鍵切換到的英文模式下的時候」波浪符號鍵無法輸入正確的字符的問題。
- 該問題僅會發生在啟用 Apple 大千傳統注音鍵盤佈局 / Apple 倚天傳統注音鍵盤佈局的情況下。
- [SP1] 體驗:改善輸入法選單內某些用詞。
- [SP1] 體驗:現允許在客體管理視窗當中同時選中、刪除多筆記錄。
- [SP1] 體驗:從現在開始,在客體管理視窗登記客體時,如果已經在文字框內手動輸入某些唯一標幟資訊的話,則在點「直接選取…」的時候會先套用這些已經輸入的資訊、才會再顯示檔案選擇視窗。
- 體驗:針對 Steam 預設啟用在此次更新引入的浮動組字窗,會限定只允許輸入最多 20 個讀音的內容數量。
- 想對其它客體應用使用相同的機制的話,請藉由輸入法選單內的「管理客體應用」功能、然後點「登記新客體」再點「直接選取…」、再在彈出的檔案瀏覽視窗當中選擇對應的電玩的 App bundle 即可。該操作對非電玩類應用同樣有效。
- Steam 這十幾年來一直沒有正確處理 IMKTextInput 協定,迄今為止無法正確顯示內文組字區,所以威注音才引入這套機制。
- 注意:因為 Steam 會將完全錯誤的(文字輸入游標所在的)螢幕座標傳遞給系統的 InputMethodKit,所以會導致「選字窗」「工具提示」「浮動組字窗」全部都顯示在螢幕左下角。其餘的不遵守 IMKTextInput 協定的應用可能會將其它的奇奇怪怪的錯誤座標當作「文字輸入游標所在螢幕座標」彙報給 InputMethodKit。這些都不在威注音輸入法可以管控的範圍內。
- 體驗:當某個客體應用已經被威注音啟用 Shift 英數輸入狀態的時候,威注音從現在開始不再主動以飄雲通知視窗提醒使用者。
- 體驗:在就地增刪詞時,被標記的內容除了會有加粗的底線之外、還會像微軟新注音那樣高亮顯示。但該新特性只會在支援該特性的客體應用當中才會被啟用,相關決定權在於客體應用、而非輸入法本身。
- 體驗:略微增加了新版工具提示視窗的顯示內容的行間距。
- 修復:針對有限態械調整了 JIS / 康熙字轉換的邏輯。現在,displayedText 將始終返回原始資料值,以免出現雙重轉換。要轉換的內容只有 ctlInputMethod.commit() 這最後一關、以及要用 setMarkedText 塞給客體應用的 NSAttributedStrings(其內容會在輸入法與客體應用斷開連線時自動遞交)。
- 修復:修正因為 IMK 選字窗的引入而被忽略的 NSInternalInconsistencyException 處理。
- 修復:修正了某些情況下的工具提示視窗位置計算錯誤。該錯誤自近期引入單結構有限態械時不慎引入。
- 修復:優化了整個 IMKInputController.handle(event:) 的訊號處理流程,帶來兩處改進:
- 可使 Shift 中英切換判定也可在 IMK 選字窗現身時生效。
- 減少了 Shift 中英文切換的狀態判定失誤。
- 修復:全專案停止對 NSRect.zero 的使用,改用某個基於野獸常數配置的特殊代替資料值。藉此在全專案消滅 CoreGraphics 零面積繪製錯誤。
- 修復:糾正了新版工具提示視窗在 macOS 10.11 El Capitan 系統下顯示時頂端被切邊的問題。
- 研發:在非標記狀態下,讓有限態械內的標記游標與敲字游標始終同步。
- 辭典:例行語彙更新。
- 修復:修正了「允許就地增刪長度不合規的詞」的問題。該問題乃在 2.4.0 版重構有限態械時不慎引入的設計缺陷。
- 修復:淘汰了 Zonble 的 TooltipUI 工具提示模組,用全新的 NSAttributedTextView 重寫了工具提示視窗。帶來了兩處新改進:
- 使其在縱排輸入時使用縱向排版。
- 然而,因為系統介面字型在啟用「vert」OpenType 排版特性之後會使得拼音、注音、英文按鍵名稱的顯示變得非常糟糕(且 ASCII 半形空格會消失),所以採取了一些措施:
- 在使用英文介面時,始終使用橫排顯示的工具提示。
- 在使用中文或日文介面時,允許使用者在偏好設定內啟用「始終使用橫排顯示的工具提示」。
- 縱排工具提示視窗內的按鍵名稱都使用符號來顯示。
- 縱排工具提示視窗內以全形空格來分隔每個漢字的讀音。
- 縱排工具提示視窗內僅顯示注音、而不顯示漢語拼音。
- 此外,因為 macOS 10.11 有 NSAttributeStrings 的縱排顯示缺陷、且 macOS 10.12 不屬於威注音的產品測試功能保證範圍內,所以:在這兩個版本的系統下,只會出現橫排工具提示、無論你在輸入法偏好設定內是否有這樣設定。
- 使其在任何場合都不會遮住使用者正在輸入的文字。
- 研發:淘汰了 Zonble 的 FSEventStreamHelper,改用僅依賴 DispatchSourceFileSystemObject 的全新的 FolderMonitor 監視模組。由於該模組不會對由所屬應用自身產生的資料夾內容變化行為做監視,所以威注音補上了在每次就地增刪詞之後的「重新讀入使用者語彙」的步驟。這也解決了迄今為止 FSEventStreamHelper 與「威注音的使用者辭典格式自動整理模組」彼此的行為衝突問題。
- 研發:淘汰了 Zonble 的 VersionUpdateAPI,換成同樣用 NSURLSession 重寫了的全新的更簡單的 UpdateSputnik 模組。這樣一來,威注音也實現了「在檢查新版本時,發現沒有新版本」這個情形下的 NSAlert 彈窗提示。
- 研發:當輸入法吃到來自作業系統本身的 nil NSEvent 的時候,之前的修補方案是什麼也不做;而現在的方案則改為「會重設按鍵調度模組」、以應對「在組字區仍舊存在時,藉由 macOS 內建的表情符號視窗輸入符號」這種情形下的可能的錯亂現象。
- 研發:對所有孤立存在(Non-Modal)的 NSAlert 視窗均做了異步處理,防止可能會出現的崩潰情形。
- 辭典:例行語彙更新。
- [SP2] 修復:修復了傳統 Caps Lock 英文輸入模式下無法輸入大寫英文字母的問題。
- [SP2] 體驗:威注音正式宣告對 Emacs 熱鍵的支援(詳見下文),生效範圍包含 IMK 選字窗。
- 體驗:在技術上徹底允許在就地加詞時應對「詞的字數與讀音數量不相等」的情形。該特性得益於此次更新引入的全新的單結構態械系統(見下文)。
- 修復:修正了 ctlInputMethod 的一處可能會吃到「實際上是 nil 的 NSEvent」錯誤。
- 修復:因應 2.3.0 版引入的沙箱特性限制,這次更新調整了在偵錯模式下的 dumpDOT 資料的生成位置。
- 新的位置是:「~/Library/Containers/org.atelierInmu.inputmethod.vChewing/Data/Library/Caches/vChewing-visualization.dot」。
- [SP2] 研發:淘汰了 Zonble 的 Emacs 熱鍵支援算法,改為直接對 NSEvent 開刀。這個新方法顯著減輕了 KeyHandler 的工作負擔,且使得 Emacs 熱鍵對 IMK 選字窗也有效。
- 研發:根據 Mzp 的 InputMethodKit 教材,對 Info.plist 內的某些有問題的參數做了調整。
- 研發:修改了 SymbolNode 系統當中對於其上層符號表節點的處理方式。現在允許在建構 SymbolNode 的時候指定其上層符號表節點。
- 研發:天權星組字引擎升級至 2.1.0 版。
- 新增了對標記模式專用游標的支援。
- 調整了某些參數,防止出現「藉由候選字選中的超長詞的權重可能敵不過被鞏固過的單字權重」的情況。
- 研發:之前有淘汰了 Zonble 的 KeyHandlerInput(也就是迄今為止的 InputSignal) 模組。
- 替代方案:直接擴充 NSEvent、使其符合威注音特有的 InputSignalProtocol。
- 這次更新專門新增了專用的更簡便的自體重構函式,簡化了在重構 NSEvent 副本時的處理步驟。
- 研發:淘汰了 Zonble 的 InputState 多型別有限態械系統。
- 替代方案:威注音全新的 IMEState 單結構有限態械系統,可以與組字引擎和按鍵調度模組協同處理標記模式的範圍運算。
- 所有與標記模式的範圍有關的運算都以 UTF-8 為準。所有 UTF-16 範圍運算都在態械內有對應的動態生成函式。
- 針對標記模式的標記游標的前後移動運算全部交給組字引擎與按鍵調度模組來完成,不再需要 NSStringUtils。
- 就地加詞時的讀音串的原始資料現會藉由按鍵調度模組來運算整理、而不再交給態械本身。
- 整個專案當中對於狀態的類型判定處理終於變得簡單了許多。
- 替代方案:威注音全新的 IMEState 單結構有限態械系統,可以與組字引擎和按鍵調度模組協同處理標記模式的範圍運算。
- 研發:淘汰了 Zonble 的 NSStringUtils(原因見上文)。
- 研發:淘汰了 Zonble 的 InputSourceHelper 模組。
- 替代方案:威注音全新的 IMKHelper 模組、搭配 Mzp 在他的 InputMethodKit 教材當中的 TISInputSource Extension 模組來使用。
- 研發:淘汰了 Zonble 的 OVNonModalAlertWindow。
- 替代方案:直接使用本來就該使用的 NSAlert。
- 辭典:例行語彙更新。
- 體驗:允許在開發道場內徹底停用對 Chrome 系瀏覽器的 Shift 鍵單次擊鍵判定措施。
- 研發:撤掉了迄 2.3.0 版為止所沿用的來自上游 Zonble 的 KeyHandlerInput (InputSignal) 實現,改為針對 NSEvent 進行功能擴充。
- 辭典:例行語彙更新。
- 體驗:允許在切換輸入法或者切換中英文模式的時候「自動將未成字的注音刪除」。該行為承襲自微軟新注音輸入法。
- 體驗:針對縱排輸入情形下的上下文工具提示視窗新增了單獨的窗體座標處理。
- 體驗:修復了以 Shift 切換到英文模式時「摁著 Shift 輸入花括弧或者大於小於號時,會出現全形的空心方引號或者全形逗號句號」的問題。
- 體驗:新增沙箱特性處理。雖然威注音輸入法一向遵循 InputMethodKit 協議、僅處理藉由該協議獲得的鍵盤擊鍵事件。但為了應對「有心人士蠱惑人心、散播與威注音在程式行為道德方面有關的不實謠言」,威注音決心在這次更新當中啟用 Apple 的沙箱處理、作為形式上的進一步自我約束、藉以粉碎任何同質謊言。
- 僅僅藉由 InputMethodKit 輸入法框架傳入的 NSEvent 事件,在 macOS 10.15 開始的系統下就足以判定 Shift 鍵的單次擊鍵行為,只是需要對前後兩次 NSEvent 事件做綜合行為分析。該方法首創於 qwertyyb 的業火五筆輸入法(GitHub 倉庫:qwertyyb/Fire ,MIT 授權),被威注音承襲來使用。
- 其實,輸入法哪怕沒有做過沙箱處理,在打算監聽系統全局鍵盤監聽權限的時候,也都是需要使用者親自批准的(比如落格輸入法與超注音),這是 macOS 的安全機制之一。威注音一直以來都不需要使用者開放任何系統全局鍵盤監聽權限。但是,沙箱處理可以徹底粉碎任何類似的謠言。
- 威注音輸入法從第一版開始就是極度尊重使用者私隱的,為此甚至都不預設啟用自動版本更新檢查。本來威注音就不會從使用者的電腦往外主動傳送資料。這次沙箱特性也進一步限制了威注音在這方面的可能。但為了順利存取位於 Gitee 的版本更新通知訊息,威注音的沙箱特性被配置為「允許從網路讀取訊息」。
- 因為沙箱特性帶來的某些條件限制,威注音輸入法 2.3.0 在下述功能體驗方面打了些許折扣:
- 使用者辭典目錄從此開始只能在使用者目錄範圍內。超出範圍的話會被沙箱困住、而自動改回輸入法原廠預設的使用者語彙資料夾目錄、或上一次成功可用的目錄。
- 輸入法的自我卸除功能可正常運作,但僅憑輸入法本體的話、已經無法移除那些被錯誤安裝到使用者目錄範圍外的檔案。因此,威注音 2.3.0 起,會內贈 fixinstall.sh 作為代勞工具。如果不知道怎樣使用這些終端腳本的話,請帶著《如何卸除威注音輸入法》這篇文章向 Apple Support 求助、由他們的專員幫您遠端操作。
- 在自訂使用者辭典目錄時的資料夾瀏覽視窗內,無法再就地新增資料夾。此為 macOS 沙箱所限制。如果有這種需求的話,請藉由 Finder 等其它手段事先建立好辭典資料夾。
- 輸入法原廠預設的使用者語彙資料夾目錄變更為「
~/Library/Containers/org.atelierInmu.inputmethod.vChewing/Data/Library/Application Support/vChewing/
」。之前的預設目錄是「~/Library/Application Support/vChewing/
」。這是 Apple 的沙箱特性強制要求的變更。請在升級輸入法之前注意備份使用者語彙資料。
- 辭典:將使用者半衰記憶檔案挪至「~/Library/Containers/org.atelierInmu.inputmethod.vChewing/Data/Library/Application Support/」,以「
vChewing_
」開頭。這樣的話,在使用原廠預設的使用者語彙目錄時,就不會在每次選字時都會觸發使用者辭典重載行為。 - 辭典:例行語彙更新。
- 研發:天權星組字引擎更新至 v2.0.3 版,新增了一些「能讓上下文鞏固功能的操作範圍更準確」的工具函式、且重寫了在節點陣列當中找出與指定座標位置對應的節點的方法。
- 修復:修復了迄上一版為止「在每次選字窗選字時鞏固上下文的時候,上下文鞏固範圍過大」的問題。與此同時,也在新版偏好設定視窗內針對該鞏固功能新增了文字說明。
- 修復:修正了在某些舊版 macOS 系統下會丟掉輸入法介面語言設定的問題。
- 修復:修正了符號選單與標點符號候選字陣列在啟用 IMK 選字窗時初始載入速度過慢的問題。
- 因為符號選單的內容不參與康熙 / JIS 文字轉換、也沒有同詞異幅(Same string, different spanning length)的情況,所以就令其省略了一些處理。
- 標點符號同理。
- 體驗:在 JIS 轉換模式下新增了一個功能:在漢字重複的情況下,會自動套用疊字符號「々」。這様一来,你敲「佐佐木小次郎」会自動変成「佐々木小次郎」。
- 體驗:極大地豐富了波浪鍵分類符號選單能輸入的符號種類。然而,「Alt+波浪符號鍵」呼出的「非分類符號選單」為了保持自上游繼承過來的類似漢音符號選單的體驗、且為了規避 IMK 選字窗的顯示效能侷限(內容超過一千筆的話,在展開矩陣畫面時,會有明顯的延遲),所以「非分類符號選單」的內容不作變動。
- 某些分類的符號需要特種字型支援,比如「音樂」分類就需要電腦內事先安裝有支援 SMuFL 標準的音樂符號字型(比如安裝 Dorico 時自動安裝到系統內的 Bravura 字型,等)。
- 體驗:將除了開發道場以外的所有選項自 SwiftUI 新版偏好設定同步至 XIB 舊版偏好設定介面內。
- 體驗:在偏好設定內新增了一個開關,允許在縱排輸入模式下強行將標點轉換成「無論縱排橫排,顯示的樣子都是縱排專用」的樣子。該功能不建議啟用,除非你在用的排版字型不支援橫排縱排標點動態適應切換。
- 辭典:例行語彙資料更新,也擴充了「Alt+,」「Alt+.」「Alt+=」這三組熱鍵能輸入的符號數量。
- 修復:修復了在使用 macOS 內建的表情符號視窗插入符號時、輸入法被 macOS 系統投餵了「實際上為 null 的 NSEvent」時的崩潰故障。自這次更新開始,輸入法在接收自 macOS 傳入的操作事件時,會先檢查是否是真正的 NSEvent,否則一律不處理。
- 修復:修正了 macOS 10.15 與 macOS 11 Big Sur 系統下的 SwiftUI 偏好設定視窗「會將選字窗字號強制改成 12px」的問題。
- macOS 10.15 Catalina 和 11 Big Sur 對 SwiftUI 的支援存在一定缺陷。
- 體驗:在輸入法選單末尾新增「熱鍵指南」,允許使用者就地學習威注音輸入法自身的各種功能的熱鍵使用方法。
- 體驗:IMK 選字窗的 (Shift+)Space 與 (Shift+)Tab 按鍵的行為現與 Voltaire MK3 選字窗一致,可藉由偏好設定指定其具體行為。
- 體驗:對自從 macOS 10.15 起的系統專用的 SwiftUI 偏好設定視窗內容進行了排版調整(包括換頁時的動畫效果),新增了一些輔助說明文字。
- 體驗:修正了逐字選字模式下在某些情況下遞交出去的漢字「不受康熙轉換 / JIS 轉換所影響」的問題。
- 體驗:輸入法現在會嘗試自動將「藉由 defaults.write 傳入的錯誤的偏好設定資料值」改寫成格式正確的資料值或預設值。
- 然而選字窗字號除外,因為選字窗字號是在讀入時糾正、而非糾正原始資料值。
- 體驗:將 Shift+BackSpace 與聲調鍵的行為調整為與 macOS 內建注音輸入法幾乎一致的形態:
- Shift+BackSpace 會嘗試析構位於游標身後的漢字的讀音、且剔除其聲調(因為你遲早要用聲調鍵確認漢字)。 - Shift+Delete (也就是 Shift+Fn+BackSpace) 則與漢音輸入法一樣、會清空當前組字區。
- 聲調鍵會嘗試析構且覆寫位於游標身後的漢字的聲調。如果覆寫了相同的聲調的話,則會重置其選字狀態。
- 體驗:可以藉由自從 macOS 10.15 起的系統專用的 SwiftUI 偏好設定視窗內調整聲調鍵與 Shift+BackSpace 的行為。
- 該選項不對 macOS 10.11-14 系統提供,原因參見該版本發行說明內的補記。
- 體驗:允許在 macOS 10.15 開始的 SwiftUI 版偏好設定當中停用「藉由選字窗選字」時的事前文脈鞏固措施。
- 這會導致與小麥注音 2.4 版一樣的「藉由選字窗選字後,選字範圍外的字會亂動」的問題,但總有人被小麥注音養出胃口偏差。
- 該選項不對 macOS 10.11-14 系統提供,原因參見該版本發行說明內的補記。
- 辭典:例行語彙更新,且更新全字庫資料日期檢查標記至「2022-08-02」版本(已確認輸入法內建相關資料與該日期發行的資料包一致)。
- [SP2] 體驗:利用 Apple 內部 API 強制曝露的手段,使得 IMK 選字窗現在可以調整字號(文字大小)了。
- [SP2] 修復:利用 Apple 內部 API 強制曝露的手段,解決了 IMK 選字窗會被頑固置於當前桌面所有視窗底部、被蓋住的問題。於是也對開發道場內的有關內容做了清理與整理。
- [SP2] 體驗:將開發道場內的 .langIdentifier 開關設為「僅對 macOS 12 開始的系統開放使用」。
- [SP1] 修復:緊急解決了在 macOS 10.11-10.13 系統下連同接收文字輸入的客體應用一起無限連環崩潰的問題。
- [SP1] 修復:macOS 10.11-10.14 專用的舊版偏好設定當中的開發道場內的某些不需要重啟輸入法的開關現在不會再重啟輸入法了。
- 修復:解決了自 1.9.2 版引入開發道場以來、偏好設定視窗在 macOS 11 Big Sur 系統下會崩掉輸入法的問題(因 SF Symbols 版本相容性所致)。
- 修復:開發道場內的 IMK 選字窗現已修正在「尚未開啟 JIS / 康熙字轉換」時的某些候選字確認失敗的問題。
- 體驗:開發道場內的 IMK 選字窗現可使用預設選字鍵(仍無法自訂),也可使用數字小鍵盤選字。
- 體驗:開發道場內的 IMK 選字窗在逐字選字模式(及其聯想模式)下的體驗與 Voltaire 選字窗被啟用時的體驗一致。
- 當 IMK 選字窗處於聯想模式時,所有候選字都會被加上「⇧」前綴。
- 注意:IMK 橫版矩陣選字窗在展開之後每行只會顯示最多六個候選字,該行用不到的選字鍵會對應到總第 X 個候選字上。
- 舉例說:如果這一行有五個候選字的話,那麼 6、7、8、9 選字鍵對應總第六、第七、第八、第九個候選字。
- 體驗:開發道場內的 IMK 選字窗現解決了會在 Shift+Enter 時崩掉輸入法的問題。
- 體驗:開發道場內的 IMK 選字窗現引入特殊措施(可在開發道場內手動啟用):不會再被 Spotlight 與輔助說明選單遮擋(除非 IMKCandidates 內部的 Controller 崩掉,這種極端罕見情形需重新登入)。
- 體驗:開發道場內的 IMK 選字窗允許在出現「重複候選字、卻讀音字長不同」的時候的讀音標記改用拼音(只需啟用拼音並擊即可)。
- 體驗:開發道場不再向 macOS 10.13 及之前的系統開放,因為 IMK 選字窗目前的實作方式也無法使用於 macOS 10.13。
- 體驗:在選字窗尚未顯示的時候,輸入法不再處理「Ctrl+波浪符號鍵」的組合鍵傳入事件。
- 體驗:規範了整個輸入法應用程式當中對於 macOS 鍵盤的各種修飾鍵的稱謂:CMD->Command,ALT->Option。這樣對於那些不怎麼了解 PC 的 mac 使用者群體而言會更友好一些。
- 體驗:針對 macOS 10.15 及之後的 macOS 系統專用的偏好設定視窗現採用視窗內容捲動式設計。於是,當今後再有新功能擴充時,就不用再擔心偏好設定介面過長「會溢出螢幕」了。此外,該視窗現亦採用與舊版偏好設定相同的視窗特效設計。
- 體驗:針對所有版本 macOS 系統下的偏好設定介面的排版與介面用語調整,且會在啟用 IMK 選字窗時自動禁用選字窗文字尺寸選項與選字鍵選項(候選文字尺寸(字號)、翻頁按鈕、選字鍵自訂,等)。
- 體驗:修復了源自上游的一個產品設計缺陷:「在某個節點重新手動選字的時候,位於預期選字影響範圍以外的部分字詞會被自動重設、從而發生預料之外的改變」。為了不破壞在內文組字區使用熱鍵輪替候選字時的體驗,該修正當且僅當藉由選字窗選字時才會生效。
- 已知 macOS 內建注音輸入法不存在該缺陷。該缺陷波及多款知名的副廠輸入法(已知有「奇摩輸入法」「自然輸入法 v11」「小麥注音 (截至 v2.4 為止的全部版本)」「微軟新注音 2010」「新酷音 TSF」等)。
- 威注音此次引入的糾正算法大部分都寫在輸入法本體當中,依賴於天權星組字引擎 v2.0.2 更新當中的某些特性變化,且也用上了迄最近為止的天權星引擎的某些特有功能函式。歡迎參考相關的 commit 記錄(也請參考 GitHub 工單 #100 )。
- 體驗:將「徹底禁用 SHIFT 鍵切換中英文模式」的開關從開發道場挪至偏好設定的「體驗」頁面。與此同時,所有與「SHIFT 鍵切換中英文模式」有關的選項都不再對 macOS 10.14 及之前的系統可見。該功能會在 macOS 10.14 及之前的系統下自動停用。// 原因:相關技術僅對 macOS 10.15 開始的系統有效。
- 研發:調整了與使用者偏好設定自動處理有關的一些事件處理流程。
- 辭典:例行語料庫更新,且糾正了上一次更新引入的千字文資料當中的一些錯誤。
- [SP2] 體驗:糾正了預設 Voltaire MK3 選字窗會在某些罕見的極端狀況下的渲染瑕疵問題。
- [SP1] 體驗:偏好設定內的「開發道場」不再對 macOS 10.11 與 10.12 系統開放。已經啟用 IMK 選字窗的話,會被自動禁用。
- 原因:IMK 選字窗在威注音當中不得不用的實作方式反而會導致該輸入法在 macOS 10.11 系統內崩潰。
- 威注音建議 macOS 10.12 系統的使用者們盡量升級到至少 macOS 10.13。
- 體驗:可以使用 (Shift+)波浪符號鍵 來輪替選字窗的頁面,除非該鍵的符號被用作選字鍵。
- 體驗:從這一版開始,除非你在輸入法偏好設定當中的「開發道場」內啟用了「對任何客體應用均啟用 Shift 鍵相容性措施」,否則將只會針對下述瀏覽器應用啟用對 Shift 中英文輸入切換時的按鍵判定相容性處理:「Brave」「Avast 安全瀏覽器」「Coccoc」「Sleipnir」「Chrome / Chromium (含 Beta 與 Canary)」「Microsoft Edge (含 Dev 與 Canary)」「HiddenReflex Epic」「Maxthon」「Naver Whale」「Opera」「Steam (因為其內建瀏覽器是 Chromium 核心)」「Vivaldi」「奇虎 360 瀏覽器」「Blisk」「QtWebEngineCore」「Yandex 瀏覽器」。該選項僅在 SwiftUI 版偏好設定視窗內提供,因為其控制的功能只可能對 macOS 10.15 開始的系統有效。
- 體驗:在輸入法偏好設定當中的「開發道場」內引入了可以徹底禁用「Shift 鍵切換中英文輸入模式」的選項。該選項僅在 SwiftUI 版偏好設定視窗內提供,因為其控制的功能只可能對 macOS 10.15 開始的系統有效。
- 體驗:給預設的 Voltaire MK3 選字窗新增了一個來自 IMK 選字窗的特性:允許在翻頁的時候盡可能保持當前高亮顯示標記的位置不變(除非該位置在最後一頁不存在,屆時會將該頁的最後一個候選字詞高亮顯示)。
- 體驗:將 Voltaire MK3 選字窗的外觀配色風格進一步調整,減少其可能帶來的閱讀疲勞。
- 體驗:在輸入法偏好設定當中的「開發道場」內提供的的實驗性的 IMK 選字窗引入了如下改進:
- 空格鍵可以翻行/翻頁了,也可以用 (Shift+)波浪符號鍵來翻行/翻頁。此外,(Shift+)Tab 可以用來輪替 IMK 選字窗內的候選字。
- 運用了一些保守治療方法、來試圖繞過「重複卻持有不同字長(幅位長度)的讀音串的 emoji 候選字」的節點覆寫失準問題。現在,在 IMK 選字窗內,這種候選字,只要不是陣列內相對而言持有讀音串字長(幅位長度)最長的,就會在顯示時在右側出現注音標記括弧。這種標記可以幫助 ctlInputMethod 的 candidateSelected() 函數進行更精準的節點覆寫操作。
- 在聯想詞狀態下的表現與 Voltaire MK3 選字窗一致。
- 下述問題仍無法解決:
- 選字鍵不起作用。IMK 選字窗的 setSelectionKeys() 與 setSelectionKeysKeylayout() 函數都不會起任何正面作用(前者用了反而會讓選字窗連選字鍵標記都不顯示)。不知道 Apple 的相關單元測試工程師閒了多少年(至少也得有十幾年了),都沒想過要去寫單元測試來檢查這種低級缺陷的存無。
- 選字窗字號大小無法調整。
- IMK 選字窗本身會被 Spotlight 視窗蓋住。偏偏 macOS 系統內建輸入法用的是 IMK 的非公開變種、就沒有這種問題。氣不氣人?
- 結論:很多使用者都希望能在自己喜歡的副廠輸入法內用上 IMK 的矩陣選字窗(就是 macOS 系統內建的注音輸入法的橫版矩陣選字窗)。然而,經過這些天的研究,威注音輸入法團隊不得不認清(目前能推斷出來的)唯一可能事實:IMK 選字窗充其量也只是 Apple 用來滿足自家輸入法需求的產品部件、一開始就沒有讓副廠輸入法廠商用得爽的打算。
- 辭典:例行語料庫更新,且新增對千字文的輸入優化。
- 相容性:因為 Xcode 14 Beta 建置的威注音輸入法「哪怕設定目標系統版本至少 macOS 10.13、也會在部分 macOS 10.14 早期版本系統(例如 10.14.2)內出現無法運行的問題」,所以研發方暫時決定不撤掉 Xcode 13 建置流水線。因此也就暫無停止 macOS 10.11.5 El Capitan 支援之必要。與此有關的決議等 Xcode 14 正式版問世時再重新定奪。
- 註:不是所有系統用戶都方便安裝那個版本的全部子更新(例:10.14.2 -> 10.14.6)。
- 體驗:修正了(在選詞範圍 Range 超出讀音陣列容量的情況下)加詞時「會因為字數與讀音數不批配」而導致的輸入法崩潰的問題。現在,威注音輸入法重新開始拒絕受理在字數與讀音數不批配時的就地增刪詞請求,因為這個功能的實際使用體驗非常糟糕。
- 體驗:對一直以來在用的 Voltaire MK3 選字窗的風格做了新的調整、使其美術設計風格與 IMK 單行/單列選字窗接近。
- 體驗:恢復了之前的「半衰記憶模組每次觀察時都會存檔做記錄」的設定,藉此解決某些情況下的觀察失敗情形。
- 設定:在偏好設定面板內引入了「開發道場」頁面、專門用來放置一些實驗性的功能。
- 設定:在「開發道場」內引入了針對 FB10978412 的臨時保守治療方案(預設情況下不啟用)、以確保簡體中文模式與繁體中文模式下的選字窗在使用系統字型顯示漢字時會採用正確的筆畫標準來顯示漢字。該方案僅對 macOS 12 開始的 macOS 系統有效。macOS 10.15 及更舊的系統內不存在該問題,所以不需要使用這個開關。備註:「.langIdentifier」是自 macOS 12 開始才提供的系統 API。
- 設定:在「開發道場」內引入了實驗性的 IMK 選字窗支援(橫向的話則是 IMK 矩陣視窗)。
- 然而,下述問題無法解決:
- 選字鍵不起作用,只能用方向鍵來選。
- 空格鍵不能翻行/翻頁。
- 選字窗字號大小無法調整。
- IMK 選字窗本身會被 Spotlight 視窗蓋住。
- 當候選字詞陣列內出現了「候選字詞相同(往往是 Emoji)、但讀音數(幅位長度)不同」的多個候選字詞時,只有讀音數最多的那個候選字會生效:你選其它更短的讀音數的同名候選字,也只會被認為是選了讀音數最多的那個候選字。該問題的原因在於 IMK 選字窗不允許你獲取「被選取的候選字詞在候選字詞陣列當中的排序編號」這個極為重要的資訊、也不允許你藉由 candidates() 生成的 NSAttributedString 往 candidateSelected() 攜帶候選字詞的讀音資料(.attachment 也好,.tooltip 也好,這些資料都會被 IMK 濾除掉),自然無法在 candidateSelected() 函數內將 fixNode() 的行為用讀音來精準化。
- 結論:很多使用者都希望能在自己喜歡的副廠輸入法內用上 IMK 的矩陣選字窗(就是 macOS 系統內建的注音輸入法的橫版矩陣選字窗)。然而,經過這些天的研究,威注音輸入法團隊不得不認清(目前能推斷出來的)唯一可能事實:IMK 選字窗充其量也只是 Apple 用來滿足自家輸入法需求的產品部件、一開始就沒有讓副廠輸入法廠商用得爽的打算。
- 然而,下述問題無法解決:
- [SP2] 體驗:糾正了在 macOS 10.11-10.15 系統下專用的舊版偏好設定視窗內的「游標置於詞語前方/後方」開關不起作用的 Bug。該問題在最近十幾個版本當中一直存在。
- [SP2] 體驗:針對 macOS 10.15 Catalina 系統啟用 SwiftUI 新版偏好設定視窗。由於技術限制的原因,在輸入法介面語言設定為「依系統設定」時,偏好設定介面可能會在本該顯示「依系統設定」的情況下顯示空白文本。這個缺陷並不影響該產品的實際使用。
- [SP2] 體驗:針對 SwiftUI 新版偏好設定視窗補回了之前忘記添入的「允許對無效的讀音使用 BackSpace 編輯」這個選項。
- [SP1] 體驗:天權星引擎升級至 v2.0.1,選字時不會再出現「周圍已經被選字的節點突然都被重設」的 bug。
- 辭典:允許在使用者語彙目錄內藉由「data-plain-bpmf-chs.plist」「data-plain-bpmf-cht.plist」對逐字選字模式下的候選字詞順序進行覆寫修改。該功能是為了近十年來已經養成上游傳統注音選字順序習慣的人群準備的,但威注音不考慮隨贈上游的傳統ㄅ半注音的辭典(在ㄒㄧㄠˊ讀音的記錄內把學放得比洨更優先是殺小),所以就採用這種功能設計、允許使用者自訂之。相關的自訂修改方法會在近日公開於威注音輸入法官方主頁。
- 辭典:載入使用者語言模組時,現在會根據某些功能模式的開關狀態按需載入。
- 辭典:針對所有類型的使用者語彙檔案,新增了可以應對「以大寫字母書寫的漢語拼音」的能力。
- 介面:針對 macOS 10.x 的偏好設定介面視窗的工具列圖示現已更換為 macOS 11 開始的偏好設定介面所使用的圖示。
- 介面:針對 macOS 11 開始的偏好設定介面當中的選字鍵設定內容已經由「體驗」頁籤挪至「鍵盤」頁籤。
- 雜項:鐵恨引擎更新至 v1.2.9,優化了在將拼音字串轉注音時的效率。這有助於提升使用者語彙檔案的載入速度。
- 辭典:例行語料更新。
- 體驗:允許像漢音輸入法那樣使用 Shift+BackSpace 或 Shift+Delete 熱鍵清空組字區的內容。但這兩組熱鍵不會在輸入法處於就地增刪詞標記模式時起這種作用。
- 體驗:當組字區內有尚未組合完畢的注音/拼音輸入時,摁 Delete 鍵會清空正在輸入的注音/拼音組合(也就是清空注拼槽)。
- 體驗:本次更新對就地增減詞模式有較大變動:就地刪詞的按鍵由 Shift+Command+Enter 改為「BackSpace 或 Delete」。從這一版開始,Shift+Command+Enter 的職能改為「將目前選中的現有詞彙的權重降低(nerfing)」。被降低權重的詞會出現在使用者辭典檔案內、且被附上「-114.514」這個惡臭的權重數值(爬軌函數聞到臭味就不會去考慮這個詞)。
- 體驗:糾正了「在 Chromium 核心的瀏覽器(包括 MS Edge)等應用內摁 Shift 輸入符號時,會觸發中英文輸入模式切換」的錯誤行為。該問題的實際原因雖然是這些第三方應用廠商,但他們幾乎不可能會去修這種 bug。
- 體驗:基於純 Swift 的天權星組字引擎更新至 v2.0.0 版本(由 MIT-NTL 改為與 Gramambular 2 一致的 MIT 授權):
- 引入了 Lukhnos Liu 的 C++ Gramambular 2 相對於 C++ Gramambular 1 的全部變更(包括基於頂點運算的爬軌算法)。
- 也遷移了來自天權星引擎 v1.2.9 相對於 Gramambular 1 & 2 而言獨有的諸多自身功能與輸入法配套功能。
- 比如「以字詞節點為單位跳轉游標」、「允許建議結果影響選字窗排序」,等。
- 修正了 Gramambular 2 截至目前為止具有的「在請求候選字詞清單時,會出現與當前游標上下文無關的 node-crossing 的結果」的 bug。
- 無論是漢音輸入法,還是微軟新注音、還是 macOS 內建輸入法,均不允許 node-crossing。
- 允許對這幾個類型進行雜湊化(hashable):Unigram、Candidate (KeyValuePaired)、Node、NodeAnchor (NodeInSpan)。
- 體驗:因應此次天權星組字引擎更新,威注音輸入法也嘗試同步了 Lukhnos Liu 在上游針對使用者半衰記憶模組的觀測行為修正。此外,在針對節點進行覆寫時,會連同讀音一起用作覆寫判斷依據。如果說就這樣也還會出現怎麼敲也記不住的人名的話,那就請考慮將其就地添入使用者語彙。
- 體驗:因應此次天權星組字引擎更新,組字區內可輸入文字數量上限現已不復存在。
- 行為:修正了在拼音輸入模式下摁著 Alt(+Shift)+字母鍵 輸入字母時會出現的輸入法崩潰現象。
- 行為:允許在藉由 Shift+字母鍵 敲字母時直接遞交、而非經過組字區處理。該功能需要在輸入法偏好設定內手動啟用。
- 配置:修正了上一版更新時不慎引入的極個別使用者偏好設定項目資料值彼此位置錯亂的現象。
- 研發:keyHandler 的大部分自我清空行為現在會由 ctlInputMethod 的狀態處理機關根據要處理的狀態自動觸發。
- 辭典:(備忘)本次沒有原廠辭典語料更新,因為只有「工程狐」這一個詞就加 tag 也太奢侈。
- 體驗:新增了使用兩側 Shift 鍵來開關「英數輸入模式」的功能(僅對 macOS 10.15 Catalina 開始的系統有效)。在偏好設定內也還可以決定是否對左側 Shift 鍵禁用該功能(因為某些電玩會用到左側 Shift 鍵)。該功能移植自同樣使用 MIT 授權的業火五筆輸入法,不需要使用者對輸入法額外開放系統輔助控制監聽權限。另請注意:所有剛開啟的應用程式在剛剛接受輸入法輸入時,都會預設中文輸入。如果該應用程式記憶了你對英數輸入模式的啟用狀態了的話,當你再在該應用程式內輸入文字時、螢幕右上角會提示「英數輸入模式已啟用」。
- 體驗:精簡了偏好設定介面當中的「體驗」頁籤內的排版,移除了對組字區容量上限的設定,將其鎖定為 30 字。哪怕威注音現在已經引入了「以字詞節點為單位迅速移動游標」的功能,過長的組字區仍明顯不利於編輯體驗。
- 體驗:現在可以藉由直接敲入「日期」「時間」「星期」來迅速輸入當前的日期、時間、以及當天是星期幾。藉由「
defaults write org.atelierInmu.inputmethod.vChewing DeltaOfCalendarYears -int -2000
」這條終端指令、修改最右側的「-2000」為別的年數差的話,可以實現對諸如日本令和紀年等自訂紀年的日期輸出支援。至於使用者們以何種目的利用該功能,不屬於威注音輸入法研發方的負責範圍之內。 - 行為:糾正了輸入法控制器模組在剛剛初期化時的行事順序。現在應該不會再出現「突然只敲得出注音」的情況了。
- 行為:現在,哪怕是剛剛從就地增刪詞標記模式退出至文字輸入模式、還是進入了選字模式、還是你正在敲字時有讀音沒敲完,內文組字區的內容也都會以字詞節點為單位、將下劃線分段顯示。
- 辭典:例行語彙資料更新。
- 體驗:因為有些人在升級 macOS 特定系統版本(比如 macOS 12.5)之後會遇到「使用者半衰記憶資料檔案出了差錯、被輸入法讀取之後一選字就崩潰」的問題,所以這次更新給威注音加入了針對此問題的救災機制:只要因為這種問題崩潰了,輸入法便會在崩潰之後重新啟動時察覺到該狀況、然後自動清空使用者半衰記憶資料檔案內的內容:簡體模式與繁體模式的半衰記憶檔案都會被清理掉。至於半衰記憶模組的觀測函數究竟出了什麼問題,至少目前不會因為這類問題的發作而「導致輸入法一直無法使用」,所以暫時決定回頭有時間再慢慢調查這個問題。這裡感謝 Hiraku 在今年一月份製作的對 macOS 通知中心的利用方法(被我這次用 Swift 重寫了)。
- 體驗:不再允許游標橫穿某個單字多音(比如 Emoji)或者多字單音(比如注音文)的節點。當游標被移往這種節點時,會直接從這種節點的一側跳到另一側。這樣一來就在行為上與 macOS 內建的注音輸入法一致。游標橫穿這種節點時的工具提示也不會再出現了(因為就不會再停留在橫穿狀態)。因應此番修改,威注音現在允許在就地增減使用者詞彙時應對「組字區讀音數量與文字數量不相等的情形」。
- 體驗:內文組字區的文字的下畫線現在會在正在敲字的時候按照字詞節點來分段顯示(與奇摩輸入法和自然輸入法一致)、除非當前組字區內有尚未敲完的漢字讀音。另外,這種分段顯示不會在選字模式與就地增減詞標記模式下啟用(就地增減詞標記模式本來就有自身特殊的下畫線分段顯示規則)。
- 體驗:針對 macOS 10.11-10.15 啟用了系統原生的對簡體/繁體中文系統介面字型的調用方法(CTFontCreateUIFontForLanguage()),不用依賴更紗黑體、就可以讓選字窗在不同的簡繁輸入模式、漢字轉換模式是否啟用(JIS / 康熙)的情況下使用對應區域的選字窗漢字字型(蘋方-簡/繁,康熙與 JIS 則用 Hiragino Kaku Gothic)。由於 macOS 11 系統對「CTFontCreateUIFontForLanguage()」這個函數的支援有 Bug,所以該功能不再向 macOS 11 提供(因為已經不可能接收到官方的更新修正了)。macOS 12.5 為止仍有該 Bug、且 macOS 13 Beta 4 也有該 Bug,但威注音早已利用 macOS 12 開始才有的另一種方法來完成該功能,所以不用擔心。
- 功能:引入了上游「允許用 BackSpace 編輯輸入錯誤的讀音、而非重新輸入讀音」的功能,但有一處行為不同:威注音會在讀音敲錯的時候自動砍掉聲調,畢竟遲早還是要用聲調鍵來確認漢字讀音的輸入。
- 架構:對選字窗協議及所有被牽連到的地方做了大幅度的修改,以方便今後實現對 IMK 內建選字窗的使用(矩陣選字窗非常誘人)。然而,出於某些原因,威注音的 IMK 選字窗目前還無法響應使用者的鍵盤按鍵訊號輸入(根本就是完全無法被輸入法捕捉來判斷響應),所以該功能(ctlCandidateIMK)暫時先封存、僅開放迄今為止仍在使用的 ctlCandidateUniversal(Voltaire MK3)。
- 辭典:例行語彙資料更新。
- 鍵盤:因應此次鐵恨引擎的更新,威注音輸入法新增了對星光注音排列的支援。星光注音排列是北京網友「聽雨客」發明的複合注音排列,也是繼倚天忘形、許氏排列、酷音大千二十六鍵之後業界第四款二十六鍵注音排列。與依照威妥瑪拼音習慣設計的許氏排列與倚天二十六鍵排列不同,星光排列更符合漢語拼音熟習者的思考方式,是一個全新的選擇。
- 鍵盤:威注音輸入法這次也啟用了被塵封好幾個大版本的精業排列支援(之前僅支援偽精業排列)。然而,出於技術與程式可維護性等方面的考量,威注音不會對該注音排列啟用螢幕鍵盤支援。
- 研發:鐵恨引擎更新至 v1.2.8,用窮極單元測試釐清了酷音大千二十六鍵排列的處理流程當中的失誤、且全部做了糾正。
- 語彙:例行語彙更新。
- 行為:新增大寫漢字輸出模式,方便金融業者使用。預設熱鍵為 Ctrl+CMD+Shift+M,可以在偏好設定內停用這個熱鍵。轉換結果會根據輸入法當前的簡繁體模式而不同。如果是繁體中文模式的話,根據你是否開啟 JIS 漢字轉換或康熙字轉換,輸出結果也會有不同:康熙模式的話,會用「叄」而非「參」;JIS 模式的話,會用「壱弐参」。
- 行為:允許輸入全形阿拉伯數字,方法為:在組字區沒有字的情況下使用「Alt+Shift+主鍵盤數字鍵」。如果開啟了半形標點模式的話,則會輸出半形阿拉伯數字。
- 行為:現在終端機內進入聯想詞模式時,輸入法可完全攔截該攔截的輸入訊號、不會再出現在某些應用程式內方向鍵失效的情況。
- 行為:新增無限聯想功能(有使用條件):哪怕你選中了非單字的聯想詞候選詞,現在也可以繼續聯想了,前提是此時的新的檢索用字在聯想詞庫內有不帶讀音的記錄。換言之,這個無限聯想功能只能搭配不帶讀音的聯想詞資料使用。解決這個侷限的關鍵在於改造資料庫的整體結構:允許讓聯想詞模式能夠動態利用既有的帶有權重資料的辭典內容、且支援多種檢索方式。然而,威注音的研發方目前尚無相關技術可以實現這一點。
- 行為:波浪符號鍵選單現允許摁 Esc / Backspace / Delete 回退到上一個選單層級。
- 邏輯:糾正了 1.8.4 版引入的全形空白輸入功能背後的按鍵處理邏輯、使其不再阻撓在該檢查處理工序之後的處理。
- 邏輯:精簡了對「與輸入方向呈 90 度的兩個方向鍵」的處理邏輯。
- 研發:將 KeyHandler 當中的對於組字處理的函式單獨拿出來處理,這樣會方便他人以威注音的專案程式庫製作其它種類的輸入法(比如五筆、倉頡…等)。
- 辭典:例行語彙更新。
- 鍵盤:徹底修正了源自上游的「完全無法正確判斷某按鍵輸入是否來自數字小鍵盤區」的 Bug,也改變了對數字鍵區的處理邏輯:當且僅當出現選字窗的時候,輸入法會對這些按鍵有響應;其餘情況下,這些按鍵訊號都會被放行、不作攔截處理,以方便 Microsoft Excel 的使用者群體。本次更新也包含了對 JIS 鍵盤特有的數字小鍵盤逗號鍵的處理。
- 鍵盤:新增對 JIS 鍵盤的符號鍵支援。由於 JIS 沒有波浪符號鍵,所以威注音對 JIS 鍵盤的符號鍵為「_」、在「右 SHIFT」的左邊。
- 鍵盤:在逐字選字模式下的 Enter 鍵的行為現可在偏好設定內自訂。
- 鍵盤:當且僅當輸入法組字區內沒有任何內容時,可藉由「Shift+Space」連續輸入全形空格。
- 鍵盤:「Alt+波浪符號鍵」的符號陳列順序有變動,第一個選項就是全形空格。這樣一來,摁「Alt+波浪符號鍵+Enter」就可以輸入全形空格。單獨的波浪符號鍵的原廠選單內容也做出了對應的調整。
- 選字:糾正了在選字窗內摁 End 鍵跳轉至末頁時的錯誤回饋蜂鳴聲。現在,當且僅當當前選中的候選字已經是最後一個候選字的時候,才會響一下蜂鳴。
- 介面:針對 macOS 10.x 專用的偏好設定介面的排版調整、以允許每個頁面的面積不相等。
- 介面:當輸入法狀態為空的時候,會再次命令選字窗與工具提示視窗隱藏各自的顯示。該設計純屬「防患於未然」。
- 記憶:半衰記憶模組現只會在要觀測的在庫案例已經過第一個半衰週期的情況下、才會更新對應的觀測記錄(且存檔)。
- 記憶:將半衰記憶模組的半衰週期由 1.5 小時調整為 6 小時,這樣可以讓整個記憶週期持續五天多一點(之前是大約 30 小時)。
- 記憶:使用者半衰記憶模組的存檔過程改用異步處理、防止出現可能被輸入法忙碌狀態卡死整個 App 的情況。該設計純屬「防患於未然」。
- 其它:同步引入了來自 LibvChewingNT 近期更新時引入的一些小修正。
- 其它:例行辭典更新,且將全字庫資料更新為 2022 年 07 月 20 日的版本。
- 辭典:鐵恨注拼引擎升級至 v1.2.7,修正了在將拼音轉換成注音時無法正常處理陰平聲調的問題。現在,使用者辭典檔案內的漢語拼音當中的陰平聲調在被讀取的過程中可正確轉換為可被輸入法檢索到的注音字串。
- 程式:將 keyHandler 內一些不需要的代理函式全部移除。這些函式都是之前是威注音 1.5.x 早期版本內用來銜接 Gramambular 與 Swift 版 keyHandler 的函式,現在已經不再需要了。
- 例行語彙更新。
- 行為:輸入法現僅允許同時出現一個選字窗副本。無論輸入法控制器副本在多個應用程式之內再怎樣切換,這次修正應該都不會再允許輸入法出現多個選字窗了。此修正在理論上應該能解決在批踢踢討論版被提報的(自從 1.7.4 版開始的)「選字時閃退」的問題。如果還是不能解決的話,歡迎電郵提報。
- 行為:鐵恨引擎升級至 v1.2.6,對先學漢語拼音後學注音的人群引入了一個注音組合糾正策略:將「ㄧㄜ/ㄩㄜ」自動糾正為「ㄧㄝ/ㄩㄝ」。
- 行為:因應鐵恨引擎升級的升級,威注音現允許使用者在偏好設定(第二頁)內關掉鐵恨引擎的「注音輸入自動糾正」的功能。請仍注意「甮」的讀音被改為「ㄈㄥˋ」而非之前的「ㄈㄨㄥˋ」。
- 行為:在輸入法控制器的 activateServer() 函式內新增一道處理、用以嘗試防止這個偶發的罕見現象:該函數偶爾會出現以「強制拆包拆出 nil」為理由的報錯閃退。
- 介面:修正了 macOS 10.x 系統下的偏好設定視窗內的鍵盤設定頁面的佈局顯示錯誤。
- 辭典:例行語彙更新。
- 行為:現允許在組字區不為空的時候使用 Alt+上/下(縱排輸入時則為 Alt+左/右)熱鍵來輪替候選字。
- 行為:現允許在使用聯想詞功能時摁 Enter 確認當前選中的聯想字。該功能原先是在上游被禁用的,理由多半是想模仿 Windows 9x/NT3/NT4/2000/XP/2003 內建的ㄅ半輸入法的行為。然而,ㄅ半輸入法的選字窗並不支援「移動->選中->確認」的模式、藉由鍵盤操作時只能使用選字鍵來選字。威注音既然沒有這個限制,那就不需要禁用 Enter 鍵。想要取消聯想詞選字窗的話,Esc / BackSpace / Delete 鍵都可以用。對了,聯想詞的選字鍵是要摁 Shift 才會生效喔。
- 辭典:現在,當使用者語彙檔案被刪除時,輸入法會自動生成新的檔案、且自動填寫原廠註釋內容(來說明這個檔案該怎麼用)。如果是使用者聯想詞辭典檔案的話,還會自動寫入原廠的聯想詞辭典內容。該辭典內容僅包含部分來自威注音輸入法原廠詞庫的固有詞彙。考慮到ㄅ半輸入法使用者群體的習慣,聯想詞的原廠辭典內容今後不會再作變更(除非發現其簡體中文版本的詞庫當中有錯誤,屆時會訂正)。
- 辭典:使用者聯想詞模組在繼續支援既有格式的情況下,新增幾個支援情形:
- 以「(ㄓㄨˋ,注)」或者「(pin1,拼)」這樣的字音配對作為索引鍵的情形。這樣可以允許有熱心的人士們自行製造更精確的聯想詞資料套件。
- 以 Windows 9x/NT3/NT4/2000/XP/2003 內建的ㄅ半注音輸入法關聯詞工具匯出的聯想詞檔案格式,在以 UTF-8 格式另行存檔之後,可供威注音直接使用。檔案內的 CRLF 換行標記會在讀取時被自動整理為 Swift 可以正常處理的 LF 標記。該格式允許在一行之內對單個索引鍵同時定義多個候選聯想字詞。引入該功能的原因:逐字選字模式與聯想詞功能的主要使用者群體,與ㄅ半輸入法的忠實使用者群體高度重疊。
- 辭典:允許在使用者語彙模組的辭典內給單筆記錄指定具體的權重數值(最好不要大於 0,除非你知道你在做什麼)。以半形英數「#」符號開頭的數值會被無視。不指定的話,預設權重為 0。
- 辭典:在辭典建置時新增了對辭典健康狀況的檢查環節,相關檢查結果可以用終端機殼層的管線指令輸出到指定的 txt 檔案當中(比如 bash / zsh 的話就會是在腳本執行語句後加上「> ./report.txt」,nushell 的話請參閱其手冊)。
- 辭典:使用者語彙編輯器內建的拼音轉注音的功能現已移除,以免傷害到使用者自行添入的權重資料。
- 辭典:使用者辭典內的漢字讀音,哪怕寫成漢語拼音(必須帶數字聲調 12345),也能被輸入法在讀取時正常辨識。聯想詞語言模組會在輸入法請求資料的時候將索引鍵值複製一份轉換成拼音、然後同時檢索兩者,檢索結果排序優先度為「以注音標記的字音配對索引鍵 > 以拼音標記的字音配對索引鍵 > 純漢字索引鍵」;其餘的使用者語言模組則會在載入資料時直接將拼音索引鍵轉換成注音索引鍵之後、登記於自身的記憶體辭典內。
- 選單:現在,當逐字選字聯想詞模式處於啟用狀態的情況下,哪怕不摁 Alt 鍵,點開選單時也能看到「編輯聯想詞」的指令。
- 研發:調整了 Xcode 專案在建置時的步驟順序,使得增量建置得以正常工作。對辭典內容的建置會放在主程式建置之後再進行,不影響之後的應用程式打包。
- 語料:例行語料更新。
- 功能:因應此次天權星組字引擎的升級,Alt+前後方向鍵可以以每個節點的當前候選字的長度为移動單位、藉此快速移動游標。
- 功能:也允許使用 Alt+Ctrl+前後方向鍵將游標移至最結尾/最開頭,與 Home / End 鍵等效。該功能便於藉由 ThinkPad USB 七列傳統鍵盤使用 mac 的場合(因為 macOS 無法響應該款鍵盤的 Fn 鍵)。
- 體驗:工具提示內的注音讀音會在使用拼音並擊模式時顯示成教科書格式的拼音,且會在新增使用者語彙時顯示選中區域的讀音內容。
- 行為:因應此次天權星組字引擎的升級,輸入法本身也將「候選字」這個處理單位由「候選字詞字串」改為「候選字詞讀音+候選字詞字串」鍵值配對。於是威注音得以徹底解決(自首發版以來一直存在的)對於「讀音和詞長不等的候選字詞(比如 emoji)的幾組同詞異音同時出現在候選字陣列當中時」的選字效果不可控的問題。
- 行為:使用者半衰記憶模組的資料存放位置被鎖定在「~/Library/Application Data/vChewing/」目錄下,且在輸入法選單內新增了用以徹底清空所有半衰記憶內容的選項:摁 Alt 再點選單的話、才會同時清除簡體模式和繁體模式的使用者半衰記憶模組的資料,否則只會清空當前模式的資料。因應此番變化,所有對半衰記憶模組存檔資料的手動修改都需要在摁 Alt 之後點開的輸入法擴展選單當中手動重新載入詞庫才能生效(當且僅當改過的資料沒有問題的情況下)。至於為什麼要鎖定至這個目錄:
- 因為該檔案的內容會隨著你每一次文字輸入行為而實時變化(且變化內容太繁多),故對很多線上同步存儲服務(iCloud Drive、GDrive、OneDrive 等)不太友好。
- 半衰記憶模組資料會隨著時間的推移而很快過期(有效期應該不會超過一天),過期太久的資料無限趨近於「詞庫內沒有該資料」。
- 研發:鐵恨注拼引擎更新至 v1.2.4,收編了原先由 KeyHandler 承擔的對於注音與拼音讀音字串的轉換處理函式。這些函式也因此從 KeyHandler 當中移除。
- 研發:天權星組字引擎(Swift 版)更新至 v1.2.9:
- 符號命名體系有所更動,活用 private(set)。
- 將 Compositor 與 Grid 整合:前者直接繼承後者。 P.S.: 本次特意有測試是否可以將 NodeAnchor 與 Node 整合在一起。然而這樣一來的話會導致手動選字功能失效,所以只能作罷。NodeAnchor 這個結構型別獨立而生所帶來的唯一便利,恐怕就是為了讓裡面的 Node 對自身的函數操作生效。
- 因為實際使用當中 NodeAnchor 的 Node 一定不會是 nil,所以直接去掉了這個變數的 nil 能力。這樣可以(同時在模組內與模組外)節省海量的 guard-let / if-let 判定。
- 對 walk() 做了簡化:將 reverseWalk() 作為內部處理隱藏起來,且讓對外的 walk() 無須傳入任何參數。
- 讓 fixNode 手動選字函式的生效範圍更廣(之前僅可以對單一文字輸入方向進行操作,現在是雙方向了),且允許在此過程中僅針對指定讀音來執行手動選字操作、以提升行為準確性。
- NodeAnchor 及 Node 這兩種型別現可雜湊化。
- 允許以鍵值配對為對象來查詢其權重數值。
- 允許以幅位為單位來移動游標。
- 修正了 1.2.8 版天權星引擎引入的選字行為作用範圍失控的 Bug。
- 研發:對標點符號索引鍵的生成邏輯順序做了優化調整,且相關過程被單獨做成一個函式。
- 處理:正式引入威注音自家的(以純 Swift 打造的)「步天歌」繁簡轉換引擎,用以取代 OpenCC 以及威注音既有的康熙字&日本簡化字轉換模組。自此,C++ 內容在 macOS 版威注音輸入法內終於清除乾淨了。
- 處理:鐵恨注拼處理引擎更新至 v1.2.3 版,新增了對「ㄅㄨㄥ ㄆㄨㄥ ㄇㄨㄥ ㄈㄨㄥ」與「ㄅㄨㄛ ㄆㄨㄛ ㄇㄨㄛ ㄈㄨㄛ」的糾錯處理:會在輸入這些注音讀音時自動忽略掉介母「ㄨ」,如果再輸入「ㄨ」則會忽略掉韻母,如此輪替。受此影響,原廠辭典內唯一罕見情形「甮」字的讀音由台澎金馬審音「ㄈㄨㄥˋ」改為陸規審音「ㄈㄥˋ」。類似情況「ㄌㄩㄢˊ」在台澎金馬太過於常見,故不合併處理至「ㄌㄨㄢˊ」(雖然用「ㄌㄨㄢˊ」也能敲出來對應的字詞就是了)。
- 處理:同步引入了來自同期研發的 C# 版「LibvChewingNT」引擎當中的 KeyHandler 的一系列內容維護更新。
- 處理:將輸入法內的 Apple 注音鍵盤佈局訊號轉換模組內的條件判定全部重寫,令其處理效率顯著提升。
- 研發:現在,ctlInputMethod 在接受且處理 InputState.EmptyIgnoringPreviousState 時,會將狀態自動轉為 InputState.Empty。這樣可以減輕 KeyHandler 的一些條件判斷工作量,且不會影響這個狀態的設計意圖:當呼叫該狀態時,不但狀態要變成 Empty,而且之前在組字區內的內容直接拋棄處理(不遞交出去)。
- 語彙:例行語彙內容更新。
- 行為:允許使用者在啟用半衰記憶模組建議的同時固定選字窗內的候選字排序。
- 行為:使用 (Shift+)Tab 或者 Shift(+Command)+Space 就地輪替候選字時的候選字順序更換為固定排序,不再受半衰記憶體模組建議的影響。這樣一來,就地輪替候選字時,不會再鬼打牆。
- 語彙:例行語彙內容更新。
- 功能:從本次更新開始,使用者半衰記憶模組回歸、且相比上游的 C++ 半衰記憶模組而言新增下述功能。該模組不會在逐字選字模式下起作用。
- 半衰記憶模組在提供建議時,不再僅告知權重最大的那個候選字詞,而是直接回饋一個單元圖陣列。因應該特性更新,威注音實現了一個新功能:將被半衰記憶模組記住的內容在選字窗內的排序提前。
- 半衰記憶模組不會記憶那種只有單個漢字長度的單元圖(「你他妳她祢她它牠再在」這幾個字除外),以免破壞敲字選字體驗。換言之,想讓單個漢字被記憶的話,在選字時、這個字的(在敲字順序意義上的)後方必須有至少一個字詞、才符合半衰記憶模組內部的觀察條件(不然就不會生成索引鍵值,自然也就不會被觀察)。如果仍有體驗上的不足的話,輸入法選單內會有現成的選項、來允許移除目前半衰記憶模組資料內的單元圖(預設情況下會同時記憶單元圖、雙元圖、三元圖)。
- 半衰記憶模組資料會在每次敲字的手動選字行為發生時以 JSON 格式記入至使用者語彙資料目錄下的「override-model-data-chs/cht.dat」內。雖可明文編輯,但編輯後果自負:因為可能會編輯出故障來。
- 當使用者語彙資料架內出現任何內容變動的時候,都會重新載入半衰記憶模組的內容。
- 半衰記憶模組會在觀測時確保辭典內的資料順序按照最後編輯順序做新舊排列(詳見源碼內文註解)。
- 半衰模組對輸入時的自動選字以及選字窗的內容排序的影響可以在偏好設定的辭典選項內藉由對應的勾選項來停用(打勾則為啟用),但半衰模組仍會持續運作。
- 功能:當新酷音的 symbols.dat 被放入威注音的使用者語彙資料夾內的話,威注音的波浪符號鍵選單會轉而讀取這個檔案來作為波浪符號鍵選單的內容。這樣一來,使用者就可以自訂波浪符號選單的內容。目前先不對此做「簡體中文/繁體中文模式區分不同的 symbols.dat 檔案」的設計,因為功能實在太小眾,且:如果引入了該設計的話,反而會麻煩使用者給檔案重新命名。再加上威注音原本的波浪符號鍵選單的內容本來就很豐富。
- 功能:選字窗內顯示的漢字現在會受到康熙漢字轉換模式/JIS漢字轉換模式的影響,但會像中州韻系列輸入法那樣在有轉換過的候選字旁以括弧顯示轉換前的漢字。
- 功能:在切換康熙漢字轉換模式/JIS漢字轉換模式開關時,行為改為:先將組字區的內容自動遞交,再切換開關。這樣可以保證自動遞交出去的內容為「切換開關操作之前」的結果。
- 語料:例行語彙資料更新,且全字庫內容更新已確認為與 2022 年 06 月 15 日的版本一致。
- 研發:現在,將 KeyHandler 副本重設的時候,都會先藉由對應的狀態調度函式來遞交當前狀態可能持有的組字緩衝區內容資料。
- 研發:將共用的全字庫資料模組與原廠的繪文字模組改為在 LMInstantiator 當中的靜態副本,又節約了 20MB 的記憶體。
- 研發:修正 LMCoreEX 在載入且處理 txt 格式的語彙資料時(在某些情況下)無法正確處理每行開頭出現的「#」符號之情形的問題。
- 研發:對 LMConsolidator 模組(以及其在使用者語彙編輯器內的近親)某些處理細節做了小規模調整。
- 研發:將 mgrLangModel 內的對資料路徑的處理格式由 String 改為 URL,因為 String 在轉換至 URL 時還需要做對轉換失敗的例外狀況的處理、而 URL 可無損轉換至 string path。
- 研發:天權星組字引擎升級至 v1.2.6,同步加入了來自以 C# 編寫的天權星NT引擎的近期更新(包括某些要被這次更新了的半衰記憶模組用到的功能)。受益於 IntelliJ Rider 和 Visual Studio 2022 對 C# 的優秀的程式流程優化建議功能(Inspect),很多在 Swift 版天權星引擎編寫時沒能做到的程式流程優化得以在 C# 版本的天權星引擎內完成、且反哺回 Swift 版的天權星引擎。本次更新還引入了語言模組協定功能(也就是 Swift 的 protocol、C# 的 interface 介面協定)。C# 版本做這個設計主要是因為 C# 不可以同時繼承自兩個型別(但可以繼承自兩個介面協定)。Swift 用 protocol 其實也更適合,只是並非剛需而已。同期的鐵恨注拼引擎更新至 v1.1.7 版,但只是 documentation 更新+隨 C# 版刷版本號而已(C# 版鐵恨NT引擎倒是有自己的更新就是了)。
- 研發:新增了用以判斷「不需要處理候選字輪替行為」的一個條件:當組字器為空、或者「爬過的節錨」的陣列是空的時候,不處理。
- 行為:組字區內現可直接看到康熙字轉換 / JIS 漢字轉換的結果。
- 行為:由於 Facebook 在 FireFox / Chrome 瀏覽器當中會綁架 Tab 鍵、使得任何輸入法對 Tab 鍵均無法完全攔截的緣故,威注音允許使用 Shift(+Command)+Space 直接就地輪替候選字。
- 研發:考慮到 IMK 預設的滑鼠點擊行為會導致組字區內容在遞交的時候被跳過某些原本藉由 ctlInputMethod.commit() 該做的處理,所以分別在 KeyHandler.buildInputtingState() 與 InputState 內分別補齊了相關處理:前者過濾掉無法列印的 ASCII 字元,後者負責康熙字 / JIS 漢字轉換。
- 研發:InputState、KeyHandler、LMInstantiator、ctlInputMethod 的 documentation 用漢語完全重寫。
- 研發:KeyHandler 現在會對超過特定範圍之外的節點內容自動標記為「有手動選字過」,這樣會減輕每次爬軌時的運算壓力。此外,KeyHandler 還對 actualCandidateCursorIndex 的計算方法做了簡化。
- 研發:修正了 InputState 內某些需要對內部參數做 didSet 的子型別沒有在初期化時執行 didSet 的問題。
- 研發:KeyHandler 簡化了所有成員變數的命名與處理,特別是對 inputMode 成員變數的處理做了簡化。
- 研發:ctlInputMethod 內部所有對 client 的類型判斷全都撤掉、換成了 IMK 內建的 client() 函數。原因:這個函數出來的內容類型一定會是 IMKTextInput,不需要再做類型判斷。此外,ctlInputMethod 還有一些與條件判斷有關的格式簡化。
- 研發:鐵恨注拼引擎更新至 1.1.6,修正了 Phonabet 注音符號物件「在自清的時候不自動重設自身類型」的問題。此外也將倚天排列的英文命名由「Eten」訂正為「ETen」。另:鐵恨引擎現有 C++ 版與 C# 版可用、詳情請洽 Gitee 的「vChewing/TekkonCC」與「vChewing/TekkonNT」這兩個倉庫。
- 研發:天權星組字引擎更新至 1.2.1,僅就程式維護角度優化了個別方法、且做了一些術語命名調整。另:天權星引擎現有 C# 版可用、詳情請洽 Gitee 的「vChewing/MegrezNT」倉庫。
- 研發:嘗試將半衰記憶引擎內的某些 struct 改用 class,仍無效果。故繼續保持其停用狀態。
- [SP2] 新增新加坡漢語常用詞語。
- [SP1] 修正了 1.7.0 Golden Master 在給選字窗新增頁碼支援時不慎引入的(初期階段)空指針。該問題在 macOS 12.x 系統下不會爆發,但會在 macOS 10.x 全線系統下引發 Corpse_Notify 問題、導致接受 IMK 文字輸入行為的應用也跟著崩潰。
- 鐵恨引擎更新至 1.1.5,糾正了許氏鍵盤排列敲「v」時在組字緩衝區內的注音符號顯示類型錯誤。
- 採用了更智能的方法來判斷橫排選字窗是否有必要縱排顯示:如果當前頁面的所有候選字的字符總數加起來超過每頁候選字詞數量上限的 180% 的話,則強制使用縱排選字窗。因應此番修改,波浪符號選單在載入二級選單時,會先利用空狀態來消除之前的選字窗,以防止橫排選字窗與縱排選字窗同時出現在螢幕上。
- 解決了源自上游的「當組字區內有繪文字時,選字長度上限與下限判斷會失誤」的問題。方法是:對 InputState 的語意標記範圍(literalMarkedRange)的判斷流程做了簡化,且擴大了對該範圍變數的應用範圍。
- 針對「讀音數與字符數不一致」的情況重新補回了工具提示文本。
- 移除了(來自上游的)橫排輸入文字時的縱排選字窗的「不該有的起始座標偏移」。現在 ctlInputMethod 的 show() 函數會對「是否使用縱排選字窗」與「是否縱排輸入文字」分別判斷、據此決定選字窗的起始座標點。
- 糾正了 SwiftUI 版偏好設定當中「在選字窗內顯示翻頁按鈕」的勾選項無法生效的問題。
- 選字窗現會在右側顯示當前的頁面編號。
- 在偏好設定內新增了一個選項,允許使用者對單個漢字的候選字詞升頻或排除。該功能不預設開啟,是因為考慮到該功能可能會導致單個漢字「頻率過高」打斷自動選詞的危險。如果真出現這種危險情況的話,編輯使用者語彙檔案、將相關的行記錄移除即可。威注音反而鼓勵使用者們就常用漢字的排序提出調整建議(當且僅當某些常用漢字不在前十八個候選字內的情況下)。
- 移除了威注音 1.6.3 SP1 的修改、將天權星引擎降級至 1.1.8,據此解決了被這些修改引入的比如「敲『蜜蜂』選繪文字之後、只有最後一個字變成繪文字」這樣的問題。天權星引擎的下一個版本直接從 1.2.0 開始。也就是說,本次威注音 1.7.0 的 codebase 是在威注音 1.6.3 Golden Master 的基礎上完成的。
-- 以下更新日誌僅供二次研發人員閱讀 --
- [SP2] 研發:調整詞庫編譯方式為:先編譯腳本為二進位可執行檔案、再用這個可執行檔案編譯詞庫。
- [SP2] 研發:將 data 這個 Xcode 建置目標移除。對詞庫編譯的步驟被挪至 vChewing 本體的 build phrases 的開頭、以 build phrase script 的形式來實現。
- [SP1] 研發:將音效引擎處理方法由 NSSound 更換為 AVFoundation。
- [SP1] 研發:徹底禁用了 LMUserOverride,因為實在沒有什麼辦法可以使其正常工作。
- 研發:將 ctlCandidateHorizontal 與 ctlCandidateVertical 合併為一個型別「ctlCandidateUniversal」。圖時,將 useVerticalMode / isVerticalMode 更名為 isTypingVertical / isVerticalTyping,防止與「選字窗是否縱排」混淆。
- 研發:翻修 NSStringUtils、使其變成 StringUtils,對其與 InputState 及相關部位的所有對 NSString 和 NSRange 的用法均更換為 Swift 原生的 String 與 Range 用法(與 InputMethodKit 對接的用來繪製 Marking State 下畫線的部分除外)。然而,這些內容變更之處全部使用了 Swift 內建的 .utf16 處理,以確保之前上游專案對諸如繪文字與全字庫文字的相容性處理得以繼續正常工作。此外,倉庫內還有少許其它翻修、盡量使用 Swift 專有的處理習慣。
- 研發:將用到 UInt 的部分盡可能全都換成 Int,且做了數值防呆處理。原因:UInt() 函數吃了負數的話仍舊會出現運行階段錯誤。該做的數值防呆處理必須得做,不是用 UInt() 就可以省事的(反而徒增不必要的類型轉換)。
- 研發:將某些 NSString 類型才有的用法移植給 Swift 的 String 類型(也就是自己寫了語法糖)。
- 研發:將對文字提示標記的配色方案變更用的程式碼由 InputState 挪至 TooltipController、使用統一的函數來管理。
- 現允許停用任何與各種輸入模式切換功能綁定的鍵盤熱鍵開關。詳情請洽「偏好設定→鍵盤→鍵盤快速鍵」。因為 macOS 系統的 UserDefaults 管理特性的原因,做出這種修改之後需要一秒左右才能生效。
- 現允許使用「Ctrl+Alt+逗號/句號」按鍵來迅速輸入雙書名號「《》」。其實本來摁「Shift+|」也可以輸入的。另外,因為技術障礙的原因,「Shift+Alt+逗號/句號」按鍵無法用來輸入標點符號。至於 macOS 內建的輸入法為什麼可以做到這一點,竊以為很可能是因為使用了 Apple 的非公開 API 所致。
- 現允許使用者藉由偏好設定介面調整輸入法組字緩衝區的最大容量(最小為 10 字,最大為 40 字)。註:超過四十字的組字緩衝區只會帶來更負面的意義:「更麻煩的就地編輯」、「對 CPU 算力的佔用導致的輸入法響應遲鈍」,等。
- 天權星引擎更新至 v1.1.8 版,對內建的所有函數當中的 int 型參數均做了防呆設計,也新增了來自上游的獲取「當前游標位置開頭的可用候選字」的功能。此外,對殊途同歸的爬軌節點路徑僅取用最優解。因應此次更新,偏好設定內移除了與平衡權重有關的選項。
- 選字行為:移除了 Windows 雅虎奇摩式游標選字風格,且補回了真正的微軟新注音式游標選字風格。
- 按鍵行為:現在,當 (Shift+)Tab 鍵的輪替對象被設定為候選字(而非候選字窗的頁面)時,敲字時直接摁 (Shift+)Tab 會就地輪替候選字、而不出現選字窗。此時如果手動叫出選字窗的話,(Shift+)Tab 會像之前那樣在選字窗內輪替漢字。該設定不會在啟用逐字選字輸入模式時妨礙使用者輸入 Tab 縮進。
- 鐵恨引擎更新至 v1.1.4 版,針對許氏排列新增了對「ㄛˊ」「ㄛˋ」「ㄛˇ」「ㄛ˙」「ㄛ 」的輸入支援。// 實際上,原廠辭典內對應的音只有「ㄛˊ」「ㄛˋ」「ㄛ 」這三個。
- 選字窗:現在會在翻頁到尾/到頭之後再翻頁時出現提醒音效,但仍會像奇摩輸入法那樣繼續翻過去。
- 選字窗:邊框色有所調整,避免造成視覺干擾。
- 選字窗:修正了縱排選字窗的右側邊框過粗的問題。
- 音效引擎:解決了連續蜂鳴/放屁時因為上一次發聲突然被切斷而導致的爆音問題。相關行為更正為「先淡出、再切斷」。
- 偵錯:在啟用偵錯模式時,輸入法會在「/private/var/tmp/」資料夾下生成可供 GraphViz 讀取的 dot 檔案。
- 例行原廠語料庫更新。另:此次對語料庫倉庫做了一些更新,可以迅速在 Linux 系統下針對位於「/usr/share/libchewing/」的新酷音輸入法語料檔案目錄編譯且部署對應格式的威注音詞庫。生成的 dat 詞庫檔案套裝也可用於 Windows 版新酷音。如果要想在 Windows 系統下編譯的話,請安裝 WSL 版的 Ubuntu / Debian 來編譯。威注音輸入法暫無研發 Windows 與 Linux 版的確定計畫,因為目前找不到可以將 Swift 與 FCITX5 攜同工作的方法。
- 緊急修正了天權星引擎 v1.1.1 版引入的一處故障。現在,威注音輸入法不會再出現之前威注音 1.6.0-1.6.1 版當中的「新輸入的低頻詞綁架高頻詞」的情況。
- 例行詞語更新。
- 提速:更換原廠詞庫格式為 plist,於是在每次開機之後首次啟動輸入法、或是手動重新啟動輸入法之後的等待時間縮短至約一秒。該提速對 2011-2015 年的 mac 機種也有效。// 註:之前 1.5.5 版引入的算法雖然在近五年來的 mac 機種內可以快速載入,但在 2011-2015 年間內的機種的 CPU 因為缺少某些硬體運算特性等緣故、只能進行軟運算、在執行同樣的運算時要耗費十幾甚至幾十倍的時間。這也就是威注音 1.5.5-1.6.0 版在 2011 年的機種上每個簡繁模式需要十七秒鐘的時間來載入且解析核心資料的緣故(2018 年的 mac mini 的話,約一秒鐘就可以載入且解析完畢)。Plist 可以直接提供解析好的 Swift 辭典陣列,所以免去了解析的時間。
- 體驗:更換輸入法內建蜂鳴等音效為重新設計過的高傳真音效,且對響度做了標準化處理。現在的蜂鳴音效不會對使用者的情緒構成負面影響。
- 體驗:允許在偏好設定內啟用或停用「按候選字詞的長度調整權重」的功能(預設情況下不會啟用),且天權星引擎做了與此有關的小調整、使其權重調整行為不至於過猛。
- 音韻:鐵恨引擎新增對「ㄅㄧㄤ」與「ㄉㄨㄤ」的拼音支援。
- 語料:例行原廠詞語資料更新。
- 糾正了幾處與 IMK 有關的互動行為,使得威注音在很多常見情況下避免出現幽靈組字區。
- 重新啟用了之前被暫時禁用的酷音波浪鍵符號選單、且使其在 Word 與包括 macOS 內建終端機在內的各種終端機應用內得以正常使用。
- 感謝火山五筆輸入法作者 Qwertyyb 指點迷津。
- 將要 Swift 特有的一些做法套用至 KeyHandler 等模組內的一些函式。同時,InputHandler 更名為 InputSignal、改為 Struct 型別。也還糾正了一些變數名稱的拼寫錯誤。
- 在輸入法遞交內容時,不會再放行任何可能的 ASCII 不可列印字元。
- 全字庫檔案更新至 2022 年 04 月 27 日的版本。另附例行語彙更新。
- 糾正了之前威注音 1.5.8 版引入的「選字選中了 Emoji 之後、游標錯位」的問題。
- 功能更新:鐵恨注音並擊引擎更新至 v1.1.0 版,使得威注音得以重新開始支援「漢語拼音」輸入。此外,威注音也新增了對「國音二式」「耶魯拼音」「華羅拼音」「通用拼音」的輸入支援。這五種拼音方案的輸入均需要使用數字鍵來標調,但鐵恨引擎對大千排列的調號(數字鍵 6、7 號鍵)也做了相容性支援。另外,鐵恨引擎不支援簡拼輸入,且要求完整輸入所有拼音注音字母與聲調。對搜狗風格的簡拼輸入有需求者,請洽鼠鬚管等他廠輸入法。
- 功能更新:SwiftUI 版偏好設定視窗的鍵盤頁面新增了兩個快速設定用的按鈕,方便在注音與拼音輸入模式之間迅速切換。此外,注音排列與鍵盤佈局的選項新增了一些防呆設計。這兩個新功能乃 SwiftUI 版偏好設定視窗限定功能、無法在 macOS 10.x 系統內使用,但不妨礙您對注音排列與鍵盤佈局進行配置。
- 錯誤更正:修正了 KeyHandler 在敲空格鍵且注拼槽沒有聲調時沒能往注拼槽傳送陰平聲調訊號的問題。
- 錯誤修正:此次對鐵恨注音並擊引擎進行更新時,對倚天忘形與許氏佈局做了徹底的檢查修補,至少按照順序敲注音是可以敲的。此外,這次的檢查也發現了倚天忘形與許氏佈局的侷限:某些語氣詞用音在原理上無法藉由這兩個鍵盤佈局輸入。希望這個測試結果能為注音輸入法的初學者們敲響警鐘、讓他們意識到只有傳統大千聲韻並擊才是出路。
- 錯誤修正:換回了最開始使用的對重複候選字的篩除方法。
- 研發:藉由 DispatchQueue 加速了輸入法在每次開機首次啟動時對全字庫內容的載入速度。
- 研發:天權星語彙引擎更新至 v1.1.0 版,詳見其更新日誌。此次引擎更新對威注音輸入法的使用體驗尚無值得一提的改動。
- 研發:ctlInputMethod 的 handle(event:client:) 函數經過小幅重構,應該不會再傳送垃圾訊號給 KeyHandler 了。
- 研發:使用者半衰記憶模組經過一些小修改,現在可以正常生成 key、正常觀測了,但仍舊無法給出可用的選字建議。該功能繼續封存,直至徹底修好之後再對使用者開放。
- 例行語彙更新。
- 修正了自威注音 v1.5.1 版引入的對 Delete 鍵的回呼狀態判定條件錯誤。現在摁 Delete 鍵對組字區進行編輯操作時不會再出現幽靈組字區。
- 天權星語彙引擎升級至 v1.0.9,解決了在對 walk 過的 builder 插入 reading 時「expandGridByOneAt()」內的條件判定錯誤導致的 builder 內容錯亂的問題。
- 因為天權星引擎的升級,所以解決了威注音 v1.5.4 版以來在編輯組字區中心區域的文字時會發生的組字區錯亂的問題。
- 鐵恨注音並擊處理引擎升級至 v1.0.5,改良了對複合型注音排列的邏輯處理步驟、以試圖規避一些可能存在的問題。然而,因為威注音專案的研發團隊內無人懂得如何使用倚天忘形26鍵與許氏國音排列的緣故,這兩個複合型注音排列的測試自然也無法完成、只能靠推算。歡迎熱心人士們來測試。如果發現有問題的話,請以詳細描述在威注音的 GitHub 或 Gitee 倉庫開工單。
- 因為鐵恨引擎的升級,威注音輸入法得以新增兩個模式:「拼音並擊模式」與「可以自選用 Ctrl(+Alt)+CMD+Enter 輸出注音文還是拼音文」。對於後者而言,如果是摁了 Alt 的話,輸出的 W3C Ruby 注音文標注與拼音文標注均會按照兩岸各自的教科書格式來顯示(除非網頁字型對這種漢語拼音支援欠佳)。// 註:注音文的教科書寫法是要把輕聲記號寫在注音的背後(也就是左側)。
- 因為 Delete 鍵幽靈組字區的問題和天權星引擎的組字區錯亂問題均得到解決的緣故,這次更新重新啟用了「reverseWalk()」反爬函數的進階功能:只反爬最近三個節點,且啟用「span 越長、權重越大」的平衡權重。
- 更換注音並擊引擎為鐵恨引擎。至此,威注音專案已移除全部的 Lukhnos Liu 的 C++ 源碼成分。
- 移除了漢語拼音輸入支援(因鐵恨注音並擊引擎尚未支援漢語拼音輸入)。回頭能實現這個功能的話就再將這個功能補回來。
- 修正了偽精業鍵盤 Ukelele 佈局檔案內的一處映射錯誤。
- 停用了讓天權星引擎只爬附近幾個節點的設計。
- 少許詞彙更新。
- Megrez 天權星引擎升級至 1.0.7 版,對 reverseWalk() 做了功能拓展。現在,span 跨度越長,權重越大。如果有誰要改這款輸入法的話,還可以用 reverseWalk() 新增的選填參數「nodesLimit」限定要 reverseWalk 的節點數量範圍。
- 在所有語言模組型別內以 .split() 取代之前的 .components(),將簡體中文/繁體中文核心語料庫的單獨載入時間由四秒縮短至一秒、且輸入法峰值記憶體佔用從 115MB 下降至 74MB 左右。如果只是使用簡體中文或繁體中文某個單一的模式的話,輸入法記憶體佔用約為 40MB 左右。
- 優化了使用者語言編輯器與 LMConsolidator 自動檔案格式整理模組內的處理工序。
- 更改了 LMInstantiator 在獲取且整理 Unigram 陣列時對重複內容的清理步驟。
- 例行語彙資料更新。
- 新功能:允許使用者在敲字時摁 Ctrl+Alt+Command+Enter 直接輸出 W3C 標準的 HTML Ruby 漢字注音標示。
- 修正了 F1-F20、PrtSc、Insert 等按鍵「會導致輸入法崩潰」的問題:
- 針對純 Swift 版 KeyHandler 與天權星引擎對某些不合法的 charCode 拒絕處理、導致的輸入法崩潰的情況,這次更新修改了 InputHandler 對按鍵訊號的處理,僅允許且接受 ANSI 按鍵訊號、以及除此之外在白名單內的 KeyCode 訊號。對其餘 KeyCode 與 charCode 一律做出指定的錯誤回呼(ErrorCallback),防止那些可能會引起故障的 charCode 訊號被送交給天權星引擎。
- 記憶體佔用峰值由 200MB 左右降至 114MB 左右:
- 引入了 Isaac Xen 的 StringView Ranges Extension 功能拓展,藉此完成了 LMCoreEX 這個萬用免析型別、以作為上游 ParselessLM 免析語言模組的繼任者。與此同時,LMAssociates 與 LMUserPhrases 也都做了免析處理升級。這些升級工作使威注音輸入法的記憶體佔用由約 200MB 降至約 114MB。由於 LMCoreEX 接管了 LMCore 與 LMLite 的全部工作,故淘汰 LMCore 與 LMLite。另外,為了防止程式出錯,LMCoreEX 會自動給讀到的大於 0 的權重數值乘以 -1。
- 從這一版開始,在藉由敲「顏文字」三個字來輸入顏文字時,選字窗會強制使用縱排顯示、以應對之前橫排選字窗寬到溢出螢幕邊緣的常見現象。
- 修正了 SwiftUI 版偏好設定介面內的辭典介面內的「CNS」「繪文字」兩處勾選項目不當場生效的問題。
- 棄用了所有與語言模組載入有關的 DispatchQueue 處理,以規避一些會導致輸入法不斷崩潰的運行階段錯誤。
- 修正了所有語言模組型別當中在讀取檔案過程出錯時的錯誤報告訊息內容及格式。
- 稍微降低了在詞語編譯時對統計次數為 0 的詞語施加的預設權重。
- 研發:調整了 LMInstantiator 內的各種函數的命名、以遵循目前的各個語言模型副本的命名體系。
- 研發:同步了來自上游(UPR315)的對注音調號輸入行為的修改。雖有仔細檢閱過這次的修改內容同步情況,然而:論及這次修改對威注音造成的可能的行為變化,威注音不保證其與上游 PR 描述完全一致、也不對上游的 PR 的英文正文描述內容負責。
- 輸入法的語言處理引擎由 Gramambular 更換為使用 Swift 語言編寫的 Megrez 天權星引擎。
- 語言模型管理器型別(mgrLangModel)內用以寫入使用者自訂語彙的函數現可應對「正要寫入使用者自訂語彙時,檔案的結尾標記是壞掉的」的情況。
- 核心語言模組資料現在會按照簡繁體中文模式分別載入至記憶體。
- 在核心語言模組開始讀入與完成讀入時,會在螢幕右上角出現提示。
- 精簡了 LMInstantiator 生成要傳回的 Unigrams 陣列時的處理步驟。
- 新增了部分與台澎金馬的鐵路站點有關的詞語資料。
- 因為輸入法語言處理引擎的更換、且使用額外的 ObjC++ 型別來封裝 Mandarin 注音拼寫處理引擎,所以 KeyHander 與 mgrLangModel 均徹底 Swift 化。配套的語言模型處理用型別也全都重寫了。這本來應該是進步項目,但因為目前尚無在 Swift 重現之前 ParselessLM 載入速度的手段,所以會在輸入法每次開啟或重啟時均耗費幾秒鐘、來讀取核心語言模組資料。之後,輸入法會常駐記憶體內,每次要敲字就不會再重新讀取核心語言模組資料了。
- 出於同樣的原因,輸入法的記憶體佔用由 15MB 上漲到 170-200MB 左右。但如果您只用簡體中文或繁體中文輸入模式的話,則記憶體佔用會出現對應的減少。經過測試,這個負面特性並不會對正品 Mac 電腦構成耗電方面的影響,但 Hackintosh 筆電可能會受到影響(因機器而異)。幸運的是,輸入法的反應速度更快了。
- 從這個版本開始,半衰模組功能暫時從威注音缺席。一是因為用 Swift 重寫之後發現完全沒效果、也不知道該怎麼寫單元測試來找出毛病,二是因為這個功能會給某些使用者帶來額外的困擾:比如說剛剛用 SHIFT+方向鍵選字後摁 Enter 就地新添入的使用者語彙可能會因為半衰模組的殘存記憶而無法立刻生效,等。雖然重啟一下輸入法就好,但還是會很麻煩。回頭等半衰模組功能修好之後,威注音會考慮在每次就地新增使用者語彙的時候重設半衰模組的內容。
- 依照來自 Mobile01 社群之反饋,集中調整了一些原廠語彙庫的內容及頻率。
- 規範了對游標前置與後置模式的英文稱謂及相關函數命名、以免令使用者與研發參與者們產生困惑。注意:本次更新恐需使用者重新配置對游標前置與後置模式的偏好設定(但原廠預設行為沒有變化)。
- 訂正了從上游繼承來的對游標選字模式的錯誤描述。現不再使用「漢音風格」「微軟新注音風格」來描述游標前置模式與游標後置模式,轉而改用更準確的稱謂:「macOS 內建注音風格」與「Windows 版奇摩輸入法風格」。原因:漢音輸入法 Windows 版僅支援游標後置模式、且微軟新注音輸入法不允許游標在詞的中間時呼叫該詞音的候選字(雅虎注音、小麥注音、自然輸入法等某人參與過的案子都有這個 Bug,而微軟新注音、新酷音、macOS 內建注音都沒有這個 Bug)。詳情請洽本專案的 GitHub Issue #67 。
- 將威注音 1.5.2 版當中針對游標前置模式的一處行為修正方式改為上游原廠 Gramambular 內的某個備用函數(僅在游標前置模式啟用時才會使用)。
- 糾正了威注音 1.5.2 版引入的一處行為倒退:在套用了對游標前置模式的修正的情況下,當游標在組字區最尾端的時候,現在又可以給最尾端的候選詞另選詞了(而不是只針對最尾端的候選字):這是小麥上游的一個比較有用的功能特性,彌補了游標前置模式相對於游標後置模式而言的唯一不足。
- 簡化了某處一般情況下用不上的工具提示,以杜絕可能存在的用語混淆。
- 藉由修改 Grid.h 這個檔案,解決了源自上游引擎的「當啟用漢音風格游標前置模式時,游標在詞語中間也會叫出候選字」的 Bug。本次修正之後,比方說:您組字區內敲「提供像是」這個詞組、且游標在「供」與「像」之間時叫出選字窗的話,候選字清單內不會再出現「公象」了。這樣一來,在行為上就與 macOS 內建注音以及 macOS 版奇摩輸入法完全一致。
- 使用者語彙編輯器的視窗的預設尺寸與最小尺寸擴增至 640x480。
- 僅簡體中文與繁體中文語系介面的三處用語調整:「配列」→「排列」,「不要放屁」→「廉恥模式」,「康熙字」→「康熙正字」。
- 將 KeyHandler 剩餘的某個實際上可以 Swift 化的 InputState 回傳函數用 Swift 重寫。至此,所有與 InputState 回傳有關的功能函數全部由 Swift 接管、徹底消滅了 KeyHandler ObjC 程式部分的「expected a type」的問題。
- 將 KeyHandler 的所有 Swift 化的函數的命名按照 Swift 的函數命名習慣做了統一調整。
- 移除了 KeyHandler Swift 部分程式庫內的「!as」強制拆包的使用、改用「if let as?」這樣的 Swift 安全句法。
- 仍舊是 KeyHandler:趁這次重寫時,針對「buildAssociatePhraseStateWithKey」這個(用以生成帶有聯想詞候選清單的結果的狀態回呼的)函數進行了小幅度的重構處理,使其始終可以從 ObjC 部分的「buildAssociatePhraseArray」函數獲取到一個內容類型為「String」的標準 Swift 數組。這樣一來,該聯想詞狀態回呼函數將始終能夠傳回正確的結果形態、永遠也無法傳回 nil。於是,所有在用到該函數時以回傳結果類型判斷作為合法性判斷依據的函數,全都將依據改為檢查傳回的數組是否為空:如果數組為空的話,直接回呼一個空狀態。
- 用 Swift 重寫了 KeyHandler 所有能重寫的部分(約 80% 左右),順手解決了該模組內被 Objective-C++ 隱蔽的全部的類型安全問題,藉此換取了更快的輸入法響應速度、與更舒適的程式專案維護體驗。
- 調整了使用者語彙編輯器的預設字號大小,使其更易於閱讀。
- 新增隱藏功能:允許使用者在開啟調試模式的情況下「摁著 Alt 鍵點輸入法的對應選單項目」以同時開啟簡繁體雙模式的使用者語彙檔案。除此之外的場合,只會開啟當前簡/繁體模式對應的使用者語彙檔案。
- 解決了「在手動重新啟動輸入法之後,輸入法不尊重當前簡繁輸入模式(尤其是簡體中文輸入模式)」的問題。
- 解決了「重新啟動輸入法之前正在輸入的應用程式的光標仍在,重啟輸入法之後立刻接著輸入時、首個文字輸入會失敗」的問題。
-
上述兩個問題的解決思路在於:首先讓輸入法記住自己在手動重啟或者意外關閉之前所用的簡繁輸入模式,其次就是每次手動重啟的那一刻由輸入法本體來搶一次輸入焦點。這樣可以迫使當前正在接受文字輸入的應用程式重新執行輸入法的 activateServer 與 setValue 的操作。
-
除此之外就是 KeyHandler 的 Swift 化。原理在於:先用 Objective-C 將 C++ 處理都包裹起來、封裝成 Swift 可以直接用的各種動態過程函數,然後以 handleInput 這個函數入手、來逐漸蠶食重寫。結果就是輸入法的編譯速度與操作反應速度都變快了:因為程式不需要去猜物件類型,這就節省了很多運算資源。比方說藉由 Objective-C 回傳的所有 NSArray,裡面的資料類型也都是明確指定了的。 Objective-C 猜類型時浪費的時間,使得 C++ 相對 Swift 的速度優勢完全無法發揮。整個 KeyHandler 的確無法僅使用 Swift 完成,但 Objective-C(++) 的使用要盡可能減少、盡可能僅用作 C++ 過程的包裝工具、盡可能不要出現任何需要猜類型的情況(特別是數組內的數據類型得明確指定)、盡可能僅使用 Cocoa 內建的 NS 物件類型,這樣速度最快、也最容易談安全性。
- 輸入法:從這一版開始,當輸入法本身的視窗(偏好設定或者關於視窗等)重新成為當前操作視窗的那一刻,輸入法不再在那裡轉風火輪。
- 偏好設定:如果當前輸入法在 macOS 11.0 開始的 macOS 系統下運作的話,直接藉由輸入法選單點開的偏好設定會是使用 SwiftUI 製作的新版偏好設定介面。同時,摁 Alt 點開輸入法選單、再點開偏好設定的話,可以叫出迄今為止的舊版偏好設定介面。整個 macOS 10.x 系統內只會出現舊版偏好設定介面。
- 使用者語彙:解決了舊版偏好設定視窗在選擇使用者語彙資料夾時「沒能對目前選中的目錄正確判定是否具有寫入權限」的設計缺陷。
- 輸入體驗:當組字區不為空的時候,如果摁下了某些漢字輸出轉換與語言模組模式轉換的熱鍵的話,則會在那一刻遞交該組字區的內容(上屏)。
- 作業系統相容性:與之前的宣稱不同的是,這次 1.5.0 版並未放棄對 macOS 10.11 El Capitan 的支援,因為在技術上不需要放棄。
- 檔案系統行為:如果輸入法發現使用者語彙檔案路徑對應的對象不是資料夾而是檔案的話,不再套用上游的做法(就地移除),而是分情況:如果該路徑是原廠路徑的話,則對對象進行更名(而非移除);如果該路徑是使用者指定過的路徑的話,則直接報錯。
- 研發:對 Xcode 專案啟用增量編譯模式。
- 研發:由 mgrPref 來管理「kCheckUpdateAutomatically」使用者偏好設定參數。
- 研發:將 UpdateAPI 自 AppDelegate 獨立出來、且將其中的 SupportedLocales 常量矩陣挪到 IME 模組中。
- 研發:針對 NotifierUI 改用 macOS 10.12 Sierra 推薦的設定(與 macOS 10.11 仍相容)。
- 研發:引入「MandarinParser」專有術語,專門用來描述 OVMandarin 模組管理的注音配列。藉此與本次引入的另一個用以描述基礎鍵盤佈局的專有術語「BasicKeyboardLayout」(前 BasisKeyLayout)彼此區分開。
- 研發:將 mgrPrefs 內的用以「自動對寫入空缺的參數寫入預設值」的部分做了程式方面的結構精簡,以求更高的維護效率。
- 研發:讓 mgrPrefs 內的各種用以映射使用者偏好設定 Plist 條目的內部常量全部靜態化、以便 SwiftUI 版偏好設定視窗使用。
- 研發:將 resetSpecifiedUserDataFolder 和 RangeReplaceableCollection 這兩個函數從 ctlPrefWindow 挪到 mgrPref 與 IME 模組、以便 SwiftUI 版偏好設定視窗使用。
- 研發:在 IME 模組內引入專用的函數來直接生成英數鍵盤辨識 ID 專用的數組、以便 SwiftUI 版偏好設定視窗使用。
- 研發:為 SwiftUI 版偏好設定引入了 SindreSorhus 的 Preferences 模組。為了盡可能規避 Swift Package Manager 的問題,於是對該模組的引用方式為拆包引用。
- 研發:針對 ctlPrefWindow 舊版偏好設定視窗控制器與 mgrLangModel 語言模組管理器內的一些函數做了調整、以便準確核查指定的使用者語彙檔案目錄是否有寫入權限。本次針對 macOS 11.x 及之後的 macOS 系統使用 SwiftUI 重寫的偏好設定視窗沒有這個問題。
- 研發:使用 Swift 將 mgrLangModel 語言模組管理器內所有可以用 Swift 改寫的部分全都用 Swift 進行了改寫。該過程中發現了一些藉由 Objective-C 無法曝露出來的類型安全問題,均順手解決。
- 研發:將 mgrLangModel 語言模組管理器內的「用以檢查具體的使用者語彙檔案是否存在」的相關程式碼做了精簡處理。
- 研發:針對 ctlInputMethod 內的 activateServer() 與 setValue() 這兩個函數內所有可能涉及到 IMKTextInput 的過程均施加了一個條件開關:當且僅當當前 client 不是該輸入法本體的時候,才會執行這些過程。成果很可觀:這些過程還是被執行了……但當輸入法本身的視窗(偏好設定或者關於視窗等)重新成為當前操作視窗的那一刻,輸入法不再在那裡轉風火輪。
- 研發:對 Swift 程式碼部分進行了語法先進性檢查,但並未套用全部的檢查結果。
- 研發:新增了一個用以快速指定倉庫內的新版本號的腳本。
- 功能變更:預設情況下摁波浪鍵出現的符號選單回歸至威注音 1.2.x 以及小麥注音 2.2.2 的式樣。
- 功能變更:自威注音 1.3.0 起至 1.4.6 版為止的「新酷音式波浪鍵選單」的熱鍵改為「Alt+波浪鍵」以雪藏之。原因:該選單與至少會被 WeChat、Microsoft Word 2019、iTerm 2 等多款非標準 Cocoa 應用攔截掉方向鍵與翻頁鍵,嚴重影響使用體驗。考慮到十年前的奇摩注音的一點通選單在這些應用當中也出現了雷同的問題,筆者據此認定該問題超出筆者的應對能力範圍,只能暫時作罷。
- 專案:整個程式庫引入 Clang-Format 格式整理機制:(Obj)C(pp) 檔案內容採微軟行文規範(因為不會有雙空格縮進);Swift 採 Apple 官方 swift-format 行文規範、且在此基礎上使用 Tab 縮進等自訂參數。全專案函數命名鼓勵採用匈牙利命名法(其次則是以小寫起頭的草泥馬命名法 lowerCamelCase)。詳情請洽 README.MD。部分函數與型別名稱已經據此重新命名。
// 筆者抵制任何採雙空格縮進的 clang-format 格式:這種設計只是對寬型等寬字型擦屁股的設計、且會對諸如 Iosevka 等半形等寬字型的閱讀體驗構成災難性的影響。 - 專案:將所有與選單有關的內容自 ctlInputMethod.swift 抽出、放到一個單獨的檔案內進行管理(但所屬型別不變)。此外,某些在該檔案當中的常數與變數也被抽到 IME 型別模組內進行管理。
- 專案:將部分專案檔案挪到正確的位置。
- 專案:對所有功能鍵的 keyCodes 命名做了統一規範管理。
- 本地化:對 Apple 動態注音鍵盤佈局的名稱描述做了調整。
- PKG 安裝程式:對剛執行安裝程式時的說明頁面內容進行了完善、且新增了對終端部署方法的描述。
- PKG 安裝程式:更換了安裝程式介面背景、且修整了安裝前後的 preflight & postflight 腳本的內容。
- 例行語彙庫更新。
- 新增功能:當摁著 Alt 鍵的時候點開輸入法選單的話,會出現允許卸除輸入法的選項。
- 新增功能:以非 sudo 命令且以「uninstall」參數藉由終端運行輸入法的話,會卸除輸入法。在此基礎上如果將參數換成「uninstall --all」的話,則會連同使用者偏好設定與使用者語彙檔案資料夾一同清理乾淨。
- 以 sudo 命令且以「uninstall」參數藉由終端運行輸入法的話,會清理掉任何被安裝在錯誤的位置的輸入法檔案。
- PKG 安裝包做了一些行為調整,以「試圖」做到:在 macOS 10.x-11.x 系統下哪怕不注意輸入密碼以管理員權限安裝、也能將輸入法的相關檔案挪到正確的位置。
- 本次唯一的功能更新:允許使用者自行指定使用者語彙檔案的存放目錄。如果該設定值為無效值的話,則會自動使用預設目錄。
- 將語言模組內的偵錯模式訊息輸出綁到了輸入法偏好設定內的偵錯模式開關上。
- 修正了語言模組管理器內的一處由上游引入的 Cocoa 類型轉換安全漏洞。
- 在 APP 版安裝程式(非 PKG 的安裝程式)當中使用 FileManager 管理輸入法的安裝路徑。
- 所有與使用者語彙庫重載有關的命令均由 AppDelegate 挪至 IME 模組、使用單獨的函數來管理,且在 AppDelegate 當中直接調用該函數。
- 規範了偏好設定內某些與鍵盤佈局有關的術語與說明描述,使其更易懂。
- 解決了自威注音 1.4.1 / 1.4.2 版對 MainMenu.xib 失手引入的一處「在舊版 macOS 系統下無法顯示偏好設定與關於視窗」的失誤。
該版本僅確保在 macOS 12 Monterey 系統內可正常全功能執行。對 macOS 10.11.5 的相容支援已經在 1.4.5b 補回。
- 本次更新移除了之前從上游繼承來的「基於 Shift 等修飾鍵來起作用的進階鍵盤配置」功能、以徹底杜絕上次更新時提到過的「NSMenu 攔截修飾鍵切換狀態訊號」的問題。威注音推薦有相關需求的使用者們活用 macOS 內建的 Caps Lock 切換中英輸入法的功能。
- 無論游標前後放置偏好設定怎樣,現在都會在選詞之後將游標自動放在選中的詞的前方(橫排時是右側、縱排時是下側)。
-
經測試發現小麥注音 2.2.2 的進階鍵盤配置的 Shift 鍵符號鍵盤佈局切換的功能仍舊會被某些包括 Dock 與輸入法本身的 NSMenu 妨礙實時獲取當前的修飾鍵狀態、且小麥目前對 Shift 以外的修飾鍵處理完全無效。威注音 1.4.3 已經引入 Alt 符號体系,所以決定閹割掉這個功能、免得被那些試圖用 defaults write 開啟了這個功能的使用者們開工單。
-
有些人在使用類似漢音那樣的「游標置於詞語前方」的功能的時候,也會用 HOME 鍵從組字區的最後方開始選字。本次更新在這方面的行為更動,會給這種操作需求情形帶來便利。
該版本僅確保在 macOS 12 Monterey 系統內可正常全功能執行。對 macOS 10.11.5 的相容支援已經在 1.4.5b 補回。
- 解決了「在摁著修飾鍵之後點開某些 App 的某些 NSMenu 且在其消失之前鬆開修飾鍵後、無法正常輸入中文」的問題。
- 針對 Apple 動態注音(大千&倚天)鍵盤佈局及幾個威注音動態注音鍵盤佈局引入了 Alt-Key 標點輸入設計、以彌補這些動態鍵盤佈局在「缺乏 Alt 鍵特殊符號輸入」這方面的不足。
- 修正了在使用 ABC 英數鍵盤佈局時出現的「就地刪詞鍵失效」的問題。
- 少數詞語更新,且豐富了一些標點輸入體驗。另外也修正了 Ctrl 符號鍵的失能。
- 原理:這次拋棄了之前利用修飾鍵切換鍵盤佈局的設計、且將相關程式處理還原至與小麥注音 2.2 版相同的行為,俗稱「放棄治療」,因為系統內可能會有非標準 NSMenu 妨礙輸入法獲取當前的修飾鍵狀態、且該問題無解:NSMenu 對滑鼠鍵盤訊號攔截的優先權非常高,屬於系統級攔截。輸入法本身的選單倒是在這次更新當中做了對這種現象的免疫處理,然而對諸如 Dock 等其它 App 的非標準 NSMenu 完全無法對策。
- Apple 動態注音鍵盤佈局(大千與倚天)以及威注音 pkg 安裝包隨贈的幾個動態注音鍵盤佈局都不支援 Alt 鍵輸入特殊符號,摁了 alt 鍵之後除了等於號鍵是破折號鍵以外、其餘都與美規鍵盤在不摁修飾鍵時的佈局內容無差異。這次引入的 Alt 符號鍵使得這些動態鍵盤佈局再無此類劣勢(但僅限於符號鍵區、而非字母注音鍵區)。
- 如果使用者用 defaults write 改過 FunctionKeyKeyboardLayout 的話,則能觸發該問題的鍵盤佈局是 FunctionKeyKeyboardLayout 對應的鍵盤佈局。無論如何,該問題已經在這次更新內修正。
- 主要新增了給 Alt 符號鍵用的內容,但一般符號鍵的內容也豐富了很多。
該版本僅確保在 macOS 12 Monterey 系統內可正常全功能執行。對 macOS 10.11.5 的相容支援已經在 1.4.5b 補回。
因 1.4.1 版廢版的緣故,1.4.2 版的更新說明是針對 1.4.0 版而言的。
- 允許在就地新增語彙時摁「SHIFT+CMD+ENTER」將既有語彙塞入排除表,俗稱「就地刪詞」。
- 解決了飄雲視窗在系統尚未啟用暗黑模式時的背景色配置錯誤。
- 針對新酷音的引擎編譯的威注音詞庫腳本已經改用 Swift 重寫,可以利用新酷音的編譯引擎來檢查威注音語料庫既有檔案的格式合規性。結果,在合規性檢查過程中,發現了大量以前因人工編輯不慎而導致的格式錯誤。這次統一進行了修正。
- PKG 安裝程式現可在安裝完畢之後自動讓 Monterey 系統提示您是否啟用輸入法。
- 修復了之前在威注音 1.4.1 版失手引入的一些按鍵訊號處理流程失誤。
- 使用者語彙編輯器的格式整理腳本優化,減少了非必要的 RegEx 處理。
- 修正了在輸入法設定視窗內無法使用剪貼簿鍵盤熱鍵的問題。
- 為了能不與某些即時通訊軟體發生相容性問題,故將注音文輸入按鍵判定統一為「CTRL+CMD+ENTER」。
- 為了方便使用者迅速摁 SHIFT+前後方向鍵 來進入就地新增/排除語彙的狀態,威注音現允許使用者以 SHIFT+前後方向鍵 來關掉選字窗(之前只是會放屁/警告聲而拒絕動作)。
該版本誤將小麥注音的兩處始祖設計認為是某些 Bug 的根源,結果反而導致了 F1-F12 鍵盤對組字區的不當操作。 因為這個原因,將 1.4.1 版廢版處理、重新 Rebase 至 1.4.2 版,免得 commit history 誤導後來者。
關於威注音輸入法在 1.4.1 版開始出現的偶爾敲字卡殼的原因的總結:
威注音輸入法在 1.3.x 中後期版本曾經改動過 ctlInputMethod 當中的對於「依修飾鍵狀態切換鍵盤佈局」的狀態。在這個時候,因為(錯誤決策)拿掉了對每個鍵盤變動事件做出「return false」的處理,導致這個環節產生的垃圾數據被塞給 KeyHandler。然後 KeyHandler 就會在語言模組處理環節之前的最後一個按鍵檢查環節「still nothing」那裡報錯。
總之,1.4.1 版威注音搞錯了三點:
- 以為「得砍掉 ctlInputMethod 裡面的 flagsChanged 判定」,反而導致了在「空」輸入法狀態下首次輸入的按鍵沒被送入組字區的問題。
- 拿掉了 ctlInputMethod 針對鍵盤佈局更換時的「return false」,結果產生了垃圾按鍵訊號。
- 以為「砍掉 still nothing」就好,結果導致垃圾數據就這樣被送給 InputMethodKit、導致 NSInternalInconsistencyException。
哪怕沒有上述前兩點,第三點也會導致某些與 F1-F12 有關的垃圾數據無法被正常處理、導致異常行為。
特此備忘。
- 更新了藉由 SHIFT 鍵往組字區輸入字母時的判定,現在判定強制要求 SHIFT 鍵必須被摁下。於是徹底解決了某些情況下「試圖以注音敲漢字、卻發現敲出來的往往都是大寫字母」的問題。此次還將大寫字母鍵的輸入判定由 KeyHandler 挪至 KeyHandlerInput 模組,以進行統一管理。
- 在除了威注音語彙編輯器以外的應用內輸入注音文的熱鍵被改回至 Ctrl+CMD+Enter,因為之前的修改無法用來解決上述問題。
- 新增 UserSymbolLM 使用者繪文字語言模組,隨使用者語彙自動載入。這樣會方便那些想自訂國旗類繪文字的人群們自行滿足個人需求,畢竟威注音是不會在原廠語料庫內放入這一類資料的。
- 輸入法與威注音語彙編輯器的「關於」視窗內新增了前往威注音 wiki 的按鈕。
- 解決了使用者語彙檔案自動整理模組會在整理格式時重複插入格式整理標頭的問題。
- 針對輸入法的關於視窗與偏好設定視窗重新啟用了 CMD+W 熱鍵關閉視窗的功能支援。
- 針對飄雲通知提示窗與偏好設定視窗啟用了 Windows Aero 透明玻璃窗體風格。
- 些許詞彙更新。
- 圖示重新設計,且優化了選單圖示的可視性。
- 單引號按鍵現依台灣注音輸入法使用者習慣、來預設輸出全形頓號。
- 修正了 Shift+X 鍵無法往組字區內輸入英文字母的問題。
- 就地新增使用者語彙時的提示窗格新增配色支援。
- 威注音語料庫的 makefile 腳本做了升級,可滿足該版本今後的詞庫更新需求。
- 改良了應用程式圖示在 16x16 規格下的視覺整潔度設計,使其與選單列的新圖示一致。
- 將 OpenCC 的語料庫更新為 2022年03月19日時的版本,且附上了幾處威注音自己的轉換規則更正。
- 稍微優化了顏文字的字長,但仍建議對該功能有嚴重依賴者使用縱排選字窗。
(9-12 為 1.3.9b 相對於 1.3.9 的更新,13-16 為 1.4.0 相對於 1.3.9b 的更新。) (因為 1.4.0 並無程式方面的實質改動,所以與 1.3.9 合併記錄。)
- 語言模型:修正了在切換簡繁體中文模式後不會跟著自動同步諸如「全字庫」「繪文字」這類子語言模組的開關狀態的問題。
- 英數模式:廢棄了不久之前引入的基於 CMD+CTRL+SHIFT+I 熱鍵驅動的「原生英數模式」,因為 Caps Lock 模式足夠了。
- 英數模式:Caps Lock 英數模式現在會切換鍵盤佈局至 Apple ABC 佈局,使其行為與 macOS 英文輸入模式一致。
- 注音文輸入:現將注音文輸入熱鍵統一為 Ctrl+Enter,無須摁 Command。這樣可以避免一些狀態判定問題。
- 使用者語彙:重新引入 OpenCC 實現了一個新功能:在某個簡繁體模式內使用「摁 SHIFT+方向鍵選擇範圍、敲 ENTER 確認」的方式就地新增使用者語彙時,會自動將藉由 OpenCC 轉換過的結果塞入另一個簡繁體模式下的使用者語彙檔案內、且附以特殊標記(方便人工排查轉換結果是否準確)。
- 使用者語彙編輯器:糾正一處本地化翻譯錯誤(「轉換微小寫」→「轉換為小寫」)。
- 使用者語彙編輯器:糾正了正則轉換功能當中的 NSRange 範圍選定錯誤、且調整了正則轉換順序。
- 語料庫:新增大中華地區的省市名稱記錄。
- 語料庫:新增了一些繪文字內容。
- 漢字轉換:威注音內建的康熙字與日語漢字轉換模組現已不再使用 Regex 處理轉換,藉此獲得效能提升。
- 詞庫編譯腳本:優化了 Regex 算法,進一步縮短編譯時間。
碎碎念:
- 為了維護威注音的合法性原則,今後威注音並不計畫加入任何國旗類 Emoji。有相關需求者,請自行增補各自的使用者語彙檔案。
- 按鍵行為:糾正了「無法叫出波浪符號按鍵」「想輸入半形減號卻變成別的符號」的問題。
// 在某些早於 macOS 12 Monterey 的 macOS 系統下使用 macOS 內建的動態大千注音鍵盤模式時才會有這種問題,因為 Apple 在 Monterey(也可能是 Big Sur)系統內修改了內建的大千動態注音鍵盤佈局的符號鍵配置。本次更新放棄之前的 CharCode 判定、轉而使用 KeyCode 判定、以確保波浪符號按鍵在任何版本的 macOS 下都可以正常工作。至此,威注音輸入法所有功能鍵盤按鍵全部使用 KeyCode 來管理。 - 偏好設定:修改了一些視窗控制項行為處理,使得所有牽涉到語言模型的功能的介面開關可以立即生效。
// 該改動波及的範圍有:「全字庫支援開關」「繪文字符號輸入支援開關」「語彙置換模式開關」。 - 英數輸入:允許使用者使用除了 Caps Lock 以外的手段切換英數輸入模式(熱鍵為「Ctrl+Cmd+Shift+I」)。
// 威注音仍推薦使用 macOS 系統內建的 Caps Lock 輸入法切換管理功能。 - 假名處理:支援日語拗音輸入,但必須整個輸入。
// 一個字符一個字符地分開輸入也可以,只是會非常沒效率而已。 - 假名處理:半衰模組不再對日語假名產生記憶。
// 如有大量日語輸入需求者,請考慮自訂語匯、或者使用專門的日語輸入法(強烈推薦)。 - 選字窗:允許使用者對調 Shift+Space 與 Space 鍵在選字窗內的行為(是翻下一頁、還是選下一個候選字)。
- 選字窗:允許使用者出於美觀偏好的原因將選字窗內的翻頁按鈕設為「不顯示」。
- 選字窗:選字窗內的翻頁按鈕的美術調整。
- 選字窗:針對簡繁體中文輸入模式啟用不同的選中候選字高亮背景顏色。
// 之前的顏色有些太亮眼,這次繁體中文改用淺藍色、簡體中文改用淺红色,且與系統的明暗模式對應。 - 使用者語彙編輯器:允許將漢語拼音「cei」轉換「ㄘㄟ」,聲調不限。
- 雜項:現允許在威注音語彙編輯器以外的程式當中使用 Ctrl+CMD+Enter 將當前組字緩衝區的內容以注音文的形式輸出(且在這種模式下輸出的注音不以減號區隔、而是以半形空格區隔每個漢字的讀音)。
- 雜項:針對使用者語彙編輯器與使用者核心語料庫編譯腳本的 Regex 處理部分做了效能優化處理。
- 雜項:使用者語彙編輯器的軟體封包名稱現已被正確本地化。
- 雜項:允許使用者停用繪文字符號輸入,需藉由「摁 Alt 鍵同時點開輸入法選單」的方式看到開關選項。
- 雜項:在系統內有安裝更紗黑體的情況下,簡繁體中文模式的選字窗會依照兩岸各自的筆形標準來顯示候選字。
// macOS 12 開始無須安裝更紗黑體,因為 macOS 12 的 SDK 允許在使用系統字型時指定語言。
碎碎念:
- 論及僅用 Shift 鍵切換英數模式的功能,威注音暫時沒找到實現方法。考慮到已經在這個功能的製作嘗試上浪費了過多的時間,所以只能先擱置了。
- 「允許指定在輸入法剛剛初始化時是否啟用原生英數模式」的功能的引入計畫也取消了。不是不能做,而是很難做得完美。加上這個功能本來屬於替某些使用者的過度懶惰行為擦屁股的功能、從開發角度來看無法讓使用者的體驗更細緻,所以這個功能就不做了。
- 威注音現允許使用者真正地將他們想要加入使用者語匯的內容提權至頂。
- 輸入法新版本檢查功能現可正常使用。
// 本次更新修正了威注音 1.3.0 版引入的 ctlNonModalAlertWindow 無法正確呼叫 frmNonModalAlertWindow 的缺陷,於是自動更新檢查功能現可在發現更新版本時正確彈出視窗來提醒使用者要不要更新輸入法。 - 修正了威注音 1.3.0 版引入的另一個 bug,使得威注音重新支援最多十字長度的候選字。
- 半衰模組現不再記憶符號數據。
- 偏好設定視窗內尚未本地化的部分已經全部處理完畢。
- 使用者語匯編輯器現不再在某些包含高碼位萬國字的行當中執行錯誤的格式整理操作。
其它:
- 程式碼倉庫與軟體載點搬回 Gitee。
- libvchewing 模組現已換用 Swift 重新編寫整個用以編譯 macOS 版威注音詞庫的工具鏈、取代了之前使用 GNUtils 和 Python3 的工具鏈。於是現在可以再次使用終端機的 make ; make install 編譯了。
- 優化了使用者語匯編輯器當中的格式整理模組的執行效率、盡可能減少在統整格式時的 RegEx 的使用。
- 使用獨立的語言模型來處理注音文與帶有讀音的符號。
碎碎念:
- 寫給打算手動編譯的人群:此次更新涉及到 libvchewing 模組的檔案結構的大變動、以及輸入法內部的語言模組組態變動,故需要對「./Source/Data」這個 libvchewing 子模組倉庫做 make clean。嫌麻煩的話,請重新克隆整個威注音的倉庫(一定要加上 recursive 參數)。
- 糾正了上次更新時威注音詞庫新增的陸規審音當中的一些(由機械轉換導致的)錯誤讀音搭配。
- 糾正了在用 ESC / BackSpace / Delete 鍵取消波浪鍵符號窗格顯示之後「會重複輸入在此之前的組字緩衝區的內容」的不正確行為。
// 只是解決這個問題的話,反而會出現空白的組字緩衝區、使游標方向鍵與 BackSpace 鍵等按鍵失效。於是這次更正又追加了一筆處理、讓波浪鍵符號表在取消顯示時自動對空白的組字緩衝區進行析構處理。 - 移除了針對使用者語彙檔案的內容排序功能,因為 C++ 的排序行為不可控。
// 筆畫排序、Unicode 碼位排序、拼音排序、注音排序……眾口難調。 - 加入了摁 TAB 呼出選字窗的功能。
- 加入了在選字窗內允許摁 TAB 向下翻頁/選擇下一個候選字的功能(Shift+TAB 則是向上翻頁/選擇上一個候選字)。使用者可藉由威注音偏好設定來指定 TAB 鍵在選字窗內的行為是用來翻頁還是用來輪選候選字。
- 新增 PageUp / PageDn 的行為:當候選字總共只有一頁時,讓 PageUp / PageDn 兼任 Home 與 End 鍵的職責。
- 引入了偵錯模式(預設情況下是關閉的)。該模式可以藉由威注音偏好設定來開啟。當開啟的時候,每當輸入法因為按鍵錯誤導致放屁或者蜂鳴的時候,威注音都可以被 macOS 內建的 Console.app 捕捉到對應的錯誤資訊碼、方便威注音研發團隊迅速定位到 KeyHandler 模組的程式源碼當中的具體位置。
碎碎念:
- 為什麼非要因為波浪符號鍵而打斷組字緩衝區呢?因為威注音(以及其上游原型)的組字區的內容嚴格上來講都得在語言模型當中有對應的「讀音」體系(哪怕不見得真的是注音讀音、而是某些在詞庫內的定義標識符。但威注音 1.3.0 版開始的波浪鍵雙層級符號選單並不具備這一特徵,所以目前無法使用通常的組字區體系來完成。
- 威注音重新允許使用者添入重複語彙、但會在使用者語彙檔案內的對應詞條的行尾留下特殊的標記。
// 威注音 1.3.0 版受上游影響,在使用者就地添加自訂語彙時,不允許添入已經存在於當前語料模型內的語彙(無論是原廠語彙庫還是使用者語彙庫)。然而,使用者可能會對原廠語彙庫內的詞語的排序不滿。這也是雅虎奇摩輸入法的痛處之一。考慮到使用者語彙庫可以用來複寫原廠語彙庫內的優先權級,且威注音有語彙檔案格式整理系統(來專門負責自動將使用者語彙內的重複條目清理乾淨),所以才有了這次更動。 - 修復了簡體中文輸入模式下在就地新增使用者語彙時無法正確地進行重複判定的問題。
// 該問題自 v1.3.0 引入,原因是當時忘記對來自上游的該功能做這種處理,導致在簡體中文輸入模式下做重複判定時拿了繁體中文語料模型作為參考對象。 - 補錄了 Wikipedia 列出的兩岸漢字異讀資料當中的全部的陸規審音。
// 然而,因為部分僅有音調變化的漢字用到了自動化處理,所以可能存在用力過猛的情況。雖然已經做了一遍人工審核,但可能難免會有疏漏。如有遇到相關問題的話,歡迎隨時提報。 - 威注音現可利用注音符號拼讀日語假名發音的方式輸入日語假名。日語假名的優先權在所有標準候選字之下、Emoji 與全字庫候選字之上。因為有了這方面的內容引進,威注音現可直接敲入諸如「サ變動詞」這樣的摻有假名的術語。
其它與本次更新有關的內容:
- 上游 UPR293 不適用於威注音的產品需求,但還是先以注釋的形式來引入(這樣的話便不會生效)。
// 威注音所以目前能夠摁 SHIFT 預設敲大寫,完全是因為威注音語彙庫的編譯腳本對 data-chs/cht.txt 當中的字母按鍵優先權排序使然。如果想繞過組字區輸入半形大小寫字母的話,當且僅當您在用「Apple 標準注音鍵盤佈局 / 倚天注音鍵盤佈局」這兩個動態鍵盤佈局的時候,可以摁「ALT+字母鍵」輸入半形小寫字母、摁「ALT+SHIFT+字母鍵」輸入半形大寫字母。 - 上游:解決了部分 C++ 檔案的命名空間污染的問題。
// Ref: UPR297 & UPR298,不是硬毛病,但有必要做這種改良。
碎碎念:
- 這次嘗試將自訂動態鍵盤放到 App bundle 內發行,結果失敗了。如果硬要手動部署至「~/Library/Keyboard Layouts/」的話,會帶來檔案管理上的不便。這個計畫只能暫時擱置。
威注音 1.3.3c 版相比 1.3.3 版緊急修正了兩個錯誤:
- 「繁體中文模式下在同時關掉康熙與 JIS 轉換時無法敲字」的錯誤。
- 選字窗迴圈翻頁時的頁碼統計錯誤(會導致在迴圈時出現每次翻頁的頁數異常)。
威注音 1.3.3c 版相比 1.3.2 版的明顯的功能更新如下:
- 淘汰了肥碩無比的 OpenCC 與 SwiftyOpenCC,轉而使用威注音自製的漢字轉換模組、可以將繁體中文輸入模式的緩衝區的內容轉換成康熙正字或者 JIS 新字體漢字。後者方便那些需要經常在日本亞馬遜等日本購物網站買東西的華語母語者群體。注意:這兩個模式無法同時開啟。如果用 hack 的手段(包括 defaults write)強行將兩者同時啟用的話,只有 JIS 漢字轉換模組會生效,因為 JIS 漢字轉換模組已經包括了「先轉成康熙正字」的先導過程。
- 論及上次更新引入的 Ctrl+Enter 將緩衝區內容轉為注音文輸出的功能,現在該功能不再開放於全部場合、而是僅允許威注音內建的詞庫編輯器使用該功能。原因在於該功能可能會困擾到某些使用其它 App 的人群。今後會再考慮將該功能做成開關。
- 選字窗現在可以像雅虎奇摩注音那樣迴圈翻頁:當你往後翻至最後一頁時,再摁下一頁,就會回到第一頁;當你往前翻至第一頁時,再摁上一頁,就會回到最後一頁。
- 新增了一些其它的可以用來叫出選字窗的按鍵。之前只新增了 PgDn / PgUp,而這次又新增了「向上」鍵(縱排時是「向右」鍵)。
- 簡體中文詞庫:針對一些詞語修正了「著 ㄓㄨˋ」被寫成「着」的錯誤。
- 上游:同步修正了安裝程式某處內部檔案路徑判斷方面的部分程式內容。
- 緊急解決了輸入法無法在終端機內敲字的問題。
- 就所有詞語收錄《〈國語一字多音審訂表〉讀音適用性與現況之研究》當中的絕大多數合理的民間讀音。
- 新增偽精業鍵盤佈局。精業鍵盤原版佈局右手最右上角有三個鍵將會在這個新的鍵盤佈局當中被挪到閒置的數字按鍵上。
- 新增 Apple 注音鍵盤佈局支援、以達成對 macOS 內建螢幕小鍵盤的支援。該功能僅支援 Apple 注音與 Apple 倚天注音佈局,且在使用時需要將偏好設定內的注音鍵盤佈局設定為大千(因為倚天注音的佈局轉換工作轉交給 macOS 來完成了)。
- 糾正了中文與日文介面的關於視窗內將 MIT-NTL 授權標題誤寫成 3-Clause BSD 的問題。
- 允許使用「Shift+\」輸入省略號、以因應「Apple 注音與 Apple 倚天注音佈局無法用 Alt+; 輸入省略號」的情況。
- 糾正了在啟用 Apple 注音動態鍵盤佈局時、偏好設定介面無法反應這個啟用狀態的問題。
- 上游:禁止 UserOverrideModel 對符號產生記憶。
- 上游:允許使用 Ctrl+Enter 輸出「當前緩衝區內文字」的注音文。該功能僅用來方便使用者快速大批次自訂語彙。
- 上游:小幅重構對選字窗橫豎種類的處理方式。
- 波浪符號選單內的分類名稱現已針對不同的語系介面完成本地化。
- 新增神通注音鍵盤佈局。
- 針對「SHIFT+方向鍵選字時的選區容量計算失誤」的情況,引入了一個可以讓問題不發作的保守治療方案。然而,在使用 Swift 重寫該輸入法的核心組件之前,針對該問題的徹底解決只能是吃力不討好。畢竟 Swift 本身就支援 UTF-8,全用 Swift 重寫了的話、就不需要為 NSRange 擦屁股了。
-
威注音語彙編輯器。之前 1.2.x 版會自動對使用者語彙檔案進行格式整理,但這樣卻會導致與系統內建的 TextEdit 編輯器的行為衝突。雖然使用者可以強行存檔,但畢竟這種情況還是會令使用者困惑。於是威注音在這次更新當中引入了一款簡易的語彙編輯器,不但可以在存檔讀檔過程中自動糾正格式、還會自動將漢語拼音二式轉換成注音。此外,經過威注音語彙編輯器與威注音輸入法統整過格式的檔案,都會在第一行出現專有的辨識標頭、以令威注音輸入法本體在讀到該標識時不再自動統整檔案格式(但仍會檢查檔案結尾是否缺少換行符,此乃 unix 規範)。
-
使用者自訂聯想詞功能。該功能僅會在啟用逐字選字模式時起作用。出於對上游的聯想詞表數據的來源的不信任(恐有著作權疑慮,但與 zonble 無關),威注音不內建聯想詞庫,但允許使用者在輸入法選單內呼叫威注音語彙編輯器來編輯其內容。今後若是有時間與技術條件的話,威注音會考慮怎樣讓該聯想詞功能動態利用輸入法內原有的語彙庫的語彙數據。需注意的是,聯想詞功能需要摁住 SHIFT 鍵的同時摁選字鍵。聯想詞編輯格式為「首字+半型空格+該詞彙的剩下的字」,比如每一行可以是「天 涼好個秋」這樣的格式。與其它可以被使用者自訂的語彙檔案相同的是,行的順序會影響到聯想詞的排列順序。
-
感謝 zonble 在上游引入了波浪鍵雙層符號選單的功能(他不是為威注音開發的,而是為社會開發的),所以這次威注音引入了在內容方面比之前新酷音TSF/香草酷音更豐富的符號表,可以輸入貨幣符號、空心箭頭、雙向箭頭、劃圈假名等符號。今後若是有時間條件的話,威注音可能會考慮將該功能做成可以由使用者自訂的功能。
-
使用者可藉由 SHIFT 鍵自訂的語彙的長度由 6 字擴增到 10 字。
- 簡體中文輸入模式的選單圖示顏色變動(之前的嚴重缺乏對比度);
- 簡繁體中文輸入模式的輸入法選單列的標籤名稱由原來的「威注音/威註音」變更為「威注音-簡/繁」。
- 輸入法本體 info.plist 一處語言標籤錯誤修正,以絕可能之隱患(不影響繁體中文輸入模式)。
威注音 1.2.0 版相比小麦注音 2.0.1 版而言的功能变更如下:
- 簡繁體中文詞庫彼此分離,且徹底重塑。此外,威注音的詞頻數據來自於 NAER、而非 SinicaCorpus 與 Libtabe。除了讓部分地區的威注音輸入法使用者在分享時免於觸法以外,威注音的繁體中文輸入模式很難說哪裡就一定比小麥注音的原廠詞庫更怎樣。但威注音的簡體中文輸入因此得以杜絕任何可能藉由繁簡轉換導致的錯誤結果。
- 威注音支援通用規範漢字表全部漢字的單獨輸入、支援 2022-01-07 版全字庫的全部漢字的單獨輸入、也支援自《通用規範漢字表》頒佈以來至 2022 年 01 月為止的化學元素符號用漢字的輸入。
- 威注音會在讀取使用者自訂語匯檔案時自動統整檔案格式、且只會在手動啟用排序功能時才對內容進行排序。
- 威注音不會擅自連網。某些公司可能會有極端變態的資安策略,所以威注音的線上更新功能預設是關閉的。
- 威注音的偏好設定視窗會正確反映當前生效的預設參數,因為在第一次使用威注音時、這些參數就會被寫入到您當前系統使用者目錄下的威注音輸入法的屬性清單(plist)內。
- 威注音的放屁模式主要是為了讓知恥的新手自我督促自己正確敲字來用的,但請抱持後果自負的態度來使用。也就是說,請千萬不要在辦公場所、就學場所、以及各種類似 NSFW 這樣的敏感公共場所內啟用該功能。
- 為了照顧某些習慣於傳統ㄅ半注音的使用者群體,威注音也提供了模擬逐字選字輸入的功能(且威注音的這個模式會與預設的快打模式共用語彙庫模型資料)。然而,出於詞庫維護方面的工作壓力,威注音在開啟模擬逐字選字輸入模式的時候並不支援聯想詞的功能。
- 威注音預設支援最多十個字的長度的自訂語彙、且預設情況下的緩衝區長度為 20 字。小麥注音可以藉由終端機的指令做到這一點,詳情請洽小麥注音官方 GitHub 倉庫的 wiki。
- 威注音在使用 SHIFT+方向鍵的功能快速新增使用者自訂語彙時,不會因為選區內出現高統一碼的漢字(比如《全字庫》才有的某些字、還有《通用規範漢字表》新增「噁」的類推簡化字「口恶」等)而導致功能異常(乃至輸入法崩潰)的現象。
- 威注音可以使用康熙模式、來將某些台澎金馬常用字轉成康熙字。該功能藉由 OpenCC 驅動。相關的轉換失誤問題請提報給 OpenCC 專案。