]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
scripts: Update keymap-render script to handle xkb keymaps too
authorDiego Augusto <diego.augusto@protonmail.com>
Sat, 15 Oct 2022 17:32:53 +0000 (13:32 -0400)
committerRay Strode <rstrode@redhat.com>
Tue, 29 Nov 2022 14:22:06 +0000 (09:22 -0500)
At the moment the keyboard-render script only generates short
names for console layouts.

We're going to add /dev/input support to plymouth using
libxkbcommon, so we're going to need a list of of those keymaps
too.

This commit adds that.

Some contributions by n3rdopolis and Ray Strode.

scripts/keymap-render.py
src/libply-splash-graphics/ply-keymap-metadata.h
themes/spinfinity/keymap-render.png
themes/spinner/keymap-render.png

index 53b67dd30b86137bf18885f142f5a5d65a74ef72..2dc86575202af18f69a9b8313e1c4a46676699b9 100755 (executable)
@@ -3,12 +3,18 @@
 import cairo
 import subprocess
 import math
+import lxml
+from lxml import etree
 
 
 FONT_SIZE = 30
 MARGIN = int(FONT_SIZE / 3)
 
+#python3-lxml utility is required
+
 def get_keymaps():
+        xml = etree.XML(bytes(open('/usr/share/X11/xkb/rules/evdev.xml', 'r').read(), encoding="utf-8"))
+        keymaps_x11 = xml.xpath('//layout/configItem/description/text()')
         keymaps = subprocess.check_output(["localectl", "list-keymaps"]).decode("utf-8").strip().split()
 
         # Note when changing this you MUST keep ply_keymap_normalize_keymap()
@@ -31,12 +37,17 @@ def get_keymaps():
                 return parts[0]
 
         keymaps = list(map(normalize_keymaps ,keymaps))
-
         #Remove duplicates
-        ret = []
+        keymaps_dedupe = []
         for k in keymaps:
-                if k not in ret:
-                        ret.append(k)
+                if k not in keymaps_dedupe:
+                        keymaps_dedupe.append(k)
+
+        ret = []
+        for k in keymaps_dedupe:
+                ret.append((k, "PLY_LAYOUT_TERMINAL"))
+        for k in keymaps_x11:
+                ret.append((k, "PLY_LAYOUT_XKB"))
         return ret
 
 
@@ -49,7 +60,8 @@ ct.set_font_size(FONT_SIZE)
 max_height = 0.0
 total_width = 0.0
 for i in get_keymaps():
-        extents = ct.text_extents(i)
+        text=i[0]
+        extents = ct.text_extents(text)
         h = extents.height
         if h > max_height:
                 max_height = h
@@ -73,9 +85,11 @@ ct.move_to(MARGIN, MARGIN + max_height - descent)
 current_x, current_y = (MARGIN, MARGIN + max_height - descent)
 metadata = []
 for km in get_keymaps():
-        extents = ct.text_extents(km)
-        ct.show_text(km)
-        metadata.append((km, current_x, extents.width + MARGIN * 2))
+        km_text=km[0]
+        km_type=km[1]
+        extents = ct.text_extents(km_text)
+        ct.show_text(km_text)
+        metadata.append((km_text, current_x, extents.width + MARGIN * 2, km_type))
         current_x += extents.width + (MARGIN * 2)
         ct.move_to(current_x, current_y)
 
@@ -84,16 +98,22 @@ sf.write_to_png("keymap-render.png")
 print("/* This file is autogenerated by running:")
 print(" * scripts/keymap-render.py > src/libply-splash-graphics/ply-keymap-metadata.h")
 print(" */")
-print("struct ply_keymap_metadata {")
+print("typedef struct {")
 print("        const char *name;")
 print("        int offset;")
 print("        int width;")
-print("};")
+print("        int type;")
+print("} ply_keymap_metadata_t;")
+print("")
+print("typedef enum {")
+print("        PLY_LAYOUT_TERMINAL,")
+print("        PLY_LAYOUT_XKB,")
+print("} ply_layout_types_t;")
 print("")
