diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 9315f05c9..bf430b6f5 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -118,18 +118,17 @@ Very short Information for Korean IME user - You're using the Korean language! The Korean input method used in Windows 11 may cause some issues in Flow Launcher. - If you experience any problems, you may need to enable compatibility mode for the Korean IME. + The Korean input method used in Windows 11 may cause some issues in Flow Launcher. + If you experience any problems, you may need to enable "Use previous version of Korean IME". Open Setting in Windows 11 and go to: Time & Language > Language & Region > Korean > Language Options > Keyboard - Microsoft IME > Compatibility, and enable "Use previous version of Microsoft IME". - You can open the relevant menu using the option below, or change the setting directly without manually opening the settings page. Open Language and Region System Settings - Opens the Korean IME setting locationKorean > Language Options > Keyboard - Microsoft IME > Compatibility + Opens the Korean IME setting location. Go to Korean > Language Options > Keyboard - Microsoft IME > Compatibility Open - Use Legacy Korean IME - You can change the IME settings directly from here without opening a separate settings window + Use Previous Korean IME + You can change the Previous Korean IME settings directly from here Search Plugin diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs index b98d76000..701de4361 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs @@ -189,128 +189,129 @@ public partial class SettingsPaneGeneralViewModel : BaseModel } } public bool LegacyKoreanIMEEnabled +{ + get => IsLegacyKoreanIMEEnabled(); + set { - get => IsLegacyKoreanIMEEnabled(); - set + Debug.WriteLine($"[DEBUG] LegacyKoreanIMEEnabled changed: {value}"); + if (SetLegacyKoreanIMEEnabled(value)) { - Debug.WriteLine($"[DEBUG] LegacyKoreanIMEEnabled 변경: {value}"); - if (SetLegacyKoreanIMEEnabled(value)) - { - OnPropertyChanged(nameof(LegacyKoreanIMEEnabled)); - OnPropertyChanged(nameof(KoreanIMERegistryValueIsZero)); - } - else - { - Debug.WriteLine("[DEBUG] LegacyKoreanIMEEnabled 설정 실패"); - } + OnPropertyChanged(nameof(LegacyKoreanIMEEnabled)); + OnPropertyChanged(nameof(KoreanIMERegistryValueIsZero)); + } + else + { + Debug.WriteLine("[DEBUG] Failed to set LegacyKoreanIMEEnabled"); } } +} - public bool KoreanIMERegistryKeyExists => IsKoreanIMEExist(); +public bool KoreanIMERegistryKeyExists => IsKoreanIMEExist(); - public bool KoreanIMERegistryValueIsZero - { - get - { - object value = GetLegacyKoreanIMERegistryValue(); - if (value is int intValue) - { - return intValue == 0; - } - else if (value != null && int.TryParse(value.ToString(), out int parsedValue)) - { - return parsedValue == 0; - } - - return false; - } - } - - bool IsKoreanIMEExist() - { - return GetLegacyKoreanIMERegistryValue() != null; - } - - bool IsLegacyKoreanIMEEnabled() +public bool KoreanIMERegistryValueIsZero +{ + get { object value = GetLegacyKoreanIMERegistryValue(); - if (value is int intValue) { - return intValue == 1; + return intValue == 0; } else if (value != null && int.TryParse(value.ToString(), out int parsedValue)) { - return parsedValue == 1; + return parsedValue == 0; } return false; } +} - bool SetLegacyKoreanIMEEnabled(bool enable) +bool IsKoreanIMEExist() +{ + return GetLegacyKoreanIMERegistryValue() != null; +} + +bool IsLegacyKoreanIMEEnabled() +{ + object value = GetLegacyKoreanIMERegistryValue(); + + if (value is int intValue) { - const string subKeyPath = @"Software\Microsoft\input\tsf\tsf3override\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}"; - const string valueName = "NoTsf3Override5"; + return intValue == 1; + } + else if (value != null && int.TryParse(value.ToString(), out int parsedValue)) + { + return parsedValue == 1; + } - try + return false; +} + +bool SetLegacyKoreanIMEEnabled(bool enable) +{ + const string subKeyPath = @"Software\Microsoft\input\tsf\tsf3override\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}"; + const string valueName = "NoTsf3Override5"; + + try + { + using (RegistryKey key = Registry.CurrentUser.CreateSubKey(subKeyPath)) { - using (RegistryKey key = Registry.CurrentUser.CreateSubKey(subKeyPath)) + if (key != null) { - if (key != null) - { - int value = enable ? 1 : 0; - key.SetValue(valueName, value, RegistryValueKind.DWord); - return true; - } - else - { - Debug.WriteLine($"[IME DEBUG] 레지스트리 키 생성 또는 열기 실패: {subKeyPath}"); - } + int value = enable ? 1 : 0; + key.SetValue(valueName, value, RegistryValueKind.DWord); + return true; + } + else + { + Debug.WriteLine($"[IME DEBUG] Failed to create or open registry key: {subKeyPath}"); } } - catch (Exception ex) - { - Debug.WriteLine($"[IME DEBUG] 레지스트리 설정 중 예외 발생: {ex.Message}"); - } - - return false; + } + catch (Exception ex) + { + Debug.WriteLine($"[IME DEBUG] Exception occurred while setting registry: {ex.Message}"); } - private object GetLegacyKoreanIMERegistryValue() - { - const string subKeyPath = @"Software\Microsoft\input\tsf\tsf3override\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}"; - const string valueName = "NoTsf3Override5"; + return false; +} - try +private object GetLegacyKoreanIMERegistryValue() +{ + const string subKeyPath = @"Software\Microsoft\input\tsf\tsf3override\{A028AE76-01B1-46C2-99C4-ACD9858AE02F}"; + const string valueName = "NoTsf3Override5"; + + try + { + using (RegistryKey key = Registry.CurrentUser.OpenSubKey(subKeyPath)) { - using (RegistryKey key = Registry.CurrentUser.OpenSubKey(subKeyPath)) + if (key != null) { - if (key != null) - { - return key.GetValue(valueName); - } + return key.GetValue(valueName); } } - catch (Exception ex) - { - Debug.WriteLine($"[IME DEBUG] 예외 발생: {ex.Message}"); - } - - return null; } - - private void OpenImeSettings() + catch (Exception ex) { - try - { - Process.Start(new ProcessStartInfo("ms-settings:regionlanguage") { UseShellExecute = true }); - } - catch (Exception e) - { - Debug.WriteLine($"Error opening IME settings: {e.Message}"); - } + Debug.WriteLine($"[IME DEBUG] Exception occurred: {ex.Message}"); } + return null; +} + +private void OpenImeSettings() +{ + try + { + Process.Start(new ProcessStartInfo("ms-settings:regionlanguage") { UseShellExecute = true }); + } + catch (Exception e) + { + Debug.WriteLine($"Error opening IME settings: {e.Message}"); + } +} + + public bool ShouldUsePinyin { get => Settings.ShouldUsePinyin; diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml index 16db1c676..5304824fe 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml @@ -320,7 +320,7 @@ - + + Sub="{DynamicResource KoreanImeOpenLinkToolTip}">