summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2024-09-27 23:17:33 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2024-10-05 06:32:10 -0500
commitd56707af8b9c856776b546952a23686b210f22d8 (patch)
tree760052750a417f7b30ed03b5d582e7719bb15001
parent4e77d86d6fc118f0dd1ec83c55c21e05e727d084 (diff)
downloadhorizon-d56707af8b9c856776b546952a23686b210f22d8.tar.gz
horizon-d56707af8b9c856776b546952a23686b210f22d8.tar.bz2
horizon-d56707af8b9c856776b546952a23686b210f22d8.tar.xz
horizon-d56707af8b9c856776b546952a23686b210f22d8.zip
Add friendly names for keymaps
This allows users to choose the "friendly name" for their keyboard layout instead of the internal XKB name. Closes: #386 Suggested-by: Jesse Smith <distro@distrowatch.com> Reviewed-by: Zach van Rijn <me@zv.io> In-memory-of: Sammie the Cat
-rw-r--r--ui/qt5/commitpage.cc2
-rw-r--r--ui/qt5/horizonwizard.cc4
-rw-r--r--ui/qt5/inputpage.cc12
-rw-r--r--util/keymaps.hh42
4 files changed, 44 insertions, 16 deletions
diff --git a/ui/qt5/commitpage.cc b/ui/qt5/commitpage.cc
index 7856a4a..6d9883b 100644
--- a/ui/qt5/commitpage.cc
+++ b/ui/qt5/commitpage.cc
@@ -105,7 +105,7 @@ void CommitPage::initializePage() {
"<p><b>Root Passphrase</b>: <i>[saved]</i></p>\n"
"<br>")
.arg(diskString)
- .arg(QString::fromStdString(*iterator))
+ .arg(QString::fromStdString(iterator->second))
.arg(netString)
.arg(zoneString)
.arg(softString)
diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc
index b3e53fd..d410370 100644
--- a/ui/qt5/horizonwizard.cc
+++ b/ui/qt5/horizonwizard.cc
@@ -727,8 +727,8 @@ QString HorizonWizard::toHScript() {
lines << "rootshell /bin/zsh";
auto iterator = valid_keymaps.begin();
- std::advance(iterator, field("keymap").toInt());
- lines << ("keymap " + QString::fromStdString(*iterator));
+ std::advance(iterator, field("keymap").toUInt());
+ lines << ("keymap " + QString::fromStdString(iterator->first));
#ifdef NON_LIBRE_FIRMWARE
if(this->firmware) {
diff --git a/ui/qt5/inputpage.cc b/ui/qt5/inputpage.cc
index 11d9993..5e1958e 100644
--- a/ui/qt5/inputpage.cc
+++ b/ui/qt5/inputpage.cc
@@ -41,7 +41,8 @@ InputPage::InputPage(QWidget *parent) : HorizonWizardPage(parent) {
layoutList->setWhatsThis(tr("This is a list of keyboard layouts. Select one to choose the layout of the keyboard you will be using on your Adélie Linux computer."));
for(auto &map : valid_keymaps) {
QIcon myIcon = QIcon::fromTheme("input-keyboard");
- new QListWidgetItem(myIcon, map.c_str(), layoutList);
+ auto widgetItem = new QListWidgetItem(myIcon, map.second.c_str(), layoutList);
+ widgetItem->setData(Qt::ToolTipRole, QVariant(QString::fromStdString(map.first)));
}
registerField("keymap*", layoutList);
@@ -81,8 +82,13 @@ void InputPage::initializePage() {
if(dpy != nullptr) {
XkbRF_VarDefsRec vardefs{};
XkbRF_GetNamesProp(dpy, nullptr, &vardefs);
- QList<QListWidgetItem *> items = layoutList->findItems(vardefs.layout, Qt::MatchExactly);
- if(!items.empty()) layoutList->setCurrentItem(items.at(0));
+ QList<QListWidgetItem *> items = layoutList->items();
+ for(int idx = 0; idx < items.size(); ++idx) {
+ if(items.at(idx)->data(Qt::ToolTipRole).toString == vardefs.layout) {
+ layoutList->setCurrentItem(items.at(idx));
+ break;
+ }
+ }
free(vardefs.model);
free(vardefs.layout);
free(vardefs.variant);
diff --git a/util/keymaps.hh b/util/keymaps.hh
index 91171dd..1ef9bec 100644
--- a/util/keymaps.hh
+++ b/util/keymaps.hh
@@ -13,18 +13,40 @@
#ifndef HORIZON_KEYMAPS_HH_
#define HORIZON_KEYMAPS_HH_
-#include <set>
+#include <map>
#include <string>
-const std::set<std::string> valid_keymaps = {
- "us", "ad", "af", "ara", "al", "am", "at", "az", "by", "be", "bd", "in",
- "ba", "br", "bg", "ma", "mm", "ca", "cd", "cn", "hr", "cz", "dk", "nl",
- "bt", "ee", "ir", "iq", "fo", "fi", "fr", "gh", "gn", "ge", "de", "gr",
- "hu", "is", "il", "it", "jp", "kg", "kh", "kz", "la", "latam", "lt", "lv",
- "mao", "me", "mk", "mt", "mn", "no", "pl", "pt", "ro", "ru", "rs", "si",
- "sk", "es", "se", "ch", "sy", "tj", "lk", "th", "tr", "ua", "gb", "uz",
- "vn", "kr", "ie", "pk", "mv", "za", "epo", "np", "ng", "et", "sn", "brai",
- "tm", "ml", "tz", "ke", "bw", "ph"
+const std::map<std::string, std::string> valid_keymaps = {
+ {"us", "English (US)"}, {"af", "Afghani"}, {"ara", "Arabic"},
+ {"al", "Albanian"}, {"am", "Armenian"}, {"at", "German (Austria)"},
+ {"au", "English (Australian)"}, {"az", "Azerbaijani"}, {"by", "Belarusian"},
+ {"be", "Belgian"}, {"bd", "Bangla"}, {"in", "Indian"}, {"ba", "Bosnian"},
+ {"br", "Portuguese (Brazil)"}, {"bg", "Bulgarian"},
+ {"dz", "Kabylian (azerty layout, no dead keys)"}, {"ma", "Arabic (Morocco)"},
+ {"cm", "English (Cameroon)"}, {"mm", "Burmese"}, {"ca", "French (Canada)"},
+ {"cd", "French (Democratic Republic of the Congo)"}, {"cn", "Chinese"},
+ {"hr", "Croatian"}, {"cz", "Czech"}, {"dk", "Danish"}, {"nl", "Dutch"},
+ {"bt", "Dzongkha"}, {"ee", "Estonian"}, {"ir", "Persian"}, {"iq", "Iraqi"},
+ {"fo", "Faroese"}, {"fi", "Finnish"}, {"fr", "French"}, {"gh", "English (Ghana)"},
+ {"gn", "French (Guinea)"}, {"ge", "Georgian"}, {"de", "German"}, {"gr", "Greek"},
+ {"hu", "Hungarian"}, {"is", "Icelandic"}, {"il", "Hebrew"}, {"it", "Italian"},
+ {"jp", "Japanese"}, {"kg", "Kyrgyz"}, {"kh", "Khmer (Cambodia)"}, {"kz", "Kazakh"},
+ {"la", "Lao"}, {"latam", "Spanish (Latin American)"}, {"lt", "Lithuanian"},
+ {"lv", "Latvian"}, {"mao", "Maori"}, {"me", "Montenegrin"}, {"mk", "Macedonian"},
+ {"mt", "Maltese"}, {"mn", "Mongolian"}, {"no", "Norwegian"}, {"pl", "Polish"},
+ {"pt", "Portuguese"}, {"ro", "Romanian"}, {"ru", "Russian"}, {"rs", "Serbian"},
+ {"si", "Slovenian"}, {"sk", "Slovak"}, {"es", "Spanish"}, {"se", "Swedish"},
+ {"ch", "German (Switzerland)"}, {"sy", "Arabic (Syria)"}, {"tj", "Tajik"},
+ {"lk", "Sinhala (phonetic)"}, {"th", "Thai"}, {"tr", "Turkish"}, {"tw", "Taiwanese"},
+ {"ua", "Ukrainian"}, {"gb", "English (UK)"}, {"uz", "Uzbek"}, {"vn", "Vietnamese"},
+ {"kr", "Korean"}, {"nec_vndr/jp", "Japanese (PC-98)"}, {"ie", "Irish"},
+ {"pk", "Urdu (Pakistan)"}, {"mv", "Dhivehi"}, {"za", "English (South Africa)"},
+ {"epo", "Esperanto"}, {"np", "Nepali"}, {"ng", "English (Nigeria)"},
+ {"et", "Amharic"}, {"sn", "Wolof"}, {"brai", "Braille"}, {"tm", "Turkmen"},
+ {"ml", "Bambara"}, {"tz", "Swahili (Tanzania)"}, {"tg", "French (Togo)"},
+ {"ke", "Swahili (Kenya)"}, {"bw", "Tswana"}, {"ph", "Filipino"}, {"md", "Moldavian"},
+ {"id", "Indonesian (Arab Melayu, phonetic)"}, {"jv", "Indonesian (Javanese)"},
+ {"my", "Malay (Jawi, Arabic Keyboard)"}
};
#endif /* !HORIZON_KEYMAPS_HH_ */