kanjiConv // Bind JIS Conversion to Functions.

This commit is contained in:
ShikiSuen 2022-02-15 20:13:23 +08:00
parent 32b2c5bb8a
commit 7811767f01
13 changed files with 123 additions and 30 deletions

View File

@ -36,6 +36,7 @@ private let kComposingBufferSizePreference = "ComposingBufferSize"
private let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace" private let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace"
private let kCNS11643Enabled = "CNS11643Enabled" private let kCNS11643Enabled = "CNS11643Enabled"
private let kChineseConversionEnabled = "ChineseConversionEnabled" private let kChineseConversionEnabled = "ChineseConversionEnabled"
private let kShiftJISShinjitaiOutputEnabled = "ShiftJISShinjitaiOutputEnabled"
private let kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable" private let kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable"
private let kMoveCursorAfterSelectingCandidate = "MoveCursorAfterSelectingCandidate" private let kMoveCursorAfterSelectingCandidate = "MoveCursorAfterSelectingCandidate"
private let kEscToCleanInputBuffer = "EscToCleanInputBuffer" private let kEscToCleanInputBuffer = "EscToCleanInputBuffer"
@ -228,6 +229,7 @@ struct ComposingBufferSize {
kChooseCandidateUsingSpace, kChooseCandidateUsingSpace,
kCNS11643Enabled, kCNS11643Enabled,
kChineseConversionEnabled, kChineseConversionEnabled,
kShiftJISShinjitaiOutputEnabled,
kHalfWidthPunctuationEnabled, kHalfWidthPunctuationEnabled,
kEscToCleanInputBuffer, kEscToCleanInputBuffer,
kCandidateTextFontName, kCandidateTextFontName,
@ -316,6 +318,11 @@ struct ComposingBufferSize {
UserDefaults.standard.set(Preferences.chineseConversionEnabled, forKey: kChineseConversionEnabled) UserDefaults.standard.set(Preferences.chineseConversionEnabled, forKey: kChineseConversionEnabled)
} }
// JIS
if UserDefaults.standard.object(forKey: kShiftJISShinjitaiOutputEnabled) == nil {
UserDefaults.standard.set(Preferences.shiftJISShinjitaiOutputEnabled, forKey: kShiftJISShinjitaiOutputEnabled)
}
// //
if UserDefaults.standard.object(forKey: kPhraseReplacementEnabled) == nil { if UserDefaults.standard.object(forKey: kPhraseReplacementEnabled) == nil {
UserDefaults.standard.set(Preferences.phraseReplacementEnabled, forKey: kPhraseReplacementEnabled) UserDefaults.standard.set(Preferences.phraseReplacementEnabled, forKey: kPhraseReplacementEnabled)
@ -411,12 +418,25 @@ struct ComposingBufferSize {
@UserDefault(key: kChineseConversionEnabled, defaultValue: false) @UserDefault(key: kChineseConversionEnabled, defaultValue: false)
@objc static var chineseConversionEnabled: Bool @objc static var chineseConversionEnabled: Bool
@objc static func toggleChineseConversionEnabled() -> Bool { @objc @discardableResult static func toggleChineseConversionEnabled() -> Bool {
chineseConversionEnabled = !chineseConversionEnabled chineseConversionEnabled = !chineseConversionEnabled
// JIS
if chineseConversionEnabled && shiftJISShinjitaiOutputEnabled {self.toggleShiftJISShinjitaiOutputEnabled()}
UserDefaults.standard.set(chineseConversionEnabled, forKey: kChineseConversionEnabled) UserDefaults.standard.set(chineseConversionEnabled, forKey: kChineseConversionEnabled)
return chineseConversionEnabled return chineseConversionEnabled
} }
@UserDefault(key: kShiftJISShinjitaiOutputEnabled, defaultValue: false)
@objc static var shiftJISShinjitaiOutputEnabled: Bool
@objc @discardableResult static func toggleShiftJISShinjitaiOutputEnabled() -> Bool {
shiftJISShinjitaiOutputEnabled = !shiftJISShinjitaiOutputEnabled
// JIS
if shiftJISShinjitaiOutputEnabled && chineseConversionEnabled {self.toggleChineseConversionEnabled()}
UserDefaults.standard.set(shiftJISShinjitaiOutputEnabled, forKey: kShiftJISShinjitaiOutputEnabled)
return shiftJISShinjitaiOutputEnabled
}
@UserDefault(key: kHalfWidthPunctuationEnabled, defaultValue: false) @UserDefault(key: kHalfWidthPunctuationEnabled, defaultValue: false)
@objc static var halfWidthPunctuationEnabled: Bool @objc static var halfWidthPunctuationEnabled: Bool

View File

@ -67,10 +67,16 @@ class ctlInputMethod: IMKInputController {
useCNS11643SupportItem.keyEquivalentModifierMask = [.command, .control] useCNS11643SupportItem.keyEquivalentModifierMask = [.command, .control]
useCNS11643SupportItem.state = Preferences.cns11643Enabled.state useCNS11643SupportItem.state = Preferences.cns11643Enabled.state
let chineseConversionItem = menu.addItem(withTitle: NSLocalizedString("Force KangXi Writing", comment: ""), action: #selector(toggleChineseConverter(_:)), keyEquivalent: "K") if keyHandler.inputMode == InputMode.imeModeCHT {
chineseConversionItem.keyEquivalentModifierMask = [.command, .control] let chineseConversionItem = menu.addItem(withTitle: NSLocalizedString("Force KangXi Writing", comment: ""), action: #selector(toggleChineseConverter(_:)), keyEquivalent: "K")
chineseConversionItem.state = Preferences.chineseConversionEnabled.state chineseConversionItem.keyEquivalentModifierMask = [.command, .control]
chineseConversionItem.state = Preferences.chineseConversionEnabled.state
let shiftJISConversionItem = menu.addItem(withTitle: NSLocalizedString("JIS Shinjitai Output", comment: ""), action: #selector(toggleShiftJISShinjitaiOutput(_:)), keyEquivalent: "J")
shiftJISConversionItem.keyEquivalentModifierMask = [.command, .control]
shiftJISConversionItem.state = Preferences.shiftJISShinjitaiOutputEnabled.state
}
let halfWidthPunctuationItem = menu.addItem(withTitle: NSLocalizedString("Half-Width Punctuation Mode", comment: ""), action: #selector(toggleHalfWidthPunctuation(_:)), keyEquivalent: "H") let halfWidthPunctuationItem = menu.addItem(withTitle: NSLocalizedString("Half-Width Punctuation Mode", comment: ""), action: #selector(toggleHalfWidthPunctuation(_:)), keyEquivalent: "H")
halfWidthPunctuationItem.keyEquivalentModifierMask = [.command, .control] halfWidthPunctuationItem.keyEquivalentModifierMask = [.command, .control]
halfWidthPunctuationItem.state = Preferences.halfWidthPunctuationEnabled.state halfWidthPunctuationItem.state = Preferences.halfWidthPunctuationEnabled.state
@ -215,6 +221,10 @@ class ctlInputMethod: IMKInputController {
NotifierController.notify(message: String(format: "%@%@%@", NSLocalizedString("Force KangXi Writing", comment: ""), "\n", Preferences.toggleChineseConversionEnabled() ? NSLocalizedString("NotificationSwitchON", comment: "") : NSLocalizedString("NotificationSwitchOFF", comment: ""))) NotifierController.notify(message: String(format: "%@%@%@", NSLocalizedString("Force KangXi Writing", comment: ""), "\n", Preferences.toggleChineseConversionEnabled() ? NSLocalizedString("NotificationSwitchON", comment: "") : NSLocalizedString("NotificationSwitchOFF", comment: "")))
} }
@objc func toggleShiftJISShinjitaiOutput(_ sender: Any?) {
NotifierController.notify(message: String(format: "%@%@%@", NSLocalizedString("JIS Shinjitai Output", comment: ""), "\n", Preferences.toggleShiftJISShinjitaiOutputEnabled() ? NSLocalizedString("NotificationSwitchON", comment: "") : NSLocalizedString("NotificationSwitchOFF", comment: "")))
}
@objc func toggleHalfWidthPunctuation(_ sender: Any?) { @objc func toggleHalfWidthPunctuation(_ sender: Any?) {
NotifierController.notify(message: String(format: "%@%@%@", NSLocalizedString("Half-Width Punctuation Mode", comment: ""), "\n", Preferences.toggleHalfWidthPunctuationEnabled() ? NSLocalizedString("NotificationSwitchON", comment: "") : NSLocalizedString("NotificationSwitchOFF", comment: ""))) NotifierController.notify(message: String(format: "%@%@%@", NSLocalizedString("Half-Width Punctuation Mode", comment: ""), "\n", Preferences.toggleHalfWidthPunctuationEnabled() ? NSLocalizedString("NotificationSwitchON", comment: "") : NSLocalizedString("NotificationSwitchOFF", comment: "")))
} }
@ -320,15 +330,27 @@ extension ctlInputMethod {
private func commit(text: String, client: Any!) { private func commit(text: String, client: Any!) {
func convertToKangXiChineseIfRequired(_ text: String) -> String { func kanjiConversionIfRequired(_ text: String) -> String {
if !Preferences.chineseConversionEnabled { var result : String = ""
return text if keyHandler.inputMode == InputMode.imeModeCHT {
if !Preferences.chineseConversionEnabled && Preferences.shiftJISShinjitaiOutputEnabled {
result = vChewingKanjiConverter.cnvTradToJIS(text)
}
if Preferences.chineseConversionEnabled && !Preferences.shiftJISShinjitaiOutputEnabled {
result = vChewingKanjiConverter.cnvTradToKangXi(text)
}
//
if Preferences.chineseConversionEnabled && Preferences.shiftJISShinjitaiOutputEnabled {
result = vChewingKanjiConverter.cnvTradToJIS(text)
}
} }
// return OpenCCBridge.convertToKangXi(text) ?? "" // if (!Preferences.chineseConversionEnabled && !Preferences.shiftJISShinjitaiOutputEnabled) || (keyHandler.inputMode != InputMode.imeModeCHT);
return vChewingKanjiConverter.cnvTradToKangXi(text) result = text
return result
} }
let buffer = convertToKangXiChineseIfRequired(text) let buffer = kanjiConversionIfRequired(text)
if buffer.isEmpty { if buffer.isEmpty {
return return
} }

View File

@ -37,6 +37,7 @@
"⚠︎ Unhandlable char selected for user phrases." = "⚠︎ Unhandlable char selected for user phrases."; "⚠︎ Unhandlable char selected for user phrases." = "⚠︎ Unhandlable char selected for user phrases.";
"Per-Char Select Mode" = "Per-Char Select Mode"; "Per-Char Select Mode" = "Per-Char Select Mode";
"CNS11643 Mode" = "CNS11643 Mode"; "CNS11643 Mode" = "CNS11643 Mode";
"JIS Shinjitai Output" = "JIS Shinjitai Output";
"Per-Char Associated Phrases" = "Per-Char Associated Phrases"; "Per-Char Associated Phrases" = "Per-Char Associated Phrases";
"Open User Data Folder" = "Open User Data Folder"; "Open User Data Folder" = "Open User Data Folder";
"Edit Associated Phrases…" = "Edit Associated Phrases…"; "Edit Associated Phrases…" = "Edit Associated Phrases…";

View File

@ -37,6 +37,7 @@
"⚠︎ Unhandlable char selected for user phrases." = "⚠︎ Unhandlable char selected for user phrases."; "⚠︎ Unhandlable char selected for user phrases." = "⚠︎ Unhandlable char selected for user phrases.";
"Per-Char Select Mode" = "Per-Char Select Mode"; "Per-Char Select Mode" = "Per-Char Select Mode";
"CNS11643 Mode" = "CNS11643 Mode"; "CNS11643 Mode" = "CNS11643 Mode";
"JIS Shinjitai Output" = "JIS Shinjitai Output";
"Per-Char Associated Phrases" = "Per-Char Associated Phrases"; "Per-Char Associated Phrases" = "Per-Char Associated Phrases";
"Open User Data Folder" = "Open User Data Folder"; "Open User Data Folder" = "Open User Data Folder";
"Edit Associated Phrases…" = "Edit Associated Phrases…"; "Edit Associated Phrases…" = "Edit Associated Phrases…";

View File

@ -37,6 +37,7 @@
"⚠︎ Unhandlable char selected for user phrases." = "⚠︎ ユーザー辞書の対処できない文字は選択されています。"; "⚠︎ Unhandlable char selected for user phrases." = "⚠︎ ユーザー辞書の対処できない文字は選択されています。";
"Per-Char Select Mode" = "全候補入力モード"; "Per-Char Select Mode" = "全候補入力モード";
"CNS11643 Mode" = "全字庫モード"; "CNS11643 Mode" = "全字庫モード";
"JIS Shinjitai Output" = "JIS 新字体モード";
"Per-Char Associated Phrases" = "全候補入力で連想語彙"; "Per-Char Associated Phrases" = "全候補入力で連想語彙";
"Open User Data Folder" = "ユーザー資料フォルダを開く"; "Open User Data Folder" = "ユーザー資料フォルダを開く";
"Edit Associated Phrases…" = "連想語彙を編集…"; "Edit Associated Phrases…" = "連想語彙を編集…";

View File

@ -37,6 +37,7 @@
"⚠︎ Unhandlable char selected for user phrases." = "⚠︎ 已选中无法处理的字符,无法加入自订语汇。"; "⚠︎ Unhandlable char selected for user phrases." = "⚠︎ 已选中无法处理的字符,无法加入自订语汇。";
"Per-Char Select Mode" = "仿真逐字选字输入"; "Per-Char Select Mode" = "仿真逐字选字输入";
"CNS11643 Mode" = "全字库模式"; "CNS11643 Mode" = "全字库模式";
"JIS Shinjitai Output" = "JIS 新字体模式";
"Per-Char Associated Phrases" = "逐字选字联想模式"; "Per-Char Associated Phrases" = "逐字选字联想模式";
"Open User Data Folder" = "开启使用者资料夹"; "Open User Data Folder" = "开启使用者资料夹";
"Edit Associated Phrases…" = "编辑联想词…"; "Edit Associated Phrases…" = "编辑联想词…";

View File

@ -37,6 +37,7 @@
"⚠︎ Unhandlable char selected for user phrases." = "⚠︎ 已選中無法處理的字元,無法加入自訂語彙。"; "⚠︎ Unhandlable char selected for user phrases." = "⚠︎ 已選中無法處理的字元,無法加入自訂語彙。";
"Per-Char Select Mode" = "模擬逐字選字輸入"; "Per-Char Select Mode" = "模擬逐字選字輸入";
"CNS11643 Mode" = "全字庫模式"; "CNS11643 Mode" = "全字庫模式";
"JIS Shinjitai Output" = "JIS 新字體模式";
"Per-Char Associated Phrases" = "逐字選字聯想模式"; "Per-Char Associated Phrases" = "逐字選字聯想模式";
"Open User Data Folder" = "開啟使用者資料夾"; "Open User Data Folder" = "開啟使用者資料夾";
"Edit Associated Phrases…" = "編輯聯想詞…"; "Edit Associated Phrases…" = "編輯聯想詞…";

View File

@ -36,6 +36,8 @@ extension RangeReplaceableCollection where Element: Hashable {
@IBOutlet weak var uiLanguageButton: NSPopUpButton! @IBOutlet weak var uiLanguageButton: NSPopUpButton!
@IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton! @IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton!
@IBOutlet weak var selectionKeyComboBox: NSComboBox! @IBOutlet weak var selectionKeyComboBox: NSComboBox!
@IBOutlet weak var chkTrad2KangXi: NSButton!
@IBOutlet weak var chkTrad2JISShinjitai: NSButton!
var currentLanguageSelectItem: NSMenuItem? = nil var currentLanguageSelectItem: NSMenuItem? = nil
@ -160,6 +162,21 @@ extension RangeReplaceableCollection where Element: Hashable {
} }
selectionKeyComboBox.stringValue = candidateSelectionKeys selectionKeyComboBox.stringValue = candidateSelectionKeys
// MARK: -
}
@IBAction func toggleTrad2KangXiAction(_ sender: Any) {
if chkTrad2KangXi.state == .on && chkTrad2JISShinjitai.state == .on {
Preferences.toggleShiftJISShinjitaiOutputEnabled()
}
}
@IBAction func toggleTrad2JISShinjitaiAction(_ sender: Any) {
if chkTrad2KangXi.state == .on && chkTrad2JISShinjitai.state == .on {
Preferences.toggleChineseConversionEnabled()
}
} }
@IBAction func updateBasisKeyboardLayoutAction(_ sender: Any) { @IBAction func updateBasisKeyboardLayoutAction(_ sender: Any) {

View File

@ -9,6 +9,8 @@
<customObject id="-2" userLabel="File's Owner" customClass="ctlPrefWindow"> <customObject id="-2" userLabel="File's Owner" customClass="ctlPrefWindow">
<connections> <connections>
<outlet property="basisKeyboardLayoutButton" destination="124" id="135"/> <outlet property="basisKeyboardLayoutButton" destination="124" id="135"/>
<outlet property="chkTrad2JISShinjitai" destination="h4r-Sp-LBI" id="pk8-xi-IJi"/>
<outlet property="chkTrad2KangXi" destination="5IL-zZ-CL9" id="PGS-Dy-BBY"/>
<outlet property="fontSizePopUpButton" destination="90" id="108"/> <outlet property="fontSizePopUpButton" destination="90" id="108"/>
<outlet property="selectionKeyComboBox" destination="uHU-aL-du7" id="cEx-Ui-Phc"/> <outlet property="selectionKeyComboBox" destination="uHU-aL-du7" id="cEx-Ui-Phc"/>
<outlet property="uiLanguageButton" destination="oS6-u5-7dP" id="V3u-XK-z7G"/> <outlet property="uiLanguageButton" destination="oS6-u5-7dP" id="V3u-XK-z7G"/>
@ -223,9 +225,9 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Yaj-QY-7xV"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Yaj-QY-7xV">
<rect key="frame" x="19" y="103.5" width="406" height="17"/> <rect key="frame" x="19" y="104.5" width="406" height="17"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="16" id="Pfc-tS-s5a"/> <constraint firstAttribute="height" constant="16" id="KdE-Vd-Y50"/>
</constraints> </constraints>
<buttonCell key="cell" type="check" title="Enable CNS11643 Support (2022-01-07)" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="W24-T4-cg0"> <buttonCell key="cell" type="check" title="Enable CNS11643 Support (2022-01-07)" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="W24-T4-cg0">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -235,18 +237,30 @@
<binding destination="32" name="value" keyPath="values.CNS11643Enabled" id="Pbx-Gt-upm"/> <binding destination="32" name="value" keyPath="values.CNS11643Enabled" id="Pbx-Gt-upm"/>
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5IL-zZ-CL9"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5IL-zZ-CL9" userLabel="chkTrad2KangXi">
<rect key="frame" x="19" y="82.5" width="406" height="16"/> <rect key="frame" x="19" y="83.5" width="406" height="16"/>
<buttonCell key="cell" type="check" title="Auto-convert traditional Chinese glyphs to KangXi characters" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="BSK-bH-Gct"> <buttonCell key="cell" type="check" title="Auto-convert traditional Chinese glyphs to KangXi characters" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="BSK-bH-Gct">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
</buttonCell> </buttonCell>
<connections> <connections>
<action selector="toggleTrad2KangXiAction:" target="-2" id="4i1-el-vkn"/>
<binding destination="32" name="value" keyPath="values.ChineseConversionEnabled" id="X0A-OC-T6e"/> <binding destination="32" name="value" keyPath="values.ChineseConversionEnabled" id="X0A-OC-T6e"/>
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h4r-Sp-LBI" userLabel="chkTrad2JISShinjitai">
<rect key="frame" x="19" y="62.5" width="406" height="16"/>
<buttonCell key="cell" type="check" title="Auto-convert traditional Chinese glyphs to JIS Shinjitai characters" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="eia-1F-Do0">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<connections>
<action selector="toggleTrad2JISShinjitaiAction:" target="-2" id="bhJ-ed-BCo"/>
<binding destination="32" name="value" keyPath="values.ShiftJISShinjitaiOutputEnabled" id="zu9-pD-86B"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mzw-F2-aAQ"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mzw-F2-aAQ">
<rect key="frame" x="19" y="61.5" width="406" height="16"/> <rect key="frame" x="19" y="41.5" width="406" height="16"/>
<buttonCell key="cell" type="check" title="Emulating select-candidate-per-character mode" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="ArK-Vk-OoT"> <buttonCell key="cell" type="check" title="Emulating select-candidate-per-character mode" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="ArK-Vk-OoT">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@ -256,7 +270,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pYB-E5-4Nv"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pYB-E5-4Nv">
<rect key="frame" x="19" y="40.5" width="406" height="16"/> <rect key="frame" x="19" y="20.5" width="406" height="16"/>
<buttonCell key="cell" type="check" title="Stop farting (when typed phonetic combination is invalid, etc.)" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="62u-jY-BRh"> <buttonCell key="cell" type="check" title="Stop farting (when typed phonetic combination is invalid, etc.)" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="62u-jY-BRh">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@ -268,18 +282,21 @@
</button> </button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="5IL-zZ-CL9" firstAttribute="leading" secondItem="mzw-F2-aAQ" secondAttribute="leading" id="1Ly-qx-Gu3"/> <constraint firstItem="Yaj-QY-7xV" firstAttribute="leading" secondItem="5IL-zZ-CL9" secondAttribute="leading" id="4Bc-Yl-MiB"/>
<constraint firstItem="Yaj-QY-7xV" firstAttribute="top" secondItem="brd-6J-saN" secondAttribute="top" constant="14.5" id="3t1-EX-nuL"/> <constraint firstItem="pYB-E5-4Nv" firstAttribute="top" secondItem="mzw-F2-aAQ" secondAttribute="bottom" constant="6" symbolic="YES" id="4om-Rh-ywp"/>
<constraint firstItem="pYB-E5-4Nv" firstAttribute="top" secondItem="mzw-F2-aAQ" secondAttribute="bottom" constant="6" symbolic="YES" id="6Dg-ES-9nm"/> <constraint firstItem="5IL-zZ-CL9" firstAttribute="top" secondItem="Yaj-QY-7xV" secondAttribute="bottom" constant="6" symbolic="YES" id="7iI-Gm-cGt"/>
<constraint firstItem="pYB-E5-4Nv" firstAttribute="leading" secondItem="mzw-F2-aAQ" secondAttribute="leading" id="L9L-Lj-gmk"/> <constraint firstItem="h4r-Sp-LBI" firstAttribute="top" secondItem="5IL-zZ-CL9" secondAttribute="bottom" constant="6" symbolic="YES" id="8Pq-i7-vK8"/>
<constraint firstItem="5IL-zZ-CL9" firstAttribute="top" secondItem="Yaj-QY-7xV" secondAttribute="bottom" constant="6" symbolic="YES" id="MeX-CD-9FN"/> <constraint firstItem="Yaj-QY-7xV" firstAttribute="trailing" secondItem="5IL-zZ-CL9" secondAttribute="trailing" id="8QP-dq-cfD"/>
<constraint firstItem="Yaj-QY-7xV" firstAttribute="trailing" secondItem="5IL-zZ-CL9" secondAttribute="trailing" id="S0v-Op-wDh"/> <constraint firstItem="mzw-F2-aAQ" firstAttribute="leading" secondItem="pYB-E5-4Nv" secondAttribute="leading" id="PzO-It-L9B"/>
<constraint firstAttribute="trailing" secondItem="Yaj-QY-7xV" secondAttribute="trailing" constant="20" symbolic="YES" id="UKC-jH-d9A"/> <constraint firstItem="Yaj-QY-7xV" firstAttribute="top" secondItem="brd-6J-saN" secondAttribute="top" constant="13.5" id="Qf7-x1-bcp"/>
<constraint firstItem="Yaj-QY-7xV" firstAttribute="leading" secondItem="brd-6J-saN" secondAttribute="leading" constant="20" symbolic="YES" id="YeI-ie-7B9"/> <constraint firstItem="h4r-Sp-LBI" firstAttribute="leading" secondItem="mzw-F2-aAQ" secondAttribute="leading" id="aFS-pr-dqO"/>
<constraint firstItem="mzw-F2-aAQ" firstAttribute="top" secondItem="5IL-zZ-CL9" secondAttribute="bottom" constant="6" symbolic="YES" id="hC7-fa-qhc"/> <constraint firstItem="h4r-Sp-LBI" firstAttribute="trailing" secondItem="mzw-F2-aAQ" secondAttribute="trailing" id="b89-f7-ko6"/>
<constraint firstItem="pYB-E5-4Nv" firstAttribute="trailing" secondItem="mzw-F2-aAQ" secondAttribute="trailing" id="tD3-Pz-Qhz"/> <constraint firstAttribute="trailing" secondItem="Yaj-QY-7xV" secondAttribute="trailing" constant="20" symbolic="YES" id="jqe-y8-arB"/>
<constraint firstItem="Yaj-QY-7xV" firstAttribute="leading" secondItem="5IL-zZ-CL9" secondAttribute="leading" id="tjY-PG-4Kz"/> <constraint firstItem="Yaj-QY-7xV" firstAttribute="leading" secondItem="brd-6J-saN" secondAttribute="leading" constant="20" symbolic="YES" id="mjS-PE-C1d"/>
<constraint firstItem="5IL-zZ-CL9" firstAttribute="trailing" secondItem="mzw-F2-aAQ" secondAttribute="trailing" id="xg7-MH-hSW"/> <constraint firstItem="mzw-F2-aAQ" firstAttribute="top" secondItem="h4r-Sp-LBI" secondAttribute="bottom" constant="6" symbolic="YES" id="oJ7-yv-0qY"/>
<constraint firstItem="mzw-F2-aAQ" firstAttribute="trailing" secondItem="pYB-E5-4Nv" secondAttribute="trailing" id="tTn-wC-ycy"/>
<constraint firstItem="5IL-zZ-CL9" firstAttribute="leading" secondItem="h4r-Sp-LBI" secondAttribute="leading" id="v0c-Cb-FH7"/>
<constraint firstItem="5IL-zZ-CL9" firstAttribute="trailing" secondItem="h4r-Sp-LBI" secondAttribute="trailing" id="z2C-jk-sNa"/>
</constraints> </constraints>
</view> </view>
</box> </box>
@ -634,11 +651,11 @@
</constraints> </constraints>
<textFieldCell key="cell" selectable="YES" id="wQ9-px-b07"> <textFieldCell key="cell" selectable="YES" id="wQ9-px-b07">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<mutableString key="title">Regarding On-Screen Keyboard Viewer Support: <string key="title">Regarding On-Screen Keyboard Viewer Support:
Since v1.3.2, vChewing supports on-screen keyboard by supporting "Apple Zhuyin Bopomofo" and "Apple Zhuyin Eten" alphanumeric layout. Theoreotically, these two dynamic layouts work with all types of Apple physical keyboards, and you can report failure cases through macOS Feedback Assistant app if macOS built-in Zhuyin / Eten-Zhuyin Input Method fails from working with your non-US keyboard. Since v1.3.2, vChewing supports on-screen keyboard by supporting "Apple Zhuyin Bopomofo" and "Apple Zhuyin Eten" alphanumeric layout. Theoreotically, these two dynamic layouts work with all types of Apple physical keyboards, and you can report failure cases through macOS Feedback Assistant app if macOS built-in Zhuyin / Eten-Zhuyin Input Method fails from working with your non-US keyboard.
HOWEVER, choosing such dynamic alphanumeric layouts REQUIRING THAT you have to choose the Bopomofo layout above to Standard (Microsoft / Dachen) since the Bopomofo / Eten layout support in this case is already finished by the macOS system.</mutableString> HOWEVER, choosing such dynamic alphanumeric layouts REQUIRING THAT you have to choose the Bopomofo layout above to Standard (Microsoft / Dachen) since the Bopomofo / Eten layout support in this case is already finished by the macOS system.</string>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>

View File

@ -116,6 +116,9 @@
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */
"BSK-bH-Gct.title" = "Auto-convert traditional Chinese glyphs to KangXi characters"; "BSK-bH-Gct.title" = "Auto-convert traditional Chinese glyphs to KangXi characters";
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "eia-1F-Do0"; */
"eia-1F-Do0.title" = "Auto-convert traditional Chinese glyphs to JIS Shinjitai characters";
/* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */ /* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */
"E1l-m8-xgb.title" = "Advanced Settings"; "E1l-m8-xgb.title" = "Advanced Settings";

View File

@ -116,6 +116,9 @@
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */
"BSK-bH-Gct.title" = "自動的に繁体漢字を康熙文字と変換する"; "BSK-bH-Gct.title" = "自動的に繁体漢字を康熙文字と変換する";
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "eia-1F-Do0"; */
"eia-1F-Do0.title" = "自動的に繁体漢字をJIS 新字体と変換する";
/* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */ /* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */
"E1l-m8-xgb.title" = "詳細設定"; "E1l-m8-xgb.title" = "詳細設定";

View File

@ -116,6 +116,9 @@
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */
"BSK-bH-Gct.title" = "自动将繁体中文字转换为康熙字"; "BSK-bH-Gct.title" = "自动将繁体中文字转换为康熙字";
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "eia-1F-Do0"; */
"eia-1F-Do0.title" = "自动将繁体中文字转换为日本简化字JIS 新字体)";
/* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */ /* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */
"E1l-m8-xgb.title" = "进阶设定"; "E1l-m8-xgb.title" = "进阶设定";

View File

@ -116,6 +116,9 @@
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */
"BSK-bH-Gct.title" = "自動將繁體中文字轉換為康熙字"; "BSK-bH-Gct.title" = "自動將繁體中文字轉換為康熙字";
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "eia-1F-Do0"; */
"eia-1F-Do0.title" = "自動將繁體中文字轉換為日本簡化字JIS 新字體)";
/* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */ /* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */
"E1l-m8-xgb.title" = "進階設定"; "E1l-m8-xgb.title" = "進階設定";