aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Tari <robert@tari.in>2022-11-08 02:07:38 +0100
committerRobert Tari <robert@tari.in>2022-11-08 02:07:38 +0100
commitc16bded326f499fb68de765369c7d421aed0ec7c (patch)
tree78b43324dac47c3ef702029ec9291f5f800259d2
parente9e02ded75ad6e092c934fe939aa165029a107e0 (diff)
downloadayatana-indicator-keyboard-c16bded326f499fb68de765369c7d421aed0ec7c.tar.gz
ayatana-indicator-keyboard-c16bded326f499fb68de765369c7d421aed0ec7c.tar.bz2
ayatana-indicator-keyboard-c16bded326f499fb68de765369c7d421aed0ec7c.zip
src/languages.h: Update the layout list + rewrite the code to use a struct instead of two lists
fixes https://github.com/AyatanaIndicators/ayatana-indicator-keyboard/issues/47
-rw-r--r--src/languages.h2215
1 files changed, 734 insertions, 1481 deletions
diff --git a/src/languages.h b/src/languages.h
index 81063861..e7497773 100644
--- a/src/languages.h
+++ b/src/languages.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Robert Tari <robert@tari.in>
+ * Copyright 2021-2022 Robert Tari <robert@tari.in>
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
@@ -16,1497 +16,750 @@
#include <glib.h>
-gchar *LANGUAGES[] =
+typedef struct
{
- "Ap", //APL
- "Ap", //APL symbols (APLX unified)
- "Ap", //APL symbols (Dyalog APL)
- "Ap", //APL symbols (IBM APL2)
- "Ap", //APL symbols (Manugistics APL*PLUS II)
- "Ap", //APL symbols (SAX, Sharp APL for Unix)
- "Ap", //APL symbols (unified)
- "Fa", //Afghani
- "Ak", //Akan
- "Sq", //Albanian
- "Sq", //Albanian (Plisi)
- "Sq", //Albanian (Veqilharxhi)
- "Am", //Amharic
- "Ar", //Arabic
- "Ar", //Arabic (AZERTY)
- "Ar", //Arabic (AZERTY, Eastern Arabic numerals)
- "Ar", //Arabic (Algeria)
- "Ar", //Arabic (Arabic numerals, extensions in the 4th level)
- "Ar", //Arabic (Buckwalter)
- "Ar", //Arabic (Eastern Arabic numerals)
- "Ar", //Arabic (Eastern Arabic numerals, extensions in the 4th level)
- "Ar", //Arabic (Macintosh)
- "Ar", //Arabic (Morocco)
- "Ar", //Arabic (OLPC)
- "Ar", //Arabic (Pakistan)
- "Ar", //Arabic (QWERTY)
- "Ar", //Arabic (QWERTY, Eastern Arabic numerals)
- "Ar", //Arabic (Sun Type 6/7)
- "Ar", //Arabic (Syria)
- "Ar", //Arabic (ErgoArabic)
- "Hy", //Armenian
- "Hy", //Armenian (OLPC, phonetic)
- "Hy", //Armenian (alt. eastern)
- "Hy", //Armenian (alt. phonetic)
- "Hy", //Armenian (eastern)
- "Hy", //Armenian (phonetic)
- "Hy", //Armenian (western)
- "As", //Asturian (Spain, with bottom-dot H and L)
- "At", //Atsina
- "Av", //Avatime
- "Ae", //Avestan
- "Az", //Azerbaijani
- "Az", //Azerbaijani (Cyrillic)
- "Bm", //Bambara
- "Bn", //Bangla
- "Bn", //Bangla (India)
- "Bn", //Bangla (India, Baishakhi Inscript)
- "Bn", //Bangla (India, Baishakhi)
- "Bn", //Bangla (India, Bornona)
- "Bn", //Bangla (India, Gitanjali)
- "Bn", //Bangla (India, Probhat)
- "Bn", //Bangla (Probhat)
- "Ba", //Bashkirian
- "Be", //Belarusian
- "Be", //Belarusian (Latin)
- "Be", //Belarusian (intl.)
- "Be", //Belarusian (legacy)
- "Bl", //Belgian
- "Bl", //Belgian (ISO, alt.)
- "Bl", //Belgian (Latin-9 only, alt.)
- "Bl", //Belgian (Sun Type 6/7)
- "Bl", //Belgian (Wang 724 AZERTY)
- "Bl", //Belgian (alt.)
- "Bl", //Belgian (no dead keys)
- "Bb", //Berber (Algeria, Latin)
- "Bb", //Berber (Algeria, Tifinagh)
- "Bb", //Berber (Morocco, Tifinagh alt.)
- "Bb", //Berber (Morocco, Tifinagh extended phonetic)
- "Bb", //Tarifit
- "Bb", //Berber (Morocco, Tifinagh extended)
- "Bb", //Berber (Morocco, Tifinagh phonetic)
- "Bb", //Berber (Morocco, Tifinagh phonetic, alt.)
- "Bb", //Berber (Morocco, Tifinagh)
- "Bs", //Bosnian
- "Bs", //Bosnian (US)
- "Bs", //Bosnian (US, with Bosnian digraphs)
- "Bs", //Bosnian (with Bosnian digraphs)
- "Bs", //Bosnian (with guillemets)
- "Bi", //Braille
- "Bi", //Braille (left-handed inverted thumb)
- "Bi", //Braille (left-handed)
- "Bi", //Braille (right-handed inverted thumb)
- "Bi", //Braille (right-handed)
- "Bg", //Bulgarian
- "Bg", //Bulgarian (enhanced)
- "Bg", //Bulgarian (new phonetic)
- "Bg", //Bulgarian (traditional phonetic)
- "My", //Burmese
- "Zg", //Burmese Zawgyi
- "My", //Shan
- "My", //Shan (Zawgyi Tai)
- "My", //Mon
- "My", //Mon (A1)
- "Cm", //Cameroon (AZERTY, intl.)
- "Cm", //Cameroon (Dvorak, intl.)
- "Cm", //Cameroon Multilingual (QWERTY, intl.)
- "Cn", //Canadian (intl.)
- "Cn", //Canadian (intl., 1st part)
- "Cn", //Canadian (intl., 2nd part)
- "Ca", //Catalan (Spain, with middle-dot L)
- "Ck", //Cherokee
- "Zh", //Chinese
- "Cu", //Church Slavonic
- "Cv", //Chuvash
- "Cv", //Chuvash (Latin)
- "Cl", //CloGaelach
- "Sx", //Coeur d'Alene Salish
- "Cp", //Coptic
- "Tt", //Crimean Tatar (Dobruja Q)
- "Tt", //Crimean Tatar (Turkish Alt-Q)
- "Tt", //Crimean Tatar (Turkish Alt-Q)
- "Tt", //Crimean Tatar (Turkish F)
- "Tt", //Crimean Tatar (Turkish F)
- "Tt", //Crimean Tatar (Turkish Q)
- "Tt", //Crimean Tatar (Turkish Q)
- "Hr", //Croatian
- "Hr", //Croatian (US)
- "Hr", //Croatian (US, with Croatian digraphs)
- "Hr", //Croatian (with Croatian digraphs)
- "Hr", //Croatian (with guillemets)
- "Cs", //Czech
- "Cs", //Czech (QWERTY)
- "Cs", //Czech (QWERTY, Macintosh)
- "Cs", //Czech (QWERTY, extended backslash)
- "Cs", //Czech (Sun Type 6/7)
- "Cs", //Czech (UCW, only accented letters)
- "Cs", //Czech (US, Dvorak, UCW support)
- "Cs", //Czech (coder)
- "Cs", //Czech (programming)
- "Cs", //Czech (programming, typographic)
- "Cs", //Czech (typographic)
- "Cs", //Czech (with <\\|> key)
- "Cs", //Czech Slovak and German (US)
- "Cs", //Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US)
- "Da", //Danish
- "Da", //Danish (Dvorak)
- "Da", //Danish (Macintosh)
- "Da", //Danish (Macintosh, no dead keys)
- "Da", //Danish (Sun Type 6/7)
- "Da", //Danish (Windows)
- "Da", //Danish (no dead keys)
- "Dv", //Dhivehi
- "Nl", //Dutch
- "Nl", //Dutch (Macintosh)
- "Nl", //Dutch (Sun Type 6/7)
- "Nl", //Dutch (standard)
- "Nl", //Dutch (US)
- "Dz", //Dzongkha
- "Ed", //Elfdalian (Swedish, with combining ogonek)
- "En", //English (3l)
- "En", //English (3l, Chromebook)
- "En", //English (3l, emacs)
- "En", //English (Australian)
- "En", //English (Cameroon)
- "En", //English (Canada)
- "En", //English (Carpalx)
- "En", //English (Carpalx, full optimization)
- "En", //English (Carpalx, full optimization, Hyena Layer5)
- "En", //English (Carpalx, full optimization, intl., with AltGr dead keys)
- "En", //English (Carpalx, full optimization, intl., with AltGr dead keys, Hyena Layer5)
- "En", //English (Carpalx, full optimization, intl., with dead keys)
- "En", //English (Carpalx, full optimization, intl., with dead keys, Hyena Layer5)
- "En", //English (Carpalx, intl., with AltGr dead keys)
- "En", //English (Carpalx, intl., with dead keys)
- "En", //English (Colemak)
- "En", //English (Colemak-DH)
- "En", //English (Colemak-DH ISO)
- "En", //English (Drix)
- "En", //English (Dvorak)
- "En", //English (Dvorak, alt. intl.)
- "En", //English (Dvorak, intl., with dead keys)
- "En", //English (Dvorak, left-handed)
- "En", //English (Dvorak, right-handed)
- "En", //English (Ghana)
- "En", //English (Ghana, GILLBT)
- "En", //English (Ghana, multilingual)
- "En", //English (India, with rupee)
- "En", //English (Macintosh)
- "En", //English (Mali, US, Macintosh)
- "En", //English (Mali, US, intl.)
- "En", //English (Nigeria)
- "En", //English (Norman)
- "En", //English (South Africa)
- "En", //English (UK)
- "En", //English (UK, Colemak)
- "En", //English (UK, Colemak-DH)
- "En", //English (UK, Dvorak)
- "En", //English (UK, Dvorak, with UK punctuation)
- "En", //English (UK, Hyena Layer5)
- "En", //English (UK, Macintosh)
- "En", //English (UK, Macintosh, intl.)
- "En", //English (UK, MiniGuru Layer5)
- "En", //English (UK, Sun Type 6/7)
- "En", //English (UK, TEX Yoda Layer5)
- "En", //English (UK, extended, Windows)
- "En", //English (UK, intl., with dead keys)
- "En", //English (UK, intl., with dead keys, Hyena Layer5)
- "En", //English (UK, intl., with dead keys, MiniGuru Layer5)
- "En", //English (UK, intl., with dead keys, TEX Yoda Layer5)
- "En", //English (US)
- "En", //English (US, Hyena Layer5)
- "En", //English (US, IBM Arabic 238_L)
- "En", //English (US, MiniGuru Layer5)
- "En", //English (US, Sun Type 6/7)
- "En", //English (US, Symbolic)
- "En", //English (US, TEX Yoda Layer5)
- "En", //English (US, alt. intl.)
- "En", //English (US, alt. intl., with dead keys, Hyena Layer5)
- "En", //English (US, alt. intl., with dead keys, MiniGuru Layer5)
- "En", //English (US, alt. intl., with dead keys, TEX Yoda Layer5)
- "En", //English (US, euro on 5)
- "En", //English (US, intl., AltGr Unicode combining)
- "En", //English (US, intl., AltGr Unicode combining, Hyena Layer5)
- "En", //English (US, intl., AltGr Unicode combining, MiniGuru Layer5)
- "En", //English (US, intl., AltGr Unicode combining, TEX Yoda Layer5)
- "En", //English (US, intl., AltGr Unicode combining, alt.)
- "En", //English (US, intl., with dead keys)
- "En", //English (Workman)
- "En", //English (Workman, intl., with dead keys)
- "En", //English (classic Dvorak)
- "En", //English (intl., with AltGr dead keys)
- "En", //English (programmer Dvorak)
- "En", //English (Dvorak, Macintosh)
- "En", //English (the divide/multiply toggle the layout)
- "Eo", //Esperanto
- "Eo", //Esperanto (Brazil, Nativo)
- "Eo", //Esperanto (Portugal, Nativo)
- "Eo", //Esperanto (legacy)
- "Et", //Estonian
- "Et", //Estonian (Dvorak)
- "Et", //Estonian (Sun Type 6/7)
- "Et", //Estonian (US)
- "Et", //Estonian (no dead keys)
- "Ek", //EurKEY (US)
- "Ee", //Ewe
- "Fo", //Faroese
- "Fo", //Faroese (no dead keys)
- "Ph", //Filipino
- "Ph", //Filipino (Capewell-Dvorak, Baybayin)
- "Ph", //Filipino (Capewell-Dvorak, Latin)
- "Ph", //Filipino (Capewell-QWERF 2006, Baybayin)
- "Ph", //Filipino (Capewell-QWERF 2006, Latin)
- "Ph", //Filipino (Colemak, Baybayin)
- "Ph", //Filipino (Colemak, Latin)
- "Ph", //Filipino (Dvorak, Baybayin)
- "Ph", //Filipino (Dvorak, Latin)
- "Ph", //Filipino (QWERTY, Baybayin)
- "Fi", //Finnish
- "Fi", //Finnish (DAS)
- "Fi", //Finnish (Dvorak)
- "Fi", //Finnish (Macintosh)
- "Fi", //Finnish (Sun Type 6/7)
- "Fi", //Finnish (Windows)
- "Fi", //Finnish (classic)
- "Fi", //Finnish (classic, no dead keys)
- "Fr", //French
- "Fr", //French (AZERTY)
- "Fr", //French (AZERTY, AFNOR)
- "Fr", //French (BEPO)
- "Fr", //French (BEPO, AFNOR)
- "Fr", //French (BEPO, Latin-9 only)
- "Fr", //French (Breton)
- "Fr", //French (Cameroon)
- "Fr", //French (Canada)
- "Fr", //French (Canada, Dvorak)
- "Fr", //French (Canada, legacy)
- "Fr", //French (Democratic Republic of the Congo)
- "Fr", //French (Dvorak)
- "Fr", //French (Macintosh)
- "Fr", //French (Mali, alt.)
- "Fr", //French (Morocco)
- "Fr", //French (Sun Type 6/7)
- "Fr", //French (Switzerland)
- "Fr", //French (Switzerland, Macintosh)
- "Fr", //French (Switzerland, Sun Type 6/7)
- "Fr", //French (Switzerland, no dead keys)
- "Fr", //French (Togo)
- "Fr", //French (US with dead keys, alt.)
- "Fr", //French (US)
- "Fr", //French (US, AZERTY)
- "Fr", //French (alt.)
- "Fr", //French (alt., Latin-9 only)
- "Fr", //French (alt., no dead keys)
- "Fr", //French (legacy, alt.)
- "Fr", //French (legacy, alt., no dead keys)
- "Fr", //French (no dead keys)
- "Fu", //Friulian (Italy)
- "Ff", //Fula
- "Gh", //Ga
- "Ka", //Georgian
- "Ka", //Georgian (France, AZERTY Tskapo)
- "Ka", //Georgian (Italy)
- "Ka", //Georgian (MESS)
- "Ka", //Georgian (ergonomic)
- "De", //German
- "De", //German (Aus der Neo-Welt)
- "De", //German (Austria)
- "De", //German (Austria, Macintosh)
- "De", //German (Austria, no dead keys)
- "De", //German (Bone)
- "De", //German (Bone, eszett in the home row)
- "De", //German (Dvorak)
- "De", //German (E1)
- "De", //German (E2)
- "De", //German (KOY)
- "De", //German (Ladin)
- "De", //German (Macintosh)
- "De", //German (Macintosh, no dead keys)
- "De", //German (Neo 2)
- "De", //German (Neo, QWERTY)
- "De", //German (Neo, QWERTZ)
- "De", //German (QWERTY)
- "De", //German (Sun Type 6/7)
- "De", //German (Switzerland)
- "De", //German (Switzerland, Macintosh)
- "De", //German (Switzerland, Sun Type 6/7)
- "De", //German (Switzerland, legacy)
- "De", //German (Switzerland, no dead keys)
- "De", //German (T3)
- "De", //German (US)
- "De", //German (dead acute)
- "De", //German (dead grave acute)
- "De", //German (dead tilde)
- "De", //German (no dead keys)
- "De", //German (with Hungarian letters, no dead keys)
- "De", //German, Swedish and Finnish (US)
- "Gr", //Greek
- "Gr", //Greek (Colemak)
- "Gr", //Greek (Sun Type 6/7)
- "Gr", //Greek (extended)
- "Gr", //Greek (no dead keys)
- "Gr", //Greek (polytonic)
- "Gr", //Greek (simple)
- "Gu", //Gujarati
- "Hp", //Hanyu Pinyin (with AltGr dead keys)
- "Ha", //Hausa (Ghana)
- "Ha", //Hausa (Nigeria)
- "Hw", //Hawaiian
- "He", //Hebrew
- "He", //Hebrew (Biblical, SIL phonetic)
- "He", //Hebrew (Biblical, Tiro)
- "He", //Hebrew (lyx)
- "He", //Hebrew (phonetic)
- "Hi", //Hindi (Bolnagri)
- "Hi", //Hindi (KaGaPa, phonetic)
- "Hi", //Hindi (Wx)
- "Hu", //Hungarian
- "Hu", //Hungarian (QWERTY)
- "Hu", //Hungarian (QWERTY, 101-key, comma, dead keys)
- "Hu", //Hungarian (QWERTY, 101-key, comma, no dead keys)
- "Hu", //Hungarian (QWERTY, 101-key, dot, dead keys)
- "Hu", //Hungarian (QWERTY, 101-key, dot, no dead keys)
- "Hu", //Hungarian (QWERTY, 102-key, comma, dead keys)
- "Hu", //Hungarian (QWERTY, 102-key, comma, no dead keys)
- "Hu", //Hungarian (QWERTY, 102-key, dot, dead keys)
- "Hu", //Hungarian (QWERTY, 102-key, dot, no dead keys)
- "Hu", //Hungarian (QWERTZ, 101-key, comma, dead keys)
- "Hu", //Hungarian (QWERTZ, 101-key, comma, no dead keys)
- "Hu", //Hungarian (QWERTZ, 101-key, dot, dead keys)
- "Hu", //Hungarian (QWERTZ, 101-key, dot, no dead keys)
- "Hu", //Hungarian (QWERTZ, 102-key, comma, dead keys)
- "Hu", //Hungarian (QWERTZ, 102-key, comma, no dead keys)
- "Hu", //Hungarian (QWERTZ, 102-key, dot, dead keys)
- "Hu", //Hungarian (QWERTZ, 102-key, dot, no dead keys)
- "Hu", //Hungarian (no dead keys)
- "Hu", //Hungarian (standard)
- "Is", //Icelandic
- "Is", //Icelandic (Dvorak)
- "Is", //Icelandic (Macintosh)
- "Is", //Icelandic (Macintosh, legacy)
- "Ig", //Igbo
- "Il", //Indian
- "Ip", //Indic IPA
- "Id", //Indonesian (Arab Melayu, extended phonetic)
- "Id", //Indonesian (Arab Melayu, phonetic)
- "Id", //Indonesian (Arab Pegon, phonetic)
- "Id", //Indonesian (Javanese)
- "Ix", //International Phonetic Alphabet
- "Ix", //International Phonetic Alphabet (QWERTY)
- "Iu", //Inuktitut
- "Iq", //Iraqi
- "Ga", //Irish
- "Ga", //Irish (UnicodeExpert)
- "It", //Italian
- "It", //Italian (Dvorak)
- "It", //Italian (IBM 142)
- "It", //Italian (Ladin)
- "It", //Italian (Macintosh)
- "It", //Italian (Sun Type 6/7)
- "It", //Italian (US)
- "It", //Italian (Windows)
- "It", //Italian (intl., with dead keys)
- "It", //Italian (no dead keys)
- "Ja", //Japanese
- "Ja", //Japanese (Dvorak)
- "Ja", //Japanese (Kana 86)
- "Ja", //Japanese (Kana)
- "Ja", //Japanese (Macintosh)
- "Ja", //Japanese (OADG 109A)
- "Ja", //Japanese (PC-98)
- "Ja", //Japanese (Sun Type 6)
- "Ja", //Japanese (Sun Type 7, PC-compatible)
- "Ja", //Japanese (Sun Type 7, Sun-compatible)
- "Kb", //Kabyle (azerty layout, dead keys)
- "Kb", //Kabyle (qwerty-gb layout, dead keys)
- "Kb", //Kabyle (qwerty-us layout, dead keys)
- "Kx", //Kalmyk
- "Kn", //Kannada
- "Kn", //Kannada (KaGaPa, phonetic)
- "Kp", //Kashubian
- "Kk", //Kazakh
- "Kk", //Kazakh (Latin)
- "Kk", //Kazakh (extended)
- "Kk", //Kazakh (with Russian)
- "Km", //Khmer (Cambodia)
- "Ki", //Kikuyu
- "Kv", //Komi
- "Ko", //Korean
- "Ko", //Korean (101/104-key compatible)
- "Ko", //Korean (Sun Type 6/7)
- "Ku", //Kurdish (Iran, Arabic-Latin)
- "Ku", //Kurdish (Iran, F)
- "Ku", //Kurdish (Iran, Latin Alt-Q)
- "Ku", //Kurdish (Iran, Latin Q)
- "Ku", //Kurdish (Iraq, Arabic-Latin)
- "Ku", //Kurdish (Iraq, F)
- "Ku", //Kurdish (Iraq, Latin Alt-Q)
- "Ku", //Kurdish (Iraq, Latin Q)
- "Ku", //Kurdish (Syria, F)
- "Ku", //Kurdish (Syria, Latin Alt-Q)
- "Ku", //Kurdish (Syria, Latin Q)
- "Ku", //Kurdish (Turkey, F)
- "Ku", //Kurdish (Turkey, Latin Alt-Q)
- "Ku", //Kurdish (Turkey, Latin Q)
- "Kt", //Kutenai
- "Ky", //Kyrgyz
- "Ky", //Kyrgyz (phonetic)
- "Lo", //Lao
- "Lo", //Lao (STEA)
- "Lv", //Latvian
- "Lv", //Latvian (Colemak)
- "Lv", //Latvian (Colemak, with apostrophe)
- "Lv", //Latvian (Dvorak)
- "Lv", //Latvian (Dvorak, with Y)
- "Lv", //Latvian (Dvorak, with minus)
- "Lv", //Latvian (F)
- "Lv", //Latvian (Sun Type 6/7)
- "Lv", //Latvian (adapted)
- "Lv", //Latvian (apostrophe)
- "Lv", //Latvian (ergonomic, ŪGJRMV)
- "Lv", //Latvian (modern)
- "Lv", //Latvian (programmer Dvorak)
- "Lv", //Latvian (programmer Dvorak, with Y)
- "Lv", //Latvian (programmer Dvorak, with minus)
- "Lv", //Latvian (tilde)
- "Lv", //Latvian (apostrophe, dead quotes)
- "Lt", //Lithuanian
- "Lt", //Lithuanian (Dvorak)
- "Lt", //Lithuanian (IBM LST 1205-92)
- "Lt", //Lithuanian (LEKP)
- "Lt", //Lithuanian (LEKPa)
- "Lt", //Lithuanian (Ratise)
- "Lt", //Lithuanian (Sun Type 6/7)
- "Lt", //Lithuanian (US)
- "Lt", //Lithuanian (standard)
- "Sb", //Lower Sorbian
- "Sb", //Lower Sorbian (QWERTZ)
- "Mk", //Macedonian
- "Mk", //Macedonian (no dead keys)
- "Ms", //Malay (Jawi, Arabic Keyboard)
- "Ms", //Malay (Jawi, phonetic)
- "Ml", //Malayalam
- "Ml", //Malayalam (Lalitha)
- "Ml", //Malayalam (enhanced Inscript, with rupee)
- "Mt", //Maltese
- "Mt", //Maltese (UK, with AltGr overrides)
- "Mt", //Maltese (US layout with AltGr overrides)
- "Mt", //Maltese (US)
- "Ma", //Manipuri (Eeyek)
- "Mi", //Maori
- "Mr", //Marathi (KaGaPa, phonetic)
- "Mr", //Marathi (enhanced Inscript)
- "Mx", //Mari
- "Mu", //Mmuock
- "Md", //Modi (KaGaPa phonetic)
- "Ro", //Moldavian
- "Ro", //Moldavian (Gagauz)
- "Mn", //Mongolian
- "Mn", //Mongolian (Bichig)
- "Mn", //Mongolian (Galik)
- "Mn", //Mongolian (Manchu Galik)
- "Mn", //Mongolian (Manchu)
- "Mn", //Mongolian (Todo Galik)
- "Mn", //Mongolian (Todo)
- "Mn", //Mongolian (Xibe)
- "Me", //Montenegrin
- "Me", //Montenegrin (Cyrillic)
- "Me", //Montenegrin (Cyrillic, ZE and ZHE swapped)
- "Me", //Montenegrin (Cyrillic, with guillemets)
- "Me", //Montenegrin (Latin, QWERTY)
- "Me", //Montenegrin (Latin, Unicode)
- "Me", //Montenegrin (Latin, Unicode, QWERTY)
- "Me", //Montenegrin (Latin, with guillemets)
- "Mb", //Multilingual (Canada, Sun Type 6/7)
- "Nk", //N'Ko (azerty)
- "Ne", //Nepali
- "Ns", //Northern Saami (Finland)
- "Ns", //Northern Saami (Norway)
- "Ns", //Northern Saami (Norway, no dead keys)
- "Ns", //Northern Saami (Sweden)
- "No", //Norwegian
- "No", //Norwegian (Colemak)
- "No", //Norwegian (Dvorak)
- "No", //Norwegian (Macintosh)
- "No", //Norwegian (Macintosh, no dead keys)
- "No", //Norwegian (Sun Type 6/7)
- "No", //Norwegian (Windows)
- "No", //Norwegian (no dead keys)
- "Oc", //Occitan
- "Og", //Ogham
- "Og", //Ogham (IS434)
- "Ol", //Ol Chiki
- "Hu", //Old Hungarian
- "Hu", //Old Hungarian (for ligatures)
- "Tr", //Old Turkic
- "Tr", //Old Turkic (F)
- "Or", //Oriya
- "Or", //Oriya (Bolnagri)
- "Or", //Oriya (Wx)
- "Os", //Ossetian (Georgia)
- "Os", //Ossetian (Windows)
- "Os", //Ossetian (legacy)
- "Rs", //Pannonian Rusyn
- "Ps", //Pashto
- "Ps", //Pashto (Afghanistan, OLPC)
- "Ps", //Pashto (Afghanistan, OLPC)
- "Fa", //Persian
- "Fa", //Persian (Afghanistan, Dari OLPC)
- "Fa", //Persian (with Persian keypad)
- "Pl", //Polish
- "Pl", //Polish (British keyboard)
- "Pl", //Polish (Colemak)
- "Pl", //Polish (Colemak-DH)
- "Pl", //Polish (Dvorak)
- "Pl", //Polish (Dvorak, with Polish quotes on key 1)
- "Pl", //Polish (Dvorak, with Polish quotes on quotemark key)
- "Pl", //Polish (Germany, no dead keys)
- "Pl", //Polish (Glagolica)
- "Pl", //Polish (lefty)
- "Pl", //Polish (QWERTZ)
- "Pl", //Polish (Sun Type 6/7)
- "Pl", //Polish (intl., with dead keys)
- "Pl", //Polish (legacy)
- "Pl", //Polish (programmer Dvorak)
- "Pt", //Portuguese
- "Pt", //Portuguese (Brazil)
- "Pt", //Portuguese (Brazil, Dvorak)
- "Pt", //Portuguese (Brazil, IBM/Lenovo ThinkPad)
- "Pt", //Portuguese (Brazil, Nativo for US keyboards)
- "Pt", //Portuguese (Brazil, Nativo)
- "Pt", //Portuguese (Brazil, Sun Type 6/7)
- "Pt", //Portuguese (Brazil, no dead keys)
- "Pt", //Portuguese (Colemak)
- "Pt", //Portuguese (Macintosh)
- "Pt", //Portuguese (Macintosh, no dead keys)
- "Pt", //Portuguese (Nativo for US keyboards)
- "Pt", //Portuguese (Nativo)
- "Pt", //Portuguese (Sun Type 6/7)
- "Pt", //Portuguese (no dead keys)
- "Pa", //Punjabi (Gurmukhi Jhelum)
- "Pa", //Punjabi (Gurmukhi)
- "Ro", //Romanian
- "Ro", //Romanian (Germany)
- "Ro", //Romanian (Germany, no dead keys)
- "Ro", //Romanian (Sun Type 6/7)
- "Ro", //Romanian (Windows)
- "Ro", //Romanian (ergonomic Touchtype)
- "Ro", //Romanian (standard)
- "Ru", //Russian
- "Ru", //Russian (Belarus)
- "Ru", //Russian (Czech, phonetic)
- "Ru", //Russian (DOS)
- "Ru", //Russian (Georgia)
- "Ru", //Russian (Germany, phonetic)
- "Ru", //Russian (Germany, recommended)
- "Ru", //Russian (Germany, transliteration)
- "Ru", //Russian (Kazakhstan, with Kazakh)
- "Ru", //Russian (Macintosh)
- "Ru", //Russian (Poland, phonetic Dvorak)
- "Ru", //Russian (Polyglot and Reactionary)
- "Ru", //Russian (Rulemak, phonetic Colemak)
- "Ru", //Russian (Sun Type 6/7)
- "Ru", //Russian (Sweden, phonetic)
- "Ru", //Russian (Sweden, phonetic, no dead keys)
- "Ru", //Russian (US, phonetic)
- "Ru", //Russian (Ukraine, standard RSTU)
- "Ru", //Russian (legacy)
- "Ru", //Russian (phonetic Macintosh)
- "Ru", //Russian (phonetic)
- "Ru", //Russian (phonetic, AZERTY)
- "Ru", //Russian (phonetic, Dvorak)
- "Ru", //Russian (phonetic, French)
- "Ru", //Russian (phonetic, Windows)
- "Ru", //Russian (phonetic, YAZHERTY)
- "Ru", //Russian (typewriter)
- "Ru", //Russian (typewriter, legacy)
- "Ru", //Russian (with US punctuation)
- "Ru", //Russian (GOST 6431-75)
- "Ru", //Russian (GOST 14289-88)
- "Ru", //Russian (with Ukrainian-Belorussian layout)
- "Sy", //Saisiyat (Taiwan)
- "Sf", //Samogitian
- "Sa", //Sanskrit (KaGaPa, phonetic)
- "Sa", //Sanskrit symbols
- "Sp", //Secwepemctsin
- "Sr", //Serbian
- "Sr", //Serbian (Cyrillic, ZE and ZHE swapped)
- "Sr", //Serbian (Cyrillic, with guillemets)
- "Sr", //Serbian (Latin)
- "Sr", //Serbian (Latin, QWERTY)
- "Sr", //Serbian (Latin, Unicode)
- "Sr", //Serbian (Latin, Unicode, QWERTY)
- "Sr", //Serbian (Latin, with guillemets)
- "Sr", //Serbian (Russia)
- "Sr", //Serbian (combining accents instead of dead keys)
- "Hs", //Serbo-Croatian (US)
- "Sj", //Sicilian
- "Sj", //Sicilian (US keyboard)
- "En", //English (Western European AltGr dead keys)
- "Sj", //Silesian
- "Sd", //Sindhi
- "Si", //Sinhala (US)
- "Si", //Sinhala (phonetic)
- "Sk", //Slovak
- "Sk", //Slovak (ACC layout, only accented letters)
- "Sk", //Slovak (QWERTY)
- "Sk", //Slovak (QWERTY, extended backslash)
- "Sk", //Slovak (Sun Type 6/7)
- "Sk", //Slovak (extended backslash)
- "Sl", //Slovenian
- "Sl", //Slovenian (US)
- "Sl", //Slovenian (with guillemets)
- "Es", //Spanish
- "Es", //Spanish (Dvorak)
- "Es", //Spanish (Latin American)
- "Es", //Spanish (Latin American, Colemak for gaming)
- "Es", //Spanish (Latin American, Colemak)
- "Es", //Spanish (Latin American, Dvorak)
- "Es", //Spanish (Latin American, dead tilde)
- "Es", //Spanish (Latin American, no dead keys)
- "Es", //Spanish (Macintosh)
- "Es", //Spanish (Sun Type 6/7)
- "Es", //Spanish (Windows)
- "Es", //Spanish (dead tilde)
- "Es", //Spanish (no dead keys)
- "Sw", //Swahili (Kenya)
- "Sw", //Swahili (Tanzania)
- "Sv", //Swedish
- "Sv", //Swedish (Dvorak A5)
- "Sv", //Swedish (Dvorak)
- "Sv", //Swedish (Dvorak, intl.)
- "Sv", //Swedish (Macintosh)
- "Sv", //Swedish (Sun Type 6/7)
- "Sv", //Swedish (Svdvorak)
- "Sv", //Swedish (US)
- "Sv", //Swedish (no dead keys)
- "Sv", //Swedish Sign Language
- "Ls", //Syriac
- "Ls", //Syriac (phonetic)
- "Tw", //Taiwanese
- "Tw", //Taiwanese (indigenous)
- "Tg", //Tajik
- "Tg", //Tajik (legacy)
- "Ta", //Tamil (Inscript)
- "Ta", //Tamil (Sri Lanka, TamilNet '99)
- "Ta", //Tamil (Sri Lanka, TamilNet '99, TAB encoding)
- "Ta", //Tamil (TamilNet '99 with Tamil numerals)
- "Ta", //Tamil (TamilNet '99)
- "Ta", //Tamil (TamilNet '99, TAB encoding)
- "Ta", //Tamil (TamilNet '99, TSCII encoding)
- "Tt", //Tatar
- "Te", //Telugu
- "Te", //Telugu (KaGaPa, phonetic)
- "Te", //Telugu (Sarala)
- "Th", //Thai
- "Th", //Thai (Pattachote)
- "Th", //Thai (TIS-820.2538)
- "Bo", //Tibetan
- "Bo", //Tibetan (with ASCII numerals)
- "Tn", //Tswana
- "Tr", //Turkish
- "Tr", //Turkish (Alt-Q)
- "Tr", //Turkish (F)
- "Tr", //Turkish (Germany)
- "Tr", //Turkish (Sun Type 6/7)
- "Tr", //Turkish (intl., with dead keys)
- "Tr", //Turkish (Turkey, Latin Q, Swap i and ı)
- "Tr", //Ottoman
- "Tr", //Ottoman (F)
- "Tk", //Turkmen
- "Tk", //Turkmen (Alt-Q)
- "Ud", //Udmurt
- "Ua", //Ugaritic instead of Arabic
- "Uk", //Ukrainian
- "Uk", //Ukrainian (Sun Type 6/7)
- "Uk", //Ukrainian (Windows)
- "Uk", //Ukrainian (macOS)
- "Uk", //Ukrainian (homophonic)
- "Uk", //Ukrainian (legacy)
- "Uk", //Ukrainian (phonetic)
- "Uk", //Ukrainian (standard RSTU)
- "Uk", //Ukrainian (typewriter)
- "Ur", //Urdu (Pakistan)
- "Ur", //Urdu (Pakistan, CRULP)
- "Ur", //Urdu (Pakistan, NLA)
- "Ur", //Urdu (Navees, Pakistan)
- "Ur", //Urdu (Windows)
- "Ur", //Urdu (alt. phonetic)
- "Ur", //Urdu (phonetic)
- "Ur", //Urdu (Navees)
- "Ug", //Uyghur
- "Uz", //Uzbek
- "Uz", //Uzbek (Afghanistan)
- "Uz", //Uzbek (Afghanistan, OLPC)
- "Uz", //Uzbek (Latin)
- "Vi", //Vietnamese
- "Vi", //Vietnamese (AÐERTY)
- "Vi", //Vietnamese (French)
- "Vi", //Vietnamese (QĐERTY)
- "Vi", //Vietnamese (US)
- "Wo", //Wolof
- "Ya", //Yakut
- "Yo", //Yoruba
- "Gd", //Scottish Gaelic
- "emoji", //Emoji
- "custom", //Custom
- NULL
-};
+ gchar *sLanguage;
+ gchar *sId;
+} Language;
-gchar *IDS[] =
+Language LANGUAGES[] =
{
- "apl", //APL
- "apl+aplx", //APL symbols (APLX unified)
- "apl+dyalog", //APL symbols (Dyalog APL)
- "apl+apl2", //APL symbols (IBM APL2)
- "apl+aplplusII", //APL symbols (Manugistics APL*PLUS II)
- "apl+sax", //APL symbols (SAX, Sharp APL for Unix)
- "apl+unified", //APL symbols (unified)
- "af", //Afghani
- "gh+akan", //Akan
- "al", //Albanian
- "al+plisi", //Albanian (Plisi)
- "al+veqilharxhi", //Albanian (Veqilharxhi)
- "et", //Amharic
- "ara", //Arabic
- "ara+azerty", //Arabic (AZERTY)
- "ara+azerty_digits", //Arabic (AZERTY, Eastern Arabic numerals)
- "dz+ar", //Arabic (Algeria)
- "ara+basic_ext", //Arabic (Arabic numerals, extensions in the 4th level)
- "ara+buckwalter", //Arabic (Buckwalter)
- "ara+digits", //Arabic (Eastern Arabic numerals)
- "ara+basic_ext_digits", //Arabic (Eastern Arabic numerals, extensions in the 4th level)
- "ara+mac", //Arabic (Macintosh)
- "ma", //Arabic (Morocco)
- "ara+olpc", //Arabic (OLPC)
- "pk+ara", //Arabic (Pakistan)
- "ara+qwerty", //Arabic (QWERTY)
- "ara+qwerty_digits", //Arabic (QWERTY, Eastern Arabic numerals)
- "ara+sun_type6", //Arabic (Sun Type 6/7)
- "sy", //Arabic (Syria)
- "ara+ergoarabic", //Arabic (ErgoArabic)
- "am", //Armenian
- "am+olpc-phonetic", //Armenian (OLPC, phonetic)
- "am+eastern-alt", //Armenian (alt. eastern)
- "am+phonetic-alt", //Armenian (alt. phonetic)
- "am+eastern", //Armenian (eastern)
- "am+phonetic", //Armenian (phonetic)
- "am+western", //Armenian (western)
- "es+ast", //Asturian (Spain, with bottom-dot H and L)
- "us+ats", //Atsina
- "gh+avn", //Avatime
- "ir+ave", //Avestan
- "az", //Azerbaijani
- "az+cyrillic", //Azerbaijani (Cyrillic)
- "ml", //Bambara
- "bd", //Bangla
- "in+ben", //Bangla (India)
- "in+ben_inscript", //Bangla (India, Baishakhi Inscript)
- "in+ben_baishakhi", //Bangla (India, Baishakhi)
- "in+ben_bornona", //Bangla (India, Bornona)
- "in+ben_gitanjali", //Bangla (India, Gitanjali)
- "in+ben_probhat", //Bangla (India, Probhat)
- "bd+probhat", //Bangla (Probhat)
- "ru+bak", //Bashkirian
- "by", //Belarusian
- "by+latin", //Belarusian (Latin)
- "by+intl", //Belarusian (intl.)
- "by+legacy", //Belarusian (legacy)
- "be", //Belgian
- "be+iso-alternate", //Belgian (ISO, alt.)
- "be+oss_latin9", //Belgian (Latin-9 only, alt.)
- "be+sun_type6", //Belgian (Sun Type 6/7)
- "be+wang", //Belgian (Wang 724 AZERTY)
- "be+oss", //Belgian (alt.)
- "be+nodeadkeys", //Belgian (no dead keys)
- "dz", //Berber (Algeria, Latin)
- "dz+ber", //Berber (Algeria, Tifinagh)
- "ma+tifinagh-alt", //Berber (Morocco, Tifinagh alt.)
- "ma+tifinagh-extended-phonetic", //Berber (Morocco, Tifinagh extended phonetic)
- "ma+rif", //Tarifit
- "ma+tifinagh-extended", //Berber (Morocco, Tifinagh extended)
- "ma+tifinagh-phonetic", //Berber (Morocco, Tifinagh phonetic)
- "ma+tifinagh-alt-phonetic", //Berber (Morocco, Tifinagh phonetic, alt.)
- "ma+tifinagh", //Berber (Morocco, Tifinagh)
- "ba", //Bosnian
- "ba+us", //Bosnian (US)
- "ba+unicodeus", //Bosnian (US, with Bosnian digraphs)
- "ba+unicode", //Bosnian (with Bosnian digraphs)
- "ba+alternatequotes", //Bosnian (with guillemets)
- "brai", //Braille
- "brai+left_hand_invert", //Braille (left-handed inverted thumb)
- "brai+left_hand", //Braille (left-handed)
- "brai+right_hand_invert", //Braille (right-handed inverted thumb)
- "brai+right_hand", //Braille (right-handed)
- "bg", //Bulgarian
- "bg+bekl", //Bulgarian (enhanced)
- "bg+bas_phonetic", //Bulgarian (new phonetic)
- "bg+phonetic", //Bulgarian (traditional phonetic)
- "mm", //Burmese
- "mm+zawgyi", //Burmese Zawgyi
- "mm+shn", //Shan
- "mm+zgt", //Shan (Zawgyi Tai)
- "mm+mnw", //Mon
- "mm+mnw-a1", //Mon (A1)
- "cm+azerty", //Cameroon (AZERTY, intl.)
- "cm+dvorak", //Cameroon (Dvorak, intl.)
- "cm+qwerty", //Cameroon Multilingual (QWERTY, intl.)
- "ca+multix", //Canadian (intl.)
- "ca+multi", //Canadian (intl., 1st part)
- "ca+multi-2gr", //Canadian (intl., 2nd part)
- "es+cat", //Catalan (Spain, with middle-dot L)
- "us+chr", //Cherokee
- "cn", //Chinese
- "ru+chu", //Church Slavonic
- "ru+cv", //Chuvash
- "ru+cv_latin", //Chuvash (Latin)
- "ie+CloGaelach", //CloGaelach
- "us+crd", //Coeur d'Alene Salish
- "eg", //Coptic
- "ro+crh_dobruja", //Crimean Tatar (Dobruja Q)
- "tr+crh_alt", //Crimean Tatar (Turkish Alt-Q)
- "ua+crh_alt", //Crimean Tatar (Turkish Alt-Q)
- "tr+crh_f", //Crimean Tatar (Turkish F)
- "ua+crh_f", //Crimean Tatar (Turkish F)
- "tr+crh", //Crimean Tatar (Turkish Q)
- "ua+crh", //Crimean Tatar (Turkish Q)
- "hr", //Croatian
- "hr+us", //Croatian (US)
- "hr+unicodeus", //Croatian (US, with Croatian digraphs)
- "hr+unicode", //Croatian (with Croatian digraphs)
- "hr+alternatequotes", //Croatian (with guillemets)
- "cz", //Czech
- "cz+qwerty", //Czech (QWERTY)
- "cz+qwerty-mac", //Czech (QWERTY, Macintosh)
- "cz+qwerty_bksl", //Czech (QWERTY, extended backslash)
- "cz+sun_type6", //Czech (Sun Type 6/7)
- "cz+ucw", //Czech (UCW, only accented letters)
- "cz+dvorak-ucw", //Czech (US, Dvorak, UCW support)
- "cz+coder", //Czech (coder)
- "cz+prog", //Czech (programming)
- "cz+prog_typo", //Czech (programming, typographic)
- "cz+typo", //Czech (typographic)
- "cz+bksl", //Czech (with <\\|> key)
- "us+cz_sk_de", //Czech Slovak and German (US)
- "us+cz_sk_pl_de_es_fi_sv", //Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US)
- "dk", //Danish
- "dk+dvorak", //Danish (Dvorak)
- "dk+mac", //Danish (Macintosh)
- "dk+mac_nodeadkeys", //Danish (Macintosh, no dead keys)
- "dk+sun_type6", //Danish (Sun Type 6/7)
- "dk+winkeys", //Danish (Windows)
- "dk+nodeadkeys", //Danish (no dead keys)
- "mv", //Dhivehi
- "nl", //Dutch
- "nl+mac", //Dutch (Macintosh)
- "nl+sun_type6", //Dutch (Sun Type 6/7)
- "nl+std", //Dutch (standard)
- "nl+us", //Dutch (US)
- "bt", //Dzongkha
- "se+ovd", //Elfdalian (Swedish, with combining ogonek)
- "us+3l", //English (3l)
- "us+3l-cros", //English (3l, Chromebook)
- "us+3l-emacs", //English (3l, emacs)
- "au", //English (Australian)
- "cm", //English (Cameroon)
- "ca+eng", //English (Canada)
- "us+carpalx", //English (Carpalx)
- "us+carpalx-full", //English (Carpalx, full optimization)
- "us+hyena-carpalx", //English (Carpalx, full optimization, Hyena Layer5)
- "us+carpalx-full-altgr-intl", //English (Carpalx, full optimization, intl., with AltGr dead keys)
- "us+hyena-carpalx-altgr-intl", //English (Carpalx, full optimization, intl., with AltGr dead keys, Hyena Layer5)
- "us+carpalx-full-intl", //English (Carpalx, full optimization, intl., with dead keys)
- "us+hyena-carpalx-intl", //English (Carpalx, full optimization, intl., with dead keys, Hyena Layer5)
- "us+carpalx-altgr-intl", //English (Carpalx, intl., with AltGr dead keys)
- "us+carpalx-intl", //English (Carpalx, intl., with dead keys)
- "us+colemak", //English (Colemak)
- "us+colemak_dh", //English (Colemak-DH)
- "us+colemak_dh_iso", //English (Colemak-DH ISO)
- "us+drix", //English (Drix)
- "us+dvorak", //English (Dvorak)
- "us+dvorak-alt-intl", //English (Dvorak, alt. intl.)
- "us+dvorak-intl", //English (Dvorak, intl., with dead keys)
- "us+dvorak-l", //English (Dvorak, left-handed)
- "us+dvorak-r", //English (Dvorak, right-handed)
- "gh", //English (Ghana)
- "gh+gillbt", //English (Ghana, GILLBT)
- "gh+generic", //English (Ghana, multilingual)
- "in+eng", //English (India, with rupee)
- "us+mac", //English (Macintosh)
- "ml+us-mac", //English (Mali, US, Macintosh)
- "ml+us-intl", //English (Mali, US, intl.)
- "ng", //English (Nigeria)
- "us+norman", //English (Norman)
- "za", //English (South Africa)
- "gb", //English (UK)
- "gb+colemak", //English (UK, Colemak)
- "gb+colemak_dh", //English (UK, Colemak-DH)
- "gb+dvorak", //English (UK, Dvorak)
- "gb+dvorakukp", //English (UK, Dvorak, with UK punctuation)
- "gb+hyena", //English (UK, Hyena Layer5)
- "gb+mac", //English (UK, Macintosh)
- "gb+mac_intl", //English (UK, Macintosh, intl.)
- "gb+miniguru", //English (UK, MiniGuru Layer5)
- "gb+sun_type6", //English (UK, Sun Type 6/7)
- "gb+yoda", //English (UK, TEX Yoda Layer5)
- "gb+extd", //English (UK, extended, Windows)
- "gb+intl", //English (UK, intl., with dead keys)
- "gb+hyena-intl", //English (UK, intl., with dead keys, Hyena Layer5)
- "gb+miniguru-intl", //English (UK, intl., with dead keys, MiniGuru Layer5)
- "gb+yoda-intl", //English (UK, intl., with dead keys, TEX Yoda Layer5)
- "us", //English (US)
- "us+hyena", //English (US, Hyena Layer5)
- "us+ibm238l", //English (US, IBM Arabic 238_L)
- "us+miniguru", //English (US, MiniGuru Layer5)
- "us+sun_type6", //English (US, Sun Type 6/7)
- "us+symbolic", //English (US, Symbolic)
- "us+yoda", //English (US, TEX Yoda Layer5)
- "us+alt-intl", //English (US, alt. intl.)
- "us+hyena-alt-intl", //English (US, alt. intl., with dead keys, Hyena Layer5)
- "us+miniguru-alt-intl", //English (US, alt. intl., with dead keys, MiniGuru Layer5)
- "us+yoda-alt-intl", //English (US, alt. intl., with dead keys, TEX Yoda Layer5)
- "us+euro", //English (US, euro on 5)
- "us+intl-unicode", //English (US, intl., AltGr Unicode combining)
- "us+hyena-intl-unicode", //English (US, intl., AltGr Unicode combining, Hyena Layer5)
- "us+miniguru-intl-unicode", //English (US, intl., AltGr Unicode combining, MiniGuru Layer5)
- "us+yoda-intl-unicode", //English (US, intl., AltGr Unicode combining, TEX Yoda Layer5)
- "us+alt-intl-unicode", //English (US, intl., AltGr Unicode combining, alt.)
- "us+intl", //English (US, intl., with dead keys)
- "us+workman", //English (Workman)
- "us+workman-intl", //English (Workman, intl., with dead keys)
- "us+dvorak-classic", //English (classic Dvorak)
- "us+altgr-intl", //English (intl., with AltGr dead keys)
- "us+dvp", //English (programmer Dvorak)
- "us+dvorak-mac", //English (Dvorak, Macintosh)
- "us+olpc2", //English (the divide/multiply toggle the layout)
- "epo", //Esperanto
- "br+nativo-epo", //Esperanto (Brazil, Nativo)
- "pt+nativo-epo", //Esperanto (Portugal, Nativo)
- "epo+legacy", //Esperanto (legacy)
- "ee", //Estonian
- "ee+dvorak", //Estonian (Dvorak)
- "ee+sun_type6", //Estonian (Sun Type 6/7)
- "ee+us", //Estonian (US)
- "ee+nodeadkeys", //Estonian (no dead keys)
- "eu", //EurKEY (US)
- "gh+ewe", //Ewe
- "fo", //Faroese
- "fo+nodeadkeys", //Faroese (no dead keys)
- "ph", //Filipino
- "ph+capewell-dvorak-bay", //Filipino (Capewell-Dvorak, Baybayin)
- "ph+capewell-dvorak", //Filipino (Capewell-Dvorak, Latin)
- "ph+capewell-qwerf2k6-bay", //Filipino (Capewell-QWERF 2006, Baybayin)
- "ph+capewell-qwerf2k6", //Filipino (Capewell-QWERF 2006, Latin)
- "ph+colemak-bay", //Filipino (Colemak, Baybayin)
- "ph+colemak", //Filipino (Colemak, Latin)
- "ph+dvorak-bay", //Filipino (Dvorak, Baybayin)
- "ph+dvorak", //Filipino (Dvorak, Latin)
- "ph+qwerty-bay", //Filipino (QWERTY, Baybayin)
- "fi", //Finnish
- "fi+das", //Finnish (DAS)
- "fi+fidvorak", //Finnish (Dvorak)
- "fi+mac", //Finnish (Macintosh)
- "fi+sun_type6", //Finnish (Sun Type 6/7)
- "fi+winkeys", //Finnish (Windows)
- "fi+classic", //Finnish (classic)
- "fi+nodeadkeys", //Finnish (classic, no dead keys)
- "fr", //French
- "fr+azerty", //French (AZERTY)
- "fr+afnor", //French (AZERTY, AFNOR)
- "fr+bepo", //French (BEPO)
- "fr+bepo_afnor", //French (BEPO, AFNOR)
- "fr+bepo_latin9", //French (BEPO, Latin-9 only)
- "fr+bre", //French (Breton)
- "cm+french", //French (Cameroon)
- "ca", //French (Canada)
- "ca+fr-dvorak", //French (Canada, Dvorak)
- "ca+fr-legacy", //French (Canada, legacy)
- "cd", //French (Democratic Republic of the Congo)
- "fr+dvorak", //French (Dvorak)
- "fr+mac", //French (Macintosh)
- "ml+fr-oss", //French (Mali, alt.)
- "ma+french", //French (Morocco)
- "fr+sun_type6", //French (Sun Type 6/7)
- "ch+fr", //French (Switzerland)
- "ch+fr_mac", //French (Switzerland, Macintosh)
- "ch+sun_type6_fr", //French (Switzerland, Sun Type 6/7)
- "ch+fr_nodeadkeys", //French (Switzerland, no dead keys)
- "tg", //French (Togo)
- "fr+us-alt", //French (US with dead keys, alt.)
- "fr+us", //French (US)
- "fr+us-azerty", //French (US, AZERTY)
- "fr+oss", //French (alt.)
- "fr+oss_latin9", //French (alt., Latin-9 only)
- "fr+oss_nodeadkeys", //French (alt., no dead keys)
- "fr+latin9", //French (legacy, alt.)
- "fr+latin9_nodeadkeys", //French (legacy, alt., no dead keys)
- "fr+nodeadkeys", //French (no dead keys)
- "it+fur", //Friulian (Italy)
- "gh+fula", //Fula
- "gh+ga", //Ga
- "ge", //Georgian
- "fr+geo", //Georgian (France, AZERTY Tskapo)
- "it+geo", //Georgian (Italy)
- "ge+mess", //Georgian (MESS)
- "ge+ergonomic", //Georgian (ergonomic)
- "de", //German
- "de+adnw", //German (Aus der Neo-Welt)
- "at", //German (Austria)
- "at+mac", //German (Austria, Macintosh)
- "at+nodeadkeys", //German (Austria, no dead keys)
- "de+bone", //German (Bone)
- "de+bone_eszett_home", //German (Bone, eszett in the home row)
- "de+dvorak", //German (Dvorak)
- "de+e1", //German (E1)
- "de+e2", //German (E2)
- "de+koy", //German (KOY)
- "de+lld", //German (Ladin)
- "de+mac", //German (Macintosh)
- "de+mac_nodeadkeys", //German (Macintosh, no dead keys)
- "de+neo", //German (Neo 2)
- "de+neo_qwerty", //German (Neo, QWERTY)
- "de+neo_qwertz", //German (Neo, QWERTZ)
- "de+qwerty", //German (QWERTY)
- "de+sun_type6", //German (Sun Type 6/7)
- "ch", //German (Switzerland)
- "ch+de_mac", //German (Switzerland, Macintosh)
- "ch+sun_type6_de", //German (Switzerland, Sun Type 6/7)
- "ch+legacy", //German (Switzerland, legacy)
- "ch+de_nodeadkeys", //German (Switzerland, no dead keys)
- "de+T3", //German (T3)
- "de+us", //German (US)
- "de+deadacute", //German (dead acute)
- "de+deadgraveacute", //German (dead grave acute)
- "de+deadtilde", //German (dead tilde)
- "de+nodeadkeys", //German (no dead keys)
- "de+hu", //German (with Hungarian letters, no dead keys)
- "us+de_se_fi", //German, Swedish and Finnish (US)
- "gr", //Greek
- "gr+colemak", //Greek (Colemak)
- "gr+sun_type6", //Greek (Sun Type 6/7)
- "gr+extended", //Greek (extended)
- "gr+nodeadkeys", //Greek (no dead keys)
- "gr+polytonic", //Greek (polytonic)
- "gr+simple", //Greek (simple)
- "in+guj", //Gujarati
- "cn+altgr-pinyin", //Hanyu Pinyin (with AltGr dead keys)
- "gh+hausa", //Hausa (Ghana)
- "ng+hausa", //Hausa (Nigeria)
- "us+haw", //Hawaiian
- "il", //Hebrew
- "il+biblicalSIL", //Hebrew (Biblical, SIL phonetic)
- "il+biblical", //Hebrew (Biblical, Tiro)
- "il+lyx", //Hebrew (lyx)
- "il+phonetic", //Hebrew (phonetic)
- "in+bolnagri", //Hindi (Bolnagri)
- "in+hin-kagapa", //Hindi (KaGaPa, phonetic)
- "in+hin-wx", //Hindi (Wx)
- "hu", //Hungarian
- "hu+qwerty", //Hungarian (QWERTY)
- "hu+101_qwerty_comma_dead", //Hungarian (QWERTY, 101-key, comma, dead keys)
- "hu+101_qwerty_comma_nodead", //Hungarian (QWERTY, 101-key, comma, no dead keys)
- "hu+101_qwerty_dot_dead", //Hungarian (QWERTY, 101-key, dot, dead keys)
- "hu+101_qwerty_dot_nodead", //Hungarian (QWERTY, 101-key, dot, no dead keys)
- "hu+102_qwerty_comma_dead", //Hungarian (QWERTY, 102-key, comma, dead keys)
- "hu+102_qwerty_comma_nodead", //Hungarian (QWERTY, 102-key, comma, no dead keys)
- "hu+102_qwerty_dot_dead", //Hungarian (QWERTY, 102-key, dot, dead keys)
- "hu+102_qwerty_dot_nodead", //Hungarian (QWERTY, 102-key, dot, no dead keys)
- "hu+101_qwertz_comma_dead", //Hungarian (QWERTZ, 101-key, comma, dead keys)
- "hu+101_qwertz_comma_nodead", //Hungarian (QWERTZ, 101-key, comma, no dead keys)
- "hu+101_qwertz_dot_dead", //Hungarian (QWERTZ, 101-key, dot, dead keys)
- "hu+101_qwertz_dot_nodead", //Hungarian (QWERTZ, 101-key, dot, no dead keys)
- "hu+102_qwertz_comma_dead", //Hungarian (QWERTZ, 102-key, comma, dead keys)
- "hu+102_qwertz_comma_nodead", //Hungarian (QWERTZ, 102-key, comma, no dead keys)
- "hu+102_qwertz_dot_dead", //Hungarian (QWERTZ, 102-key, dot, dead keys)
- "hu+102_qwertz_dot_nodead", //Hungarian (QWERTZ, 102-key, dot, no dead keys)
- "hu+nodeadkeys", //Hungarian (no dead keys)
- "hu+standard", //Hungarian (standard)
- "is", //Icelandic
- "is+dvorak", //Icelandic (Dvorak)
- "is+mac", //Icelandic (Macintosh)
- "is+mac_legacy", //Icelandic (Macintosh, legacy)
- "ng+igbo", //Igbo
- "in", //Indian
- "in+iipa", //Indic IPA
- "id+phoneticx", //Indonesian (Arab Melayu, extended phonetic)
- "id", //Indonesian (Arab Melayu, phonetic)
- "id+phonetic", //Indonesian (Arab Pegon, phonetic)
- "jv", //Indonesian (Javanese)
- "trans", //International Phonetic Alphabet
- "trans+qwerty", //International Phonetic Alphabet (QWERTY)
- "ca+ike", //Inuktitut
- "iq", //Iraqi
- "ie", //Irish
- "ie+UnicodeExpert", //Irish (UnicodeExpert)
- "it", //Italian
- "it+dvorak", //Italian (Dvorak)
- "it+ibm", //Italian (IBM 142)
- "it+lld", //Italian (Ladin)
- "it+mac", //Italian (Macintosh)
- "it+sun_type6", //Italian (Sun Type 6/7)
- "it+us", //Italian (US)
- "it+winkeys", //Italian (Windows)
- "it+intl", //Italian (intl., with dead keys)
- "it+nodeadkeys", //Italian (no dead keys)
- "jp", //Japanese
- "jp+dvorak", //Japanese (Dvorak)
- "jp+kana86", //Japanese (Kana 86)
- "jp+kana", //Japanese (Kana)
- "jp+mac", //Japanese (Macintosh)
- "jp+OADG109A", //Japanese (OADG 109A)
- "nec_vndr/jp", //Japanese (PC-98)
- "jp+sun_type6", //Japanese (Sun Type 6)
- "jp+sun_type7", //Japanese (Sun Type 7, PC-compatible)
- "jp+sun_type7_suncompat", //Japanese (Sun Type 7, Sun-compatible)
- "dz+azerty-deadkeys", //Kabyle (azerty layout, dead keys)
- "dz+qwerty-gb-deadkeys", //Kabyle (qwerty-gb layout, dead keys)
- "dz+qwerty-us-deadkeys", //Kabyle (qwerty-us layout, dead keys)
- "ru+xal", //Kalmyk
- "in+kan", //Kannada
- "in+kan-kagapa", //Kannada (KaGaPa, phonetic)
- "pl+csb", //Kashubian
- "kz", //Kazakh
- "kz+latin", //Kazakh (Latin)
- "kz+ext", //Kazakh (extended)
- "kz+kazrus", //Kazakh (with Russian)
- "kh", //Khmer (Cambodia)
- "ke+kik", //Kikuyu
- "ru+kom", //Komi
- "kr", //Korean
- "kr+kr104", //Korean (101/104-key compatible)
- "kr+sun_type6", //Korean (Sun Type 6/7)
- "ir+ku_ara", //Kurdish (Iran, Arabic-Latin)
- "ir+ku_f", //Kurdish (Iran, F)
- "ir+ku_alt", //Kurdish (Iran, Latin Alt-Q)
- "ir+ku", //Kurdish (Iran, Latin Q)
- "iq+ku_ara", //Kurdish (Iraq, Arabic-Latin)
- "iq+ku_f", //Kurdish (Iraq, F)
- "iq+ku_alt", //Kurdish (Iraq, Latin Alt-Q)
- "iq+ku", //Kurdish (Iraq, Latin Q)
- "sy+ku_f", //Kurdish (Syria, F)
- "sy+ku_alt", //Kurdish (Syria, Latin Alt-Q)
- "sy+ku", //Kurdish (Syria, Latin Q)
- "tr+ku_f", //Kurdish (Turkey, F)
- "tr+ku_alt", //Kurdish (Turkey, Latin Alt-Q)
- "tr+ku", //Kurdish (Turkey, Latin Q)
- "ca+kut", //Kutenai
- "kg", //Kyrgyz
- "kg+phonetic", //Kyrgyz (phonetic)
- "la", //Lao
- "la+stea", //Lao (STEA)
- "lv", //Latvian
- "lv+colemak", //Latvian (Colemak)
- "lv+apostrophecolemak", //Latvian (Colemak, with apostrophe)
- "lv+dvorak", //Latvian (Dvorak)
- "lv+ykeydvorak", //Latvian (Dvorak, with Y)
- "lv+minuskeydvorak", //Latvian (Dvorak, with minus)
- "lv+fkey", //Latvian (F)
- "lv+sun_type6", //Latvian (Sun Type 6/7)
- "lv+adapted", //Latvian (adapted)
- "lv+apostrophe", //Latvian (apostrophe)
- "lv+ergonomic", //Latvian (ergonomic, ŪGJRMV)
- "lv+modern", //Latvian (modern)
- "lv+dvorakprogr", //Latvian (programmer Dvorak)
- "lv+ykeydvorakprogr", //Latvian (programmer Dvorak, with Y)
- "lv+minuskeydvorakprogr", //Latvian (programmer Dvorak, with minus)
- "lv+tilde", //Latvian (tilde)
- "lv+apostrophe-deadquotes", //Latvian (apostrophe, dead quotes)
- "lt", //Lithuanian
- "lt+us_dvorak", //Lithuanian (Dvorak)
- "lt+ibm", //Lithuanian (IBM LST 1205-92)
- "lt+lekp", //Lithuanian (LEKP)
- "lt+lekpa", //Lithuanian (LEKPa)
- "lt+ratise", //Lithuanian (Ratise)
- "lt+sun_type6", //Lithuanian (Sun Type 6/7)
- "lt+us", //Lithuanian (US)
- "lt+std", //Lithuanian (standard)
- "de+dsb", //Lower Sorbian
- "de+dsb_qwertz", //Lower Sorbian (QWERTZ)
- "mk", //Macedonian
- "mk+nodeadkeys", //Macedonian (no dead keys)
- "my", //Malay (Jawi, Arabic Keyboard)
- "my+phonetic", //Malay (Jawi, phonetic)
- "in+mal", //Malayalam
- "in+mal_lalitha", //Malayalam (Lalitha)
- "in+mal_enhanced", //Malayalam (enhanced Inscript, with rupee)
- "mt", //Maltese
- "mt+alt-gb", //Maltese (UK, with AltGr overrides)
- "mt+alt-us", //Maltese (US layout with AltGr overrides)
- "mt+us", //Maltese (US)
- "in+eeyek", //Manipuri (Eeyek)
- "mao", //Maori
- "in+mar-kagapa", //Marathi (KaGaPa, phonetic)
- "in+marathi", //Marathi (enhanced Inscript)
- "ru+chm", //Mari
- "cm+mmuock", //Mmuock
- "in+modi-kagapa", //Modi (KaGaPa phonetic)
- "md", //Moldavian
- "md+gag", //Moldavian (Gagauz)
- "mn", //Mongolian
- "cn+mon_trad", //Mongolian (Bichig)
- "cn+mon_trad_galik", //Mongolian (Galik)
- "cn+mon_manchu_galik", //Mongolian (Manchu Galik)
- "cn+mon_trad_manchu", //Mongolian (Manchu)
- "cn+mon_todo_galik", //Mongolian (Todo Galik)
- "cn+mon_trad_todo", //Mongolian (Todo)
- "cn+mon_trad_xibe", //Mongolian (Xibe)
- "me", //Montenegrin
- "me+cyrillic", //Montenegrin (Cyrillic)
- "me+cyrillicyz", //Montenegrin (Cyrillic, ZE and ZHE swapped)
- "me+cyrillicalternatequotes", //Montenegrin (Cyrillic, with guillemets)
- "me+latinyz", //Montenegrin (Latin, QWERTY)
- "me+latinunicode", //Montenegrin (Latin, Unicode)
- "me+latinunicodeyz", //Montenegrin (Latin, Unicode, QWERTY)
- "me+latinalternatequotes", //Montenegrin (Latin, with guillemets)
- "ca+sun_type6", //Multilingual (Canada, Sun Type 6/7)
- "gn", //N'Ko (azerty)
- "np", //Nepali
- "fi+smi", //Northern Saami (Finland)
- "no+smi", //Northern Saami (Norway)
- "no+smi_nodeadkeys", //Northern Saami (Norway, no dead keys)
- "se+smi", //Northern Saami (Sweden)
- "no", //Norwegian
- "no+colemak", //Norwegian (Colemak)
- "no+dvorak", //Norwegian (Dvorak)
- "no+mac", //Norwegian (Macintosh)
- "no+mac_nodeadkeys", //Norwegian (Macintosh, no dead keys)
- "no+sun_type6", //Norwegian (Sun Type 6/7)
- "no+winkeys", //Norwegian (Windows)
- "no+nodeadkeys", //Norwegian (no dead keys)
- "fr+oci", //Occitan
- "ie+ogam", //Ogham
- "ie+ogam_is434", //Ogham (IS434)
- "in+olck", //Ol Chiki
- "hu+oldhun", //Old Hungarian
- "hu+oldhunlig", //Old Hungarian (for ligatures)
- "tr+otk", //Old Turkic
- "tr+otkf", //Old Turkic (F)
- "in+ori", //Oriya
- "in+ori-bolnagri", //Oriya (Bolnagri)
- "in+ori-wx", //Oriya (Wx)
- "ge+os", //Ossetian (Georgia)
- "ru+os_winkeys", //Ossetian (Windows)
- "ru+os_legacy", //Ossetian (legacy)
- "rs+rue", //Pannonian Rusyn
- "af+ps", //Pashto
- "af+olpc-ps", //Pashto (Afghanistan, OLPC)
- "af+ps-olpc", //Pashto (Afghanistan, OLPC)
- "ir", //Persian
- "af+fa-olpc", //Persian (Afghanistan, Dari OLPC)
- "ir+pes_keypad", //Persian (with Persian keypad)
- "pl", //Polish
- "gb+pl", //Polish (British keyboard)
- "pl+colemak", //Polish (Colemak)
- "pl+colemak_dh", //Polish (Colemak-DH)
- "pl+dvorak", //Polish (Dvorak)
- "pl+dvorak_altquotes", //Polish (Dvorak, with Polish quotes on key 1)
- "pl+dvorak_quotes", //Polish (Dvorak, with Polish quotes on quotemark key)
- "de+pl", //Polish (Germany, no dead keys)
- "pl+glagolica", //Polish (Glagolica)
- "pl+lefty", //Polish (lefty)
- "pl+qwertz", //Polish (QWERTZ)
- "pl+sun_type6", //Polish (Sun Type 6/7)
- "pl+intl", //Polish (intl., with dead keys)
- "pl+legacy", //Polish (legacy)
- "pl+dvp", //Polish (programmer Dvorak)
- "pt", //Portuguese
- "br", //Portuguese (Brazil)
- "br+dvorak", //Portuguese (Brazil, Dvorak)
- "br+thinkpad", //Portuguese (Brazil, IBM/Lenovo ThinkPad)
- "br+nativo-us", //Portuguese (Brazil, Nativo for US keyboards)
- "br+nativo", //Portuguese (Brazil, Nativo)
- "br+sun_type6", //Portuguese (Brazil, Sun Type 6/7)
- "br+nodeadkeys", //Portuguese (Brazil, no dead keys)
- "pt+colemak", //Portuguese (Colemak)
- "pt+mac", //Portuguese (Macintosh)
- "pt+mac_nodeadkeys", //Portuguese (Macintosh, no dead keys)
- "pt+nativo-us", //Portuguese (Nativo for US keyboards)
- "pt+nativo", //Portuguese (Nativo)
- "pt+sun_type6", //Portuguese (Sun Type 6/7)
- "pt+nodeadkeys", //Portuguese (no dead keys)
- "in+jhelum", //Punjabi (Gurmukhi Jhelum)
- "in+guru", //Punjabi (Gurmukhi)
- "ro", //Romanian
- "de+ro", //Romanian (Germany)
- "de+ro_nodeadkeys", //Romanian (Germany, no dead keys)
- "ro+sun_type6", //Romanian (Sun Type 6/7)
- "ro+winkeys", //Romanian (Windows)
- "ro+ergonomic", //Romanian (ergonomic Touchtype)
- "ro+std", //Romanian (standard)
- "ru", //Russian
- "by+ru", //Russian (Belarus)
- "cz+rus", //Russian (Czech, phonetic)
- "ru+dos", //Russian (DOS)
- "ge+ru", //Russian (Georgia)
- "de+ru", //Russian (Germany, phonetic)
- "de+ru-recom", //Russian (Germany, recommended)
- "de+ru-translit", //Russian (Germany, transliteration)
- "kz+ruskaz", //Russian (Kazakhstan, with Kazakh)
- "ru+mac", //Russian (Macintosh)
- "pl+ru_phonetic_dvorak", //Russian (Poland, phonetic Dvorak)
- "ru+prxn", //Russian (Polyglot and Reactionary)
- "ru+rulemak", //Russian (Rulemak, phonetic Colemak)
- "ru+sun_type6", //Russian (Sun Type 6/7)
- "se+rus", //Russian (Sweden, phonetic)
- "se+rus_nodeadkeys", //Russian (Sweden, phonetic, no dead keys)
- "us+rus", //Russian (US, phonetic)
- "ua+rstu_ru", //Russian (Ukraine, standard RSTU)
- "ru+legacy", //Russian (legacy)
- "ru+phonetic_mac", //Russian (phonetic Macintosh)
- "ru+phonetic", //Russian (phonetic)
- "ru+phonetic_azerty", //Russian (phonetic, AZERTY)
- "ru+phonetic_dvorak", //Russian (phonetic, Dvorak)
- "ru+phonetic_fr", //Russian (phonetic, French)
- "ru+phonetic_winkeys", //Russian (phonetic, Windows)
- "ru+phonetic_YAZHERTY", //Russian (phonetic, YAZHERTY)
- "ru+typewriter", //Russian (typewriter)
- "ru+typewriter-legacy", //Russian (typewriter, legacy)
- "ru+unipunct", //Russian (with US punctuation)
- "ru+gost-6431-75-48", //Russian (GOST 6431-75)
- "ru+gost-14289-88", //Russian (GOST 14289-88)
- "ru+ruu", //Russian (with Ukrainian-Belorussian layout)
- "tw+saisiyat", //Saisiyat (Taiwan)
- "lt+sgs", //Samogitian
- "in+san-kagapa", //Sanskrit (KaGaPa, phonetic)
- "in+san-misc", //Sanskrit symbols
- "ca+shs", //Secwepemctsin
- "rs", //Serbian
- "rs+yz", //Serbian (Cyrillic, ZE and ZHE swapped)
- "rs+alternatequotes", //Serbian (Cyrillic, with guillemets)
- "rs+latin", //Serbian (Latin)
- "rs+latinyz", //Serbian (Latin, QWERTY)
- "rs+latinunicode", //Serbian (Latin, Unicode)
- "rs+latinunicodeyz", //Serbian (Latin, Unicode, QWERTY)
- "rs+latinalternatequotes", //Serbian (Latin, with guillemets)
- "ru+srp", //Serbian (Russia)
- "rs+combiningkeys", //Serbian (combining accents instead of dead keys)
- "us+hbs", //Serbo-Croatian (US)
- "it+scn", //Sicilian
- "us+scn", //Sicilian (US keyboard)
- "us+altgr-weur", //English (Western European AltGr dead keys)
- "pl+szl", //Silesian
- "pk+snd", //Sindhi
- "lk+us", //Sinhala (US)
- "lk", //Sinhala (phonetic)
- "sk", //Slovak
- "sk+acc", //Slovak (ACC layout, only accented letters)
- "sk+qwerty", //Slovak (QWERTY)
- "sk+qwerty_bksl", //Slovak (QWERTY, extended backslash)
- "sk+sun_type6", //Slovak (Sun Type 6/7)
- "sk+bksl", //Slovak (extended backslash)
- "si", //Slovenian
- "si+us", //Slovenian (US)
- "si+alternatequotes", //Slovenian (with guillemets)
- "es", //Spanish
- "es+dvorak", //Spanish (Dvorak)
- "latam", //Spanish (Latin American)
- "latam+colemak-gaming", //Spanish (Latin American, Colemak for gaming)
- "latam+colemak", //Spanish (Latin American, Colemak)
- "latam+dvorak", //Spanish (Latin American, Dvorak)
- "latam+deadtilde", //Spanish (Latin American, dead tilde)
- "latam+nodeadkeys", //Spanish (Latin American, no dead keys)
- "es+mac", //Spanish (Macintosh)
- "es+sun_type6", //Spanish (Sun Type 6/7)
- "es+winkeys", //Spanish (Windows)
- "es+deadtilde", //Spanish (dead tilde)
- "es+nodeadkeys", //Spanish (no dead keys)
- "ke", //Swahili (Kenya)
- "tz", //Swahili (Tanzania)
- "se", //Swedish
- "se+dvorak_a5", //Swedish (Dvorak A5)
- "se+dvorak", //Swedish (Dvorak)
- "se+us_dvorak", //Swedish (Dvorak, intl.)
- "se+mac", //Swedish (Macintosh)
- "se+sun_type6", //Swedish (Sun Type 6/7)
- "se+svdvorak", //Swedish (Svdvorak)
- "se+us", //Swedish (US)
- "se+nodeadkeys", //Swedish (no dead keys)
- "se+swl", //Swedish Sign Language
- "sy+syc", //Syriac
- "sy+syc_phonetic", //Syriac (phonetic)
- "tw", //Taiwanese
- "tw+indigenous", //Taiwanese (indigenous)
- "tj", //Tajik
- "tj+legacy", //Tajik (legacy)
- "in+tam", //Tamil (Inscript)
- "lk+tam_unicode", //Tamil (Sri Lanka, TamilNet '99)
- "lk+tam_TAB", //Tamil (Sri Lanka, TamilNet '99, TAB encoding)
- "in+tam_tamilnet_with_tam_nums", //Tamil (TamilNet '99 with Tamil numerals)
- "in+tam_tamilnet", //Tamil (TamilNet '99)
- "in+tam_tamilnet_TAB", //Tamil (TamilNet '99, TAB encoding)
- "in+tam_tamilnet_TSCII", //Tamil (TamilNet '99, TSCII encoding)
- "ru+tt", //Tatar
- "in+tel", //Telugu
- "in+tel-kagapa", //Telugu (KaGaPa, phonetic)
- "in+tel-sarala", //Telugu (Sarala)
- "th", //Thai
- "th+pat", //Thai (Pattachote)
- "th+tis", //Thai (TIS-820.2538)
- "cn+tib", //Tibetan
- "cn+tib_asciinum", //Tibetan (with ASCII numerals)
- "bw", //Tswana
- "tr", //Turkish
- "tr+alt", //Turkish (Alt-Q)
- "tr+f", //Turkish (F)
- "de+tr", //Turkish (Germany)
- "tr+sun_type6", //Turkish (Sun Type 6/7)
- "tr+intl", //Turkish (intl., with dead keys)
- "tr+us", //Turkish (Turkey, Latin Q, Swap i and ı)
- "tr+ot", //Ottoman
- "tr+otf", //Ottoman (F)
- "tm", //Turkmen
- "tm+alt", //Turkmen (Alt-Q)
- "ru+udm", //Udmurt
- "ara+uga", //Ugaritic instead of Arabic
- "ua", //Ukrainian
- "ua+sun_type6", //Ukrainian (Sun Type 6/7)
- "ua+winkeys", //Ukrainian (Windows)
- "ua+macOS", //Ukrainian (macOS)
- "ua+homophonic", //Ukrainian (homophonic)
- "ua+legacy", //Ukrainian (legacy)
- "ua+phonetic", //Ukrainian (phonetic)
- "ua+rstu", //Ukrainian (standard RSTU)
- "ua+typewriter", //Ukrainian (typewriter)
- "pk", //Urdu (Pakistan)
- "pk+urd-crulp", //Urdu (Pakistan, CRULP)
- "pk+urd-nla", //Urdu (Pakistan, NLA)
- "pk+urd-navees", //Urdu (Navees, Pakistan)
- "in+urd-winkeys", //Urdu (Windows)
- "in+urd-phonetic3", //Urdu (alt. phonetic)
- "in+urd-phonetic", //Urdu (phonetic)
- "in+urd-navees", //Urdu (Navees)
- "cn+ug", //Uyghur
- "uz", //Uzbek
- "af+uz", //Uzbek (Afghanistan)
- "af+uz-olpc", //Uzbek (Afghanistan, OLPC)
- "uz+latin", //Uzbek (Latin)
- "vn", //Vietnamese
- "vn+aderty", //Vietnamese (AÐERTY)
- "vn+fr", //Vietnamese (French)
- "vn+qderty", //Vietnamese (QĐERTY)
- "vn+us", //Vietnamese (US)
- "sn", //Wolof
- "ru+sah", //Yakut
- "ng+yoruba", //Yorubaz
- "gb+gla", //Scottish Gaelic
- "emoji", //Emoji
- "custom", //Custom
- NULL
+ {"En", "us"}, //English (US)
+ {"Ck", "us+chr"}, //Cherokee
+ {"Hw", "us+haw"}, //Hawaiian
+ {"En", "us+euro"}, //English (US, euro on 5)
+ {"En", "us+intl"}, //English (US, intl., with dead keys)
+ {"En", "us+alt-intl"}, //English (US, alt. intl.)
+ {"En", "us+colemak"}, //English (Colemak)
+ {"En", "us+colemak_dh"}, //English (Colemak-DH)
+ {"En", "us+colemak_dh_iso"}, //English (Colemak-DH ISO)
+ {"En", "us+dvorak"}, //English (Dvorak)
+ {"En", "us+dvorak-intl"}, //English (Dvorak, intl., with dead keys)
+ {"En", "us+dvorak-alt-intl"}, //English (Dvorak, alt. intl.)
+ {"En", "us+dvorak-l"}, //English (Dvorak, left-handed)
+ {"En", "us+dvorak-r"}, //English (Dvorak, right-handed)
+ {"En", "us+dvorak-classic"}, //English (classic Dvorak)
+ {"En", "us+dvp"}, //English (programmer Dvorak)
+ {"En", "us+dvorak-mac"}, //English (Dvorak, Macintosh)
+ {"En", "us+symbolic"}, //English (US, Symbolic)
+ {"Ru", "us+rus"}, //Russian (US, phonetic)
+ {"En", "us+mac"}, //English (Macintosh)
+ {"En", "us+altgr-intl"}, //English (intl., with AltGr dead keys)
+ {"En", "us+olpc2"}, //English (the divide/multiply toggle the layout)
+ {"Hs", "us+hbs"}, //Serbo-Croatian (US)
+ {"En", "us+norman"}, //English (Norman)
+ {"En", "us+workman"}, //English (Workman)
+ {"En", "us+workman-intl"}, //English (Workman, intl., with dead keys)
+ {"Fa", "af"}, //Dari
+ {"Ps", "af+ps"}, //Pashto
+ {"Uz", "af+uz"}, //Uzbek (Afghanistan)
+ {"Ps", "af+ps-olpc"}, //Pashto (Afghanistan, OLPC)
+ {"Fa", "af+fa-olpc"}, //Dari (Afghanistan, OLPC)
+ {"Uz", "af+uz-olpc"}, //Uzbek (Afghanistan, OLPC)
+ {"Ar", "ara"}, //Arabic
+ {"Ar", "ara+azerty"}, //Arabic (AZERTY)
+ {"Ar", "ara+azerty_digits"}, //Arabic (AZERTY, Eastern Arabic numerals)
+ {"Ar", "ara+digits"}, //Arabic (Eastern Arabic numerals)
+ {"Ar", "ara+qwerty"}, //Arabic (QWERTY)
+ {"Ar", "ara+qwerty_digits"}, //Arabic (QWERTY, Eastern Arabic numerals)
+ {"Ar", "ara+buckwalter"}, //Arabic (Buckwalter)
+ {"Ar", "ara+olpc"}, //Arabic (OLPC)
+ {"Ar", "ara+mac"}, //Arabic (Macintosh)
+ {"Sq", "al"}, //Albanian
+ {"Sq", "al+plisi"}, //Albanian (Plisi)
+ {"Sq", "al+veqilharxhi"}, //Albanian (Veqilharxhi)
+ {"Hy", "am"}, //Armenian
+ {"Hy", "am+phonetic"}, //Armenian (phonetic)
+ {"Hy", "am+phonetic-alt"}, //Armenian (alt. phonetic)
+ {"Hy", "am+eastern"}, //Armenian (eastern)
+ {"Hy", "am+western"}, //Armenian (western)
+ {"Hy", "am+eastern-alt"}, //Armenian (alt. eastern)
+ {"De", "at"}, //German (Austria)
+ {"De", "at+nodeadkeys"}, //German (Austria, no dead keys)
+ {"De", "at+mac"}, //German (Austria, Macintosh)
+ {"En", "au"}, //English (Australian)
+ {"Az", "az"}, //Azerbaijani
+ {"Az", "az+cyrillic"}, //Azerbaijani (Cyrillic)
+ {"Be", "by"}, //Belarusian
+ {"Be", "by+legacy"}, //Belarusian (legacy)
+ {"Be", "by+latin"}, //Belarusian (Latin)
+ {"Ru", "by+ru"}, //Russian (Belarus)
+ {"Be", "by+intl"}, //Belarusian (intl.)
+ {"Be", "by+phonetic"}, //Belarusian (phonetic)
+ {"Bl", "be"}, //Belgian
+ {"Bl", "be+oss"}, //Belgian (alt.)
+ {"Bl", "be+oss_latin9"}, //Belgian (Latin-9 only, alt.)
+ {"Bl", "be+iso-alternate"}, //Belgian (ISO, alt.)
+ {"Bl", "be+nodeadkeys"}, //Belgian (no dead keys)
+ {"Bl", "be+wang"}, //Belgian (Wang 724 AZERTY)
+ {"Bn", "bd"}, //Bangla
+ {"Bn", "bd+probhat"}, //Bangla (Probhat)
+ {"Il", "in"}, //Indian
+ {"Bn", "in+ben"}, //Bangla (India)
+ {"Bn", "in+ben_probhat"}, //Bangla (India, Probhat)
+ {"Bn", "in+ben_baishakhi"}, //Bangla (India, Baishakhi)
+ {"Bn", "in+ben_bornona"}, //Bangla (India, Bornona)
+ {"Bn", "in+ben_gitanjali"}, //Bangla (India, Gitanjali)
+ {"Bn", "in+ben_inscript"}, //Bangla (India, Baishakhi InScript)
+ {"Ma", "in+eeyek"}, //Manipuri (Eeyek)
+ {"Gu", "in+guj"}, //Gujarati
+ {"Pa", "in+guru"}, //Punjabi (Gurmukhi)
+ {"Pa", "in+jhelum"}, //Punjabi (Gurmukhi Jhelum)
+ {"Kn", "in+kan"}, //Kannada
+ {"Kn", "in+kan-kagapa"}, //Kannada (KaGaPa, phonetic)
+ {"Ml", "in+mal"}, //Malayalam
+ {"Ml", "in+mal_lalitha"}, //Malayalam (Lalitha)
+ {"Ml", "in+mal_enhanced"}, //Malayalam (enhanced InScript, with rupee)
+ {"Or", "in+ori"}, //Oriya
+ {"Or", "in+ori-bolnagri"}, //Oriya (Bolnagri)
+ {"Or", "in+ori-wx"}, //Oriya (Wx)
+ {"Ol", "in+olck"}, //Ol Chiki
+ {"Ta", "in+tamilnet"}, //Tamil (TamilNet '99)
+ {"Ta", "in+tamilnet_tamilnumbers"}, //Tamil (TamilNet '99 with Tamil numerals)
+ {"Ta", "in+tamilnet_TAB"}, //Tamil (TamilNet '99, TAB encoding)
+ {"Ta", "in+tamilnet_TSCII"}, //Tamil (TamilNet '99, TSCII encoding)
+ {"Ta", "in+tam"}, //Tamil (InScript, with Arabic numerals)
+ {"Ta", "in+tam_tamilnumbers"}, //Tamil (InScript, with Tamil numerals)
+ {"Te", "in+tel"}, //Telugu
+ {"Te", "in+tel-kagapa"}, //Telugu (KaGaPa, phonetic)
+ {"Te", "in+tel-sarala"}, //Telugu (Sarala)
+ {"Ur", "in+urd-phonetic"}, //Urdu (phonetic)
+ {"Ur", "in+urd-phonetic3"}, //Urdu (alt. phonetic)
+ {"Ur", "in+urd-winkeys"}, //Urdu (Windows)
+ {"Hi", "in+bolnagri"}, //Hindi (Bolnagri)
+ {"Hi", "in+hin-wx"}, //Hindi (Wx)
+ {"Hi", "in+hin-kagapa"}, //Hindi (KaGaPa, phonetic)
+ {"Sa", "in+san-kagapa"}, //Sanskrit (KaGaPa, phonetic)
+ {"Mr", "in+mar-kagapa"}, //Marathi (KaGaPa, phonetic)
+ {"En", "in+eng"}, //English (India, with rupee)
+ {"Ip", "in+iipa"}, //Indic IPA
+ {"Mr", "in+marathi"}, //Marathi (enhanced InScript)
+ {"Bs", "ba"}, //Bosnian
+ {"Bs", "ba+alternatequotes"}, //Bosnian (with guillemets)
+ {"Bs", "ba+unicode"}, //Bosnian (with Bosnian digraphs)
+ {"Bs", "ba+unicodeus"}, //Bosnian (US, with Bosnian digraphs)
+ {"Bs", "ba+us"}, //Bosnian (US)
+ {"Pt", "br"}, //Portuguese (Brazil)
+ {"Pt", "br+nodeadkeys"}, //Portuguese (Brazil, no dead keys)
+ {"Pt", "br+dvorak"}, //Portuguese (Brazil, Dvorak)
+ {"Pt", "br+nativo"}, //Portuguese (Brazil, Nativo)
+ {"Pt", "br+nativo-us"}, //Portuguese (Brazil, Nativo for US keyboards)
+ {"Eo", "br+nativo-epo"}, //Esperanto (Brazil, Nativo)
+ {"Pt", "br+thinkpad"}, //Portuguese (Brazil, IBM/Lenovo ThinkPad)
+ {"Bg", "bg"}, //Bulgarian
+ {"Bg", "bg+phonetic"}, //Bulgarian (traditional phonetic)
+ {"Bg", "bg+bas_phonetic"}, //Bulgarian (new phonetic)
+ {"Bg", "bg+bekl"}, //Bulgarian (enhanced)
+ {"Bb", "dz"}, //Berber (Algeria, Latin)
+ {"Kb", "dz+azerty-deadkeys"}, //Kabyle (AZERTY, with dead keys)
+ {"Kb", "dz+qwerty-gb-deadkeys"}, //Kabyle (QWERTY, UK, with dead keys)
+ {"Kb", "dz+qwerty-us-deadkeys"}, //Kabyle (QWERTY, US, with dead keys)
+ {"Bb", "dz+ber"}, //Berber (Algeria, Tifinagh)
+ {"Ar", "dz+ar"}, //Arabic (Algeria)
+ {"Ar", "ma"}, //Arabic (Morocco)
+ {"Fr", "ma+french"}, //French (Morocco)
+ {"Bb", "ma+tifinagh"}, //Berber (Morocco, Tifinagh)
+ {"Bb", "ma+tifinagh-alt"}, //Berber (Morocco, Tifinagh alt.)
+ {"Bb", "ma+tifinagh-alt-phonetic"}, //Berber (Morocco, Tifinagh phonetic, alt.)
+ {"Bb", "ma+tifinagh-extended"}, //Berber (Morocco, Tifinagh extended)
+ {"Bb", "ma+tifinagh-phonetic"}, //Berber (Morocco, Tifinagh phonetic)
+ {"Bb", "ma+tifinagh-extended-phonetic"}, //Berber (Morocco, Tifinagh extended phonetic)
+ {"Bb", "ma+rif"}, //Tarifit
+ {"En", "cm"}, //English (Cameroon)
+ {"Fr", "cm+french"}, //French (Cameroon)
+ {"Cm", "cm+qwerty"}, //Cameroon Multilingual (QWERTY, intl.)
+ {"Cm", "cm+azerty"}, //Cameroon (AZERTY, intl.)
+ {"Cm", "cm+dvorak"}, //Cameroon (Dvorak, intl.)
+ {"Mu", "cm+mmuock"}, //Mmuock
+ {"My", "mm"}, //Burmese
+ {"Zg", "mm+zawgyi"}, //Burmese Zawgyi
+ {"My", "mm+shn"}, //Shan
+ {"My", "mm+zgt"}, //Shan (Zawgyi Tai)
+ {"My", "mm+mnw"}, //Mon
+ {"My", "mm+mnw-a1"}, //Mon (A1)
+ {"Fr", "ca"}, //French (Canada)
+ {"Fr", "ca+fr-dvorak"}, //French (Canada, Dvorak)
+ {"Fr", "ca+fr-legacy"}, //French (Canada, legacy)
+ {"Cn", "ca+multix"}, //Canadian (CSA)
+ {"Iu", "ca+ike"}, //Inuktitut
+ {"En", "ca+eng"}, //English (Canada)
+ {"Fr", "cd"}, //French (Democratic Republic of the Congo)
+ {"Zh", "cn"}, //Chinese
+ {"Mn", "cn+mon_trad"}, //Mongolian (Bichig)
+ {"Mn", "cn+mon_trad_todo"}, //Mongolian (Todo)
+ {"Mn", "cn+mon_trad_xibe"}, //Mongolian (Xibe)
+ {"Mn", "cn+mon_trad_manchu"}, //Mongolian (Manchu)
+ {"Mn", "cn+mon_trad_galik"}, //Mongolian (Galik)
+ {"Mn", "cn+mon_todo_galik"}, //Mongolian (Todo Galik)
+ {"Mn", "cn+mon_manchu_galik"}, //Mongolian (Manchu Galik)
+ {"Bo", "cn+tib"}, //Tibetan
+ {"Bo", "cn+tib_asciinum"}, //Tibetan (with ASCII numerals)
+ {"Ug", "cn+ug"}, //Uyghur
+ {"Hp", "cn+altgr-pinyin"}, //Hanyu Pinyin Letters (with AltGr dead keys)
+ {"Hr", "hr"}, //Croatian
+ {"Hr", "hr+alternatequotes"}, //Croatian (with guillemets)
+ {"Hr", "hr+unicode"}, //Croatian (with Croatian digraphs)
+ {"Hr", "hr+unicodeus"}, //Croatian (US, with Croatian digraphs)
+ {"Hr", "hr+us"}, //Croatian (US)
+ {"Cs", "cz"}, //Czech
+ {"Cs", "cz+bksl"}, //Czech (with <\|> key)
+ {"Cs", "cz+qwerty"}, //Czech (QWERTY)
+ {"Cs", "cz+qwerty_bksl"}, //Czech (QWERTY, extended backslash)
+ {"Cs", "cz+qwerty-mac"}, //Czech (QWERTY, Macintosh)
+ {"Cs", "cz+ucw"}, //Czech (UCW, only accented letters)
+ {"Cs", "cz+dvorak-ucw"}, //Czech (US, Dvorak, UCW support)
+ {"Ru", "cz+rus"}, //Russian (Czech, phonetic)
+ {"Da", "dk"}, //Danish
+ {"Da", "dk+nodeadkeys"}, //Danish (no dead keys)
+ {"Da", "dk+winkeys"}, //Danish (Windows)
+ {"Da", "dk+mac"}, //Danish (Macintosh)
+ {"Da", "dk+mac_nodeadkeys"}, //Danish (Macintosh, no dead keys)
+ {"Da", "dk+dvorak"}, //Danish (Dvorak)
+ {"Nl", "nl"}, //Dutch
+ {"Nl", "nl+us"}, //Dutch (US)
+ {"Nl", "nl+mac"}, //Dutch (Macintosh)
+ {"Nl", "nl+std"}, //Dutch (standard)
+ {"Dz", "bt"}, //Dzongkha
+ {"Et", "ee"}, //Estonian
+ {"Et", "ee+nodeadkeys"}, //Estonian (no dead keys)
+ {"Et", "ee+dvorak"}, //Estonian (Dvorak)
+ {"Et", "ee+us"}, //Estonian (US)
+ {"Fa", "ir"}, //Persian
+ {"Fa", "ir+pes_keypad"}, //Persian (with Persian keypad)
+ {"Az", "ir+azb"}, //Azerbaijani (Iran)
+ {"Ku", "ir+ku"}, //Kurdish (Iran, Latin Q)
+ {"Ku", "ir+ku_f"}, //Kurdish (Iran, F)
+ {"Ku", "ir+ku_alt"}, //Kurdish (Iran, Latin Alt-Q)
+ {"Ku", "ir+ku_ara"}, //Kurdish (Iran, Arabic-Latin)
+ {"Iq", "iq"}, //Iraqi
+ {"Ku", "iq+ku"}, //Kurdish (Iraq, Latin Q)
+ {"Ku", "iq+ku_f"}, //Kurdish (Iraq, F)
+ {"Ku", "iq+ku_alt"}, //Kurdish (Iraq, Latin Alt-Q)
+ {"Ku", "iq+ku_ara"}, //Kurdish (Iraq, Arabic-Latin)
+ {"Fo", "fo"}, //Faroese
+ {"Fo", "fo+nodeadkeys"}, //Faroese (no dead keys)
+ {"Fi", "fi"}, //Finnish
+ {"Fi", "fi+winkeys"}, //Finnish (Windows)
+ {"Fi", "fi+classic"}, //Finnish (classic)
+ {"Fi", "fi+nodeadkeys"}, //Finnish (classic, no dead keys)
+ {"Ns", "fi+smi"}, //Northern Saami (Finland)
+ {"Fi", "fi+mac"}, //Finnish (Macintosh)
+ {"Fr", "fr"}, //French
+ {"Fr", "fr+nodeadkeys"}, //French (no dead keys)
+ {"Fr", "fr+oss"}, //French (alt.)
+ {"Fr", "fr+oss_latin9"}, //French (alt., Latin-9 only)
+ {"Fr", "fr+oss_nodeadkeys"}, //French (alt., no dead keys)
+ {"Fr", "fr+latin9"}, //French (legacy, alt.)
+ {"Fr", "fr+latin9_nodeadkeys"}, //French (legacy, alt., no dead keys)
+ {"Fr", "fr+bepo"}, //French (BEPO)
+ {"Fr", "fr+bepo_latin9"}, //French (BEPO, Latin-9 only)
+ {"Fr", "fr+bepo_afnor"}, //French (BEPO, AFNOR)
+ {"Fr", "fr+dvorak"}, //French (Dvorak)
+ {"Fr", "fr+mac"}, //French (Macintosh)
+ {"Fr", "fr+azerty"}, //French (AZERTY)
+ {"Fr", "fr+afnor"}, //French (AZERTY, AFNOR)
+ {"Fr", "fr+bre"}, //Breton (France)
+ {"Oc", "fr+oci"}, //Occitan
+ {"Ka", "fr+geo"}, //Georgian (France, AZERTY Tskapo)
+ {"Fr", "fr+us"}, //French (US)
+ {"En", "gh"}, //English (Ghana)
+ {"En", "gh+generic"}, //English (Ghana, multilingual)
+ {"Ak", "gh+akan"}, //Akan
+ {"Ee", "gh+ewe"}, //Ewe
+ {"Ff", "gh+fula"}, //Fula
+ {"Gh", "gh+ga"}, //Ga
+ {"Ha", "gh+hausa"}, //Hausa (Ghana)
+ {"Av", "gh+avn"}, //Avatime
+ {"En", "gh+gillbt"}, //English (Ghana, GILLBT)
+ {"Nk", "gn"}, //N'Ko (AZERTY)
+ {"Ka", "ge"}, //Georgian
+ {"Ka", "ge+ergonomic"}, //Georgian (ergonomic)
+ {"Ka", "ge+mess"}, //Georgian (MESS)
+ {"Ru", "ge+ru"}, //Russian (Georgia)
+ {"Os", "ge+os"}, //Ossetian (Georgia)
+ {"De", "de"}, //German
+ {"De", "de+deadacute"}, //German (dead acute)
+ {"De", "de+deadgraveacute"}, //German (dead grave acute)
+ {"De", "de+nodeadkeys"}, //German (no dead keys)
+ {"De", "de+e1"}, //German (E1)
+ {"De", "de+e2"}, //German (E2)
+ {"De", "de+T3"}, //German (T3)
+ {"De", "de+us"}, //German (US)
+ {"Ro", "de+ro"}, //Romanian (Germany)
+ {"Ro", "de+ro_nodeadkeys"}, //Romanian (Germany, no dead keys)
+ {"De", "de+dvorak"}, //German (Dvorak)
+ {"De", "de+neo"}, //German (Neo 2)
+ {"De", "de+mac"}, //German (Macintosh)
+ {"De", "de+mac_nodeadkeys"}, //German (Macintosh, no dead keys)
+ {"Sb", "de+dsb"}, //Lower Sorbian
+ {"Sb", "de+dsb_qwertz"}, //Lower Sorbian (QWERTZ)
+ {"De", "de+qwerty"}, //German (QWERTY)
+ {"Tr", "de+tr"}, //Turkish (Germany)
+ {"Ru", "de+ru"}, //Russian (Germany, phonetic)
+ {"De", "de+deadtilde"}, //German (dead tilde)
+ {"Gr", "gr"}, //Greek
+ {"Gr", "gr+simple"}, //Greek (simple)
+ {"Gr", "gr+extended"}, //Greek (extended)
+ {"Gr", "gr+nodeadkeys"}, //Greek (no dead keys)
+ {"Gr", "gr+polytonic"}, //Greek (polytonic)
+ {"Hu", "hu"}, //Hungarian
+ {"Hu", "hu+standard"}, //Hungarian (standard)
+ {"Hu", "hu+nodeadkeys"}, //Hungarian (no dead keys)
+ {"Hu", "hu+qwerty"}, //Hungarian (QWERTY)
+ {"Hu", "hu+101_qwertz_comma_dead"}, //Hungarian (QWERTZ, 101-key, comma, dead keys)
+ {"Hu", "hu+101_qwertz_comma_nodead"}, //Hungarian (QWERTZ, 101-key, comma, no dead keys)
+ {"Hu", "hu+101_qwertz_dot_dead"}, //Hungarian (QWERTZ, 101-key, dot, dead keys)
+ {"Hu", "hu+101_qwertz_dot_nodead"}, //Hungarian (QWERTZ, 101-key, dot, no dead keys)
+ {"Hu", "hu+101_qwerty_comma_dead"}, //Hungarian (QWERTY, 101-key, comma, dead keys)
+ {"Hu", "hu+101_qwerty_comma_nodead"}, //Hungarian (QWERTY, 101-key, comma, no dead keys)
+ {"Hu", "hu+101_qwerty_dot_dead"}, //Hungarian (QWERTY, 101-key, dot, dead keys)
+ {"Hu", "hu+101_qwerty_dot_nodead"}, //Hungarian (QWERTY, 101-key, dot, no dead keys)
+ {"Hu", "hu+102_qwertz_comma_dead"}, //Hungarian (QWERTZ, 102-key, comma, dead keys)
+ {"Hu", "hu+102_qwertz_comma_nodead"}, //Hungarian (QWERTZ, 102-key, comma, no dead keys)
+ {"Hu", "hu+102_qwertz_dot_dead"}, //Hungarian (QWERTZ, 102-key, dot, dead keys)
+ {"Hu", "hu+102_qwertz_dot_nodead"}, //Hungarian (QWERTZ, 102-key, dot, no dead keys)
+ {"Hu", "hu+102_qwerty_comma_dead"}, //Hungarian (QWERTY, 102-key, comma, dead keys)
+ {"Hu", "hu+102_qwerty_comma_nodead"}, //Hungarian (QWERTY, 102-key, comma, no dead keys)
+ {"Hu", "hu+102_qwerty_dot_dead"}, //Hungarian (QWERTY, 102-key, dot, dead keys)
+ {"Hu", "hu+102_qwerty_dot_nodead"}, //Hungarian (QWERTY, 102-key, dot, no dead keys)
+ {"Is", "is"}, //Icelandic
+ {"Is", "is+mac_legacy"}, //Icelandic (Macintosh, legacy)
+ {"Is", "is+mac"}, //Icelandic (Macintosh)
+ {"Is", "is+dvorak"}, //Icelandic (Dvorak)
+ {"He", "il"}, //Hebrew
+ {"He", "il+lyx"}, //Hebrew (lyx)
+ {"He", "il+phonetic"}, //Hebrew (phonetic)
+ {"He", "il+biblical"}, //Hebrew (Biblical, Tiro)
+ {"It", "it"}, //Italian
+ {"It", "it+nodeadkeys"}, //Italian (no dead keys)
+ {"It", "it+winkeys"}, //Italian (Windows)
+ {"It", "it+mac"}, //Italian (Macintosh)
+ {"It", "it+us"}, //Italian (US)
+ {"Ka", "it+geo"}, //Georgian (Italy)
+ {"It", "it+ibm"}, //Italian (IBM 142)
+ {"It", "it+intl"}, //Italian (intl., with dead keys)
+ {"Sj", "it+scn"}, //Sicilian
+ {"Fu", "it+fur"}, //Friulian (Italy)
+ {"Ja", "jp"}, //Japanese
+ {"Ja", "jp+kana"}, //Japanese (Kana)
+ {"Ja", "jp+kana86"}, //Japanese (Kana 86)
+ {"Ja", "jp+OADG109A"}, //Japanese (OADG 109A)
+ {"Ja", "jp+mac"}, //Japanese (Macintosh)
+ {"Ja", "jp+dvorak"}, //Japanese (Dvorak)
+ {"Ky", "kg"}, //Kyrgyz
+ {"Ky", "kg+phonetic"}, //Kyrgyz (phonetic)
+ {"Km", "kh"}, //Khmer (Cambodia)
+ {"Kk", "kz"}, //Kazakh
+ {"Ru", "kz+ruskaz"}, //Russian (Kazakhstan, with Kazakh)
+ {"Kk", "kz+kazrus"}, //Kazakh (with Russian)
+ {"Kk", "kz+ext"}, //Kazakh (extended)
+ {"Kk", "kz+latin"}, //Kazakh (Latin)
+ {"Lo", "la"}, //Lao
+ {"Lo", "la+stea"}, //Lao (STEA)
+ {"Es", "latam"}, //Spanish (Latin American)
+ {"Es", "latam+nodeadkeys"}, //Spanish (Latin American, no dead keys)
+ {"Es", "latam+deadtilde"}, //Spanish (Latin American, dead tilde)
+ {"Es", "latam+dvorak"}, //Spanish (Latin American, Dvorak)
+ {"Es", "latam+colemak"}, //Spanish (Latin American, Colemak)
+ {"Lt", "lt"}, //Lithuanian
+ {"Lt", "lt+std"}, //Lithuanian (standard)
+ {"Lt", "lt+us"}, //Lithuanian (US)
+ {"Lt", "lt+ibm"}, //Lithuanian (IBM LST 1205-92)
+ {"Lt", "lt+lekp"}, //Lithuanian (LEKP)
+ {"Lt", "lt+lekpa"}, //Lithuanian (LEKPa)
+ {"Sf", "lt+sgs"}, //Samogitian
+ {"Lt", "lt+ratise"}, //Lithuanian (Ratise)
+ {"Lv", "lv"}, //Latvian
+ {"Lv", "lv+apostrophe"}, //Latvian (apostrophe)
+ {"Lv", "lv+tilde"}, //Latvian (tilde)
+ {"Lv", "lv+fkey"}, //Latvian (F)
+ {"Lv", "lv+modern"}, //Latvian (modern)
+ {"Lv", "lv+ergonomic"}, //Latvian (ergonomic, ŪGJRMV)
+ {"Lv", "lv+adapted"}, //Latvian (adapted)
+ {"Mi", "mao"}, //Maori
+ {"Me", "me"}, //Montenegrin
+ {"Me", "me+cyrillic"}, //Montenegrin (Cyrillic)
+ {"Me", "me+cyrillicyz"}, //Montenegrin (Cyrillic, ZE and ZHE swapped)
+ {"Me", "me+latinunicode"}, //Montenegrin (Latin, Unicode)
+ {"Me", "me+latinyz"}, //Montenegrin (Latin, QWERTY)
+ {"Me", "me+latinunicodeyz"}, //Montenegrin (Latin, Unicode, QWERTY)
+ {"Me", "me+cyrillicalternatequotes"}, //Montenegrin (Cyrillic, with guillemets)
+ {"Me", "me+latinalternatequotes"}, //Montenegrin (Latin, with guillemets)
+ {"Mk", "mk"}, //Macedonian
+ {"Mk", "mk+nodeadkeys"}, //Macedonian (no dead keys)
+ {"Mt", "mt"}, //Maltese
+ {"Mt", "mt+us"}, //Maltese (US)
+ {"Mt", "mt+alt-us"}, //Maltese (US, with AltGr overrides)
+ {"Mt", "mt+alt-gb"}, //Maltese (UK, with AltGr overrides)
+ {"Mn", "mn"}, //Mongolian
+ {"No", "no"}, //Norwegian
+ {"No", "no+nodeadkeys"}, //Norwegian (no dead keys)
+ {"No", "no+winkeys"}, //Norwegian (Windows)
+ {"No", "no+dvorak"}, //Norwegian (Dvorak)
+ {"Ns", "no+smi"}, //Northern Saami (Norway)
+ {"Ns", "no+smi_nodeadkeys"}, //Northern Saami (Norway, no dead keys)
+ {"No", "no+mac"}, //Norwegian (Macintosh)
+ {"No", "no+mac_nodeadkeys"}, //Norwegian (Macintosh, no dead keys)
+ {"No", "no+colemak"}, //Norwegian (Colemak)
+ {"Pl", "pl"}, //Polish
+ {"Pl", "pl+legacy"}, //Polish (legacy)
+ {"Pl", "pl+qwertz"}, //Polish (QWERTZ)
+ {"Pl", "pl+dvorak"}, //Polish (Dvorak)
+ {"Pl", "pl+dvorak_quotes"}, //Polish (Dvorak, with Polish quotes on quotemark key)
+ {"Pl", "pl+dvorak_altquotes"}, //Polish (Dvorak, with Polish quotes on key 1)
+ {"Kp", "pl+csb"}, //Kashubian
+ {"Sj", "pl+szl"}, //Silesian
+ {"Ru", "pl+ru_phonetic_dvorak"}, //Russian (Poland, phonetic Dvorak)
+ {"Pl", "pl+dvp"}, //Polish (programmer Dvorak)
+ {"Pt", "pt"}, //Portuguese
+ {"Pt", "pt+nodeadkeys"}, //Portuguese (no dead keys)
+ {"Pt", "pt+mac"}, //Portuguese (Macintosh)
+ {"Pt", "pt+mac_nodeadkeys"}, //Portuguese (Macintosh, no dead keys)
+ {"Pt", "pt+nativo"}, //Portuguese (Nativo)
+ {"Pt", "pt+nativo-us"}, //Portuguese (Nativo for US keyboards)
+ {"Eo", "pt+nativo-epo"}, //Esperanto (Portugal, Nativo)
+ {"Ro", "ro"}, //Romanian
+ {"Ro", "ro+std"}, //Romanian (standard)
+ {"Ro", "ro+winkeys"}, //Romanian (Windows)
+ {"Ru", "ru"}, //Russian
+ {"Ru", "ru+phonetic"}, //Russian (phonetic)
+ {"Ru", "ru+phonetic_winkeys"}, //Russian (phonetic, Windows)
+ {"Ru", "ru+phonetic_YAZHERTY"}, //Russian (phonetic, YAZHERTY)
+ {"Ru", "ru+typewriter"}, //Russian (typewriter)
+ {"Ru", "ru+ruchey_ru"}, //Russian (engineering, RU)
+ {"Ru", "ru+ruchey_en"}, //Russian (engineering, EN)
+ {"Ru", "ru+legacy"}, //Russian (legacy)
+ {"Ru", "ru+typewriter-legacy"}, //Russian (typewriter, legacy)
+ {"Tt", "ru+tt"}, //Tatar
+ {"Os", "ru+os_legacy"}, //Ossetian (legacy)
+ {"Os", "ru+os_winkeys"}, //Ossetian (Windows)
+ {"Cv", "ru+cv"}, //Chuvash
+ {"Cv", "ru+cv_latin"}, //Chuvash (Latin)
+ {"Ud", "ru+udm"}, //Udmurt
+ {"Kv", "ru+kom"}, //Komi
+ {"Ya", "ru+sah"}, //Yakut
+ {"Kx", "ru+xal"}, //Kalmyk
+ {"Ru", "ru+dos"}, //Russian (DOS)
+ {"Ru", "ru+mac"}, //Russian (Macintosh)
+ {"Sr", "ru+srp"}, //Serbian (Russia)
+ {"Ba", "ru+bak"}, //Bashkirian
+ {"Mx", "ru+chm"}, //Mari
+ {"Ru", "ru+phonetic_azerty"}, //Russian (phonetic, AZERTY)
+ {"Ru", "ru+phonetic_dvorak"}, //Russian (phonetic, Dvorak)
+ {"Ru", "ru+phonetic_fr"}, //Russian (phonetic, French)
+ {"Ab", "ru+ab"}, //Abkhazian (Russia)
+ {"Sr", "rs"}, //Serbian
+ {"Sr", "rs+yz"}, //Serbian (Cyrillic, ZE and ZHE swapped)
+ {"Sr", "rs+latin"}, //Serbian (Latin)
+ {"Sr", "rs+latinunicode"}, //Serbian (Latin, Unicode)
+ {"Sr", "rs+latinyz"}, //Serbian (Latin, QWERTY)
+ {"Sr", "rs+latinunicodeyz"}, //Serbian (Latin, Unicode, QWERTY)
+ {"Sr", "rs+alternatequotes"}, //Serbian (Cyrillic, with guillemets)
+ {"Sr", "rs+latinalternatequotes"}, //Serbian (Latin, with guillemets)
+ {"Rs", "rs+rue"}, //Pannonian Rusyn
+ {"Sl", "si"}, //Slovenian
+ {"Sl", "si+alternatequotes"}, //Slovenian (with guillemets)
+ {"Sl", "si+us"}, //Slovenian (US)
+ {"Sk", "sk"}, //Slovak
+ {"Sk", "sk+bksl"}, //Slovak (extended backslash)
+ {"Sk", "sk+qwerty"}, //Slovak (QWERTY)
+ {"Sk", "sk+qwerty_bksl"}, //Slovak (QWERTY, extended backslash)
+ {"Es", "es"}, //Spanish
+ {"Es", "es+nodeadkeys"}, //Spanish (no dead keys)
+ {"Es", "es+winkeys"}, //Spanish (Windows)
+ {"Es", "es+deadtilde"}, //Spanish (dead tilde)
+ {"Es", "es+dvorak"}, //Spanish (Dvorak)
+ {"As", "es+ast"}, //Asturian (Spain, with bottom-dot H and L)
+ {"Ca", "es+cat"}, //Catalan (Spain, with middle-dot L)
+ {"Es", "es+mac"}, //Spanish (Macintosh)
+ {"Sv", "se"}, //Swedish
+ {"Sv", "se+nodeadkeys"}, //Swedish (no dead keys)
+ {"Sv", "se+dvorak"}, //Swedish (Dvorak)
+ {"Ru", "se+rus"}, //Russian (Sweden, phonetic)
+ {"Ru", "se+rus_nodeadkeys"}, //Russian (Sweden, phonetic, no dead keys)
+ {"Ns", "se+smi"}, //Northern Saami (Sweden)
+ {"Sv", "se+mac"}, //Swedish (Macintosh)
+ {"Sv", "se+svdvorak"}, //Swedish (Svdvorak)
+ {"Sv", "se+us_dvorak"}, //Swedish (Dvorak, intl.)
+ {"Sv", "se+us"}, //Swedish (US)
+ {"Sv", "se+swl"}, //Swedish Sign Language
+ {"De", "ch"}, //German (Switzerland)
+ {"De", "ch+legacy"}, //German (Switzerland, legacy)
+ {"De", "ch+de_nodeadkeys"}, //German (Switzerland, no dead keys)
+ {"Fr", "ch+fr"}, //French (Switzerland)
+ {"Fr", "ch+fr_nodeadkeys"}, //French (Switzerland, no dead keys)
+ {"Fr", "ch+fr_mac"}, //French (Switzerland, Macintosh)
+ {"De", "ch+de_mac"}, //German (Switzerland, Macintosh)
+ {"Ar", "sy"}, //Arabic (Syria)
+ {"Ls", "sy+syc"}, //Syriac
+ {"Ls", "sy+syc_phonetic"}, //Syriac (phonetic)
+ {"Ku", "sy+ku"}, //Kurdish (Syria, Latin Q)
+ {"Ku", "sy+ku_f"}, //Kurdish (Syria, F)
+ {"Ku", "sy+ku_alt"}, //Kurdish (Syria, Latin Alt-Q)
+ {"Tg", "tj"}, //Tajik
+ {"Tg", "tj+legacy"}, //Tajik (legacy)
+ {"Si", "lk"}, //Sinhala (phonetic)
+ {"Ta", "lk+tam_unicode"}, //Tamil (Sri Lanka, TamilNet '99)
+ {"Ta", "lk+tam_TAB"}, //Tamil (Sri Lanka, TamilNet '99, TAB encoding)
+ {"Si", "lk+us"}, //Sinhala (US)
+ {"Th", "th"}, //Thai
+ {"Th", "th+tis"}, //Thai (TIS-820.2538)
+ {"Th", "th+pat"}, //Thai (Pattachote)
+ {"Tr", "tr"}, //Turkish
+ {"Tr", "tr+f"}, //Turkish (F)
+ {"Tr", "tr+e"}, //Turkish (E)
+ {"Tr", "tr+alt"}, //Turkish (Alt-Q)
+ {"Ku", "tr+ku"}, //Kurdish (Turkey, Latin Q)
+ {"Ku", "tr+ku_f"}, //Kurdish (Turkey, F)
+ {"Ku", "tr+ku_alt"}, //Kurdish (Turkey, Latin Alt-Q)
+ {"Tr", "tr+intl"}, //Turkish (intl., with dead keys)
+ {"Tr", "tr+ot"}, //Ottoman (Q)
+ {"Tr", "tr+otf"}, //Ottoman (F)
+ {"Tr", "tr+otk"}, //Old Turkic
+ {"Tr", "tr+otkf"}, //Old Turkic (F)
+ {"Tw", "tw"}, //Taiwanese
+ {"Tw", "tw+indigenous"}, //Taiwanese (indigenous)
+ {"Sy", "tw+saisiyat"}, //Saisiyat (Taiwan)
+ {"Uk", "ua"}, //Ukrainian
+ {"Uk", "ua+phonetic"}, //Ukrainian (phonetic)
+ {"Uk", "ua+typewriter"}, //Ukrainian (typewriter)
+ {"Uk", "ua+winkeys"}, //Ukrainian (Windows)
+ {"Uk", "ua+macOS"}, //Ukrainian (macOS)
+ {"Uk", "ua+legacy"}, //Ukrainian (legacy)
+ {"Uk", "ua+rstu"}, //Ukrainian (standard RSTU)
+ {"Ru", "ua+rstu_ru"}, //Russian (Ukraine, standard RSTU)
+ {"Uk", "ua+homophonic"}, //Ukrainian (homophonic)
+ {"Tt", "ua+crh"}, //Crimean Tatar (Turkish Q)
+ {"Tt", "ua+crh_f"}, //Crimean Tatar (Turkish F)
+ {"Tt", "ua+crh_alt"}, //Crimean Tatar (Turkish Alt-Q)
+ {"En", "gb"}, //English (UK)
+ {"En", "gb+extd"}, //English (UK, extended, Windows)
+ {"En", "gb+intl"}, //English (UK, intl., with dead keys)
+ {"En", "gb+dvorak"}, //English (UK, Dvorak)
+ {"En", "gb+dvorakukp"}, //English (UK, Dvorak, with UK punctuation)
+ {"En", "gb+mac"}, //English (UK, Macintosh)
+ {"En", "gb+mac_intl"}, //English (UK, Macintosh, intl.)
+ {"En", "gb+colemak"}, //English (UK, Colemak)
+ {"En", "gb+colemak_dh"}, //English (UK, Colemak-DH)
+ {"Pl", "gb+pl"}, //Polish (British keyboard)
+ {"Gd", "gb+gla"}, //Scottish Gaelic
+ {"Uz", "uz"}, //Uzbek
+ {"Uz", "uz+latin"}, //Uzbek (Latin)
+ {"Vi", "vn"}, //Vietnamese
+ {"Vi", "vn+us"}, //Vietnamese (US)
+ {"Vi", "vn+fr"}, //Vietnamese (France)
+ {"Ko", "kr"}, //Korean
+ {"Ko", "kr+kr104"}, //Korean (101/104-key compatible)
+ {"Ga", "ie"}, //Irish
+ {"Cl", "ie+CloGaelach"}, //CloGaelach
+ {"Ga", "ie+UnicodeExpert"}, //Irish (UnicodeExpert)
+ {"Og", "ie+ogam"}, //Ogham
+ {"Og", "ie+ogam_is434"}, //Ogham (IS434)
+ {"Ur", "pk"}, //Urdu (Pakistan)
+ {"Ur", "pk+urd-crulp"}, //Urdu (Pakistan, CRULP)
+ {"Ur", "pk+urd-nla"}, //Urdu (Pakistan, NLA)
+ {"Ar", "pk+ara"}, //Arabic (Pakistan)
+ {"Sd", "pk+snd"}, //Sindhi
+ {"Dv", "mv"}, //Dhivehi
+ {"En", "za"}, //English (South Africa)
+ {"Eo", "epo"}, //Esperanto
+ {"Eo", "epo+legacy"}, //Esperanto (legacy)
+ {"Ne", "np"}, //Nepali
+ {"En", "ng"}, //English (Nigeria)
+ {"Ig", "ng+igbo"}, //Igbo
+ {"Yo", "ng+yoruba"}, //Yoruba
+ {"Ha", "ng+hausa"}, //Hausa (Nigeria)
+ {"Am", "et"}, //Amharic
+ {"Wo", "sn"}, //Wolof
+ {"Bi", "brai"}, //Braille
+ {"Bi", "brai+left_hand"}, //Braille (left-handed)
+ {"Bi", "brai+left_hand_invert"}, //Braille (left-handed inverted thumb)
+ {"Bi", "brai+right_hand"}, //Braille (right-handed)
+ {"Bi", "brai+right_hand_invert"}, //Braille (right-handed inverted thumb)
+ {"Tk", "tm"}, //Turkmen
+ {"Tk", "tm+alt"}, //Turkmen (Alt-Q)
+ {"Bm", "ml"}, //Bambara
+ {"Fr", "ml+fr-oss"}, //French (Mali, alt.)
+ {"En", "ml+us-mac"}, //English (Mali, US, Macintosh)
+ {"En", "ml+us-intl"}, //English (Mali, US, intl.)
+ {"Sw", "tz"}, //Swahili (Tanzania)
+ {"Fr", "tg"}, //French (Togo)
+ {"Sw", "ke"}, //Swahili (Kenya)
+ {"Ki", "ke+kik"}, //Kikuyu
+ {"Tn", "bw"}, //Tswana
+ {"Ph", "ph"}, //Filipino
+ {"Ph", "ph+qwerty-bay"}, //Filipino (QWERTY, Baybayin)
+ {"Ph", "ph+capewell-dvorak"}, //Filipino (Capewell-Dvorak, Latin)
+ {"Ph", "ph+capewell-dvorak-bay"}, //Filipino (Capewell-Dvorak, Baybayin)
+ {"Ph", "ph+capewell-qwerf2k6"}, //Filipino (Capewell-QWERF 2006, Latin)
+ {"Ph", "ph+capewell-qwerf2k6-bay"}, //Filipino (Capewell-QWERF 2006, Baybayin)
+ {"Ph", "ph+colemak"}, //Filipino (Colemak, Latin)
+ {"Ph", "ph+colemak-bay"}, //Filipino (Colemak, Baybayin)
+ {"Ph", "ph+dvorak"}, //Filipino (Dvorak, Latin)
+ {"Ph", "ph+dvorak-bay"}, //Filipino (Dvorak, Baybayin)
+ {"Ro", "md"}, //Moldavian
+ {"Ro", "md+gag"}, //Moldavian (Gagauz)
+ {"Id", "id"}, //Indonesian (Latin)
+ {"Jv", "id+javanese"}, //Javanese
+ {"Id", "id+melayu-phonetic"}, //Indonesian (Arab Melayu, phonetic)
+ {"Id", "id+melayu-phoneticx"}, //Indonesian (Arab Melayu, extended phonetic)
+ {"Id", "id+pegon-phonetic"}, //Indonesian (Arab Pegon, phonetic)
+ {"Ms", "my"}, //Malay (Jawi, Arabic Keyboard)
+ {"Ms", "my+phonetic"}, //Malay (Jawi, phonetic)
+ {"custom", "custom"}, //A user-defined custom Layout
+ {"Ap", "apl"}, //APL
+ {"Ap", "apl+dyalog"}, //APL symbols (Dyalog APL)
+ {"Ap", "apl+sax"}, //APL symbols (SAX, Sharp APL for Unix)
+ {"Ap", "apl+unified"}, //APL symbols (unified)
+ {"Ap", "apl+apl2"}, //APL symbols (IBM APL2)
+ {"Ap", "apl+aplplusII"}, //APL symbols (Manugistics APL*PLUS II)
+ {"Ap", "apl+aplx"}, //APL symbols (APLX unified)
+ {"Bg", "bqn"}, //BQN
+ {"Kt", "ca+kut"}, //Kutenai
+ {"Sp", "ca+shs"}, //Secwepemctsin
+ {"Mb", "ca+sun_type6"}, //Multilingual (Canada, Sun Type 6/7)
+ {"De", "de+hu"}, //German (with Hungarian letters, no dead keys)
+ {"Pl", "de+pl"}, //Polish (Germany, no dead keys)
+ {"De", "de+sun_type6"}, //German (Sun Type 6/7)
+ {"De", "de+adnw"}, //German (Aus der Neo-Welt)
+ {"De", "de+koy"}, //German (KOY)
+ {"De", "de+bone"}, //German (Bone)
+ {"De", "de+bone_eszett_home"}, //German (Bone, eszett in the home row)
+ {"De", "de+neo_qwertz"}, //German (Neo, QWERTZ)
+ {"De", "de+neo_qwerty"}, //German (Neo, QWERTY)
+ {"Ru", "de+ru-recom"}, //Russian (Germany, recommended)
+ {"Ru", "de+ru-translit"}, //Russian (Germany, transliteration)
+ {"De", "de+lld"}, //German (Ladin)
+ {"Cp", "eg"}, //Coptic
+ {"Hu", "hu+oldhun"}, //Old Hungarian
+ {"Hu", "hu+oldhunlig"}, //Old Hungarian (for ligatures)
+ {"Ae", "ir+ave"}, //Avestan
+ {"Lt", "lt+us_dvorak"}, //Lithuanian (Dvorak)
+ {"Lt", "lt+sun_type6"}, //Lithuanian (Sun Type 6/7)
+ {"Lv", "lv+dvorak"}, //Latvian (Dvorak)
+ {"Lv", "lv+ykeydvorak"}, //Latvian (Dvorak, with Y)
+ {"Lv", "lv+minuskeydvorak"}, //Latvian (Dvorak, with minus)
+ {"Lv", "lv+dvorakprogr"}, //Latvian (programmer Dvorak)
+ {"Lv", "lv+ykeydvorakprogr"}, //Latvian (programmer Dvorak, with Y)
+ {"Lv", "lv+minuskeydvorakprogr"}, //Latvian (programmer Dvorak, with minus)
+ {"Lv", "lv+colemak"}, //Latvian (Colemak)
+ {"Lv", "lv+apostrophecolemak"}, //Latvian (Colemak, with apostrophe)
+ {"Lv", "lv+sun_type6"}, //Latvian (Sun Type 6/7)
+ {"Lv", "lv+apostrophe-deadquotes"}, //Latvian (apostrophe, dead quotes)
+ {"En", "us+intl-unicode"}, //English (US, intl., AltGr Unicode combining)
+ {"En", "us+alt-intl-unicode"}, //English (US, intl., AltGr Unicode combining, alt.)
+ {"At", "us+ats"}, //Atsina
+ {"Sx", "us+crd"}, //Coeur d'Alene Salish
+ {"Cs", "us+cz_sk_de"}, //Czech Slovak and German (US)
+ {"Cs", "us+cz_sk_pl_de_es_fi_sv"}, //Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US)
+ {"En", "us+drix"}, //English (Drix)
+ {"De", "us+de_se_fi"}, //German, Swedish and Finnish (US)
+ {"En", "us+ibm238l"}, //English (US, IBM Arabic 238_L)
+ {"En", "us+sun_type6"}, //English (US, Sun Type 6/7)
+ {"En", "us+carpalx"}, //English (Carpalx)
+ {"En", "us+carpalx-intl"}, //English (Carpalx, intl., with dead keys)
+ {"En", "us+carpalx-altgr-intl"}, //English (Carpalx, intl., with AltGr dead keys)
+ {"En", "us+carpalx-full"}, //English (Carpalx, full optimization)
+ {"En", "us+carpalx-full-intl"}, //English (Carpalx, full optimization, intl., with dead keys)
+ {"En", "us+carpalx-full-altgr-intl"}, //English (Carpalx, full optimization, intl., with AltGr dead keys)
+ {"En", "us+3l"}, //English (3l)
+ {"En", "us+3l-cros"}, //English (3l, Chromebook)
+ {"En", "us+3l-emacs"}, //English (3l, emacs)
+ {"En", "us+workman-p"}, //English (Workman-P)
+ {"Sj", "us+scn"}, //Sicilian (US keyboard)
+ {"En", "us+altgr-weur"}, //English (Western European AltGr dead keys)
+ {"Pl", "pl+intl"}, //Polish (intl., with dead keys)
+ {"Pl", "pl+colemak"}, //Polish (Colemak)
+ {"Pl", "pl+colemak_dh_ansi"}, //Polish (Colemak-DH)
+ {"Pl", "pl+colemak_dh"}, //Polish (Colemak-DH ISO)
+ {"Pl", "pl+sun_type6"}, //Polish (Sun Type 6/7)
+ {"Pl", "pl+glagolica"}, //Polish (Glagolica)
+ {"Pl", "pl+lefty"}, //Polish (lefty)
+ {"Tt", "ro+crh_dobruja"}, //Crimean Tatar (Dobruja Q)
+ {"Ro", "ro+ergonomic"}, //Romanian (ergonomic Touchtype)
+ {"Ro", "ro+sun_type6"}, //Romanian (Sun Type 6/7)
+ {"Sr", "rs+combiningkeys"}, //Serbian (combining accents instead of dead keys)
+ {"Cu", "ru+chu"}, //Church Slavonic
+ {"Ru", "ru+ruu"}, //Russian (with Ukrainian-Belorussian layout)
+ {"Ru", "ru+rulemak"}, //Russian (Rulemak, phonetic Colemak)
+ {"Ru", "ru+phonetic_mac"}, //Russian (phonetic Macintosh)
+ {"Ru", "ru+sun_type6"}, //Russian (Sun Type 6/7)
+ {"Ru", "ru+unipunct"}, //Russian (with US punctuation)
+ {"Ru", "ru+gost-6431-75-48"}, //Russian (GOST 6431-75)
+ {"Ru", "ru+gost-14289-88"}, //Russian (GOST 14289-88)
+ {"Ru", "ru+prxn"}, //Russian (Polyglot and Reactionary)
+ {"Ru", "ru+winkeys-p"}, //Russian (Programmer)
+ {"Hy", "am+olpc-phonetic"}, //Armenian (OLPC, phonetic)
+ {"He", "il+biblicalSIL"}, //Hebrew (Biblical, SIL phonetic)
+ {"Ar", "ara+sun_type6"}, //Arabic (Sun Type 6/7)
+ {"Ar", "ara+basic_ext"}, //Arabic (Arabic numerals, extensions in the 4th level)
+ {"Ar", "ara+basic_ext_digits"}, //Arabic (Eastern Arabic numerals, extensions in the 4th level)
+ {"Ua", "ara+uga"}, //Ugaritic instead of Arabic
+ {"Ar", "ara+ergoarabic"}, //Arabic (ErgoArabic)
+ {"Bl", "be+sun_type6"}, //Belgian (Sun Type 6/7)
+ {"Pt", "br+sun_type6"}, //Portuguese (Brazil, Sun Type 6/7)
+ {"Cs", "cz+sun_type6"}, //Czech (Sun Type 6/7)
+ {"Cs", "cz+prog"}, //Czech (programming)
+ {"Cs", "cz+typo"}, //Czech (typographic)
+ {"Cs", "cz+coder"}, //Czech (coder)
+ {"Cs", "cz+prog_typo"}, //Czech (programming, typographic)
+ {"Cs", "cz+colemak-ucw"}, //Czech (US, Colemak, UCW support)
+ {"Da", "dk+sun_type6"}, //Danish (Sun Type 6/7)
+ {"Nl", "nl+sun_type6"}, //Dutch (Sun Type 6/7)
+ {"Et", "ee+sun_type6"}, //Estonian (Sun Type 6/7)
+ {"Fi", "fi+sun_type6"}, //Finnish (Sun Type 6/7)
+ {"Fi", "fi+das"}, //Finnish (DAS)
+ {"Fi", "fi+fidvorak"}, //Finnish (Dvorak)
+ {"Fr", "fr+sun_type6"}, //French (Sun Type 6/7)
+ {"Fr", "fr+us-alt"}, //French (US with dead keys, alt.)
+ {"Fr", "fr+us-azerty"}, //French (US, AZERTY)
+ {"Gr", "gr+sun_type6"}, //Greek (Sun Type 6/7)
+ {"Gr", "gr+colemak"}, //Greek (Colemak)
+ {"It", "it+sun_type6"}, //Italian (Sun Type 6/7)
+ {"It", "it+lld"}, //Italian (Ladin)
+ {"It", "it+dvorak"}, //Italian (Dvorak)
+ {"Ja", "jp+sun_type6"}, //Japanese (Sun Type 6)
+ {"Ja", "jp+sun_type7"}, //Japanese (Sun Type 7, PC-compatible)
+ {"Ja", "jp+sun_type7_suncompat"}, //Japanese (Sun Type 7, Sun-compatible)
+ {"No", "no+sun_type6"}, //Norwegian (Sun Type 6/7)
+ {"Ur", "pk+urd-navees"}, //Urdu (Pakistan, Navees)
+ {"Pt", "pt+sun_type6"}, //Portuguese (Sun Type 6/7)
+ {"Pt", "pt+colemak"}, //Portuguese (Colemak)
+ {"Sk", "sk+acc"}, //Slovak (ACC layout, only accented letters)
+ {"Sk", "sk+sun_type6"}, //Slovak (Sun Type 6/7)
+ {"Es", "es+sun_type6"}, //Spanish (Sun Type 6/7)
+ {"Sv", "se+dvorak_a5"}, //Swedish (Dvorak A5)
+ {"Sv", "se+sun_type6"}, //Swedish (Sun Type 6/7)
+ {"Ed", "se+ovd"}, //Elfdalian (Swedish, with combining ogonek)
+ {"De", "ch+sun_type6_de"}, //German (Switzerland, Sun Type 6/7)
+ {"Fr", "ch+sun_type6_fr"}, //French (Switzerland, Sun Type 6/7)
+ {"Tr", "tr+sun_type6"}, //Turkish (Sun Type 6/7)
+ {"Tr", "tr+otk"}, //Old Turkic
+ {"Tr", "tr+us"}, //Turkish (Turkey, Latin Q, Swap i and ı)
+ {"Uk", "ua+sun_type6"}, //Ukrainian (Sun Type 6/7)
+ {"En", "gb+sun_type6"}, //English (UK, Sun Type 6/7)
+ {"Ko", "kr+sun_type6"}, //Korean (Sun Type 6/7)
+ {"Vi", "vn+aderty"}, //Vietnamese (AÐERTY)
+ {"Vi", "vn+qderty"}, //Vietnamese (QĐERTY)
+ {"Ek", "eu"}, //EurKEY (US)
+ {"Ix", "trans"}, //International Phonetic Alphabet
+ {"Ix", "trans+qwerty"}, //International Phonetic Alphabet (QWERTY)
+ {"Md", "in+modi-kagapa"}, //Modi (KaGaPa phonetic)
+ {"Sa", "in+san-misc"}, //Sanskrit symbols
+ {"Ur", "in+urd-navees"}, //Urdu (Navees)}
+ {"emoji", "emoji"}, //Emoji
+ {NULL, NULL}
};
gchar* lookupLanguage(const gchar* sId)
{
guint nId = 0;
- while (IDS[nId] != NULL)
+ while (LANGUAGES[nId].sLanguage != NULL)
{
- if (g_str_equal(IDS[nId], sId))
+ if (g_str_equal(LANGUAGES[nId].sId, sId))
{
- return LANGUAGES[nId];
+ return LANGUAGES[nId].sLanguage;
}
nId++;