2022-12-14 22:35:57 +08:00
|
|
|
|
// Copyright (c) Microsoft Corporation
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
|
|
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
|
|
|
2023-09-21 13:52:08 +01:00
|
|
|
|
using System.Collections.Concurrent;
|
2022-12-18 14:27:14 +01:00
|
|
|
|
using PowerToys.PowerAccentKeyboardService;
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
namespace PowerAccent.Core
|
|
|
|
|
|
{
|
|
|
|
|
|
public enum Language
|
|
|
|
|
|
{
|
|
|
|
|
|
ALL,
|
2024-07-17 16:44:42 +02:00
|
|
|
|
BG,
|
2022-11-25 13:43:24 +01:00
|
|
|
|
CA,
|
2024-06-04 11:45:26 +03:00
|
|
|
|
CRH,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
CUR,
|
2022-11-16 16:38:28 +01:00
|
|
|
|
CY,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
CZ,
|
2023-11-08 12:28:18 +01:00
|
|
|
|
DK,
|
2022-11-30 19:48:03 +02:00
|
|
|
|
GA,
|
|
|
|
|
|
GD,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
DE,
|
2023-11-21 11:12:49 +01:00
|
|
|
|
EL,
|
2023-01-09 14:26:45 +02:00
|
|
|
|
EST,
|
2024-05-08 04:55:13 +08:00
|
|
|
|
EPO,
|
2023-11-03 12:13:25 +02:00
|
|
|
|
FI,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
FR,
|
2022-11-16 16:38:28 +01:00
|
|
|
|
HR,
|
2023-01-09 16:07:35 +02:00
|
|
|
|
HE,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
HU,
|
|
|
|
|
|
IS,
|
2024-06-04 23:14:43 +02:00
|
|
|
|
IPA,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
IT,
|
2022-11-25 19:38:29 +02:00
|
|
|
|
KU,
|
2023-02-13 18:24:36 +02:00
|
|
|
|
LT,
|
2022-12-14 15:56:43 +01:00
|
|
|
|
MK,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
MI,
|
2022-11-16 16:38:28 +01:00
|
|
|
|
NL,
|
2023-01-30 19:51:19 +01:00
|
|
|
|
NO,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
PI,
|
|
|
|
|
|
PL,
|
2022-10-16 18:36:16 +01:00
|
|
|
|
PT,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
RO,
|
|
|
|
|
|
SK,
|
2024-02-19 18:12:01 +01:00
|
|
|
|
SL,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
SP,
|
2022-11-26 19:46:07 +01:00
|
|
|
|
SR,
|
2022-11-16 16:38:28 +01:00
|
|
|
|
SV,
|
2022-09-29 16:28:14 +02:00
|
|
|
|
TK,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-03-16 15:51:31 +01:00
|
|
|
|
internal sealed class Languages
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-11-18 00:15:53 +08:00
|
|
|
|
public static string[] GetDefaultLetterKey(LetterKey letter, Language lang)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return lang switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2024-07-17 16:44:42 +02:00
|
|
|
|
Language.ALL => GetDefaultLetterKeyALL(letter), // All
|
|
|
|
|
|
Language.BG => GetDefaultLetterKeyBG(letter), // Bulgarian
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.CA => GetDefaultLetterKeyCA(letter), // Catalan
|
2024-06-04 11:45:26 +03:00
|
|
|
|
Language.CRH => GetDefaultLetterKeyCRH(letter), // Crimean Tatar
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.CUR => GetDefaultLetterKeyCUR(letter), // Currency
|
|
|
|
|
|
Language.CY => GetDefaultLetterKeyCY(letter), // Welsh
|
|
|
|
|
|
Language.CZ => GetDefaultLetterKeyCZ(letter), // Czech
|
2023-11-08 12:28:18 +01:00
|
|
|
|
Language.DK => GetDefaultLetterKeyDK(letter), // Danish
|
2023-02-22 14:55:25 -08:00
|
|
|
|
Language.GA => GetDefaultLetterKeyGA(letter), // Gaeilge (Irish)
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.GD => GetDefaultLetterKeyGD(letter), // Gàidhlig (Scottish Gaelic)
|
|
|
|
|
|
Language.DE => GetDefaultLetterKeyDE(letter), // German
|
2023-11-21 11:12:49 +01:00
|
|
|
|
Language.EL => GetDefaultLetterKeyEL(letter), // Greek
|
2023-01-09 14:26:45 +02:00
|
|
|
|
Language.EST => GetDefaultLetterKeyEST(letter), // Estonian
|
2024-05-08 04:55:13 +08:00
|
|
|
|
Language.EPO => GetDefaultLetterKeyEPO(letter), // Esperanto
|
2023-11-03 12:13:25 +02:00
|
|
|
|
Language.FI => GetDefaultLetterKeyFI(letter), // Finnish
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.FR => GetDefaultLetterKeyFR(letter), // French
|
|
|
|
|
|
Language.HR => GetDefaultLetterKeyHR(letter), // Croatian
|
2023-01-09 16:07:35 +02:00
|
|
|
|
Language.HE => GetDefaultLetterKeyHE(letter), // Hebrew
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.HU => GetDefaultLetterKeyHU(letter), // Hungarian
|
|
|
|
|
|
Language.IS => GetDefaultLetterKeyIS(letter), // Iceland
|
2024-06-04 23:14:43 +02:00
|
|
|
|
Language.IPA => GetDefaultLetterKeyIPA(letter), // IPA (International phonetic alphabet)
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.IT => GetDefaultLetterKeyIT(letter), // Italian
|
|
|
|
|
|
Language.KU => GetDefaultLetterKeyKU(letter), // Kurdish
|
2023-02-13 18:24:36 +02:00
|
|
|
|
Language.LT => GetDefaultLetterKeyLT(letter), // Lithuanian
|
2022-12-14 15:56:43 +01:00
|
|
|
|
Language.MK => GetDefaultLetterKeyMK(letter), // Macedonian
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.MI => GetDefaultLetterKeyMI(letter), // Maori
|
|
|
|
|
|
Language.NL => GetDefaultLetterKeyNL(letter), // Dutch
|
2023-01-30 19:51:19 +01:00
|
|
|
|
Language.NO => GetDefaultLetterKeyNO(letter), // Norwegian
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.PI => GetDefaultLetterKeyPI(letter), // Pinyin
|
|
|
|
|
|
Language.PL => GetDefaultLetterKeyPL(letter), // Polish
|
|
|
|
|
|
Language.PT => GetDefaultLetterKeyPT(letter), // Portuguese
|
|
|
|
|
|
Language.RO => GetDefaultLetterKeyRO(letter), // Romanian
|
|
|
|
|
|
Language.SK => GetDefaultLetterKeySK(letter), // Slovak
|
2024-02-19 18:12:01 +01:00
|
|
|
|
Language.SL => GetDefaultLetterKeySL(letter), // Slovenian
|
2022-12-02 15:45:49 +01:00
|
|
|
|
Language.SP => GetDefaultLetterKeySP(letter), // Spain
|
|
|
|
|
|
Language.SR => GetDefaultLetterKeySR(letter), // Serbian
|
|
|
|
|
|
Language.SV => GetDefaultLetterKeySV(letter), // Swedish
|
|
|
|
|
|
Language.TK => GetDefaultLetterKeyTK(letter), // Turkish
|
2023-10-10 18:02:37 +02:00
|
|
|
|
_ => throw new ArgumentException("The language {0} is not known in this context", lang.ToString()),
|
2022-12-02 15:45:49 +01:00
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-09-21 13:52:08 +01:00
|
|
|
|
// Store the computed letters for each key, so that subsequent calls don't take as long.
|
|
|
|
|
|
private static ConcurrentDictionary<LetterKey, string[]> _allLanguagesCache = new ConcurrentDictionary<LetterKey, string[]>();
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// All
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyALL(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-12-28 13:37:13 +03:00
|
|
|
|
if (!_allLanguagesCache.TryGetValue(letter, out string[] cachedValue))
|
2023-09-21 13:52:08 +01:00
|
|
|
|
{
|
2024-07-17 16:44:42 +02:00
|
|
|
|
cachedValue = GetDefaultLetterKeyBG(letter)
|
|
|
|
|
|
.Union(GetDefaultLetterKeyCA(letter))
|
2024-06-04 11:45:26 +03:00
|
|
|
|
.Union(GetDefaultLetterKeyCRH(letter))
|
2023-09-05 14:27:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyCUR(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyCY(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyCZ(letter))
|
2023-11-08 12:28:18 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyDK(letter))
|
2023-09-05 14:27:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyGA(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyGD(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyDE(letter))
|
2023-11-21 11:12:49 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyEL(letter))
|
2023-09-05 14:27:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyEST(letter))
|
2024-05-08 04:55:13 +08:00
|
|
|
|
.Union(GetDefaultLetterKeyEPO(letter))
|
2023-11-03 12:13:25 +02:00
|
|
|
|
.Union(GetDefaultLetterKeyFI(letter))
|
2023-09-05 14:27:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyFR(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyHR(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyHE(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyHU(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyIS(letter))
|
2024-06-04 23:14:43 +02:00
|
|
|
|
.Union(GetDefaultLetterKeyIPA(letter))
|
2023-09-05 14:27:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyIT(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyKU(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyLT(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyMK(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyMI(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyNL(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyNO(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyPI(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyPL(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyPT(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyRO(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeySK(letter))
|
2024-02-19 18:12:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeySL(letter))
|
2023-09-05 14:27:01 +01:00
|
|
|
|
.Union(GetDefaultLetterKeySP(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeySR(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeySV(letter))
|
|
|
|
|
|
.Union(GetDefaultLetterKeyTK(letter))
|
2023-09-27 16:35:43 +01:00
|
|
|
|
.Union(GetDefaultLetterKeyAllLanguagesOnly(letter))
|
2023-09-21 13:52:08 +01:00
|
|
|
|
.ToArray();
|
2023-12-28 13:37:13 +03:00
|
|
|
|
|
|
|
|
|
|
_allLanguagesCache[letter] = cachedValue;
|
2023-09-21 13:52:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-12-28 13:37:13 +03:00
|
|
|
|
return cachedValue;
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-09-27 16:35:43 +01:00
|
|
|
|
// Contains all characters that should be shown in all languages but currently don't belong to any of the single languages available for that letter.
|
|
|
|
|
|
// These characters can be removed from this list after they've been added to one of the other languages for that specific letter.
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyAllLanguagesOnly(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-11-08 12:21:32 +01:00
|
|
|
|
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_7 => new[] { "⅞" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_8 => new[] { "∞" },
|
2024-05-14 11:24:58 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ȧ", "ǽ", "∀" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_B => new[] { "ḃ" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_C => new[] { "ċ", "°C", "©", "ℂ", "∁" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "ḍ", "ḋ", "∂" },
|
2024-01-23 15:51:14 +01:00
|
|
|
|
LetterKey.VK_E => new[] { "∈", "∃", "∄", "∉", "ĕ" },
|
2023-09-27 16:35:43 +01:00
|
|
|
|
LetterKey.VK_F => new[] { "ḟ", "°F" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_G => new[] { "ģ", "ǧ", "ġ", "ĝ", "ǥ" },
|
2023-09-27 16:35:43 +01:00
|
|
|
|
LetterKey.VK_H => new[] { "ḣ", "ĥ", "ħ" },
|
|
|
|
|
|
LetterKey.VK_J => new[] { "ĵ" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
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[] { "ṁ" },
|
2024-06-04 18:13:59 +02:00
|
|
|
|
LetterKey.VK_N => new[] { "ņ", "ṅ", "ⁿ", "ℕ", "№" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_O => new[] { "ȯ", "∅" },
|
2024-01-23 15:51:14 +01:00
|
|
|
|
LetterKey.VK_P => new[] { "ṗ", "℗", "∏", "¶" },
|
2023-09-27 16:35:43 +01:00
|
|
|
|
LetterKey.VK_Q => new[] { "ℚ" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_R => new[] { "ṙ", "®", "ℝ" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_S => new[] { "ṡ", "§", "∑" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_T => new[] { "ţ", "ṫ", "ŧ", "™" },
|
2023-12-11 22:03:34 +01:00
|
|
|
|
LetterKey.VK_U => new[] { "ŭ" },
|
2023-09-27 16:35:43 +01:00
|
|
|
|
LetterKey.VK_V => new[] { "V̇" },
|
|
|
|
|
|
LetterKey.VK_W => new[] { "ẇ" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_X => new[] { "ẋ", "×" },
|
2023-11-03 13:06:46 -04:00
|
|
|
|
LetterKey.VK_Y => new[] { "ẏ", "ꝡ" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_Z => new[] { "ʒ", "ǯ", "ℤ" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_COMMA => new[] { "∙", "₋", "⁻", "–", "√" }, // – is in VK_MINUS for other languages, but not VK_COMMA, so we add it here.
|
2024-06-04 18:13:59 +02:00
|
|
|
|
LetterKey.VK_PERIOD => new[] { "…", "\u0300", "\u0301", "\u0302", "\u0303", "\u0304", "\u0308", "\u030B", "\u030C" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_MINUS => new[] { "~", "‐", "‑", "‒", "—", "―", "⁓", "−", "⸺", "⸻", "∓" },
|
|
|
|
|
|
LetterKey.VK_SLASH_ => new[] { "÷", "√" },
|
|
|
|
|
|
LetterKey.VK_DIVIDE_ => new[] { "÷", "√" },
|
2023-09-27 16:35:43 +01:00
|
|
|
|
LetterKey.VK_MULTIPLY_ => new[] { "×", "⋅" },
|
2024-01-03 22:21:26 +08:00
|
|
|
|
LetterKey.VK_PLUS => new[] { "≤", "≥", "≠", "≈", "≙", "⊕", "⊗", "∓", "≅", "≡" },
|
2023-09-27 16:35:43 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-17 16:44:42 +02:00
|
|
|
|
// Bulgarian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyBG(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_I => new[] { "й" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-04 11:45:26 +03:00
|
|
|
|
// Crimean Tatar
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyCRH(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_A => new[] { "â" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_G => new[] { "ğ" },
|
|
|
|
|
|
LetterKey.VK_H => new[] { "₴" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ı", "İ" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ñ" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ö" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ş" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "₺" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ü" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// Currencies (source: https://www.eurochange.co.uk/travel-money/world-currency-abbreviations-symbols-and-codes-travel-money)
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyCUR(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_B => new[] { "฿", "в" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "¢", "₡", "č" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "₫" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_F => new[] { "ƒ" },
|
|
|
|
|
|
LetterKey.VK_H => new[] { "₴" },
|
|
|
|
|
|
LetterKey.VK_K => new[] { "₭" },
|
|
|
|
|
|
LetterKey.VK_L => new[] { "ł" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "л" },
|
|
|
|
|
|
LetterKey.VK_M => new[] { "₼" },
|
|
|
|
|
|
LetterKey.VK_P => new[] { "£", "₽" },
|
|
|
|
|
|
LetterKey.VK_R => new[] { "₹", "៛", "﷼" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "$", "₪" },
|
2023-11-13 12:18:31 +01:00
|
|
|
|
LetterKey.VK_T => new[] { "₮", "₺", "₸" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_W => new[] { "₩" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "¥" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "z" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-11-16 16:38:28 +01:00
|
|
|
|
// Croatian
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyHR(LetterKey letter)
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_C => new[] { "ć", "č" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "đ" },
|
2023-11-03 17:12:26 +01:00
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-16 16:38:28 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-09 14:26:45 +02:00
|
|
|
|
// Estonian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyEST(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ä" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ö", "õ" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ü" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
2023-01-09 14:26:45 +02:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-08 04:55:13 +08:00
|
|
|
|
// Esperanto
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyEPO(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ĉ" },
|
|
|
|
|
|
LetterKey.VK_G => new[] { "ĝ" },
|
|
|
|
|
|
LetterKey.VK_H => new[] { "ĥ" },
|
|
|
|
|
|
LetterKey.VK_J => new[] { "ĵ" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ŝ" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ǔ" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-11-03 12:13:25 +02:00
|
|
|
|
// Finnish
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyFI(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_A => new[] { "ä", "å" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ö" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// French
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyFR(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "à", "â", "á", "ä", "ã", "æ" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é", "è", "ê", "ë", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "î", "ï", "í", "ì" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ô", "ö", "ó", "ò", "õ", "œ" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "û", "ù", "ü", "ú" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ÿ", "ý" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Iceland
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyIS(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á", "æ" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "ð" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó", "ö" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ý" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "þ" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Spain
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeySP(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é", "€" },
|
2023-10-04 06:53:07 -04:00
|
|
|
|
LetterKey.VK_H => new[] { "ḥ" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_I => new[] { "í" },
|
2023-10-04 06:53:07 -04:00
|
|
|
|
LetterKey.VK_L => new[] { "ḷ" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_N => new[] { "ñ" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú", "ü" },
|
|
|
|
|
|
LetterKey.VK_COMMA => new[] { "¿", "?", "¡", "!" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-12-02 15:45:49 +01:00
|
|
|
|
// Catalan
|
2022-11-25 13:43:24 +01:00
|
|
|
|
private static string[] GetDefaultLetterKeyCA(LetterKey letter)
|
|
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-25 13:43:24 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "à", "á" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "è", "é", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ì", "í", "ï" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ñ" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ò", "ó" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ù", "ú", "ü" },
|
|
|
|
|
|
LetterKey.VK_L => new[] { "·" },
|
|
|
|
|
|
LetterKey.VK_COMMA => new[] { "¿", "?", "¡", "!" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-25 13:43:24 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// Maori
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyMI(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ā" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ē" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ī" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ō" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "$" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ū" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-11-16 16:38:28 +01:00
|
|
|
|
// Dutch
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyNL(LetterKey letter)
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á", "à", "ä" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é", "è", "ë", "ê", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "í", "ï", "î" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ñ" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó", "ö", "ô" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú", "ü", "û" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-16 16:38:28 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// Pinyin
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyPI(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_1 => new[] { "\u0304", "ˉ" },
|
|
|
|
|
|
LetterKey.VK_2 => new[] { "\u0301", "ˊ" },
|
|
|
|
|
|
LetterKey.VK_3 => new[] { "\u030c", "ˇ" },
|
|
|
|
|
|
LetterKey.VK_4 => new[] { "\u0300", "ˋ" },
|
|
|
|
|
|
LetterKey.VK_5 => new[] { "·" },
|
|
|
|
|
|
LetterKey.VK_A => new[] { "ā", "á", "ǎ", "à", "ɑ", "ɑ\u0304", "ɑ\u0301", "ɑ\u030c", "ɑ\u0300" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ĉ" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ē", "é", "ě", "è", "ê", "ê\u0304", "ế", "ê\u030c", "ề" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ī", "í", "ǐ", "ì" },
|
|
|
|
|
|
LetterKey.VK_M => new[] { "m\u0304", "ḿ", "m\u030c", "m\u0300" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "n\u0304", "ń", "ň", "ǹ", "ŋ", "ŋ\u0304", "ŋ\u0301", "ŋ\u030c", "ŋ\u0300" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ō", "ó", "ǒ", "ò" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ŝ" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ū", "ú", "ǔ", "ù", "ü", "ǖ", "ǘ", "ǚ", "ǜ" },
|
|
|
|
|
|
LetterKey.VK_V => new[] { "ü", "ǖ", "ǘ", "ǚ", "ǜ" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "¥" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ẑ" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Turkish
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyTK(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "â" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ë", "€" },
|
|
|
|
|
|
LetterKey.VK_G => new[] { "ğ" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ı", "İ", "î", },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ö", "ô" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ş" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "₺" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ü", "û" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Polish
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyPL(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ą" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "ć" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ę", "€" },
|
|
|
|
|
|
LetterKey.VK_L => new[] { "ł" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ń" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ś" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ż", "ź" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-10-16 18:36:16 +01:00
|
|
|
|
// Portuguese
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyPT(LetterKey letter)
|
2022-10-16 18:36:16 +01:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-10-16 18:36:16 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
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[] { "₉", "⁹" },
|
2024-06-17 23:52:24 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á", "à", "â", "ã", "ª" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é", "ê", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "í" },
|
2024-06-17 23:52:24 +02:00
|
|
|
|
LetterKey.VK_O => new[] { "ô", "ó", "õ", "º" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_P => new[] { "π" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "$" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú" },
|
|
|
|
|
|
LetterKey.VK_COMMA => new[] { "≤", "≥", "≠", "≈", "≙", "±", "₊", "⁺" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-10-16 18:36:16 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// Slovak
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeySK(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á", "ä" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "č" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "ď" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "í" },
|
|
|
|
|
|
LetterKey.VK_L => new[] { "ľ", "ĺ" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ň" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó", "ô" },
|
|
|
|
|
|
LetterKey.VK_R => new[] { "ŕ" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "ť" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ý" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-11-30 19:48:03 +02:00
|
|
|
|
// Gaeilge (Irish language)
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyGA(LetterKey letter)
|
|
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-30 19:48:03 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á" },
|
2023-11-03 17:12:26 +01:00
|
|
|
|
LetterKey.VK_E => new[] { "é", "€" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_I => new[] { "í" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-30 19:48:03 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Gàidhlig (Scottish Gaelic)
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyGD(LetterKey letter)
|
|
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-30 19:48:03 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "à" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "è" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ì" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ò" },
|
2023-11-03 17:12:26 +01:00
|
|
|
|
LetterKey.VK_P => new[] { "£" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_U => new[] { "ù" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-30 19:48:03 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// Czech
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyCZ(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "č" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "ď" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ě", "é" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "í" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ň" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó" },
|
|
|
|
|
|
LetterKey.VK_R => new[] { "ř" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "ť" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ů", "ú" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ý" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// German
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyDE(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ä" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ö" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ß" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ü" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-11-21 11:12:49 +01:00
|
|
|
|
// Greek
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyEL(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-12-11 22:03:34 +01:00
|
|
|
|
LetterKey.VK_A => new string[] { "α", "ά" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_B => new string[] { "β" },
|
|
|
|
|
|
LetterKey.VK_C => new string[] { "χ" },
|
|
|
|
|
|
LetterKey.VK_D => new string[] { "δ" },
|
2023-12-11 22:03:34 +01:00
|
|
|
|
LetterKey.VK_E => new string[] { "ε", "έ", "η", "ή" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_F => new string[] { "φ" },
|
|
|
|
|
|
LetterKey.VK_G => new string[] { "γ" },
|
2023-12-11 22:03:34 +01:00
|
|
|
|
LetterKey.VK_I => new string[] { "ι", "ί" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_K => new string[] { "κ" },
|
|
|
|
|
|
LetterKey.VK_L => new string[] { "λ" },
|
|
|
|
|
|
LetterKey.VK_M => new string[] { "μ" },
|
|
|
|
|
|
LetterKey.VK_N => new string[] { "ν" },
|
2023-12-11 22:03:34 +01:00
|
|
|
|
LetterKey.VK_O => new string[] { "ο", "ό", "ω", "ώ" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_P => new string[] { "π", "φ", "ψ" },
|
|
|
|
|
|
LetterKey.VK_R => new string[] { "ρ" },
|
|
|
|
|
|
LetterKey.VK_S => new string[] { "σ" },
|
2024-05-14 11:24:58 +02:00
|
|
|
|
LetterKey.VK_T => new string[] { "τ", "θ", "ϑ" },
|
2023-12-11 22:03:34 +01:00
|
|
|
|
LetterKey.VK_U => new string[] { "υ", "ύ" },
|
2023-11-21 11:12:49 +01:00
|
|
|
|
LetterKey.VK_X => new string[] { "ξ" },
|
|
|
|
|
|
LetterKey.VK_Y => new string[] { "υ" },
|
|
|
|
|
|
LetterKey.VK_Z => new string[] { "ζ" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-09 16:07:35 +02:00
|
|
|
|
// Hebrew
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyHE(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "שׂ", "שׁ", "\u05b0" },
|
|
|
|
|
|
LetterKey.VK_B => new[] { "׆" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "\u05b8", "\u05b3", "\u05bb" },
|
|
|
|
|
|
LetterKey.VK_G => new[] { "ױ" },
|
|
|
|
|
|
LetterKey.VK_H => new[] { "ײ", "ײַ", "ׯ", "\u05b4" },
|
|
|
|
|
|
LetterKey.VK_M => new[] { "\u05b5" },
|
|
|
|
|
|
LetterKey.VK_P => new[] { "\u05b7", "\u05b2" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "\u05bc" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "ﭏ" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "וֹ", "וּ", "װ", "\u05b9" },
|
|
|
|
|
|
LetterKey.VK_X => new[] { "\u05b6", "\u05b1" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ױ" },
|
|
|
|
|
|
LetterKey.VK_COMMA => new[] { "”", "’", "״", "׳" },
|
|
|
|
|
|
LetterKey.VK_PERIOD => new[] { "\u05ab", "\u05bd", "\u05bf" },
|
|
|
|
|
|
LetterKey.VK_MINUS => new[] { "–", "־" },
|
2023-01-09 16:07:35 +02:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-29 16:28:14 +02:00
|
|
|
|
// Hungarian
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyHU(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "á" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "é" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "í" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ó", "ő", "ö" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ú", "ű", "ü" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Romanian
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyRO(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ă", "â" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "î" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ș" },
|
|
|
|
|
|
LetterKey.VK_T => new[] { "ț" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Italian
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyIT(LetterKey letter)
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-09-29 16:28:14 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "à" },
|
2024-03-14 23:18:19 +01:00
|
|
|
|
LetterKey.VK_E => new[] { "è", "é", "ə", "€" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_I => new[] { "ì", "í" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ò", "ó" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ù", "ú" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
2022-11-16 16:38:28 +01:00
|
|
|
|
|
2022-11-25 19:38:29 +02:00
|
|
|
|
// Kurdish
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyKU(LetterKey letter)
|
|
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-25 19:38:29 +02:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_C => new[] { "ç" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ê", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "î" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ö", "ô" },
|
|
|
|
|
|
LetterKey.VK_L => new[] { "ł" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ň" },
|
|
|
|
|
|
LetterKey.VK_R => new[] { "ř" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ş" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "û", "ü" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-25 19:38:29 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-11-16 16:38:28 +01:00
|
|
|
|
// Welsh
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeyCY(LetterKey letter)
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "â" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ê" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "î" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ô" },
|
2023-11-03 17:12:26 +01:00
|
|
|
|
LetterKey.VK_P => new[] { "£" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_U => new[] { "û" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ŷ" },
|
|
|
|
|
|
LetterKey.VK_W => new[] { "ŵ" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-16 16:38:28 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Swedish
|
2022-11-18 00:15:53 +08:00
|
|
|
|
private static string[] GetDefaultLetterKeySV(LetterKey letter)
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-16 16:38:28 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "å", "ä" },
|
2023-09-07 12:34:15 +02:00
|
|
|
|
LetterKey.VK_E => new[] { "é" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_O => new[] { "ö" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-16 16:38:28 +01:00
|
|
|
|
}
|
2022-11-26 19:46:07 +01:00
|
|
|
|
|
|
|
|
|
|
// Serbian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeySR(LetterKey letter)
|
|
|
|
|
|
{
|
2022-12-02 15:45:49 +01:00
|
|
|
|
return letter switch
|
2022-11-26 19:46:07 +01:00
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_C => new[] { "ć", "č" },
|
|
|
|
|
|
LetterKey.VK_D => new[] { "đ" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
2022-12-02 15:45:49 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
2022-11-26 19:46:07 +01:00
|
|
|
|
}
|
2022-12-14 15:56:43 +01:00
|
|
|
|
|
|
|
|
|
|
// Macedonian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyMK(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_E => new[] { "ѐ" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ѝ" },
|
2022-12-14 15:56:43 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
2023-01-30 19:51:19 +01:00
|
|
|
|
|
|
|
|
|
|
// Norwegian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyNO(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "å", "æ" },
|
2023-09-07 12:34:15 +02:00
|
|
|
|
LetterKey.VK_E => new[] { "€", "é" },
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_O => new[] { "ø" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "$" },
|
2023-01-30 19:51:19 +01:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
2023-02-13 18:24:36 +02:00
|
|
|
|
|
2023-11-08 12:28:18 +01:00
|
|
|
|
// Danish
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyDK(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_A => new[] { "å", "æ" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ø" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-02-13 18:24:36 +02:00
|
|
|
|
// Lithuanian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyLT(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
2023-06-06 14:07:18 +02:00
|
|
|
|
LetterKey.VK_A => new[] { "ą" },
|
|
|
|
|
|
LetterKey.VK_C => new[] { "č" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ę", "ė", "€" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "į" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ų", "ū" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
2023-02-13 18:24:36 +02:00
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
2024-02-19 18:12:01 +01:00
|
|
|
|
|
|
|
|
|
|
// Slovenian
|
|
|
|
|
|
private static string[] GetDefaultLetterKeySL(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_C => new[] { "č" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "€" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "š" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ž" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
2024-06-04 23:14:43 +02:00
|
|
|
|
|
|
|
|
|
|
// IPA (International Phonetic Alphabet)
|
|
|
|
|
|
private static string[] GetDefaultLetterKeyIPA(LetterKey letter)
|
|
|
|
|
|
{
|
|
|
|
|
|
return letter switch
|
|
|
|
|
|
{
|
|
|
|
|
|
LetterKey.VK_A => new[] { "ɐ", "ɑ", "ɒ" },
|
|
|
|
|
|
LetterKey.VK_B => new[] { "ʙ" },
|
|
|
|
|
|
LetterKey.VK_E => new[] { "ɘ", "ɵ", "ə", "ɛ", "ɜ", "ɞ" },
|
|
|
|
|
|
LetterKey.VK_F => new[] { "ɟ", "ɸ" },
|
|
|
|
|
|
LetterKey.VK_G => new[] { "ɢ", "ɣ" },
|
|
|
|
|
|
LetterKey.VK_H => new[] { "ɦ", "ʜ" },
|
|
|
|
|
|
LetterKey.VK_I => new[] { "ɨ", "ɪ" },
|
|
|
|
|
|
LetterKey.VK_J => new[] { "ʝ" },
|
|
|
|
|
|
LetterKey.VK_L => new[] { "ɬ", "ɮ", "ꞎ", "ɭ", "ʎ", "ʟ", "ɺ" },
|
|
|
|
|
|
LetterKey.VK_N => new[] { "ɳ", "ɲ", "ŋ", "ɴ" },
|
|
|
|
|
|
LetterKey.VK_O => new[] { "ɤ", "ɔ", "ɶ" },
|
|
|
|
|
|
LetterKey.VK_R => new[] { "ʁ", "ɹ", "ɻ", "ɾ", "ɽ", "ʀ" },
|
|
|
|
|
|
LetterKey.VK_S => new[] { "ʃ", "ʂ", "ɕ" },
|
|
|
|
|
|
LetterKey.VK_U => new[] { "ʉ", "ʊ" },
|
|
|
|
|
|
LetterKey.VK_V => new[] { "ʋ", "ⱱ", "ʌ" },
|
|
|
|
|
|
LetterKey.VK_W => new[] { "ɰ", "ɯ" },
|
|
|
|
|
|
LetterKey.VK_Y => new[] { "ʏ" },
|
|
|
|
|
|
LetterKey.VK_Z => new[] { "ʒ", "ʐ", "ʑ" },
|
|
|
|
|
|
LetterKey.VK_COMMA => new[] { "ʡ", "ʔ", "ʕ", "ʢ" },
|
|
|
|
|
|
_ => Array.Empty<string>(),
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
2022-09-29 16:28:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|