diff --git a/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts b/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts
index 00b9808b..5779f0a7 100644
--- a/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts
+++ b/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts
@@ -100,6 +100,11 @@ function applyConfigData(data: Record): void {
if (typeof data?.input?.paired_punctuation === 'boolean') {
applyToggleState('pairedPunctuationToggleBtn', data.input.paired_punctuation);
}
+ if (data?.input?.punctuation_lock === 'chinese' || data?.input?.punctuation_lock === 'english' ||
+ data?.input?.punctuation_lock === 'follow') {
+ applyToggleState('alwaysChinesePunctuationToggleBtn', data.input.punctuation_lock === 'chinese');
+ applyToggleState('alwaysEnglishPunctuationToggleBtn', data.input.punctuation_lock === 'english');
+ }
if (typeof data?.general?.candidate_translations === 'boolean') {
applyToggleState('candidateTranslationsToggleBtn', data.general.candidate_translations);
document.getElementById('candidateTranslationApiOptions')?.classList.toggle(
diff --git a/ui-html/webview2/settings/ime-settings/src/modules/input.ts b/ui-html/webview2/settings/ime-settings/src/modules/input.ts
index a7d28681..78f21b51 100644
--- a/ui-html/webview2/settings/ime-settings/src/modules/input.ts
+++ b/ui-html/webview2/settings/ime-settings/src/modules/input.ts
@@ -198,6 +198,22 @@ export function setupInput(): void {
setupToggleButton('wordToCharacterToggleBtn', (active) => {
updateConfig('input.word_to_character', active);
});
+ setupToggleButton('alwaysChinesePunctuationToggleBtn', (active) => {
+ if (active) {
+ applyToggleState('alwaysEnglishPunctuationToggleBtn', false);
+ updateConfig('input.punctuation_lock', 'chinese');
+ } else {
+ updateConfig('input.punctuation_lock', 'follow');
+ }
+ });
+ setupToggleButton('alwaysEnglishPunctuationToggleBtn', (active) => {
+ if (active) {
+ applyToggleState('alwaysChinesePunctuationToggleBtn', false);
+ updateConfig('input.punctuation_lock', 'english');
+ } else {
+ updateConfig('input.punctuation_lock', 'follow');
+ }
+ });
setupToggleButton('smartPunctuationToggleBtn', (active) => {
updateConfig('input.smart_punctuation', active);
});
diff --git a/ui-html/webview2/settings/ime-settings/src/partials/input.html b/ui-html/webview2/settings/ime-settings/src/partials/input.html
index 44e14242..f4d805c6 100644
--- a/ui-html/webview2/settings/ime-settings/src/partials/input.html
+++ b/ui-html/webview2/settings/ime-settings/src/partials/input.html
@@ -239,6 +239,28 @@
+
+