Langtable uses e.g. 'cz(qwerty)' as a layout ('cz') and variant ('qwerty') specification. However, we use strings like 'cz (qwerty)' (with a space separating the fields) as IDs in dictionaries etc., so we need to normalize all strings to the same format.
Related: rhbz#1006458 (cherry-picked 8cfac2bf646d91b75af174f89424d882cfd1500b from master)
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- pyanaconda/keyboard.py | 15 +++++++++++++++ pyanaconda/ui/gui/spokes/welcome.py | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/keyboard.py b/pyanaconda/keyboard.py index 138b4d0..70b67ce 100755 --- a/pyanaconda/keyboard.py +++ b/pyanaconda/keyboard.py @@ -112,6 +112,21 @@ def _join_layout_variant(layout, variant=""): else: return layout
+def normalize_layout_variant(layout_str): + """ + Normalize keyboard layout and variant specification given as a single + string. E.g. for a 'layout(variant) string missing the space between the + left parenthesis return 'layout (variant)' which is a proper layout and + variant specification we use. + + :param layout_str: a string specifying keyboard layout and its variant + :type layout_str: string + + """ + + layout, variant = _parse_layout_variant(layout_str) + return _join_layout_variant(layout, variant) + def populate_missing_items(keyboard): """ Function that populates keyboard.vc_keymap and keyboard.x_layouts if diff --git a/pyanaconda/ui/gui/spokes/welcome.py b/pyanaconda/ui/gui/spokes/welcome.py index 90d3e10..45abe88 100644 --- a/pyanaconda/ui/gui/spokes/welcome.py +++ b/pyanaconda/ui/gui/spokes/welcome.py @@ -111,8 +111,9 @@ class WelcomeLanguageSpoke(LangLocaleHandler, StandaloneSpoke):
layouts = localization.get_locale_keyboards(locale) if layouts: - # take the first locale (with highest rank) from the list - new_layouts = [layouts[0]] + # take the first locale (with highest rank) from the list and + # store it normalized + new_layouts = [keyboard.normalize_layout_variant(layouts[0])] if not langtable.supports_ascii(layouts[0]): # does not support typing ASCII chars, append the 'us' layout new_layouts.append("us")