-print("static struct ply_keymap_metadata ply_keymap_metadata[] = {")
+print("static ply_keymap_metadata_t ply_keymap_metadata[] = {")
 
 for i in metadata:
-        print(("        { \"%s\", %d, %d }," % (i[0],i[1],i[2])))
+        print(("        { \"%s\", %d, %d, %s}," % (i[0],i[1],i[2],i[3])))
 
 print("        { NULL, } /* End of array marker */ ")
 print("};")
index ef715ae4152e4e019577c1ba3274b55b432444ae..d8b13f1c75c2d1ab4378b3597517400e003f93ed 100644 (file)
 /* This file is autogenerated by running:
  * scripts/keymap-render.py > src/libply-splash-graphics/ply-keymap-metadata.h
  */
-struct ply_keymap_metadata
+typedef struct
 {
         const char *name;
         int         offset;
         int         width;
-};
+        int         type;
+} ply_keymap_metadata_t;
+
+typedef enum
+{
+        PLY_LAYOUT_TERMINAL,
+        PLY_LAYOUT_XKB,
+} ply_layout_types_t;
 
-static struct ply_keymap_metadata ply_keymap_metadata[] = {
-        { "dvorak",     10,   113 },
-        { "al",         123,  44  },
-        { "amiga",      167,  101 },
-        { "applkey",    268,  126 },
-        { "at",         394,  46  },
-        { "atari",      440,  81  },
-        { "az",         521,  49  },
-        { "azerty",     570,  104 },
-        { "ba",         674,  49  },
-        { "backspace",  723,  157 },
-        { "bashkir",    880,  119 },
-        { "be",         999,  50  },
-        { "bg",         1049, 51  },
-        { "br",         1100, 48  },
-        { "by",         1148, 51  },
-        { "bywin",      1199, 98  },
-        { "ca",         1297, 47  },
-        { "carpalx",    1344, 118 },
-        { "cf",         1462, 45  },
-        { "ch",         1507, 49  },
-        { "cm",         1556, 59  },
-        { "cn",         1615, 49  },
-        { "croat",      1664, 89  },
-        { "ctrl",       1753, 65  },
-        { "cz",         1818, 47  },
-        { "de",         1865, 51  },
-        { "defkeymap",  1916, 170 },
-        { "dk",         2086, 53  },
-        { "dz",         2139, 50  },
-        { "ee",         2189, 50  },
-        { "emacs",      2239, 106 },
-        { "emacs2",     2345, 122 },
-        { "en",         2467, 51  },
-        { "epo",        2518, 68  },
-        { "es",         2586, 49  },
-        { "et",         2635, 46  },
-        { "euro",       2681, 80  },
-        { "euro1",      2761, 95  },
-        { "euro2",      2856, 97  },
-        { "fi",         2953, 38  },
-        { "fo",         2991, 47  },
-        { "fr",         3038, 44  },
-        { "gb",         3082, 53  },
-        { "ge",         3135, 51  },
-        { "gh",         3186, 52  },
-        { "gr",         3238, 49  },
-        { "hr",         3287, 48  },
-        { "hu",         3335, 50  },
-        { "hu101",      3385, 99  },
-        { "ie",         3484, 42  },
-        { "il",         3526, 36  },
-        { "in",         3562, 43  },
-        { "iq",         3605, 43  },
-        { "ir",         3648, 40  },
-        { "is",         3688, 41  },
-        { "it",         3729, 38  },
-        { "it2",        3767, 54  },
-        { "jp",         3821, 46  },
-        { "jp106",      3867, 96  },
-        { "kazakh",     3963, 112 },
-        { "ke",         4075, 49  },
-        { "keypad",     4124, 114 },
-        { "kr",         4238, 47  },
-        { "ky",         4285, 50  },
-        { "kyrgyz",     4335, 107 },
-        { "kz",         4442, 48  },
-        { "la",         4490, 42  },
-        { "latam",      4532, 97  },
-        { "lk",         4629, 45  },
-        { "lt",         4674, 39  },
-        { "lv",         4713, 44  },
-        { "ma",         4757, 59  },
-        { "pl",         4816, 44  },
-        { "pt",         4860, 46  },
-        { "se",         4906, 48  },
-        { "template",   4954, 142 },
-        { "uk",         5096, 53  },
-        { "us",         5149, 50  },
-        { "md",         5199, 61  },
-        { "me",         5260, 60  },
-        { "mk",         5320, 62  },
-        { "mk0",        5382, 79  },
-        { "ml",         5461, 54  },
-        { "mm",         5515, 71  },
-        { "mt",         5586, 56  },
-        { "ng",         5642, 51  },
-        { "nl",         5693, 44  },
-        { "nl2",        5737, 60  },
-        { "no",         5797, 51  },
-        { "pc110",      5848, 95  },
-        { "ph",         5943, 51  },
-        { "pl1",        5994, 58  },
-        { "pl2",        6052, 60  },
-        { "pl3",        6112, 60  },
-        { "pl4",        6172, 62  },
-        { "ro",         6234, 46  },
-        { "rs",         6280, 44  },
-        { "ru",         6324, 45  },
-        { "ru1",        6369, 61  },
-        { "ru2",        6430, 63  },
-        { "ru3",        6493, 63  },
-        { "ru4",        6556, 65  },
-        { "ruwin",      6621, 95  },
-        { "sg",         6716, 49  },
-        { "si",         6765, 40  },
-        { "sk",         6805, 50  },
-        { "slovene",    6855, 122 },
-        { "sr",         6977, 46  },
-        { "sunkeymap",  7023, 174 },
-        { "sv",         7197, 49  },
-        { "sy",         7246, 49  },
-        { "tj",         7295, 38  },
-        { "tm",         7333, 57  },
-        { "tr",         7390, 44  },
-        { "tralt",      7434, 79  },
-        { "trf",        7513, 55  },
-        { "trq",        7568, 59  },
-        { "ttwin",      7627, 90  },
-        { "tw",         7717, 56  },
-        { "ua",         7773, 50  },
-        { "unicode",    7823, 124 },
-        { "uz",         7947, 50  },
-        { "vn",         7997, 51  },
-        { "wangbe",     8048, 126 },
-        { "wangbe2",    8174, 143 },
-        { "windowkeys", 8317, 188 },
-        { NULL,         } /* End of array marker */
+static ply_keymap_metadata_t ply_keymap_metadata[] = {
+        { "3l",                                        10,    47,  PLY_LAYOUT_TERMINAL },
+        { "dvorak",                                    57,    113, PLY_LAYOUT_TERMINAL },
+        { "adnw",                                      170,   94,  PLY_LAYOUT_TERMINAL },
+        { "al",                                        264,   45,  PLY_LAYOUT_TERMINAL },
+        { "amiga",                                     309,   103, PLY_LAYOUT_TERMINAL },
+        { "apple",                                     412,   93,  PLY_LAYOUT_TERMINAL },
+        { "applkey",                                   505,   126, PLY_LAYOUT_TERMINAL },
+        { "ara",                                       631,   62,  PLY_LAYOUT_TERMINAL },
+        { "at",                                        693,   46,  PLY_LAYOUT_TERMINAL },
+        { "atari",                                     739,   81,  PLY_LAYOUT_TERMINAL },
+        { "az",                                        820,   49,  PLY_LAYOUT_TERMINAL },
+        { "azerty",                                    869,   105, PLY_LAYOUT_TERMINAL },
+        { "ba",                                        974,   50,  PLY_LAYOUT_TERMINAL },
+        { "backspace",                                 1024,  157, PLY_LAYOUT_TERMINAL },
+        { "bashkir",                                   1181,  119, PLY_LAYOUT_TERMINAL },
+        { "be",                                        1300,  50,  PLY_LAYOUT_TERMINAL },
+        { "bg",                                        1350,  51,  PLY_LAYOUT_TERMINAL },
+        { "bone",                                      1401,  84,  PLY_LAYOUT_TERMINAL },
+        { "br",                                        1485,  48,  PLY_LAYOUT_TERMINAL },
+        { "by",                                        1533,  51,  PLY_LAYOUT_TERMINAL },
+        { "bywin",                                     1584,  98,  PLY_LAYOUT_TERMINAL },
+        { "ca",                                        1682,  48,  PLY_LAYOUT_TERMINAL },
+        { "carpalx",                                   1730,  118, PLY_LAYOUT_TERMINAL },
+        { "cf",                                        1848,  46,  PLY_LAYOUT_TERMINAL },
+        { "ch",                                        1894,  49,  PLY_LAYOUT_TERMINAL },
+        { "cm",                                        1943,  59,  PLY_LAYOUT_TERMINAL },
+        { "cn",                                        2002,  49,  PLY_LAYOUT_TERMINAL },
+        { "croat",                                     2051,  89,  PLY_LAYOUT_TERMINAL },
+        { "ctrl",                                      2140,  66,  PLY_LAYOUT_TERMINAL },
+        { "cz",                                        2206,  47,  PLY_LAYOUT_TERMINAL },
+        { "de",                                        2253,  51,  PLY_LAYOUT_TERMINAL },
+        { "defkeymap",                                 2304,  170, PLY_LAYOUT_TERMINAL },
+        { "dk",                                        2474,  53,  PLY_LAYOUT_TERMINAL },
+        { "dz",                                        2527,  50,  PLY_LAYOUT_TERMINAL },
+        { "ee",                                        2577,  50,  PLY_LAYOUT_TERMINAL },
+        { "emacs",                                     2627,  106, PLY_LAYOUT_TERMINAL },
+        { "emacs2",                                    2733,  122, PLY_LAYOUT_TERMINAL },
+        { "en",                                        2855,  51,  PLY_LAYOUT_TERMINAL },
+        { "epo",                                       2906,  69,  PLY_LAYOUT_TERMINAL },
+        { "es",                                        2975,  49,  PLY_LAYOUT_TERMINAL },
+        { "et",                                        3024,  46,  PLY_LAYOUT_TERMINAL },
+        { "euro",                                      3070,  81,  PLY_LAYOUT_TERMINAL },
+        { "euro1",                                     3151,  92,  PLY_LAYOUT_TERMINAL },
+        { "euro2",                                     3243,  97,  PLY_LAYOUT_TERMINAL },
+        { "fa",                                        3340,  46,  PLY_LAYOUT_TERMINAL },
+        { "fi",                                        3386,  38,  PLY_LAYOUT_TERMINAL },
+        { "fo",                                        3424,  48,  PLY_LAYOUT_TERMINAL },
+        { "fr",                                        3472,  44,  PLY_LAYOUT_TERMINAL },
+        { "gb",                                        3516,  54,  PLY_LAYOUT_TERMINAL },
+        { "ge",                                        3570,  52,  PLY_LAYOUT_TERMINAL },
+        { "gh",                                        3622,  53,  PLY_LAYOUT_TERMINAL },
+        { "gr",                                        3675,  50,  PLY_LAYOUT_TERMINAL },
+        { "hr",                                        3725,  48,  PLY_LAYOUT_TERMINAL },
+        { "hu",                                        3773,  50,  PLY_LAYOUT_TERMINAL },
+        { "hu101",                                     3823,  96,  PLY_LAYOUT_TERMINAL },
+        { "id",                                        3919,  43,  PLY_LAYOUT_TERMINAL },
+        { "ie",                                        3962,  42,  PLY_LAYOUT_TERMINAL },
+        { "il",                                        4004,  37,  PLY_LAYOUT_TERMINAL },
+        { "in",                                        4041,  43,  PLY_LAYOUT_TERMINAL },
+        { "iq",                                        4084,  43,  PLY_LAYOUT_TERMINAL },
+        { "ir",                                        4127,  40,  PLY_LAYOUT_TERMINAL },
+        { "is",                                        4167,  41,  PLY_LAYOUT_TERMINAL },
+        { "it",                                        4208,  38,  PLY_LAYOUT_TERMINAL },
+        { "it2",                                       4246,  54,  PLY_LAYOUT_TERMINAL },
+        { "jp",                                        4300,  46,  PLY_LAYOUT_TERMINAL },
+        { "jp106",                                     4346,  96,  PLY_LAYOUT_TERMINAL },
+        { "kazakh",                                    4442,  113, PLY_LAYOUT_TERMINAL },
+        { "ke",                                        4555,  49,  PLY_LAYOUT_TERMINAL },
+        { "keypad",                                    4604,  114, PLY_LAYOUT_TERMINAL },
+        { "ko",                                        4718,  51,  PLY_LAYOUT_TERMINAL },
+        { "koy",                                       4769,  67,  PLY_LAYOUT_TERMINAL },
+        { "kr",                                        4836,  47,  PLY_LAYOUT_TERMINAL },
+        { "ky",                                        4883,  50,  PLY_LAYOUT_TERMINAL },
+        { "kyrgyz",                                    4933,  108, PLY_LAYOUT_TERMINAL },
+        { "kz",                                        5041,  48,  PLY_LAYOUT_TERMINAL },
+        { "la",                                        5089,  42,  PLY_LAYOUT_TERMINAL },
+        { "latam",                                     5131,  96,  PLY_LAYOUT_TERMINAL },
+        { "lk",                                        5227,  44,  PLY_LAYOUT_TERMINAL },
+        { "lt",                                        5271,  38,  PLY_LAYOUT_TERMINAL },
+        { "lv",                                        5309,  43,  PLY_LAYOUT_TERMINAL },
+        { "ma",                                        5352,  60,  PLY_LAYOUT_TERMINAL },
+        { "no",                                        5412,  52,  PLY_LAYOUT_TERMINAL },
+        { "pl",                                        5464,  45,  PLY_LAYOUT_TERMINAL },
+        { "pt",                                        5509,  46,  PLY_LAYOUT_TERMINAL },
+        { "se",                                        5555,  48,  PLY_LAYOUT_TERMINAL },
+        { "template",                                  5603,  142, PLY_LAYOUT_TERMINAL },
+        { "uk",                                        5745,  53,  PLY_LAYOUT_TERMINAL },
+        { "us",                                        5798,  50,  PLY_LAYOUT_TERMINAL },
+        { "md",                                        5848,  61,  PLY_LAYOUT_TERMINAL },
+        { "me",                                        5909,  60,  PLY_LAYOUT_TERMINAL },
+        { "mk",                                        5969,  62,  PLY_LAYOUT_TERMINAL },
+        { "mk0",                                       6031,  79,  PLY_LAYOUT_TERMINAL },
+        { "ml",                                        6110,  55,  PLY_LAYOUT_TERMINAL },
+        { "mm",                                        6165,  71,  PLY_LAYOUT_TERMINAL },
+        { "mt",                                        6236,  56,  PLY_LAYOUT_TERMINAL },
+        { "neo",                                       6292,  68,  PLY_LAYOUT_TERMINAL },
+        { "neoqwertz",                                 6360,  162, PLY_LAYOUT_TERMINAL },
+        { "ng",                                        6522,  51,  PLY_LAYOUT_TERMINAL },
+        { "nl",                                        6573,  45,  PLY_LAYOUT_TERMINAL },
+        { "nl2",                                       6618,  60,  PLY_LAYOUT_TERMINAL },
+        { "pc110",                                     6678,  95,  PLY_LAYOUT_TERMINAL },
+        { "ph",                                        6773,  51,  PLY_LAYOUT_TERMINAL },
+        { "pl1",                                       6824,  55,  PLY_LAYOUT_TERMINAL },
+        { "pl2",                                       6879,  60,  PLY_LAYOUT_TERMINAL },
+        { "pl3",                                       6939,  61,  PLY_LAYOUT_TERMINAL },
+        { "pl4",                                       7000,  62,  PLY_LAYOUT_TERMINAL },
+        { "ro",                                        7062,  47,  PLY_LAYOUT_TERMINAL },
+        { "rs",                                        7109,  44,  PLY_LAYOUT_TERMINAL },
+        { "ru",                                        7153,  45,  PLY_LAYOUT_TERMINAL },
+        { "ru1",                                       7198,  58,  PLY_LAYOUT_TERMINAL },
+        { "ru2",                                       7256,  63,  PLY_LAYOUT_TERMINAL },
+        { "ru3",                                       7319,  64,  PLY_LAYOUT_TERMINAL },
+        { "ru4",                                       7383,  65,  PLY_LAYOUT_TERMINAL },
+        { "ruwin",                                     7448,  95,  PLY_LAYOUT_TERMINAL },
+        { "sg",                                        7543,  49,  PLY_LAYOUT_TERMINAL },
+        { "si",                                        7592,  40,  PLY_LAYOUT_TERMINAL },
+        { "sk",                                        7632,  50,  PLY_LAYOUT_TERMINAL },
+        { "slovene",                                   7682,  122, PLY_LAYOUT_TERMINAL },
+        { "sr",                                        7804,  46,  PLY_LAYOUT_TERMINAL },
+        { "sunkeymap",                                 7850,  174, PLY_LAYOUT_TERMINAL },
+        { "sv",                                        8024,  49,  PLY_LAYOUT_TERMINAL },
+        { "sy",                                        8073,  49,  PLY_LAYOUT_TERMINAL },
+        { "tj",                                        8122,  38,  PLY_LAYOUT_TERMINAL },
+        { "tm",                                        8160,  57,  PLY_LAYOUT_TERMINAL },
+        { "tr",                                        8217,  44,  PLY_LAYOUT_TERMINAL },
+        { "tralt",                                     8261,  79,  PLY_LAYOUT_TERMINAL },
+        { "trf",                                       8340,  56,  PLY_LAYOUT_TERMINAL },
+        { "trq",                                       8396,  59,  PLY_LAYOUT_TERMINAL },
+        { "ttwin",                                     8455,  90,  PLY_LAYOUT_TERMINAL },
+        { "tw",                                        8545,  56,  PLY_LAYOUT_TERMINAL },
+        { "ua",                                        8601,  51,  PLY_LAYOUT_TERMINAL },
+        { "unicode",                                   8652,  124, PLY_LAYOUT_TERMINAL },
+        { "us1",                                       8776,  61,  PLY_LAYOUT_TERMINAL },
+        { "uz",                                        8837,  50,  PLY_LAYOUT_TERMINAL },
+        { "vn",                                        8887,  51,  PLY_LAYOUT_TERMINAL },
+        { "wangbe",                                    8938,  127, PLY_LAYOUT_TERMINAL },
+        { "wangbe2",                                   9065,  144, PLY_LAYOUT_TERMINAL },
+        { "windowkeys",                                9209,  188, PLY_LAYOUT_TERMINAL },
+        { "English (US)",                              9397,  182, PLY_LAYOUT_XKB      },
+        { "Dari",                                      9579,  75,  PLY_LAYOUT_XKB      },
+        { "Arabic",                                    9654,  107, PLY_LAYOUT_XKB      },
+        { "Albanian",                                  9761,  139, PLY_LAYOUT_XKB      },
+        { "Armenian",                                  9900,  152, PLY_LAYOUT_XKB      },
+        { "German (Austria)",                          10052, 252, PLY_LAYOUT_XKB      },
+        { "English (Australian)",                      10304, 284, PLY_LAYOUT_XKB      },
+        { "Azerbaijani",                               10588, 172, PLY_LAYOUT_XKB      },
+        { "Belarusian",                                10760, 162, PLY_LAYOUT_XKB      },
+        { "Belgian",                                   10922, 121, PLY_LAYOUT_XKB      },
+        { "Bangla",                                    11043, 113, PLY_LAYOUT_XKB      },
+        { "Indian",                                    11156, 101, PLY_LAYOUT_XKB      },
+        { "Bosnian",                                   11257, 126, PLY_LAYOUT_XKB      },
+        { "Portuguese (Brazil)",                       11383, 279, PLY_LAYOUT_XKB      },
+        { "Bulgarian",                                 11662, 150, PLY_LAYOUT_XKB      },
+        { "Berber (Algeria, Latin)",                   11812, 317, PLY_LAYOUT_XKB      },
+        { "Arabic (Morocco)",                          12129, 249, PLY_LAYOUT_XKB      },
+        { "English (Cameroon)",                        12378, 285, PLY_LAYOUT_XKB      },
+        { "Burmese",                                   12663, 139, PLY_LAYOUT_XKB      },
+        { "French (Canada)",                           12802, 237, PLY_LAYOUT_XKB      },
+        { "French (Democratic Republic of the Congo)", 13039, 594, PLY_LAYOUT_XKB      },
+        { "Chinese",                                   13633, 125, PLY_LAYOUT_XKB      },
+        { "Croatian",                                  13758, 134, PLY_LAYOUT_XKB      },
+        { "Czech",                                     13892, 99,  PLY_LAYOUT_XKB      },
+        { "Danish",                                    13991, 111, PLY_LAYOUT_XKB      },
+        { "Dutch",                                     14102, 98,  PLY_LAYOUT_XKB      },
+        { "Dzongkha",                                  14200, 155, PLY_LAYOUT_XKB      },
+        { "Estonian",                                  14355, 135, PLY_LAYOUT_XKB      },
+        { "Persian",                                   14490, 118, PLY_LAYOUT_XKB      },
+        { "Iraqi",                                     14608, 79,  PLY_LAYOUT_XKB      },
+        { "Faroese",                                   14687, 125, PLY_LAYOUT_XKB      },
+        { "Finnish",                                   14812, 115, PLY_LAYOUT_XKB      },
+        { "French",                                    14927, 110, PLY_LAYOUT_XKB      },
+        { "English (Ghana)",                           15037, 232, PLY_LAYOUT_XKB      },
+        { "N'Ko (AZERTY)",                             15269, 225, PLY_LAYOUT_XKB      },
+        { "Georgian",                                  15494, 144, PLY_LAYOUT_XKB      },
+        { "German",                                    15638, 128, PLY_LAYOUT_XKB      },
+        { "Greek",                                     15766, 102, PLY_LAYOUT_XKB      },
+        { "Hungarian",                                 15868, 160, PLY_LAYOUT_XKB      },
+        { "Icelandic",                                 16028, 138, PLY_LAYOUT_XKB      },
+        { "Hebrew",                                    16166, 126, PLY_LAYOUT_XKB      },
+        { "Italian",                                   16292, 103, PLY_LAYOUT_XKB      },
+        { "Japanese",                                  16395, 144, PLY_LAYOUT_XKB      },
+        { "Kyrgyz",                                    16539, 112, PLY_LAYOUT_XKB      },
+        { "Khmer (Cambodia)",                          16651, 272, PLY_LAYOUT_XKB      },
+        { "Kazakh",                                    16923, 117, PLY_LAYOUT_XKB      },
+        { "Lao",                                       17040, 67,  PLY_LAYOUT_XKB      },
+        { "Spanish (Latin American)",                  17107, 355, PLY_LAYOUT_XKB      },
+        { "Lithuanian",                                17462, 160, PLY_LAYOUT_XKB      },
+        { "Latvian",                                   17622, 116, PLY_LAYOUT_XKB      },
+        { "Maori",                                     17738, 96,  PLY_LAYOUT_XKB      },
+        { "Montenegrin",                               17834, 192, PLY_LAYOUT_XKB      },
+        { "Macedonian",                                18026, 181, PLY_LAYOUT_XKB      },
+        { "Maltese",                                   18207, 125, PLY_LAYOUT_XKB      },
+        { "Mongolian",                                 18332, 162, PLY_LAYOUT_XKB      },
+        { "Norwegian",                                 18494, 168, PLY_LAYOUT_XKB      },
+        { "Polish",                                    18662, 100, PLY_LAYOUT_XKB      },
+        { "Portuguese",                                18762, 173, PLY_LAYOUT_XKB      },
+        { "Romanian",                                  18935, 154, PLY_LAYOUT_XKB      },
+        { "Russian",                                   19089, 122, PLY_LAYOUT_XKB      },
+        { "Serbian",                                   19211, 122, PLY_LAYOUT_XKB      },
+        { "Slovenian",                                 19333, 151, PLY_LAYOUT_XKB      },
+        { "Slovak",                                    19484, 111, PLY_LAYOUT_XKB      },
+        { "Spanish",                                   19595, 125, PLY_LAYOUT_XKB      },
+        { "Swedish",                                   19720, 132, PLY_LAYOUT_XKB      },
+        { "German (Switzerland)",                      19852, 316, PLY_LAYOUT_XKB      },
+        { "Arabic (Syria)",                            20168, 200, PLY_LAYOUT_XKB      },
+        { "Tajik",                                     20368, 87,  PLY_LAYOUT_XKB      },
+        { "Sinhala (phonetic)",                        20455, 262, PLY_LAYOUT_XKB      },
+        { "Thai",                                      20717, 78,  PLY_LAYOUT_XKB      },
+        { "Turkish",                                   20795, 121, PLY_LAYOUT_XKB      },
+        { "Taiwanese",                                 20916, 164, PLY_LAYOUT_XKB      },
+        { "Ukrainian",                                 21080, 149, PLY_LAYOUT_XKB      },
+        { "English (UK)",                              21229, 185, PLY_LAYOUT_XKB      },
+        { "Uzbek",                                     21414, 105, PLY_LAYOUT_XKB      },
+        { "Vietnamese",                                21519, 179, PLY_LAYOUT_XKB      },
+        { "Korean",                                    21698, 115, PLY_LAYOUT_XKB      },
+        { "Irish",                                     21813, 77,  PLY_LAYOUT_XKB      },
+        { "Urdu (Pakistan)",                           21890, 227, PLY_LAYOUT_XKB      },
+        { "Dhivehi",                                   22117, 120, PLY_LAYOUT_XKB      },
+        { "English (South Africa)",                    22237, 310, PLY_LAYOUT_XKB      },
+        { "Esperanto",                                 22547, 156, PLY_LAYOUT_XKB      },
+        { "Nepali",                                    22703, 106, PLY_LAYOUT_XKB      },
+        { "English (Nigeria)",                         22809, 245, PLY_LAYOUT_XKB      },
+        { "Amharic",                                   23054, 134, PLY_LAYOUT_XKB      },
+        { "Wolof",                                     23188, 106, PLY_LAYOUT_XKB      },
+        { "Braille",                                   23294, 107, PLY_LAYOUT_XKB      },
+        { "Turkmen",                                   23401, 142, PLY_LAYOUT_XKB      },
+        { "Bambara",                                   23543, 141, PLY_LAYOUT_XKB      },
+        { "Swahili (Tanzania)",                        23684, 267, PLY_LAYOUT_XKB      },
+        { "French (Togo)",                             23951, 206, PLY_LAYOUT_XKB      },
+        { "Swahili (Kenya)",                           24157, 228, PLY_LAYOUT_XKB      },
+        { "Tswana",                                    24385, 124, PLY_LAYOUT_XKB      },
+        { "Filipino",                                  24509, 119, PLY_LAYOUT_XKB      },
+        { "Moldavian",                                 24628, 158, PLY_LAYOUT_XKB      },
+        { "Indonesian (Latin)",                        24786, 259, PLY_LAYOUT_XKB      },
+        { "Malay (Jawi, Arabic Keyboard)",             25045, 423, PLY_LAYOUT_XKB      },
+        { "A user-defined custom Layout",              25468, 423, PLY_LAYOUT_XKB      },
+        { NULL,                                        } /* End of array marker */
 };
index 4f8c459dae4d06bea19bbc844260d559d21d3df7..91a3eec9cad505470fa7c5494b2456099dbde0cd 100644 (file)
Binary files a/themes/spinfinity/keymap-render.png and b/themes/spinfinity/keymap-render.png differ
index 4aaed5abb487524c3a2ac064cbeba1eb6656a89a..91a3eec9cad505470fa7c5494b2456099dbde0cd 100644 (file)
Binary files a/themes/spinner/keymap-render.png and b/themes/spinner/keymap-render.png differ