1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-01 19:18:28 -04:00

keyboard layout: add consistent helper to map layout codes to display

fixes #1849
This commit is contained in:
bbedward
2026-07-04 11:57:17 -04:00
parent d766c0773c
commit 25a1b125b7
4 changed files with 117 additions and 123 deletions
@@ -5,6 +5,7 @@ import qs.Common
import qs.Modules.Plugins
import qs.Services
import qs.Widgets
import "../../../Common/LayoutCodes.js" as LayoutCodes
BasePill {
id: root
@@ -12,102 +13,6 @@ BasePill {
property var widgetData: null
property bool compactMode: widgetData?.keyboardLayoutNameCompactMode !== undefined ? widgetData.keyboardLayoutNameCompactMode : SettingsData.keyboardLayoutNameCompactMode
property bool showIcon: widgetData?.keyboardLayoutNameShowIcon !== undefined ? widgetData.keyboardLayoutNameShowIcon : SettingsData.keyboardLayoutNameShowIcon
readonly property var langCodes: ({
"afrikaans": "af",
"albanian": "sq",
"amharic": "am",
"arabic": "ar",
"armenian": "hy",
"azerbaijani": "az",
"basque": "eu",
"belarusian": "be",
"bengali": "bn",
"bosnian": "bs",
"bulgarian": "bg",
"burmese": "my",
"catalan": "ca",
"chinese": "zh",
"croatian": "hr",
"czech": "cs",
"danish": "da",
"dutch": "nl",
"english": "en",
"esperanto": "eo",
"estonian": "et",
"filipino": "fil",
"finnish": "fi",
"french": "fr",
"galician": "gl",
"georgian": "ka",
"german": "de",
"greek": "el",
"gujarati": "gu",
"hausa": "ha",
"hebrew": "he",
"hindi": "hi",
"hungarian": "hu",
"icelandic": "is",
"igbo": "ig",
"indonesian": "id",
"irish": "ga",
"italian": "it",
"japanese": "ja",
"javanese": "jv",
"kannada": "kn",
"kazakh": "kk",
"khmer": "km",
"korean": "ko",
"kurdish": "ku",
"kyrgyz": "ky",
"lao": "lo",
"latvian": "lv",
"lithuanian": "lt",
"luxembourgish": "lb",
"macedonian": "mk",
"malay": "ms",
"malayalam": "ml",
"maltese": "mt",
"maori": "mi",
"marathi": "mr",
"mongolian": "mn",
"nepali": "ne",
"norwegian": "no",
"pashto": "ps",
"persian": "fa",
"iranian": "fa",
"farsi": "fa",
"polish": "pl",
"portuguese": "pt",
"punjabi": "pa",
"romanian": "ro",
"russian": "ru",
"serbian": "sr",
"sindhi": "sd",
"sinhala": "si",
"slovak": "sk",
"slovenian": "sl",
"somali": "so",
"spanish": "es",
"swahili": "sw",
"swedish": "sv",
"tajik": "tg",
"tamil": "ta",
"tatar": "tt",
"telugu": "te",
"thai": "th",
"tibetan": "bo",
"turkish": "tr",
"turkmen": "tk",
"ukrainian": "uk",
"urdu": "ur",
"uyghur": "ug",
"uzbek": "uz",
"vietnamese": "vi",
"welsh": "cy",
"yiddish": "yi",
"yoruba": "yo",
"zulu": "zu"
})
readonly property var validVariants: ["US", "UK", "GB", "AZERTY", "QWERTY", "Dvorak", "Colemak", "Mac", "Intl", "International"]
property string currentLayout: {
if (CompositorService.isNiri) {
@@ -140,11 +45,7 @@ BasePill {
StyledText {
text: {
if (!root.currentLayout)
return "";
const lang = root.currentLayout.split(" ")[0].toLowerCase();
const code = root.langCodes[lang] || lang.substring(0, 2);
return code.toUpperCase();
return LayoutCodes.layoutCode(root.currentLayout);
}
font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText)
color: Theme.widgetTextColor
@@ -174,7 +75,7 @@ BasePill {
const match = root.currentLayout.match(/^(\S+)(?:.*\(([^)]+)\))?/);
if (match) {
const lang = match[1].toLowerCase();
const code = root.langCodes[lang] || lang.substring(0, 2);
const code = LayoutCodes.LANG_CODES[lang] || lang.substring(0, 2);
if (match[2]) {
const variant = match[2].trim();
const isValid = root.validVariants.some(v => variant.toUpperCase().includes(v.toUpperCase())) || variant.length <= 3;
@@ -183,7 +84,7 @@ BasePill {
}
return code.toUpperCase();
}
return root.currentLayout.substring(0, 2).toUpperCase();
return LayoutCodes.layoutCode(root.currentLayout);
}
return root.currentLayout;
}