From 9a0e34151318608435b6ffe59513a406bd038dc6 Mon Sep 17 00:00:00 2001 From: octastylos-pseudodipteros <128853928+octastylos-pseudodipteros@users.noreply.github.com> Date: Sun, 25 Aug 2024 21:37:53 +0200 Subject: [PATCH 1/3] [Quick Accent] Add new language - Math --- .../poweraccent/PowerAccent.Core/Languages.cs | 94 +++++++++++++------ .../SettingsXAML/Views/PowerAccentPage.xaml | 1 + .../Settings.UI/Strings/en-us/Resources.resw | 3 + .../ViewModels/PowerAccentViewModel.cs | 1 + 4 files changed, 69 insertions(+), 30 deletions(-) diff --git a/src/modules/poweraccent/PowerAccent.Core/Languages.cs b/src/modules/poweraccent/PowerAccent.Core/Languages.cs index 1b44afdb5dd..7a3648f640d 100644 --- a/src/modules/poweraccent/PowerAccent.Core/Languages.cs +++ b/src/modules/poweraccent/PowerAccent.Core/Languages.cs @@ -35,6 +35,7 @@ public enum Language LT, MK, MI, + MATH, NL, NO, PI, @@ -81,6 +82,7 @@ public static string[] GetDefaultLetterKey(LetterKey letter, Language lang) Language.LT => GetDefaultLetterKeyLT(letter), // Lithuanian Language.MK => GetDefaultLetterKeyMK(letter), // Macedonian Language.MI => GetDefaultLetterKeyMI(letter), // Maori + Language.MATH => GetDefaultLetterKeyMATH(letter), // Mathematics Language.NL => GetDefaultLetterKeyNL(letter), // Dutch Language.NO => GetDefaultLetterKeyNO(letter), // Norwegian Language.PI => GetDefaultLetterKeyPI(letter), // Pinyin @@ -130,6 +132,7 @@ private static string[] GetDefaultLetterKeyALL(LetterKey letter) .Union(GetDefaultLetterKeyLT(letter)) .Union(GetDefaultLetterKeyMK(letter)) .Union(GetDefaultLetterKeyMI(letter)) + .Union(GetDefaultLetterKeyMATH(letter)) .Union(GetDefaultLetterKeyNL(letter)) .Union(GetDefaultLetterKeyNO(letter)) .Union(GetDefaultLetterKeyPI(letter)) @@ -157,21 +160,11 @@ private static string[] GetDefaultLetterKeyAllLanguagesOnly(LetterKey letter) { return letter switch { - LetterKey.VK_0 => new[] { "₀", "⁰", "↉" }, - LetterKey.VK_1 => new[] { "₁", "¹", "½", "⅓", "¼", "⅕", "⅙", "⅐", "⅛", "⅑", "⅒" }, - LetterKey.VK_2 => new[] { "₂", "²", "⅔", "⅖" }, - LetterKey.VK_3 => new[] { "₃", "³", "¾", "⅗", "⅜" }, - LetterKey.VK_4 => new[] { "₄", "⁴", "⅘" }, - LetterKey.VK_5 => new[] { "₅", "⁵", "⅚", "⅝" }, - LetterKey.VK_6 => new[] { "₆", "⁶" }, - LetterKey.VK_7 => new[] { "₇", "⁷", "⅞" }, - LetterKey.VK_8 => new[] { "₈", "⁸", "∞" }, - LetterKey.VK_9 => new[] { "₉", "⁹" }, - LetterKey.VK_A => new[] { "ȧ", "ǽ", "∀" }, + LetterKey.VK_A => new[] { "ȧ", "ǽ" }, LetterKey.VK_B => new[] { "ḃ" }, - LetterKey.VK_C => new[] { "ċ", "°C", "©", "ℂ", "∁" }, - LetterKey.VK_D => new[] { "ḍ", "ḋ", "∂" }, - LetterKey.VK_E => new[] { "∈", "∃", "∄", "∉", "ĕ" }, + LetterKey.VK_C => new[] { "ċ", "°C", "©" }, + LetterKey.VK_D => new[] { "ḍ", "ḋ" }, + LetterKey.VK_E => new[] { "ĕ" }, LetterKey.VK_F => new[] { "ḟ", "°F" }, LetterKey.VK_G => new[] { "ģ", "ǧ", "ġ", "ĝ", "ǥ" }, LetterKey.VK_H => new[] { "ḣ", "ĥ", "ħ" }, @@ -179,26 +172,69 @@ private static string[] GetDefaultLetterKeyAllLanguagesOnly(LetterKey letter) LetterKey.VK_K => new[] { "ķ", "ǩ" }, LetterKey.VK_L => new[] { "ļ", "₺" }, // ₺ is in VK_T for other languages, but not VK_L, so we add it here. LetterKey.VK_M => new[] { "ṁ" }, - LetterKey.VK_N => new[] { "ņ", "ṅ", "ⁿ", "ℕ", "№" }, - LetterKey.VK_O => new[] { "ȯ", "∅" }, - LetterKey.VK_P => new[] { "ṗ", "℗", "∏", "¶" }, - LetterKey.VK_Q => new[] { "ℚ" }, - LetterKey.VK_R => new[] { "ṙ", "®", "ℝ" }, - LetterKey.VK_S => new[] { "ṡ", "§", "∑" }, + LetterKey.VK_N => new[] { "ņ", "ṅ", "№" }, + LetterKey.VK_O => new[] { "ȯ" }, + LetterKey.VK_P => new[] { "ṗ", "℗", "¶" }, + LetterKey.VK_R => new[] { "ṙ", "®" }, + LetterKey.VK_S => new[] { "ṡ", "§" }, LetterKey.VK_T => new[] { "ţ", "ṫ", "ŧ", "™" }, LetterKey.VK_U => new[] { "ŭ" }, LetterKey.VK_V => new[] { "V̇" }, LetterKey.VK_W => new[] { "ẇ" }, - LetterKey.VK_X => new[] { "ẋ", "×" }, + LetterKey.VK_X => new[] { "ẋ" }, LetterKey.VK_Y => new[] { "ẏ", "ꝡ" }, - LetterKey.VK_Z => new[] { "ʒ", "ǯ", "ℤ" }, - LetterKey.VK_COMMA => new[] { "∙", "₋", "⁻", "–", "√" }, // – is in VK_MINUS for other languages, but not VK_COMMA, so we add it here. + LetterKey.VK_Z => new[] { "ʒ", "ǯ" }, + LetterKey.VK_COMMA => new[] { "₋", "⁻", "–" }, // – is in VK_MINUS for other languages, but not VK_COMMA, so we add it here. LetterKey.VK_PERIOD => new[] { "…", "\u0300", "\u0301", "\u0302", "\u0303", "\u0304", "\u0308", "\u030B", "\u030C" }, - LetterKey.VK_MINUS => new[] { "~", "‐", "‑", "‒", "—", "―", "⁓", "−", "⸺", "⸻", "∓" }, - LetterKey.VK_SLASH_ => new[] { "÷", "√" }, - LetterKey.VK_DIVIDE_ => new[] { "÷", "√" }, - LetterKey.VK_MULTIPLY_ => new[] { "×", "⋅" }, - LetterKey.VK_PLUS => new[] { "≤", "≥", "≠", "≈", "≙", "⊕", "⊗", "∓", "≅", "≡" }, + LetterKey.VK_MINUS => new[] { "‐", "‑", "‒", "—", "―", "⁓", "−", "⸺", "⸻" }, + _ => Array.Empty(), + }; + } + + // Mathematics + private static string[] GetDefaultLetterKeyMATH(LetterKey letter) + { + return letter switch + { + LetterKey.VK_0 => new[] { "₀", "⁰", "°", "∅", "↉" }, + LetterKey.VK_1 => new[] { "₁", "¹", "½", "⅓", "¼", "⅕", "⅙", "⅐", "⅛", "⅑", "⅒" }, + LetterKey.VK_2 => new[] { "₂", "²", "⅔", "⅖", "√" }, + LetterKey.VK_3 => new[] { "₃", "³", "¾", "⅗", "⅜", "∛" }, + LetterKey.VK_4 => new[] { "₄", "⁴", "⅘", "∜" }, + LetterKey.VK_5 => new[] { "₅", "⁵", "⅚", "⅝" }, + LetterKey.VK_6 => new[] { "₆", "⁶" }, + LetterKey.VK_7 => new[] { "₇", "⁷", "⅞" }, + LetterKey.VK_8 => new[] { "₈", "⁸", "∞", "∝" }, + LetterKey.VK_9 => new[] { "₉", "⁹" }, + LetterKey.VK_A => new[] { "α", "∀" }, + LetterKey.VK_B => new[] { "β" }, + LetterKey.VK_C => new[] { "χ", "ℂ", "∁" }, + LetterKey.VK_D => new[] { "δ", "∂", "◇" }, + LetterKey.VK_E => new[] { "ε", "η", "∃", "∄", "∈", "∉" }, + LetterKey.VK_F => new[] { "φ", "ƒ" }, + LetterKey.VK_G => new[] { "γ" }, + LetterKey.VK_I => new[] { "ι" }, + LetterKey.VK_K => new[] { "κ" }, + LetterKey.VK_L => new[] { "λ" }, + LetterKey.VK_M => new[] { "μ" }, + LetterKey.VK_N => new[] { "ν", "ⁿ", "ℕ" }, + LetterKey.VK_O => new[] { "ο", "ω" }, + LetterKey.VK_P => new[] { "π", "ψ", "φ", "∏", "⊥", "⊢", "⊬" }, + LetterKey.VK_Q => new[] { "ℚ" }, + LetterKey.VK_R => new[] { "ρ", "ℝ" }, + LetterKey.VK_S => new[] { "σ", "∑", "∫", "∮" }, + LetterKey.VK_T => new[] { "θ", "τ", "⊨", "⊭" }, + LetterKey.VK_U => new[] { "υ" }, + LetterKey.VK_X => new[] { "ξ", "×", "⋅" }, + LetterKey.VK_Y => new[] { "υ" }, + LetterKey.VK_Z => new[] { "ζ", "ℤ" }, + LetterKey.VK_PLUS => new[] { "≤", "≥", "±", "⇔", "₊", "⁺", "≠", "≅", "≈", "≙", "≜", "≔", "≝", "≡", "⊕", "⊗", "⊙" }, + LetterKey.VK_COMMA => new[] { "≤", "⇐", "⋃", "⋁", "⊆", "⊂", "⊄", "∌", "∋", "≪" }, + LetterKey.VK_PERIOD => new[] { "≥", "⇒", "⋂", "⋀", "⊇", "⊃", "⊅", "∉", "∈", "≫" }, + LetterKey.VK_SLASH_ => new[] { "÷", "‰", "½", "⅓", "⅔", "¼", "¾", "√" }, + LetterKey.VK_MINUS => new[] { "∓", "~" }, + LetterKey.VK_MULTIPLY_ => new[] { "×", "⋅", "^", "¬", "∴", "∵" }, + LetterKey.VK_DIVIDE_ => new[] { "÷", "√", "∠", "∡", "∢", "⦝", "⦜" }, _ => Array.Empty(), }; } @@ -485,10 +521,8 @@ private static string[] GetDefaultLetterKeyPT(LetterKey letter) LetterKey.VK_E => new[] { "é", "ê", "€" }, LetterKey.VK_I => new[] { "í" }, LetterKey.VK_O => new[] { "ô", "ó", "õ", "º" }, - LetterKey.VK_P => new[] { "π" }, LetterKey.VK_S => new[] { "$" }, LetterKey.VK_U => new[] { "ú" }, - LetterKey.VK_COMMA => new[] { "≤", "≥", "≠", "≈", "≙", "±", "₊", "⁺" }, _ => Array.Empty(), }; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerAccentPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerAccentPage.xaml index 1a28b8c83e0..91097c0a973 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerAccentPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerAccentPage.xaml @@ -78,6 +78,7 @@ + diff --git a/src/settings-ui/Settings.UI/Strings/en-us/Resources.resw b/src/settings-ui/Settings.UI/Strings/en-us/Resources.resw index aa8acb1966d..8097d12f178 100644 --- a/src/settings-ui/Settings.UI/Strings/en-us/Resources.resw +++ b/src/settings-ui/Settings.UI/Strings/en-us/Resources.resw @@ -3580,6 +3580,9 @@ Activate by holding the key for the character you want to add an accent to, then Maori + + Mathematics + Dutch diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs index a69ba0b976d..84b6b58ac3b 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs @@ -49,6 +49,7 @@ public class PowerAccentViewModel : Observable "LT", "MK", "MI", + "MATH", "NO", "PI", "PL", From a4cb40b696257e298bb7f4b5b6fd1a298f975e58 Mon Sep 17 00:00:00 2001 From: octastylos-pseudodipteros <128853928+octastylos-pseudodipteros@users.noreply.github.com> Date: Sat, 31 Aug 2024 15:10:55 +0200 Subject: [PATCH 2/3] Union Math with GetDefaultLetterKeyEL --- .../poweraccent/PowerAccent.Core/Languages.cs | 40 ++++++++----------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/src/modules/poweraccent/PowerAccent.Core/Languages.cs b/src/modules/poweraccent/PowerAccent.Core/Languages.cs index 7a3648f640d..479f745d97b 100644 --- a/src/modules/poweraccent/PowerAccent.Core/Languages.cs +++ b/src/modules/poweraccent/PowerAccent.Core/Languages.cs @@ -117,7 +117,6 @@ private static string[] GetDefaultLetterKeyALL(LetterKey letter) .Union(GetDefaultLetterKeyGA(letter)) .Union(GetDefaultLetterKeyGD(letter)) .Union(GetDefaultLetterKeyDE(letter)) - .Union(GetDefaultLetterKeyEL(letter)) .Union(GetDefaultLetterKeyEST(letter)) .Union(GetDefaultLetterKeyEPO(letter)) .Union(GetDefaultLetterKeyFI(letter)) @@ -194,7 +193,7 @@ private static string[] GetDefaultLetterKeyAllLanguagesOnly(LetterKey letter) // Mathematics private static string[] GetDefaultLetterKeyMATH(LetterKey letter) { - return letter switch + string[] characters = letter switch { LetterKey.VK_0 => new[] { "₀", "⁰", "°", "∅", "↉" }, LetterKey.VK_1 => new[] { "₁", "¹", "½", "⅓", "¼", "⅕", "⅙", "⅐", "⅛", "⅑", "⅒" }, @@ -206,28 +205,19 @@ private static string[] GetDefaultLetterKeyMATH(LetterKey letter) LetterKey.VK_7 => new[] { "₇", "⁷", "⅞" }, LetterKey.VK_8 => new[] { "₈", "⁸", "∞", "∝" }, LetterKey.VK_9 => new[] { "₉", "⁹" }, - LetterKey.VK_A => new[] { "α", "∀" }, - LetterKey.VK_B => new[] { "β" }, - LetterKey.VK_C => new[] { "χ", "ℂ", "∁" }, - LetterKey.VK_D => new[] { "δ", "∂", "◇" }, - LetterKey.VK_E => new[] { "ε", "η", "∃", "∄", "∈", "∉" }, - LetterKey.VK_F => new[] { "φ", "ƒ" }, - LetterKey.VK_G => new[] { "γ" }, - LetterKey.VK_I => new[] { "ι" }, - LetterKey.VK_K => new[] { "κ" }, - LetterKey.VK_L => new[] { "λ" }, - LetterKey.VK_M => new[] { "μ" }, - LetterKey.VK_N => new[] { "ν", "ⁿ", "ℕ" }, - LetterKey.VK_O => new[] { "ο", "ω" }, - LetterKey.VK_P => new[] { "π", "ψ", "φ", "∏", "⊥", "⊢", "⊬" }, + LetterKey.VK_A => new[] { "∀" }, + LetterKey.VK_C => new[] { "ℂ", "∁" }, + LetterKey.VK_D => new[] { "∂", "◇" }, + LetterKey.VK_E => new[] { "∃", "∄", "∈", "∉" }, + LetterKey.VK_F => new[] { "ƒ" }, + LetterKey.VK_N => new[] { "ⁿ", "ℕ" }, + LetterKey.VK_P => new[] { "∏", "⊥", "⊢", "⊬" }, LetterKey.VK_Q => new[] { "ℚ" }, - LetterKey.VK_R => new[] { "ρ", "ℝ" }, - LetterKey.VK_S => new[] { "σ", "∑", "∫", "∮" }, - LetterKey.VK_T => new[] { "θ", "τ", "⊨", "⊭" }, - LetterKey.VK_U => new[] { "υ" }, - LetterKey.VK_X => new[] { "ξ", "×", "⋅" }, - LetterKey.VK_Y => new[] { "υ" }, - LetterKey.VK_Z => new[] { "ζ", "ℤ" }, + LetterKey.VK_R => new[] { "ℝ" }, + LetterKey.VK_S => new[] { "∑", "∫", "∮" }, + LetterKey.VK_T => new[] { "⊨", "⊭" }, + LetterKey.VK_X => new[] { "×", "⋅" }, + LetterKey.VK_Z => new[] { "ℤ" }, LetterKey.VK_PLUS => new[] { "≤", "≥", "±", "⇔", "₊", "⁺", "≠", "≅", "≈", "≙", "≜", "≔", "≝", "≡", "⊕", "⊗", "⊙" }, LetterKey.VK_COMMA => new[] { "≤", "⇐", "⋃", "⋁", "⊆", "⊂", "⊄", "∌", "∋", "≪" }, LetterKey.VK_PERIOD => new[] { "≥", "⇒", "⋂", "⋀", "⊇", "⊃", "⊅", "∉", "∈", "≫" }, @@ -237,6 +227,8 @@ private static string[] GetDefaultLetterKeyMATH(LetterKey letter) LetterKey.VK_DIVIDE_ => new[] { "÷", "√", "∠", "∡", "∢", "⦝", "⦜" }, _ => Array.Empty(), }; + + return characters.Union(GetDefaultLetterKeyEL(letter)).ToArray(); } // Bulgarian @@ -639,7 +631,7 @@ private static string[] GetDefaultLetterKeyEL(LetterKey letter) LetterKey.VK_T => new string[] { "τ", "θ", "ϑ" }, LetterKey.VK_U => new string[] { "υ", "ύ" }, LetterKey.VK_X => new string[] { "ξ" }, - LetterKey.VK_Y => new string[] { "υ" }, + LetterKey.VK_Y => new string[] { "υ", "ύ" }, LetterKey.VK_Z => new string[] { "ζ" }, _ => Array.Empty(), }; From f99bc39ec0c013409406ce5b1bfb0bd2170fa6f6 Mon Sep 17 00:00:00 2001 From: octastylos-pseudodipteros <128853928+octastylos-pseudodipteros@users.noreply.github.com> Date: Sun, 1 Sep 2024 21:44:37 +0200 Subject: [PATCH 3/3] retrigger checks