From 153572b8260f76d7c92d85b9b59f9ef1a2ea9d16 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 15 Sep 2023 18:02:49 +0800 Subject: [PATCH] IMEApp // Implement .isKeyboardJIS(). --- .../vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift | 6 ++++++ .../Sources/MainAssembly/InputHandler_HandleCandidate.swift | 3 +-- .../Sources/MainAssembly/InputHandler_TriageInput.swift | 3 +-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift index aa25feeb..6af55774 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift @@ -7,6 +7,7 @@ // requirements defined in MIT License. import AppKit +import Carbon import Shared // MARK: - Top-level Enums relating to Input Mode and Language Supports. @@ -58,6 +59,11 @@ public enum IMEApp { .init(rawValue: PrefMgr.shared.mostRecentInputMode) ?? .imeModeNULL } + /// 當前鍵盤是否是 JIS 佈局 + public static var isKeyboardJIS: Bool { + KBGetLayoutType(Int16(LMGetKbdType())) == kKeyboardJIS + } + /// Fart or Beep? public static func buzz() { if PrefMgr.shared.isDebugModeEnabled { diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleCandidate.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleCandidate.swift index 81d338e4..686e2d49 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleCandidate.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleCandidate.swift @@ -232,8 +232,7 @@ extension InputHandler { let ctrlShiftCMD: Bool = input.keyModifierFlags == [.control, .command, .shift] if ctrlShiftCMD || ctrlCMD { // 此處 JIS 鍵盤判定無法用於螢幕鍵盤。所以,螢幕鍵盤的場合,系統會依照 US 鍵盤的判定方案。 - let isJIS: Bool = KBGetLayoutType(Int16(LMGetKbdType())) == kKeyboardJIS - switch (input.keyCode, isJIS) { + switch (input.keyCode, IMEApp.isKeyboardJIS) { case (30, true), (33, false): _ = ctlCandidate.highlightPreviousCandidate() ? {}() : delegate.callError("8B144DCD") return true diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_TriageInput.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_TriageInput.swift index 101330d2..3e84d708 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_TriageInput.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_TriageInput.swift @@ -164,8 +164,7 @@ public extension InputHandler { revolveCandidateWithBrackets: if ctrlShiftCMD || ctrlCMD { if state.type != .ofInputting { break revolveCandidateWithBrackets } // 此處 JIS 鍵盤判定無法用於螢幕鍵盤。所以,螢幕鍵盤的場合,系統會依照 US 鍵盤的判定方案。 - let isJIS: Bool = KBGetLayoutType(Int16(LMGetKbdType())) == kKeyboardJIS - switch (input.keyCode, isJIS) { + switch (input.keyCode, IMEApp.isKeyboardJIS) { case (30, true), (33, false): return revolveCandidate(reverseOrder: true) case (42, true), (30, false): return revolveCandidate(reverseOrder: false) default: break