diff --git a/Packages/vChewing_Megrez/README.md b/Packages/vChewing_Megrez/README.md index 1bbe1572..34fd4f5c 100644 --- a/Packages/vChewing_Megrez/README.md +++ b/Packages/vChewing_Megrez/README.md @@ -13,7 +13,7 @@ Megrez Engine is a module made for processing lingual data of an input method. T ### §1. 初期化 -在你的 ctlInputMethod (InputMethodController) 或者 KeyHandler 內初期化一份 Megrez.Compositor 組字器副本(這裡將該副本命名為「`compositor`」)。由於 Megrez.Compositor 的型別是 Struct 型別(為了讓 Compositor 可以 deep copy),所以其副本可以用 var 來宣告。 +在你的 IMKInputController 或者 KeyHandler 內初期化一份 Megrez.Compositor 組字器副本(這裡將該副本命名為「`compositor`」)。由於 Megrez.Compositor 的型別是 Struct 型別(為了讓 Compositor 可以 deep copy),所以其副本可以用 var 來宣告。 以 KeyHandler 為例: ```swift @@ -24,17 +24,17 @@ class KeyHandler { } ``` -以 ctlInputMethod 為例: +以 IMKInputController 為例: ```swift -@objc(ctlInputMethod) // 根據 info.plist 內的情況來確定型別的命名 -class ctlInputMethod: IMKInputController { +@objc(IMKMyInputController) // 根據 info.plist 內的情況來確定型別的命名 +class IMKMyInputController: IMKInputController { // 先設定好變數 var compositor: Megrez.Compositor = .init() ... } ``` -由於 Swift 會在某個大副本(KeyHandler 或者 ctlInputMethod 副本)被銷毀的時候自動銷毀其中的全部副本,所以 Megrez.Compositor 的副本初期化沒必要寫在 init() 當中。但你很可能會想在 init() 時指定 Tekkon.Composer 所對接的語言模組型別、以及其可以允許的最大詞長。 +由於 Swift 會在某個大副本(KeyHandler 或者 IMKInputController 副本)被銷毀的時候自動銷毀其中的全部副本,所以 Megrez.Compositor 的副本初期化沒必要寫在 init() 當中。但你很可能會想在 init() 時指定 Tekkon.Composer 所對接的語言模組型別、以及其可以允許的最大詞長。 這裡就需要在 init() 時使用參數: ```swift diff --git a/Packages/vChewing_Tekkon/README.md b/Packages/vChewing_Tekkon/README.md index c5727822..30c05096 100644 --- a/Packages/vChewing_Tekkon/README.md +++ b/Packages/vChewing_Tekkon/README.md @@ -23,7 +23,7 @@ Regarding pinyin input support, we only support: Hanyu Pinyin, Secondary Pinyin, ### §1. 初期化 -在你的 ctlInputMethod (InputMethodController) 或者 KeyHandler 內初期化一份 Tekkon.Composer 注拼槽副本(這裡將該副本命名為「`_composer`」)。由於 Tekkon.Composer 的型別是 Struct 型別,所以其副本必須為變數(var),否則無法自我 mutate。 +在你的 IMKInputController (InputMethodController) 或者 KeyHandler 內初期化一份 Tekkon.Composer 注拼槽副本(這裡將該副本命名為「`_composer`」)。由於 Tekkon.Composer 的型別是 Struct 型別,所以其副本必須為變數(var),否則無法自我 mutate。 以 KeyHandler 為例: ```swift @@ -34,10 +34,10 @@ class KeyHandler: NSObject { } ``` -以 ctlInputMethod 為例: +以 IMKInputController 為例: ```swift -@objc(ctlInputMethod) // 根據 info.plist 內的情況來確定型別的命名 -class ctlInputMethod: IMKInputController { +@objc(IMKMyInputController) // 根據 info.plist 內的情況來確定型別的命名 +class IMKMyInputController: IMKInputController { // 先設定好變數 var _composer: Tekkon.Composer = .init() ... @@ -45,7 +45,7 @@ class ctlInputMethod: IMKInputController { ``` -由於 Swift 會在某個大副本(KeyHandler 或者 ctlInputMethod 副本)被銷毀的時候自動銷毀其中的全部副本,所以 Tekkon.Composer 的副本初期化沒必要寫在 init() 當中。但你很可能會想在 init() 時指定 Tekkon.Composer 所使用的注音排列(是大千?還是倚天傳統?還是神通?等)。 +由於 Swift 會在某個大副本(KeyHandler 或者 IMKInputController 副本)被銷毀的時候自動銷毀其中的全部副本,所以 Tekkon.Composer 的副本初期化沒必要寫在 init() 當中。但你很可能會想在 init() 時指定 Tekkon.Composer 所使用的注音排列(是大千?還是倚天傳統?還是神通?等)。 這裡就需要在 _composer 這個副本所在的型別當中額外寫一個過程函式。 @@ -159,9 +159,9 @@ final class TekkonTests: XCTestCase { #### // 2. 訊號處理 -無論是 KeyHandler 還是 ctlInputMethod 都得要處理被傳入的 NSEvent 當中的 charCode 訊號。 +無論是 KeyHandler 還是 IMKInputController 都得要處理被傳入的 NSEvent 當中的 charCode 訊號。 -比如 ctlInputMethod 內: +比如 IMKInputController 內: ```swift func handleInputText(_ inputText: String?, key keyCode: Int, modifiers flags: Int, client: Any?) -> Bool { ... diff --git a/Source/Modules/IMEState.swift b/Source/Modules/IMEState.swift index 64a17112..04c06935 100644 --- a/Source/Modules/IMEState.swift +++ b/Source/Modules/IMEState.swift @@ -9,7 +9,7 @@ import LangModelAssembly import Shared -/// 用以呈現輸入法控制器(ctlInputMethod)的各種狀態。 +/// 用以呈現輸入法控制器(SessionCtl)的各種狀態。 /// /// 從實際角度來看,輸入法屬於有限態械(Finite State Machine)。其藉由滑鼠/鍵盤 /// 等輸入裝置接收輸入訊號,據此切換至對應的狀態,再根據狀態更新使用者介面內容, @@ -49,7 +49,7 @@ public struct IMEState: IMEStateProtocol { init(_ data: StateDataProtocol = StateData() as StateDataProtocol, type: StateType = .ofEmpty) { self.data = data self.type = type - isVerticalTyping = ctlInputMethod.isVerticalTyping + isVerticalTyping = SessionCtl.isVerticalTyping } init(_ data: StateDataProtocol = StateData() as StateDataProtocol, type: StateType = .ofEmpty, node: CandidateNode) { @@ -83,10 +83,10 @@ extension IMEState { var result = IMEState(type: .ofNotEmpty) // 注意資料的設定順序,一定得先設定 displayTextSegments。 result.data.displayTextSegments = displayTextSegments.map { - if !ctlInputMethod.isVerticalTyping { return $0 } + if !SessionCtl.isVerticalTyping { return $0 } guard PrefMgr.shared.hardenVerticalPunctuations else { return $0 } var neta = $0 - ChineseConverter.hardenVerticalPunctuations(target: &neta, convert: ctlInputMethod.isVerticalTyping) + ChineseConverter.hardenVerticalPunctuations(target: &neta, convert: SessionCtl.isVerticalTyping) return neta } diff --git a/Source/Modules/IMEStateData.swift b/Source/Modules/IMEStateData.swift index 57035f74..72225d2c 100644 --- a/Source/Modules/IMEStateData.swift +++ b/Source/Modules/IMEStateData.swift @@ -202,14 +202,14 @@ extension StateData { public var userPhraseDumped: String { let pair = userPhraseKVPair - let nerfedScore = ctlInputMethod.areWeNerfing && markedTargetExists ? " -114.514" : "" + let nerfedScore = SessionCtl.areWeNerfing && markedTargetExists ? " -114.514" : "" return "\(pair.1) \(pair.0)\(nerfedScore)" } public var userPhraseDumpedConverted: String { let pair = userPhraseKVPair let text = ChineseConverter.crossConvert(pair.1) - let nerfedScore = ctlInputMethod.areWeNerfing && markedTargetExists ? " -114.514" : "" + let nerfedScore = SessionCtl.areWeNerfing && markedTargetExists ? " -114.514" : "" let convertedMark = "#𝙃𝙪𝙢𝙖𝙣𝘾𝙝𝙚𝙘𝙠𝙍𝙚𝙦𝙪𝙞𝙧𝙚𝙙" return "\(text) \(pair.0)\(nerfedScore)\t\(convertedMark)" } diff --git a/Source/Modules/KeyHandler_Core.swift b/Source/Modules/KeyHandler_Core.swift index 163e5d62..f4788c1d 100644 --- a/Source/Modules/KeyHandler_Core.swift +++ b/Source/Modules/KeyHandler_Core.swift @@ -30,7 +30,7 @@ public protocol KeyHandlerDelegate { /// KeyHandler 按鍵調度模組。 public class KeyHandler { - /// 委任物件 (ctlInputMethod),以便呼叫其中的函式。 + /// 委任物件 (SessionCtl),以便呼叫其中的函式。 public var delegate: KeyHandlerDelegate? public var prefs: PrefMgrProtocol diff --git a/Source/Modules/KeyHandler_HandleComposition.swift b/Source/Modules/KeyHandler_HandleComposition.swift index c48af66a..ff54915f 100644 --- a/Source/Modules/KeyHandler_HandleComposition.swift +++ b/Source/Modules/KeyHandler_HandleComposition.swift @@ -145,7 +145,7 @@ extension KeyHandler { stateCallback(candidateState) } } - // 將「這個按鍵訊號已經被輸入法攔截處理了」的結果藉由 ctlInputMethod 回報給 IMK。 + // 將「這個按鍵訊號已經被輸入法攔截處理了」的結果藉由 SessionCtl 回報給 IMK。 return true } diff --git a/Source/Modules/KeyHandler_HandleInput.swift b/Source/Modules/KeyHandler_HandleInput.swift index e49406de..bdda6aa1 100644 --- a/Source/Modules/KeyHandler_HandleInput.swift +++ b/Source/Modules/KeyHandler_HandleInput.swift @@ -400,7 +400,7 @@ extension KeyHandler { // MARK: - 終末處理 (Still Nothing) - /// 對剩下的漏網之魚做攔截處理、直接將當前狀態繼續回呼給 ctlInputMethod。 + /// 對剩下的漏網之魚做攔截處理、直接將當前狀態繼續回呼給 SessionCtl。 /// 否則的話,可能會導致輸入法行為異常:部分應用會阻止輸入法完全攔截某些按鍵訊號。 /// 砍掉這一段會導致「F1-F12 按鍵干擾組字區」的問題。 /// 暫時只能先恢復這段,且補上偵錯彙報機制,方便今後排查故障。 diff --git a/Source/Modules/KeyHandler_States.swift b/Source/Modules/KeyHandler_States.swift index 0f8680f1..15db2a02 100644 --- a/Source/Modules/KeyHandler_States.swift +++ b/Source/Modules/KeyHandler_States.swift @@ -126,7 +126,7 @@ extension KeyHandler { /// - input: 輸入按鍵訊號。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleMarkingState( _ state: IMEStateProtocol, input: InputSignalProtocol, @@ -235,7 +235,7 @@ extension KeyHandler { /// - isTypingVertical: 是否縱排輸入? /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handlePunctuation( _ customPunctuation: String, state: IMEStateProtocol, @@ -285,7 +285,7 @@ extension KeyHandler { /// - Parameters: /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleEnter( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void @@ -303,7 +303,7 @@ extension KeyHandler { /// - Parameters: /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleCtrlCommandEnter( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void @@ -331,7 +331,7 @@ extension KeyHandler { /// - Parameters: /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleCtrlOptionCommandEnter( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void @@ -369,7 +369,7 @@ extension KeyHandler { /// - input: 輸入按鍵訊號。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleBackSpace( state: IMEStateProtocol, input: InputSignalProtocol, @@ -431,7 +431,7 @@ extension KeyHandler { /// - input: 輸入按鍵訊號。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleDelete( state: IMEStateProtocol, input: InputSignalProtocol, @@ -475,7 +475,7 @@ extension KeyHandler { /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleClockKey( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void, @@ -496,7 +496,7 @@ extension KeyHandler { /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleHome( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void, @@ -528,7 +528,7 @@ extension KeyHandler { /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleEnd( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void, @@ -559,7 +559,7 @@ extension KeyHandler { /// - Parameters: /// - state: 當前狀態。 /// - stateCallback: 狀態回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleEsc( state: IMEStateProtocol, stateCallback: @escaping (IMEStateProtocol) -> Void @@ -591,7 +591,7 @@ extension KeyHandler { /// - input: 輸入按鍵訊號。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleForward( state: IMEStateProtocol, input: InputSignalProtocol, @@ -660,7 +660,7 @@ extension KeyHandler { /// - input: 輸入按鍵訊號。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleBackward( state: IMEStateProtocol, input: InputSignalProtocol, @@ -729,7 +729,7 @@ extension KeyHandler { /// - reverseModifier: 是否有控制輪替方向的修飾鍵輸入。 /// - stateCallback: 狀態回呼。 /// - errorCallback: 錯誤回呼。 - /// - Returns: 將按鍵行為「是否有處理掉」藉由 ctlInputMethod 回報給 IMK。 + /// - Returns: 將按鍵行為「是否有處理掉」藉由 SessionCtl 回報給 IMK。 func handleInlineCandidateRotation( state: IMEStateProtocol, reverseModifier: Bool, diff --git a/Source/Modules/PrefMgr_Extension.swift b/Source/Modules/PrefMgr_Extension.swift index 3dfb16f1..1e3dedd8 100644 --- a/Source/Modules/PrefMgr_Extension.swift +++ b/Source/Modules/PrefMgr_Extension.swift @@ -8,7 +8,7 @@ import Shared -// MARK: Auto parameter fix procedures, executed everytime on ctlInputMethod.activateServer(). +// MARK: Auto parameter fix procedures, executed everytime on SessionCtl.activateServer(). extension PrefMgr { public func fixOddPreferences() { diff --git a/Source/Modules/ctlInputMethod_Core.swift b/Source/Modules/SessionCtl_Core.swift similarity index 97% rename from Source/Modules/ctlInputMethod_Core.swift rename to Source/Modules/SessionCtl_Core.swift index f71f9179..763c8729 100644 --- a/Source/Modules/ctlInputMethod_Core.swift +++ b/Source/Modules/SessionCtl_Core.swift @@ -23,8 +23,8 @@ import Voltaire /// 檢查委任物件是否實現了方法:若存在的話,就調用委任物件內的版本。 /// - Remark: 在輸入法的主函式中分配的 IMKServer 型別為客體應用程式創建的每個 /// 輸入會話創建一個控制器型別。因此,對於每個輸入會話,都有一個對應的 IMKInputController。 -@objc(ctlInputMethod) // 必須加上 ObjC,因為 IMK 是用 ObjC 寫的。 -class ctlInputMethod: IMKInputController { +@objc(SessionCtl) // 必須加上 ObjC,因為 IMK 是用 ObjC 寫的。 +class SessionCtl: IMKInputController { /// 標記狀態來聲明目前新增的詞彙是否需要賦以非常低的權重。 static var areWeNerfing = false @@ -40,7 +40,7 @@ class ctlInputMethod: IMKInputController { // MARK: - - /// 當前這個 ctlInputMethod 副本是否處於英數輸入模式。 + /// 當前這個 SessionCtl 副本是否處於英數輸入模式。 var isASCIIMode = false { didSet { resetKeyHandler() @@ -116,7 +116,7 @@ class ctlInputMethod: IMKInputController { // MARK: - 工具函式 -extension ctlInputMethod { +extension SessionCtl { /// 指定鍵盤佈局。 func setKeyLayout() { guard let client = client() else { return } @@ -145,7 +145,7 @@ extension ctlInputMethod { // MARK: - IMKStateSetting 協定規定的方法 -extension ctlInputMethod { +extension SessionCtl { /// 啟用輸入法時,會觸發該函式。 /// - Parameter sender: 呼叫了該函式的客體(無須使用)。 override func activateServer(_ sender: Any!) { @@ -227,9 +227,9 @@ extension ctlInputMethod { // MARK: - IMKServerInput 協定規定的方法(僅部分) -// 註:handle(_ event:) 位於 ctlInputMethod_HandleEvent.swift。 +// 註:handle(_ event:) 位於 SessionCtl_HandleEvent.swift。 -extension ctlInputMethod { +extension SessionCtl { /// 該函式的回饋結果決定了輸入法會攔截且捕捉哪些類型的輸入裝置操作事件。 /// /// 一個客體應用會與輸入法共同確認某個輸入裝置操作事件是否可以觸發輸入法內的某個方法。預設情況下, diff --git a/Source/Modules/ctlInputMethod_Delegates.swift b/Source/Modules/SessionCtl_Delegates.swift similarity index 98% rename from Source/Modules/ctlInputMethod_Delegates.swift rename to Source/Modules/SessionCtl_Delegates.swift index ac0173bb..fa67af69 100644 --- a/Source/Modules/ctlInputMethod_Delegates.swift +++ b/Source/Modules/SessionCtl_Delegates.swift @@ -12,7 +12,7 @@ import Shared // MARK: - KeyHandler Delegate -extension ctlInputMethod: KeyHandlerDelegate { +extension SessionCtl: KeyHandlerDelegate { var clientBundleIdentifier: String { guard let client = client() else { return "" } return client.bundleIdentifier() ?? "" @@ -49,7 +49,7 @@ extension ctlInputMethod: KeyHandlerDelegate { // MARK: - Candidate Controller Delegate -extension ctlInputMethod: CtlCandidateDelegate { +extension SessionCtl: CtlCandidateDelegate { func buzz() { IMEApp.buzz() } diff --git a/Source/Modules/ctlInputMethod_HandleDisplay.swift b/Source/Modules/SessionCtl_HandleDisplay.swift similarity index 99% rename from Source/Modules/ctlInputMethod_HandleDisplay.swift rename to Source/Modules/SessionCtl_HandleDisplay.swift index 67929c69..ebc31d76 100644 --- a/Source/Modules/ctlInputMethod_HandleDisplay.swift +++ b/Source/Modules/SessionCtl_HandleDisplay.swift @@ -14,7 +14,7 @@ import Voltaire // MARK: - Tooltip Display and Candidate Display Methods -extension ctlInputMethod { +extension SessionCtl { // 有些 App 會濫用內文組字區的內容來預測使用者的輸入行為。 // 對此類 App 有疑慮者,可以將這類 App 登記到客體管理員當中。 // 這樣,不但強制使用(限制讀音 20 個的)浮動組字窗,而且內文組字區只會顯示一個空格。 diff --git a/Source/Modules/ctlInputMethod_HandleEvent.swift b/Source/Modules/SessionCtl_HandleEvent.swift similarity index 98% rename from Source/Modules/ctlInputMethod_HandleEvent.swift rename to Source/Modules/SessionCtl_HandleEvent.swift index b79b80ec..f3eae536 100644 --- a/Source/Modules/ctlInputMethod_HandleEvent.swift +++ b/Source/Modules/SessionCtl_HandleEvent.swift @@ -14,7 +14,7 @@ import Shared // MARK: - Facade -extension ctlInputMethod { +extension SessionCtl { /// 接受所有鍵鼠事件為 NSEvent,讓輸入法判斷是否要處理、該怎樣處理。 /// - Parameters: /// - event: 裝置操作輸入事件,可能會是 nil。 @@ -112,7 +112,7 @@ extension ctlInputMethod { // MARK: - Private functions -extension ctlInputMethod { +extension SessionCtl { /// 完成 handle() 函式本該完成的內容,但去掉了與 IMK 選字窗有關的判斷語句。 /// 這樣分開處理很有必要,不然 handle() 函式會陷入無限迴圈。 /// - Parameter event: 由 IMK 選字窗接收的裝置操作輸入事件。 @@ -142,7 +142,7 @@ extension ctlInputMethod { // IMK 選字窗處理,當且僅當啟用了 IMK 選字窗的時候才會生效。 // 這樣可以讓 interpretKeyEvents() 函式自行判斷: // - 是就地交給 imkCandidates.interpretKeyEvents() 處理? - // - 還是藉由 delegate 扔回 ctlInputMethod 給 KeyHandler 處理? + // - 還是藉由 delegate 扔回 SessionCtl 給 KeyHandler 處理? if let imkCandidates = Self.ctlCandidateCurrent as? CtlCandidateIMK, imkCandidates.visible { let event: NSEvent = CtlCandidateIMK.replaceNumPadKeyCodes(target: eventToDeal) ?? eventToDeal diff --git a/Source/Modules/ctlInputMethod_HandleStates.swift b/Source/Modules/SessionCtl_HandleStates.swift similarity index 99% rename from Source/Modules/ctlInputMethod_HandleStates.swift rename to Source/Modules/SessionCtl_HandleStates.swift index 72ca16ac..2f3c8928 100644 --- a/Source/Modules/ctlInputMethod_HandleStates.swift +++ b/Source/Modules/SessionCtl_HandleStates.swift @@ -13,7 +13,7 @@ import Shared // MARK: - 狀態調度 (State Handling) -extension ctlInputMethod { +extension SessionCtl { /// 針對傳入的新狀態進行調度。 /// /// 先將舊狀態單獨記錄起來,再將新舊狀態作為參數, diff --git a/Source/Modules/ctlInputMethod_IMKCandidatesData.swift b/Source/Modules/SessionCtl_IMKCandidatesData.swift similarity index 99% rename from Source/Modules/ctlInputMethod_IMKCandidatesData.swift rename to Source/Modules/SessionCtl_IMKCandidatesData.swift index 091de39b..3c911b08 100644 --- a/Source/Modules/ctlInputMethod_IMKCandidatesData.swift +++ b/Source/Modules/SessionCtl_IMKCandidatesData.swift @@ -11,7 +11,7 @@ import Tekkon // MARK: - IMKCandidates 功能擴充 -extension ctlInputMethod { +extension SessionCtl { /// 生成 IMK 選字窗專用的候選字串陣列。 /// - Parameter sender: 呼叫了該函式的客體(無須使用)。 /// - Returns: IMK 選字窗專用的候選字串陣列。 diff --git a/Source/Modules/ctlInputMethod_Menu.swift b/Source/Modules/SessionCtl_Menu.swift similarity index 99% rename from Source/Modules/ctlInputMethod_Menu.swift rename to Source/Modules/SessionCtl_Menu.swift index 63250b57..deada5c3 100644 --- a/Source/Modules/ctlInputMethod_Menu.swift +++ b/Source/Modules/SessionCtl_Menu.swift @@ -21,7 +21,7 @@ extension Bool { // 因為選單部分的內容又臭又長,所以就單獨拉到一個檔案內管理了。 -extension ctlInputMethod { +extension SessionCtl { override func menu() -> NSMenu! { let optionKeyPressed = NSEvent.modifierFlags.contains(.option) @@ -192,7 +192,7 @@ extension ctlInputMethod { // MARK: - IME Menu Items -extension ctlInputMethod { +extension SessionCtl { @objc override func showPreferences(_: Any?) { if #unavailable(macOS 10.15) { showLegacyPreferences() diff --git a/Source/Resources/IME-Info.plist b/Source/Resources/IME-Info.plist index 99b14976..e4a6b44c 100644 --- a/Source/Resources/IME-Info.plist +++ b/Source/Resources/IME-Info.plist @@ -92,13 +92,13 @@ InputMethodConnectionName org_atelierInmu_inputmethod_vChewing_Connection InputMethodServerControllerClass - ctlInputMethod + SessionCtl InputMethodServerDelegateClass - ctlInputMethod + SessionCtl InputMethodServerPreferencesWindowControllerClass ctlPrefWindow InputMethodSessionController - ctlInputMethod + SessionCtl LSApplicationCategoryType public.app-category.utilities LSHasLocalizedDisplayName diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index 6808a3c8..bd539334 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -7,19 +7,19 @@ objects = { /* Begin PBXBuildFile section */ - 5B00FA0C28DEC17200F6D436 /* ctlInputMethod_IMKCandidatesData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B00FA0B28DEC17200F6D436 /* ctlInputMethod_IMKCandidatesData.swift */; }; + 5B00FA0C28DEC17200F6D436 /* SessionCtl_IMKCandidatesData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B00FA0B28DEC17200F6D436 /* SessionCtl_IMKCandidatesData.swift */; }; 5B09307628B6FC3B0021F8C5 /* shortcuts.html in Resources */ = {isa = PBXBuildFile; fileRef = 5B09307828B6FC3B0021F8C5 /* shortcuts.html */; }; 5B0AF8B527B2C8290096FE54 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0AF8B427B2C8290096FE54 /* StringExtension.swift */; }; 5B0EF55D28CDBF7100F8F7CE /* frmClientListMgr.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0EF55C28CDBF7100F8F7CE /* frmClientListMgr.xib */; }; 5B0EF55F28CDBF8E00F8F7CE /* ctlClientListMgr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0EF55E28CDBF8E00F8F7CE /* ctlClientListMgr.swift */; }; - 5B21176C287539BB000443A9 /* ctlInputMethod_HandleStates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176B287539BB000443A9 /* ctlInputMethod_HandleStates.swift */; }; - 5B21176E28753B35000443A9 /* ctlInputMethod_HandleDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176D28753B35000443A9 /* ctlInputMethod_HandleDisplay.swift */; }; - 5B21177028753B9D000443A9 /* ctlInputMethod_Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176F28753B9D000443A9 /* ctlInputMethod_Delegates.swift */; }; + 5B21176C287539BB000443A9 /* SessionCtl_HandleStates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176B287539BB000443A9 /* SessionCtl_HandleStates.swift */; }; + 5B21176E28753B35000443A9 /* SessionCtl_HandleDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176D28753B35000443A9 /* SessionCtl_HandleDisplay.swift */; }; + 5B21177028753B9D000443A9 /* SessionCtl_Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176F28753B9D000443A9 /* SessionCtl_Delegates.swift */; }; 5B3133BF280B229700A4A505 /* KeyHandler_States.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B3133BE280B229700A4A505 /* KeyHandler_States.swift */; }; 5B40113928D7050D00A9D4CB /* Shared in Frameworks */ = {isa = PBXBuildFile; productRef = 5B40113828D7050D00A9D4CB /* Shared */; }; 5B40113C28D71C0100A9D4CB /* Uninstaller in Frameworks */ = {isa = PBXBuildFile; productRef = 5B40113B28D71C0100A9D4CB /* Uninstaller */; }; 5B62A33D27AE7CC100A19448 /* ctlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A33C27AE7CC100A19448 /* ctlAboutWindow.swift */; }; - 5B6C141228A9D4B30098ADF8 /* ctlInputMethod_HandleEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6C141128A9D4B30098ADF8 /* ctlInputMethod_HandleEvent.swift */; }; + 5B6C141228A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */; }; 5B73FB5E27B2BE1300E9BF49 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B73FB6027B2BE1300E9BF49 /* InfoPlist.strings */; }; 5B782EC4280C243C007276DE /* KeyHandler_HandleCandidate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B782EC3280C243C007276DE /* KeyHandler_HandleCandidate.swift */; }; 5B78EE0D28A562B4009456C1 /* suiPrefPaneDevZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B78EE0C28A562B4009456C1 /* suiPrefPaneDevZone.swift */; }; @@ -41,7 +41,7 @@ 5BA9FD1327FEDB6B002DE248 /* suiPrefPaneDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA9FD0E27FEDB6B002DE248 /* suiPrefPaneDictionary.swift */; }; 5BAD0CD527D701F6003D127F /* vChewingKeyLayout.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */; }; 5BAEFAD028012565001F42C9 /* LMMgr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BAEFACF28012565001F42C9 /* LMMgr.swift */; }; - 5BB802DA27FABA8300CF1C19 /* ctlInputMethod_Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */; }; + 5BB802DA27FABA8300CF1C19 /* SessionCtl_Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */; }; 5BBBB75F27AED54C0023B93A /* Beep.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB75D27AED54C0023B93A /* Beep.m4a */; }; 5BBBB76027AED54C0023B93A /* Fart.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB75E27AED54C0023B93A /* Fart.m4a */; }; 5BBBB76D27AED5DB0023B93A /* frmAboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB76927AED5DB0023B93A /* frmAboutWindow.xib */; }; @@ -110,7 +110,7 @@ D427F76C278CA2B0004A2160 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D427F76B278CA1BA004A2160 /* AppDelegate.swift */; }; D47B92C027972AD100458394 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47B92BF27972AC800458394 /* main.swift */; }; D47F7DCE278BFB57002F9DD7 /* ctlPrefWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47F7DCD278BFB57002F9DD7 /* ctlPrefWindow.swift */; }; - D4A13D5A27A59F0B003BE359 /* ctlInputMethod_Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4A13D5927A59D5C003BE359 /* ctlInputMethod_Core.swift */; }; + D4A13D5A27A59F0B003BE359 /* SessionCtl_Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4A13D5927A59D5C003BE359 /* SessionCtl_Core.swift */; }; D4E33D8A27A838CF006DB1CF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4E33D8827A838CF006DB1CF /* Localizable.strings */; }; D4E33D8F27A838F0006DB1CF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4E33D8D27A838F0006DB1CF /* InfoPlist.strings */; }; D4F0BBDF279AF1AF0071253C /* ArchiveUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4F0BBDE279AF1AF0071253C /* ArchiveUtil.swift */; }; @@ -155,7 +155,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 5B00FA0B28DEC17200F6D436 /* ctlInputMethod_IMKCandidatesData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_IMKCandidatesData.swift; sourceTree = ""; }; + 5B00FA0B28DEC17200F6D436 /* SessionCtl_IMKCandidatesData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_IMKCandidatesData.swift; sourceTree = ""; }; 5B04305327B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; 5B04305427B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; 5B04305527B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.strings"; sourceTree = ""; }; @@ -195,9 +195,9 @@ 5B18BA7427C7BD8C0056EB19 /* LICENSE-CHT.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-CHT.txt"; sourceTree = ""; }; 5B20430B28BEFC0C00BFC6FD /* vChewing.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = vChewing.entitlements; sourceTree = ""; }; 5B20430C28BEFC1200BFC6FD /* vChewingPhraseEditor.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = vChewingPhraseEditor.entitlements; sourceTree = ""; }; - 5B21176B287539BB000443A9 /* ctlInputMethod_HandleStates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_HandleStates.swift; sourceTree = ""; }; - 5B21176D28753B35000443A9 /* ctlInputMethod_HandleDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_HandleDisplay.swift; sourceTree = ""; }; - 5B21176F28753B9D000443A9 /* ctlInputMethod_Delegates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_Delegates.swift; sourceTree = ""; }; + 5B21176B287539BB000443A9 /* SessionCtl_HandleStates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleStates.swift; sourceTree = ""; }; + 5B21176D28753B35000443A9 /* SessionCtl_HandleDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleDisplay.swift; sourceTree = ""; }; + 5B21176F28753B9D000443A9 /* SessionCtl_Delegates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_Delegates.swift; sourceTree = ""; }; 5B2DB17127AF8771006D874E /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = Data/Makefile; sourceTree = ""; }; 5B2F2BB3286216A500B8557B /* vChewingTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = vChewingTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = vChewingKeyLayout.bundle; sourceTree = ""; }; @@ -206,7 +206,7 @@ 5B40113A28D71B8700A9D4CB /* vChewing_Uninstaller */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Uninstaller; path = Packages/vChewing_Uninstaller; sourceTree = ""; }; 5B62A33C27AE7CC100A19448 /* ctlAboutWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlAboutWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B65B919284D0185007C558B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 5B6C141128A9D4B30098ADF8 /* ctlInputMethod_HandleEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_HandleEvent.swift; sourceTree = ""; }; + 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleEvent.swift; sourceTree = ""; }; 5B73FB5427B2BD6900E9BF49 /* PhraseEditor-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PhraseEditor-Info.plist"; path = "UserPhraseEditor/PhraseEditor-Info.plist"; sourceTree = SOURCE_ROOT; }; 5B73FB5F27B2BE1300E9BF49 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 5B782EC3280C243C007276DE /* KeyHandler_HandleCandidate.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = KeyHandler_HandleCandidate.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; @@ -230,7 +230,7 @@ 5BA9FD0D27FEDB6B002DE248 /* suiPrefPaneExperience.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = suiPrefPaneExperience.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BA9FD0E27FEDB6B002DE248 /* suiPrefPaneDictionary.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = suiPrefPaneDictionary.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BAEFACF28012565001F42C9 /* LMMgr.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = LMMgr.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; - 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlInputMethod_Menu.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; + 5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = SessionCtl_Menu.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BBBB75D27AED54C0023B93A /* Beep.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.m4a; sourceTree = ""; }; 5BBBB75E27AED54C0023B93A /* Fart.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fart.m4a; sourceTree = ""; }; 5BBBB76A27AED5DB0023B93A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmAboutWindow.xib; sourceTree = ""; }; @@ -313,7 +313,7 @@ D427F76B278CA1BA004A2160 /* AppDelegate.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = AppDelegate.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D47B92BF27972AC800458394 /* main.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = main.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D47F7DCD278BFB57002F9DD7 /* ctlPrefWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlPrefWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; - D4A13D5927A59D5C003BE359 /* ctlInputMethod_Core.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlInputMethod_Core.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; + D4A13D5927A59D5C003BE359 /* SessionCtl_Core.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = SessionCtl_Core.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D4E33D8927A838CF006DB1CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; D4E33D8E27A838F0006DB1CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/InfoPlist.strings; sourceTree = ""; }; D4F0BBDE279AF1AF0071253C /* ArchiveUtil.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ArchiveUtil.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; @@ -662,13 +662,6 @@ 5B62A33A27AE7C7500A19448 /* WindowControllers */, D427F76B278CA1BA004A2160 /* AppDelegate.swift */, 5B8457A02871ADBE00C93B01 /* ChineseConverterBridge.swift */, - D4A13D5927A59D5C003BE359 /* ctlInputMethod_Core.swift */, - 5B21176F28753B9D000443A9 /* ctlInputMethod_Delegates.swift */, - 5B21176D28753B35000443A9 /* ctlInputMethod_HandleDisplay.swift */, - 5B6C141128A9D4B30098ADF8 /* ctlInputMethod_HandleEvent.swift */, - 5B21176B287539BB000443A9 /* ctlInputMethod_HandleStates.swift */, - 5B00FA0B28DEC17200F6D436 /* ctlInputMethod_IMKCandidatesData.swift */, - 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */, 5BF56F9728C39A2700DD6839 /* IMEState.swift */, 5BF56F9928C39D1800DD6839 /* IMEStateData.swift */, 5BD0113C2818543900609769 /* KeyHandler_Core.swift */, @@ -680,6 +673,13 @@ D47B92BF27972AC800458394 /* main.swift */, 5B963CA728D5DB1400DCEE88 /* PrefMgr_Core.swift */, 5BCCAFF728DB19A300AB1B27 /* PrefMgr_Extension.swift */, + D4A13D5927A59D5C003BE359 /* SessionCtl_Core.swift */, + 5B21176F28753B9D000443A9 /* SessionCtl_Delegates.swift */, + 5B21176D28753B35000443A9 /* SessionCtl_HandleDisplay.swift */, + 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */, + 5B21176B287539BB000443A9 /* SessionCtl_HandleStates.swift */, + 5B00FA0B28DEC17200F6D436 /* SessionCtl_IMKCandidatesData.swift */, + 5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */, ); path = Modules; sourceTree = ""; @@ -1056,18 +1056,18 @@ 5BF56F9828C39A2700DD6839 /* IMEState.swift in Sources */, 5B62A33D27AE7CC100A19448 /* ctlAboutWindow.swift in Sources */, D47B92C027972AD100458394 /* main.swift in Sources */, - D4A13D5A27A59F0B003BE359 /* ctlInputMethod_Core.swift in Sources */, + D4A13D5A27A59F0B003BE359 /* SessionCtl_Core.swift in Sources */, 5B0EF55F28CDBF8E00F8F7CE /* ctlClientListMgr.swift in Sources */, - 5B21177028753B9D000443A9 /* ctlInputMethod_Delegates.swift in Sources */, - 5B21176E28753B35000443A9 /* ctlInputMethod_HandleDisplay.swift in Sources */, + 5B21177028753B9D000443A9 /* SessionCtl_Delegates.swift in Sources */, + 5B21176E28753B35000443A9 /* SessionCtl_HandleDisplay.swift in Sources */, 5BA9FD1027FEDB6B002DE248 /* suiPrefPaneKeyboard.swift in Sources */, 5B3133BF280B229700A4A505 /* KeyHandler_States.swift in Sources */, 5B78EE0D28A562B4009456C1 /* suiPrefPaneDevZone.swift in Sources */, - 5B6C141228A9D4B30098ADF8 /* ctlInputMethod_HandleEvent.swift in Sources */, + 5B6C141228A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift in Sources */, D47F7DCE278BFB57002F9DD7 /* ctlPrefWindow.swift in Sources */, 5BD0113D2818543900609769 /* KeyHandler_Core.swift in Sources */, 5BF56F9A28C39D1800DD6839 /* IMEStateData.swift in Sources */, - 5B21176C287539BB000443A9 /* ctlInputMethod_HandleStates.swift in Sources */, + 5B21176C287539BB000443A9 /* SessionCtl_HandleStates.swift in Sources */, 5BAEFAD028012565001F42C9 /* LMMgr.swift in Sources */, 5B782EC4280C243C007276DE /* KeyHandler_HandleCandidate.swift in Sources */, 5BA9FD0F27FEDB6B002DE248 /* suiPrefPaneGeneral.swift in Sources */, @@ -1076,9 +1076,9 @@ 5B8457A12871ADBE00C93B01 /* ChineseConverterBridge.swift in Sources */, 5BA9FD1327FEDB6B002DE248 /* suiPrefPaneDictionary.swift in Sources */, 5BFDF011289635C100417BBC /* IMKCandidatesImpl.swift in Sources */, - 5BB802DA27FABA8300CF1C19 /* ctlInputMethod_Menu.swift in Sources */, + 5BB802DA27FABA8300CF1C19 /* SessionCtl_Menu.swift in Sources */, 5BE377A0288FED8D0037365B /* KeyHandler_HandleComposition.swift in Sources */, - 5B00FA0C28DEC17200F6D436 /* ctlInputMethod_IMKCandidatesData.swift in Sources */, + 5B00FA0C28DEC17200F6D436 /* SessionCtl_IMKCandidatesData.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };