From c9dc656fbfac8b2a7b88e54d609a7a784a7c3428 Mon Sep 17 00:00:00 2001
From: Aleksandras Kostarevas <aleks076@protonmail.com>
Date: Wed, 24 Jul 2024 21:42:44 +0300
Subject: [PATCH] Update keyboard texts for many languages to separate misc
 keys

This was done by looking at characters listed on the Wikipedia language recognition chart[0] for each language, finding the last character in the array that the language uses and splitting the rest off into misc. This was partially automated, but there is potential that there may be errors for some languages. All of the keys should still be there if misc keys are enabled, so the keyboard should still be usable for all affected languages even if there were errors, if misc keys are enabled.

[0] https://en.wikipedia.org/wiki/Wikipedia:Language_recognition_chart
---
 .../keyboard/internal/KeyboardTextsTable.java | 3741 ++++++++++-------
 tools/make-keyboard-text-py/locales/af.json   |   52 +-
 tools/make-keyboard-text-py/locales/ca.json   |   56 +-
 tools/make-keyboard-text-py/locales/ckb.json  |  282 +-
 tools/make-keyboard-text-py/locales/cs.json   |   98 +-
 tools/make-keyboard-text-py/locales/da.json   |   44 +-
 tools/make-keyboard-text-py/locales/de.json   |   39 +-
 tools/make-keyboard-text-py/locales/eo.json   |  151 +-
 tools/make-keyboard-text-py/locales/es.json   |   45 +-
 tools/make-keyboard-text-py/locales/et.json   |   96 +-
 tools/make-keyboard-text-py/locales/fi.json   |   25 +-
 tools/make-keyboard-text-py/locales/fr.json   |   68 +-
 tools/make-keyboard-text-py/locales/hr.json   |   32 +-
 tools/make-keyboard-text-py/locales/hu.json   |   36 +-
 tools/make-keyboard-text-py/locales/is.json   |   48 +-
 tools/make-keyboard-text-py/locales/it.json   |   30 +-
 tools/make-keyboard-text-py/locales/lt.json   |   24 +-
 tools/make-keyboard-text-py/locales/lv.json   |  124 +-
 tools/make-keyboard-text-py/locales/nl.json   |   41 +-
 tools/make-keyboard-text-py/locales/pl.json   |   58 +-
 tools/make-keyboard-text-py/locales/pt.json   |   48 +-
 tools/make-keyboard-text-py/locales/ro.json   |   22 +-
 tools/make-keyboard-text-py/locales/sk.json   |  131 +-
 tools/make-keyboard-text-py/locales/sl.json   |   13 +-
 tools/make-keyboard-text-py/locales/sr.json   |    6 +-
 tools/make-keyboard-text-py/locales/sv.json   |   74 +-
 tools/make-keyboard-text-py/locales/tr.json   |   63 +-
 27 files changed, 3102 insertions(+), 2345 deletions(-)

diff --git a/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 402a020abd..1eedfa7258 100644
--- a/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -16,29 +16,18 @@
 
 package org.futo.inputmethod.keyboard.internal;
 
+import android.util.Log;
+
 import java.util.HashMap;
 import java.util.Locale;
 
 /**
  * !!!!! DO NOT EDIT THIS FILE !!!!!
  *
- * This file is generated by tools/make-keyboard-text. The base template file is
- *   tools/make-keyboard-text/res/src/org/futo/inputmethod/keyboard/internal/
- *   KeyboardTextsTable.tmpl
- *
- * This file must be updated when any text resources in keyboard layout files have been changed.
- * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
- * and should be defined in
- *   tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml
- *
- * To update this file, please run the following commands.
- *   $ cd $ANDROID_BUILD_TOP
- *   $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
- *   $ make-keyboard-text -java packages/inputmethods/LatinIME/java
- *
- * The updated source file will be generated to the following path (this file).
- *   packages/inputmethods/LatinIME/java/src/org/futo/inputmethod/keyboard/internal/
- *   KeyboardTextsTable.java
+ * This file is generated by tools/make-keyboard-text-py.
+ * To update some texts, please update the *.json files located at
+ *   tools/make-keyboard-text-py/locales
+ * and then cd into the make-keyboard-text-py directory and run src/generate.py
  */
 public final class KeyboardTextsTable {
     // Name to index map.
@@ -52,6 +41,11 @@ public final class KeyboardTextsTable {
     public static String getText(final String name, final String[] textsTable) {
         final Integer indexObj = sNameToIndexesMap.get(name);
         if (indexObj == null) {
+            if(name.startsWith("morekeys")) {
+                Log.w("KeyboardTextsTable", "Unknown morekeys text name=" + name + " locale="
+                        + sTextsTableToLocaleMap.get(textsTable));
+                return "";
+            }
             throw new RuntimeException("Unknown text name=" + name + " locale="
                     + sTextsTableToLocaleMap.get(textsTable));
         }
@@ -84,301 +78,310 @@ public final class KeyboardTextsTable {
     private static final String[] NAMES = {
     //  /* index:histogram */ "name",
         "locale",
-        "morekeys_a",
         "keylabel_to_alpha",
         "morekeys_o",
-        "morekeys_e",
+        "morekeys_a",
         "morekeys_u",
+        "morekeys_e",
         "morekeys_i",
-        "morekeys_c",
         "double_quotes",
-        "morekeys_n",
         "single_quotes",
-        "morekeys_s",
+        "morekeys_c",
+        "morekeys_misc_a",
+        "morekeys_misc_o",
         "keyspec_currency",
+        "morekeys_s",
+        "morekeys_misc_u",
+        "morekeys_misc_e",
         "morekeys_z",
+        "morekeys_misc_i",
+        "morekeys_n",
+        "morekeys_misc_c",
+        "morekeys_misc_s",
+        "double_angle_quotes",
+        "single_angle_quotes",
         "morekeys_y",
         "morekeys_d",
-        "single_angle_quotes",
-        "morekeys_t",
         "morekeys_g",
-        "morekeys_l",
-        "double_angle_quotes",
-        "morekeys_r",
-        "additional_morekeys_symbols_6",
         "additional_morekeys_symbols_8",
-        "keyspec_symbols_9",
-        "keyspec_symbols_3",
-        "additional_morekeys_symbols_9",
-        "additional_morekeys_symbols_5",
-        "keyspec_symbols_7",
-        "morekeys_tablet_period",
-        "keylabel_to_symbol",
-        "additional_morekeys_symbols_4",
-        "keyspec_symbols_0",
-        "keyspec_symbols_6",
-        "keyspec_symbols_5",
-        "keyspec_symbols_1",
-        "additional_morekeys_symbols_0",
         "additional_morekeys_symbols_7",
         "additional_morekeys_symbols_2",
-        "keyspec_symbols_2",
-        "additional_morekeys_symbols_3",
         "keyspec_symbols_4",
-        "morekeys_cyrillic_ie",
+        "keyspec_symbols_6",
         "keyspec_symbols_8",
+        "keylabel_to_symbol",
+        "keyspec_symbols_3",
+        "additional_morekeys_symbols_0",
+        "additional_morekeys_symbols_3",
+        "keyspec_symbols_2",
+        "morekeys_misc_z",
+        "keyspec_symbols_7",
+        "keyspec_symbols_9",
+        "additional_morekeys_symbols_4",
+        "morekeys_cyrillic_ie",
+        "additional_morekeys_symbols_5",
+        "morekeys_tablet_period",
+        "keyspec_symbols_1",
         "additional_morekeys_symbols_1",
-        "keyspec_nordic_row2_10",
+        "additional_morekeys_symbols_6",
+        "additional_morekeys_symbols_9",
+        "keyspec_symbols_5",
+        "keyspec_symbols_0",
+        "keyspec_east_slavic_row1_9",
+        "morekeys_period",
+        "keyspec_east_slavic_row2_11",
         "morekeys_cyrillic_soft_sign",
+        "keyspec_nordic_row2_11",
         "keyspec_nordic_row1_11",
-        "morekeys_period",
+        "keyspec_nordic_row2_10",
+        "keyspec_tablet_comma",
         "keyspec_east_slavic_row3_5",
+        "keyspec_east_slavic_row2_2",
+        "morekeys_t",
         "keyspec_period",
-        "keyspec_east_slavic_row1_9",
-        "keyspec_east_slavic_row2_11",
-        "morekeys_k",
         "morekeys_nordic_row2_10",
-        "keyspec_tablet_comma",
-        "keyspec_nordic_row2_11",
-        "keyspec_east_slavic_row2_2",
-        "morekeys_question",
-        "keyspec_right_curly_bracket",
-        "keyspec_greater_than",
-        "keyspec_comma",
+        "morekeys_misc_n",
+        "keyspec_left_square_bracket",
+        "keyhintlabel_period",
+        "keyspec_right_parenthesis",
+        "keyspec_less_than",
+        "morekeys_l",
         "keyspec_left_double_angle_quote",
-        "keyspec_less_than_equal",
         "morekeys_nordic_row2_11",
-        "keyhintlabel_period",
+        "keyspec_comma",
+        "keyspec_left_parenthesis",
         "keyspec_left_curly_bracket",
+        "morekeys_punctuation",
+        "keyspec_left_single_angle_quote",
+        "morekeys_question",
+        "keyspec_less_than_equal",
+        "keyspec_greater_than_equal",
+        "keyspec_greater_than",
+        "keyspec_tablet_period",
         "morekeys_tablet_comma",
+        "keyspec_right_double_angle_quote",
         "keyspec_right_square_bracket",
-        "keyspec_right_parenthesis",
         "keyspec_right_single_angle_quote",
-        "keyspec_less_than",
-        "morekeys_punctuation",
         "morekeys_star",
-        "keyspec_left_parenthesis",
-        "keyspec_tablet_period",
-        "keyspec_left_square_bracket",
-        "keyspec_right_double_angle_quote",
-        "keyspec_left_single_angle_quote",
-        "keyspec_greater_than_equal",
-        "morekeys_bullet",
+        "morekeys_r",
+        "keyspec_right_curly_bracket",
         "morekeys_right_parenthesis",
-        "morekeys_symbols_percent",
-        "keyspec_symbols_question",
+        "keyspec_spanish_row2_10",
+        "keyspec_swiss_row2_11",
+        "morekeys_arabic_diacritics",
+        "keyhintlabel_tablet_comma",
         "keyhintlabel_tablet_period",
+        "keyspec_symbols_question",
+        "keyspec_symbols_percent",
         "morekeys_swiss_row2_11",
-        "morekeys_symbols_semicolon",
-        "keyhintlabel_tablet_comma",
-        "morekeys_left_parenthesis",
         "morekeys_swiss_row2_10",
-        "keyspec_swiss_row2_11",
-        "keyspec_symbols_percent",
         "keyspec_swiss_row1_11",
+        "morekeys_symbols_semicolon",
         "keyspec_symbols_semicolon",
-        "morekeys_arabic_diacritics",
-        "keyspec_spanish_row2_10",
+        "morekeys_symbols_percent",
         "morekeys_swiss_row1_11",
+        "morekeys_left_parenthesis",
+        "morekeys_bullet",
         "keyspec_swiss_row2_10",
-        "morekeys_cyrillic_ghe",
-        "morekeys_h",
-        "morekeys_east_slavic_row2_2",
-        "label_search_key",
-        "morekeys_w",
-        "morekeys_cyrillic_i",
-        "label_wait_key",
-        "morekeys_tablet_punctuation",
-        "label_go_key",
-        "morekeys_cyrillic_o",
-        "keyspec_south_slavic_row3_8",
-        "label_pause_key",
-        "label_next_key",
+        "morekeys_cyrillic_u",
         "keyspec_south_slavic_row1_6",
         "label_previous_key",
-        "keyspec_south_slavic_row2_11",
+        "morekeys_tablet_punctuation",
+        "morekeys_misc_y",
+        "label_pause_key",
+        "morekeys_h",
         "label_done_key",
-        "keyspec_south_slavic_row3_1",
+        "keyspec_south_slavic_row2_11",
+        "morekeys_cyrillic_o",
+        "morekeys_cyrillic_ghe",
+        "label_go_key",
+        "morekeys_k",
+        "morekeys_cyrillic_i",
         "label_send_key",
+        "keyspec_south_slavic_row3_8",
+        "morekeys_east_slavic_row2_2",
         "morekeys_cyrillic_en",
-        "morekeys_cyrillic_u",
+        "label_search_key",
+        "label_next_key",
+        "keyspec_south_slavic_row3_1",
+        "label_wait_key",
         "keyspec_w",
-        "morekeys_greater_than",
         "morekeys_exclamation",
-        "morekeys_v",
-        "morekeys_j",
+        "morekeys_east_slavic_row2_11",
+        "morekeys_misc_g",
         "keyspec_x",
-        "morekeys_x",
         "morekeys_less_than",
-        "keyspec_y",
-        "morekeys_east_slavic_row2_11",
-        "morekeys_cyrillic_ka",
         "keyspec_q",
-        "morekeys_q",
+        "morekeys_misc_r",
+        "morekeys_w",
         "morekeys_plus",
+        "morekeys_misc_l",
+        "morekeys_j",
+        "morekeys_cyrillic_ka",
+        "keyspec_y",
         "morekeys_currency_dollar",
+        "morekeys_greater_than",
         "morekeys_cyrillic_a",
-        "actions_r",
-        "morekeys_misc_u",
-        "single_raqm_laqm",
-        "double_rqm_9qm",
-        "actions_6",
-        "keyspecs_right_parenthesis_more_keys",
-        "qwertysyms_9",
-        "morekeys_tablet_double_quote",
-        "keyspec_emoji_action_key",
-        "qwertysyms_0",
-        "actions_y",
-        "qwertysyms_x",
-        "morekeys_misc_s",
-        "qwertysyms_b",
-        "single_9qm_lqm",
-        "qwertysyms_2",
-        "actions_3",
+        "morekeys_misc_h",
         "morekeys_symbols_6",
-        "qwertysyms_e",
-        "morekeys_single_quote",
-        "keyspec_settings",
-        "morekeys_m",
+        "keylabel_tablet_to_more_symbol",
+        "qwertysyms_u",
+        "actions_n",
+        "actions_0",
+        "qwertysyms_d",
+        "double_9qm_rqm",
+        "morekeys_symbols_4",
+        "single_rqm_9qm",
+        "actions_3",
+        "actions_p",
+        "qwertysyms_8",
+        "actions_c",
+        "keylabel_time_pm",
+        "actions_4",
+        "qwertysyms_2",
+        "actions_9",
+        "actions_s",
+        "actions_1",
+        "morekeys_v",
+        "single_9qm_rqm",
+        "actions_q",
+        "number_3",
+        "morekeys_misc_t",
+        "qwertysyms_y",
+        "morekeys_am_pm",
+        "double_9qm_lqm",
+        "qwertysyms_k",
         "number_1",
-        "qwertysyms_6",
-        "actions_m",
         "qwertysyms_l",
         "single_lqm_rqm",
-        "actions_9",
-        "double_laqm_raqm",
-        "keylabel_to_phone_symbols",
-        "number_3",
-        "qwertysyms_s",
-        "actions_0",
-        "actions_s",
-        "keyspec_shortcut",
-        "qwertysyms_p",
-        "qwertysyms_r",
-        "number_4",
-        "actions_4",
-        "double_raqm_laqm",
-        "keylabel_to_phone_numeric",
-        "actions_o",
-        "qwertysyms_z",
-        "actions_h",
-        "actions_k",
+        "qwertysyms_t",
+        "qwertysyms_7",
+        "actions_t",
+        "keylabel_time_am",
+        "keyspecs_right_parenthesis_more_keys",
+        "qwertysyms_h",
+        "qwertysyms_n",
+        "morekeys_b",
+        "number_7",
+        "actions_y",
         "morekeys_symbols_1",
-        "morekeys_symbols_3",
-        "double_9qm_lqm",
-        "single_laqm_raqm",
-        "morekeys_symbols_5",
+        "single_9qm_lqm",
+        "qwertysyms_6",
+        "keyspec_emoji_action_key",
         "actions_u",
-        "keyspec_popular_domain",
+        "actions_k",
+        "morekeys_x",
+        "keyspecs_left_parenthesis_more_keys",
+        "double_rqm_9qm",
+        "actions_f",
+        "actions_b",
+        "number_6",
+        "actions_z",
+        "actions_d",
+        "morekeys_symbols_7",
+        "morekeys_symbols_8",
+        "number_9",
+        "morekeys_symbols_9",
+        "qwertysyms_z",
+        "actions_r",
+        "actions_8",
+        "qwertysyms_a",
+        "actions_i",
+        "qwertysyms_b",
+        "morekeys_q",
+        "number_8",
         "qwertysyms_q",
+        "actions_w",
+        "qwertysyms_c",
+        "keylabel_to_phone_symbols",
         "qwertysyms_m",
-        "qwertysyms_i",
-        "number_5",
-        "actions_v",
+        "morekeys_symbols_0",
+        "qwertysyms_4",
         "qwertysyms_g",
-        "double_9qm_rqm",
-        "morekeys_am_pm",
-        "actions_q",
+        "morekeys_single_quote",
+        "actions_e",
+        "keyspec_popular_domain",
+        "actions_v",
+        "morekeys_currency_generic",
+        "morekeys_tablet_double_quote",
+        "qwertysyms_s",
+        "keyspec_settings",
+        "actions_6",
         "keylabel_to_more_symbol",
-        "actions_g",
-        "qwertysyms_3",
-        "actions_n",
-        "keylabel_time_pm",
-        "actions_w",
-        "double_lqm_rqm",
-        "qwertysyms_f",
-        "morekeys_b",
-        "actions_l",
-        "morekeys_f",
-        "qwertysyms_y",
-        "actions_b",
-        "qwertysyms_h",
-        "qwertysyms_u",
-        "morekeys_misc_c",
-        "qwertysyms_d",
         "actions_2",
-        "morekeys_symbols_9",
-        "number_2",
-        "actions_z",
         "actions_7",
-        "number_0",
-        "morekeys_popular_domain",
-        "morekeys_symbols_8",
-        "morekeys_symbols_4",
-        "qwertysyms_j",
-        "keyspec_action_previous",
-        "qwertysyms_4",
-        "keyspec_action_next",
-        "actions_1",
-        "actions_5",
-        "qwertysyms_5",
-        "qwertysyms_n",
-        "actions_p",
-        "qwertysyms_k",
-        "actions_f",
-        "keyspecs_left_parenthesis_more_keys",
-        "qwertysyms_1",
-        "actions_x",
-        "single_9qm_rqm",
+        "actions_m",
         "morekeys_double_quote",
-        "qwertysyms_w",
-        "qwertysyms_8",
-        "number_7",
+        "double_laqm_raqm",
+        "actions_l",
+        "qwertysyms_v",
+        "actions_h",
+        "double_lqm_rqm",
+        "actions_x",
+        "keyspec_action_next",
+        "keyspec_shortcut",
+        "qwertysyms_f",
+        "actions_g",
+        "actions_o",
         "actions_j",
-        "morekeys_misc_o",
-        "morekeys_misc_a",
-        "morekeys_currency_generic",
-        "keylabel_tablet_to_more_symbol",
-        "qwertysyms_a",
-        "number_9",
-        "number_6",
-        "morekeys_symbols_0",
-        "actions_e",
-        "morekeys_misc_e",
-        "qwertysyms_c",
+        "qwertysyms_r",
+        "qwertysyms_1",
         "morekeys_p",
-        "number_8",
-        "morekeys_misc_i",
-        "keylabel_time_am",
-        "actions_d",
-        "qwertysyms_v",
-        "qwertysyms_t",
-        "morekeys_misc_n",
-        "single_rqm_9qm",
         "morekeys_symbols_2",
-        "qwertysyms_7",
-        "actions_t",
+        "morekeys_m",
+        "number_2",
         "qwertysyms_o",
-        "actions_8",
-        "actions_c",
-        "actions_i",
+        "qwertysyms_0",
+        "morekeys_popular_domain",
+        "qwertysyms_9",
+        "morekeys_symbols_3",
+        "keyspec_action_previous",
+        "single_raqm_laqm",
+        "qwertysyms_i",
+        "keylabel_to_phone_numeric",
+        "double_raqm_laqm",
+        "qwertysyms_3",
+        "morekeys_symbols_5",
+        "qwertysyms_5",
+        "qwertysyms_p",
+        "single_laqm_raqm",
+        "qwertysyms_j",
+        "qwertysyms_w",
+        "qwertysyms_e",
         "actions_a",
-        "morekeys_symbols_7"
+        "number_0",
+        "qwertysyms_x",
+        "number_4",
+        "number_5",
+        "morekeys_f",
+        "actions_5"
     };
 
     private static final String EMPTY = "";
 
     private static final String[] TEXTS_af = {
         "af",
-        "\u00e1,\u00e2,\u00e4,\u00e0,\u00e6,\u00e3,\u00e5,\u0101",
         null,
-        "\u00f3,\u00f4,\u00f6,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fb,\u00fc,\u00f9,\u016b",
-        "\u00ed,\u00ec,\u00ef,\u00ee,\u012f,\u012b,\u0133",
+        "\u00f3,\u00f4",
+        "\u00e1",
+        "\u00fa,\u00fb",
+        "\u00e9,\u00e8,\u00ea,\u00eb",
+        "\u00ed,\u00ec,\u00ef,\u00ee",
         null,
         null,
-        "\u00f1,\u0144",
         null,
+        "\u00e2,\u00e4,\u00e0,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00f6,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
         null,
         null,
+        "\u00fc,\u00f9,\u016b",
+        "\u0119,\u0117,\u0113",
         null,
-        "\u00fd,\u0133"
+        "\u012f,\u012b,\u0133"
     };
 
     private static final String[] TEXTS_ar = {
         "ar",
-        null,
         "\u0623\u200c\u0628\u200c\u062c",
         null,
         null,
@@ -399,34 +402,37 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "6",
+        null,
+        null,
+        null,
+        null,
+        null,
         "8",
-        "\u0669",
-        "\u0663",
-        "9",
-        "5",
-        "\u0667",
-        "!text/morekeys_arabic_diacritics",
-        "\u0663\u0662\u0661\u061f",
-        "4",
-        "\u0660",
-        "\u0666",
-        "\u0665",
-        "\u0661",
-        "0,\u066b,\u066c",
         "7",
         "2",
-        "\u0662",
-        "3",
         "\u0664",
-        null,
+        "\u0666",
         "\u0668",
-        "1",
-        null,
+        "\u0663\u0662\u0661\u061f",
+        "\u0663",
+        "0,\u066b,\u066c",
+        "3",
+        "\u0662",
         null,
+        "\u0667",
+        "\u0669",
+        "4",
         null,
+        "5",
         "!text/morekeys_arabic_diacritics",
+        "\u0661",
+        "1",
+        "6",
+        "9",
+        "\u0665",
+        "\u0660",
         null,
+        "!text/morekeys_arabic_diacritics",
         null,
         null,
         null,
@@ -435,70 +441,84 @@ public final class KeyboardTextsTable {
         "\u060c",
         null,
         null,
-        "?,\u00bf",
-        "}|{",
-        ">|<",
-        "\u060c",
-        "\u00ab|\u00bb",
-        "\u2264|\u2265",
         null,
+        null,
+        null,
+        null,
+        "[|]",
         "\u0651",
-        "{|}",
-        "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,\\\",\\'",
-        "]|[",
         ")|(",
-        "\u203a|\u2039",
         "<|>",
         null,
-        "\u2605,\u066d",
+        "\u00ab|\u00bb",
+        null,
+        "\u060c",
         "(|)",
+        "{|}",
         null,
-        "[|]",
-        "\u00bb|\u00ab",
         "\u2039|\u203a",
+        "?,\u00bf",
+        "\u2264|\u2265",
         "\u2265|\u2264",
-        "\u266a",
+        ">|<",
+        null,
+        "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,\\\",\\'",
+        "\u00bb|\u00ab",
+        "]|[",
+        "\u203a|\u2039",
+        "\u2605,\u066d",
+        null,
+        "}|{",
         "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys",
-        "\\%,\u2030",
+        null,
+        null,
+        "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064d|\u064d, \u064c|\u064c, \u064b|\u064b, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064f|\u064f, \u064e|\u064e,\u0640\u0640\u0640|\u0640",
         "\u061f",
         "\u0651",
-        null,
-        ";",
         "\u061f",
-        "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys",
+        "\u066a",
         null,
         null,
-        "\u066a",
         null,
+        ";",
         "\u061b",
-        "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064d|\u064d, \u064c|\u064c, \u064b|\u064b, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064f|\u064f, \u064e|\u064e,\u0640\u0640\u0640|\u0640"
+        "\\%,\u2030",
+        null,
+        "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys",
+        "\u266a"
     };
 
     private static final String[] TEXTS_az = {
         "az",
-        "\u00e2,\u00e4,\u00e1",
         null,
         "\u00f6,\u00f4,\u0153,\u00f2,\u00f3,\u00f5,\u00f8,\u014d",
-        "\u0259,\u00e9",
+        "\u00e2,\u00e4,\u00e1",
         "\u00fc,\u00fb,\u00f9,\u00fa,\u016b",
+        "\u0259,\u00e9",
         "\u0131,\u00ee,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
+        null,
+        null,
         "\u00e7,\u0107,\u010d",
         null,
-        "\u0148,\u00f1",
+        null,
         null,
         "\u015f,\u00df,\u015b,\u0161",
         null,
+        null,
         "\u017e",
-        "\u00fd",
+        null,
+        "\u0148,\u00f1",
+        null,
+        null,
         null,
         null,
+        "\u00fd",
         null,
         "\u011f"
     };
 
     private static final String[] TEXTS_be = {
         "be",
-        null,
         "\u0410\u0411\u0412",
         null,
         null,
@@ -506,7 +526,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         "!text/double_9qm_lqm",
-        null,
         "!text/single_9qm_lqm",
         null,
         null,
@@ -539,27 +558,30 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        null,
         "\u0451",
         null,
         null,
         null,
-        "\u044a",
         null,
         null,
-        "\u0456",
+        null,
+        null,
         null,
         "\u045e",
+        null,
         "\u044d",
+        "\u044a",
         null,
         null,
         null,
         null,
+        "\u0456",
         "\u044b"
     };
 
     private static final String[] TEXTS_bg = {
         "bg",
-        null,
         "\u0410\u0411\u0412",
         null,
         null,
@@ -571,7 +593,6 @@ public final class KeyboardTextsTable {
 
     private static final String[] TEXTS_bn_BD = {
         "bn_BD",
-        null,
         "\u0995\u0996\u0997",
         null,
         null,
@@ -582,12 +603,12 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        null,
         "\u09f3"
     };
 
     private static final String[] TEXTS_bn_IN = {
         "bn_IN",
-        null,
         "\u0995\u0996\u0997",
         null,
         null,
@@ -598,30 +619,35 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        null,
         "\u20b9"
     };
 
     private static final String[] TEXTS_ca = {
         "ca",
-        "\u00e0,\u00e1,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
         null,
-        "\u00f2,\u00f3,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
-        "\u00e8,\u00e9,\u00eb,\u00ea,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
+        "\u00f2,\u00f3",
+        "\u00e0",
+        "\u00fa,\u00fc",
+        "\u00e8,\u00e9",
+        "\u00ed,\u00ef",
         null,
-        "\u00f1,\u0144",
         null,
+        "\u00e7",
+        "\u00e1,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
+        "\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
         null,
         null,
+        "\u00f9,\u00fb,\u016b",
+        "\u00eb,\u00ea,\u0119,\u0117,\u0113",
         null,
+        "\u00ec,\u00ee,\u012f,\u012b",
         null,
+        "\u0107,\u010d",
         null,
         null,
         null,
         null,
-        "l\u00b7l,\u0142",
         null,
         null,
         null,
@@ -672,9 +698,9 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "!autoColumnOrder!9,\\,?,!,\u00b7,#,),(,/,;,',@,:,-,\\\",+,\\%,&",
         null,
         null,
-        "!autoColumnOrder!9,\\,?,!,\u00b7,#,),(,/,;,',@,:,-,\\\",+,\\%,&",
         null,
         null,
         null,
@@ -687,6 +713,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00e7",
         null,
         null,
         null,
@@ -697,7 +724,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00e7",
         null,
         null,
         null,
@@ -710,53 +736,18 @@ public final class KeyboardTextsTable {
         "!autoColumnOrder!8,\\,',\u00b7,#,),(,/,;,@,:,-,\\\",+,\\%,&"
     };
 
-    private static final String[] TEXTS_cs = {
-        "cs",
-        "\u00e1,\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
-        null,
-        "\u00f3,\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
-        "\u00e9,\u011b,\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
-        "\u00fa,\u016f,\u00fb,\u00fc,\u00f9,\u016b",
-        "\u00ed,\u00ee,\u00ef,\u00ec,\u012f,\u012b",
-        "\u010d,\u00e7,\u0107",
-        "!text/double_9qm_lqm",
-        "\u0148,\u00f1,\u0144",
-        "!text/single_9qm_lqm",
-        "\u0161,\u00df,\u015b",
+    private static final String[] TEXTS_ckb = {
+        "ckb",
+        "\u0623\u200c\u0628\u200c\u062c",
         null,
-        "\u017e,\u017a,\u017c",
-        "\u00fd,\u00ff",
-        "\u010f",
-        "!text/single_raqm_laqm",
-        "\u0165",
         null,
         null,
-        "!text/double_raqm_laqm",
-        "\u0159"
-    };
-
-    private static final String[] TEXTS_da = {
-        "da",
-        "\u00e5,\u00e6,\u00e1,\u00e4,\u00e0,\u00e2,\u00e3,\u0101",
         null,
-        "\u00f8,\u00f6,\u00f3,\u00f4,\u00f2,\u00f5,\u0153,\u014d",
-        "\u00e9,\u00eb",
-        "\u00fa,\u00fc,\u00fb,\u00f9,\u016b",
-        "\u00ed,\u00ef",
         null,
-        "!text/double_9qm_lqm",
-        "\u00f1,\u0144",
-        "!text/single_9qm_lqm",
-        "\u00df,\u015b,\u0161",
         null,
         null,
-        "\u00fd,\u00ff",
-        "\u00f0",
-        "!text/single_raqm_laqm",
         null,
         null,
-        "\u0142",
-        "!text/double_raqm_laqm",
         null,
         null,
         null,
@@ -772,65 +763,126 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "8",
+        "7",
+        "2",
+        "\u0664",
+        "\u0666",
+        "\u0668",
+        "\u0663\u0662\u0661\u061f",
+        "\u0663",
+        "0,\u066b,\u066c",
+        "3",
+        "\u0662",
         null,
+        "\u0667",
+        "\u0669",
+        "4",
         null,
+        "5",
+        "\u061f",
+        "\u0661",
+        "1",
+        "6",
+        "9",
+        "\u0665",
+        "\u0660",
         null,
+        "\u061f",
         null,
         null,
         null,
         null,
         null,
+        "\u060c",
         null,
-        "\u00e6",
         null,
-        "\u00e5",
         null,
+        ".",
         null,
         null,
+        "[|]",
+        "\u0651",
+        ")|(",
+        "<|>",
         null,
+        "\u00ab|\u00bb",
         null,
+        "\u060c",
+        "(|)",
+        "{|}",
         null,
-        "\u00e4",
+        "\u2039|\u203a",
+        "?,\u00bf",
+        "\u2264|\u2265",
+        "\u2265|\u2264",
+        ">|<",
         null,
-        "\u00f8",
+        "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,\\\",\\'",
+        "\u00bb|\u00ab",
+        "]|[",
+        "\u203a|\u2039",
+        "\u2605,\u066d",
         null,
+        "}|{",
+        "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys",
         null,
         null,
+        "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064d|\u064d, \u064c|\u064c, \u064b|\u064b, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064f|\u064f, \u064e|\u064e,\u0640\u0640\u0640|\u0640",
+        "\u061f",
+        "\u0651",
+        "\u061f",
+        "\u066a",
         null,
         null,
         null,
+        ";",
+        "\u061b",
+        "\\%,\u2030",
         null,
-        "\u00f6"
+        "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys",
+        "\u266a"
     };
 
-    private static final String[] TEXTS_de = {
-        "de",
-        "\u00e4,%,\u00e2,\u00e0,\u00e1,\u00e6,\u00e3,\u00e5,\u0101",
-        null,
-        "\u00f6,%,\u00f4,\u00f2,\u00f3,\u00f5,\u0153,\u00f8,\u014d",
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0117",
-        "\u00fc,%,\u00fb,\u00f9,\u00fa,\u016b",
-        null,
+    private static final String[] TEXTS_cs = {
+        "cs",
         null,
+        "\u00f3",
+        "\u00e1",
+        "\u00fa,\u016f",
+        "\u00e9,\u011b",
+        "\u00ed",
         "!text/double_9qm_lqm",
-        "\u00f1,\u0144",
         "!text/single_9qm_lqm",
-        "\u00df,\u015b,\u0161",
+        "\u010d",
+        "\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
         null,
+        "\u0161",
+        "\u00fb,\u00fc,\u00f9,\u016b",
+        "\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
+        "\u017e",
+        "\u00ee,\u00ef,\u00ec,\u012f,\u012b",
+        "\u0148",
+        "\u00e7,\u0107",
+        "\u00df,\u015b",
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
+        "\u00fd",
+        "\u010f",
         null,
         null,
         null,
-        "!text/single_raqm_laqm",
         null,
         null,
         null,
-        "!text/double_raqm_laqm",
         null,
         null,
         null,
         null,
         null,
         null,
+        "\u017a,\u017c",
         null,
         null,
         null,
@@ -853,8 +905,10 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0165",
         null,
         null,
+        "\u00f1,\u0144",
         null,
         null,
         null,
@@ -877,6 +931,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0159",
         null,
         null,
         null,
@@ -889,54 +944,34 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00e0",
         null,
         null,
         null,
-        "\u00e9",
-        "\u00e4",
         null,
-        "\u00fc",
         null,
         null,
         null,
-        "\u00e8",
-        "\u00f6"
-    };
-
-    private static final String[] TEXTS_el = {
-        "el",
         null,
-        "\u0391\u0392\u0393"
-    };
-
-    private static final String[] TEXTS_en = {
-        "en"
+        null,
+        null,
+        null,
+        "\u00ff"
     };
 
-    private static final String[] TEXTS_eo = {
-        "eo",
-        "\u00e1,\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101,\u0103,\u0105,\u00aa",
+    private static final String[] TEXTS_da = {
+        "da",
         null,
-        "\u00f3,\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d,\u0151,\u00ba",
-        "\u00e9,\u011b,\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
-        "\u00fa,\u016f,\u00fb,\u00fc,\u00f9,\u016b,\u0169,\u0171,\u0173,\u00b5",
-        "\u00ed,\u00ee,\u00ef,\u0129,\u00ec,\u012f,\u012b,\u0131,\u0133",
-        "\u0107,\u010d,\u00e7,\u010b",
+        "\u00f8",
+        "\u00e5,\u00e6",
         null,
-        "\u00f1,\u0144,\u0146,\u0148,\u0149,\u014b",
         null,
-        "\u00df,\u0161,\u015b,\u0219,\u015f",
         null,
-        "\u017a,\u017c,\u017e",
-        "y,\u00fd,\u0177,\u00ff,\u00fe",
-        "\u00f0,\u010f,\u0111",
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
         null,
-        "\u0165,\u021b,\u0163,\u0167",
-        "\u011f,\u0121,\u0123",
-        "\u013a,\u013c,\u013e,\u0140,\u0142",
+        "\u00e1,\u00e4,\u00e0,\u00e2,\u00e3,\u0101",
+        "\u00f6,\u00f3,\u00f4,\u00f2,\u00f5,\u0153,\u014d",
         null,
-        "\u0159,\u0155,\u0157",
         null,
         null,
         null,
@@ -945,6 +980,8 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
         null,
         null,
         null,
@@ -968,7 +1005,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0137,\u0138",
         null,
         null,
         null,
@@ -977,11 +1013,15 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00f8",
+        "\u00e5",
+        "\u00e6",
         null,
         null,
         null,
         null,
         null,
+        "\u00e4",
         null,
         null,
         null,
@@ -989,16 +1029,33 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00f6"
+    };
+
+    private static final String[] TEXTS_de = {
+        "de",
         null,
+        "\u00f6",
+        "\u00e4",
+        "\u00fc",
         null,
         null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
         null,
+        "%,\u00e2,\u00e0,\u00e1,\u00e6,\u00e3,\u00e5,\u0101",
+        "%,\u00f4,\u00f2,\u00f3,\u00f5,\u0153,\u00f8,\u014d",
         null,
+        "\u00df",
+        "%,\u00fb,\u00f9,\u00fa,\u016b",
         null,
         null,
         null,
         null,
         null,
+        "\u015b,\u0161",
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
         null,
         null,
         null,
@@ -1010,14 +1067,11 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0135",
         null,
         null,
         null,
-        "\u0125,\u0127",
         null,
         null,
-        "w,\u0175",
         null,
         null,
         null,
@@ -1034,32 +1088,14 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u011d",
         null,
         null,
-        "w,\u0175",
         null,
-        "\u0109",
-        "x",
         null,
-        "\u016d",
         null,
         null,
-        "\u015d",
-        "q"
-    };
-
-    private static final String[] TEXTS_es = {
-        "es",
-        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
         null,
-        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
-        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
         null,
-        "\u00f1,\u0144",
         null,
         null,
         null,
@@ -1087,34 +1123,60 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00e4",
         null,
         null,
         null,
         null,
         null,
+        "\u00e0",
+        "\u00e9",
+        "\u00fc",
         null,
         null,
         null,
+        "\u00e8",
         null,
         null,
+        "\u00f6"
+    };
+
+    private static final String[] TEXTS_el = {
+        "el",
+        "\u0391\u0392\u0393"
+    };
+
+    private static final String[] TEXTS_en = {
+        "en"
+    };
+
+    private static final String[] TEXTS_eo = {
+        "eo",
         null,
         null,
         null,
+        "\u016d",
         null,
         null,
         null,
         null,
+        "\u0109",
         null,
         null,
         null,
+        "\u015d",
+        "\u00fa,\u016f,\u00fb,\u00fc,\u00f9,\u016b,\u0169,\u0171,\u0173,\u00b5",
         null,
         null,
         null,
         null,
+        "\u0107,\u010d,\u00e7,\u010b",
+        "\u00df,\u0161,\u015b,\u0219,\u015f",
         null,
         null,
         null,
         null,
+        "\u011d",
         null,
         null,
         null,
@@ -1122,32 +1184,10 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "!autoColumnOrder!9,\\,?,!,#,),(,/,;,\u00a1,',@,:,-,\\\",+,\\%,&,\u00bf"
-    };
-
-    private static final String[] TEXTS_et = {
-        "et",
-        "\u00e4,\u0101,\u00e0,\u00e1,\u00e2,\u00e3,\u00e5,\u00e6,\u0105",
         null,
-        "\u00f6,\u00f5,\u00f2,\u00f3,\u00f4,\u0153,\u0151,\u00f8",
-        "\u0113,\u00e8,\u0117,\u00e9,\u00ea,\u00eb,\u0119,\u011b",
-        "\u00fc,\u016b,\u0173,\u00f9,\u00fa,\u00fb,\u016f,\u0171",
-        "\u012b,\u00ec,\u012f,\u00ed,\u00ee,\u00ef,\u0131",
-        "\u010d,\u00e7,\u0107",
-        "!text/double_9qm_lqm",
-        "\u0146,\u00f1,\u0144",
-        "!text/single_9qm_lqm",
-        "\u0161,\u00df,\u015b,\u015f",
         null,
-        "\u017e,\u017c,\u017a",
-        "\u00fd,\u00ff",
-        "\u010f",
         null,
-        "\u0163,\u0165",
-        "\u0123,\u011f",
-        "\u013c,\u0142,\u013a,\u013e",
         null,
-        "\u0157,\u0159,\u0155",
         null,
         null,
         null,
@@ -1171,37 +1211,16 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00f6",
         null,
-        "\u00fc",
         null,
         null,
         null,
         null,
         null,
-        "\u0137",
-        "\u00f5",
         null,
-        "\u00e4"
-    };
-
-    private static final String[] TEXTS_eu = {
-        "eu",
-        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
         null,
-        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
-        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
         null,
-        "\u00f1,\u0144"
-    };
-
-    private static final String[] TEXTS_fa = {
-        "fa",
         null,
-        "\u0627\u200c\u0628\u200c\u067e",
         null,
         null,
         null,
@@ -1211,7 +1230,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\ufdfc",
         null,
         null,
         null,
@@ -1221,83 +1239,32 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "6",
-        "8",
-        "\u06f9",
-        "\u06f3",
-        "9",
-        "5",
-        "\u06f7",
-        "!text/morekeys_arabic_diacritics",
-        "\u06f3\u06f2\u06f1\u061f",
-        "4",
-        "\u06f0",
-        "\u06f6",
-        "\u06f5",
-        "\u06f1",
-        "0,\u066b,\u066c",
-        "7",
-        "2",
-        "\u06f2",
-        "3",
-        "\u06f4",
         null,
-        "\u06f8",
-        "1",
+        "\u0135",
         null,
         null,
         null,
-        "!text/morekeys_arabic_diacritics",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u060c",
         null,
         null,
-        "?,\u00bf",
-        "}|{",
-        ">|<",
-        "\u060c",
-        "\u00ab|\u00bb",
-        "\u2264|\u2265",
         null,
-        "\u064b",
-        "{|}",
-        "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
-        "]|[",
-        ")|(",
-        "\u203a|\u2039",
-        "<|>",
         null,
-        "\u2605,\u066d",
-        "(|)",
         null,
-        "[|]",
-        "\u00bb|\u00ab",
-        "\u2039|\u203a",
-        "\u2265|\u2264",
-        "\u266a",
-        "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys",
-        "\\%,\u2030",
-        "\u061f",
-        "\u064b",
         null,
-        ";",
-        "\u061f",
-        "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys",
         null,
         null,
-        "\u066a",
         null,
-        "\u061b",
-        "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064c|\u064c, \u064d|\u064d, \u064b|\u064b, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064f|\u064f, \u0650|\u0650, \u064e|\u064e,\u0640\u0640\u0640|\u0640",
         null,
         null,
         null,
         null,
+        "\u0125",
+        null,
         null,
         null,
         null,
@@ -1312,37 +1279,47 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u011d",
         null,
         null,
+        "\u011f,\u0121,\u0123",
+        "\u0109",
         null,
+        "\u015d",
         null,
         null,
         null,
         null,
-        "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than",
         null,
         null,
+        "\u016d",
         null,
         null,
         null,
-        "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than"
+        "\u0127"
     };
 
-    private static final String[] TEXTS_fi = {
-        "fi",
-        "\u00e4,\u00e5,\u00e6,\u00e0,\u00e1,\u00e2,\u00e3,\u0101",
+    private static final String[] TEXTS_es = {
+        "es",
         null,
-        "\u00f6,\u00f8,\u00f4,\u00f2,\u00f3,\u00f5,\u0153,\u014d",
+        "\u00f3",
+        "\u00e1",
+        "\u00fa,\u00fc",
+        "\u00e9",
+        "\u00ed",
         null,
-        "\u00fc",
         null,
         null,
+        "\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
+        "\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
         null,
         null,
+        "\u00f9,\u00fb,\u016b",
+        "\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
         null,
-        "\u0161,\u00df,\u015b",
+        "\u00ef,\u00ec,\u00ee,\u012f,\u012b",
+        "\u00f1",
         null,
-        "\u017e,\u017a,\u017c",
         null,
         null,
         null,
@@ -1374,53 +1351,54 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00f6",
         null,
-        "\u00e5",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u00f8",
         null,
-        "\u00e4",
         null,
         null,
         null,
         null,
+        "\u0144",
         null,
         null,
         null,
-        "\u00e6"
-    };
-
-    private static final String[] TEXTS_fr = {
-        "fr",
-        "\u00e0,\u00e2,%,\u00e6,\u00e1,\u00e4,\u00e3,\u00e5,\u0101,\u00aa",
         null,
-        "\u00f4,\u0153,%,\u00f6,\u00f2,\u00f3,\u00f5,\u00f8,\u014d,\u00ba",
-        "\u00e9,\u00e8,\u00ea,\u00eb,%,\u0119,\u0117,\u0113",
-        "\u00f9,\u00fb,%,\u00fc,\u00fa,\u016b",
-        "\u00ee,%,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
-        "\u00e7,%,\u0107,\u010d",
         null,
         null,
         null,
         null,
         null,
         null,
-        "%,\u00ff",
+        "!autoColumnOrder!9,\\,?,!,#,),(,/,;,\u00a1,',@,:,-,\\\",+,\\%,&,\u00bf"
+    };
+
+    private static final String[] TEXTS_et = {
+        "et",
         null,
+        "\u00f6,\u00f5",
+        "\u00e4",
+        "\u00fc",
         null,
         null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
         null,
+        "\u0101,\u00e0,\u00e1,\u00e2,\u00e3,\u00e5,\u00e6,\u0105",
+        "\u00f2,\u00f3,\u00f4,\u0153,\u0151,\u00f8",
         null,
+        "\u0161",
+        "\u016b,\u0173,\u00f9,\u00fa,\u00fb,\u016f,\u0171",
         null,
+        "\u017e",
         null,
         null,
         null,
+        "\u00df,\u015b,\u015f",
         null,
         null,
         null,
@@ -1437,6 +1415,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u017c,\u017a",
         null,
         null,
         null,
@@ -1453,14 +1432,28 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00e4",
+        "\u00fc",
+        "\u00f6",
         null,
         null,
         null,
         null,
         null,
+        "\u00f5"
+    };
+
+    private static final String[] TEXTS_eu = {
+        "eu",
         null,
+        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
+        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
+        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
+        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
+        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
         null,
         null,
+        "\u00e7,\u0107,\u010d",
         null,
         null,
         null,
@@ -1469,6 +1462,12 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00f1,\u0144"
+    };
+
+    private static final String[] TEXTS_fa = {
+        "fa",
+        "\u0627\u200c\u0628\u200c\u067e",
         null,
         null,
         null,
@@ -1479,66 +1478,99 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\ufdfc",
         null,
         null,
         null,
-        "\u00e4",
         null,
         null,
         null,
-        "\u00f6",
-        "\u00e0",
         null,
-        "\u00e8",
         null,
         null,
         null,
-        "\u00fc",
-        "\u00e9"
-    };
-
-    private static final String[] TEXTS_gl = {
-        "gl",
-        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
         null,
-        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
-        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
         null,
-        "\u00f1,\u0144"
-    };
-
-    private static final String[] TEXTS_hi_ZZ = {
-        "hi_ZZ",
         null,
+        "8",
+        "7",
+        "2",
+        "\u06f4",
+        "\u06f6",
+        "\u06f8",
+        "\u06f3\u06f2\u06f1\u061f",
+        "\u06f3",
+        "0,\u066b,\u066c",
+        "3",
+        "\u06f2",
         null,
+        "\u06f7",
+        "\u06f9",
+        "4",
         null,
+        "5",
+        "!text/morekeys_arabic_diacritics",
+        "\u06f1",
+        "1",
+        "6",
+        "9",
+        "\u06f5",
+        "\u06f0",
         null,
+        "!text/morekeys_arabic_diacritics",
         null,
         null,
         null,
         null,
         null,
+        "\u060c",
         null,
         null,
-        "\u20b9",
         null,
         null,
         null,
         null,
+        "[|]",
+        "\u064b",
+        ")|(",
+        "<|>",
         null,
+        "\u00ab|\u00bb",
         null,
+        "\u060c",
+        "(|)",
+        "{|}",
         null,
+        "\u2039|\u203a",
+        "?,\u00bf",
+        "\u2264|\u2265",
+        "\u2265|\u2264",
+        ">|<",
         null,
+        "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
+        "\u00bb|\u00ab",
+        "]|[",
+        "\u203a|\u2039",
+        "\u2605,\u066d",
         null,
+        "}|{",
+        "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys",
         null,
         null,
+        "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064c|\u064c, \u064d|\u064d, \u064b|\u064b, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064f|\u064f, \u0650|\u0650, \u064e|\u064e,\u0640\u0640\u0640|\u0640",
+        "\u061f",
+        "\u064b",
+        "\u061f",
+        "\u066a",
         null,
         null,
         null,
+        ";",
+        "\u061b",
+        "\\%,\u2030",
         null,
+        "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys",
+        "\u266a",
         null,
         null,
         null,
@@ -1567,6 +1599,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than",
         null,
         null,
         null,
@@ -1576,19 +1609,31 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than"
+    };
+
+    private static final String[] TEXTS_fi = {
+        "fi",
         null,
+        "\u00f6",
+        "\u00e4,\u00e5",
         null,
         null,
         null,
         null,
         null,
         null,
+        "\u00e6,\u00e0,\u00e1,\u00e2,\u00e3,\u0101",
+        "\u00f8,\u00f4,\u00f2,\u00f3,\u00f5,\u0153,\u014d",
         null,
+        "\u0161",
         null,
         null,
+        "\u017e",
         null,
         null,
         null,
+        "\u00df,\u015b",
         null,
         null,
         null,
@@ -1605,6 +1650,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u017a,\u017c",
         null,
         null,
         null,
@@ -1612,76 +1658,60 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "Search",
         null,
         null,
-        "Wait",
         null,
-        "Go",
         null,
         null,
-        "Pause",
-        "Next",
         null,
-        "Prev",
         null,
-        "Done",
         null,
-        "Send"
-    };
-
-    private static final String[] TEXTS_hi = {
-        "hi",
         null,
-        "\u0915\u0916\u0917",
+        "\u00e4",
+        "\u00e5",
+        "\u00f6",
         null,
         null,
         null,
         null,
         null,
+        "\u00f8",
         null,
         null,
         null,
         null,
-        "\u20b9",
         null,
         null,
         null,
+        "\u00e6"
+    };
+
+    private static final String[] TEXTS_fr = {
+        "fr",
         null,
+        "\u00f4,\u0153",
+        "\u00e0,\u00e2,%,\u00e6",
+        "\u00f9,\u00fb,%,\u00fc",
+        "\u00e9,\u00e8,\u00ea,\u00eb",
+        "\u00ee,%,\u00ef",
         null,
         null,
+        "\u00e7",
+        "\u00e1,\u00e4,\u00e3,\u00e5,\u0101,\u00aa",
+        "%,\u00f6,\u00f2,\u00f3,\u00f5,\u00f8,\u014d,\u00ba",
         null,
         null,
+        "\u00fa,\u016b",
+        "%,\u0119,\u0117,\u0113",
         null,
-        "6",
-        "8",
-        "\u096f",
-        "\u0969",
-        "9",
-        "5",
-        "\u096d",
-        "!autoColumnOrder!8,\\,.,',#,),(,/,;,@,:,-,\\\",+,\\%,&",
-        "?\u0967\u0968\u0969",
-        "4",
-        "\u0966",
-        "\u096c",
-        "\u096b",
-        "\u0967",
-        "0",
-        "7",
-        "2",
-        "\u0968",
-        "3",
-        "\u096a",
+        "\u00ec,\u00ed,\u012f,\u012b",
         null,
-        "\u096e",
-        "1",
+        "%,\u0107,\u010d",
         null,
         null,
         null,
-        "!autoColumnOrder!9,\\,.,?,!,#,),(,/,;,',@,:,-,\\\",+,\\%,&",
+        "%,\u00ff",
         null,
-        "\u0964",
         null,
         null,
         null,
@@ -1706,61 +1736,29 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0964"
-    };
-
-    private static final String[] TEXTS_hr = {
-        "hr",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u010d,\u0107,\u00e7",
-        "!text/double_9qm_rqm",
-        "\u00f1,\u0144",
-        "!text/single_9qm_rqm",
-        "\u0161,\u015b,\u00df",
         null,
-        "\u017e,\u017a,\u017c",
         null,
-        "\u0111",
-        "!text/single_raqm_laqm",
         null,
         null,
         null,
-        "!text/double_raqm_laqm"
-    };
-
-    private static final String[] TEXTS_hu = {
-        "hu",
-        "\u00e1,\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
         null,
-        "\u00f3,\u00f6,\u0151,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u0171,\u00fb,\u00f9,\u016b",
-        "\u00ed,\u00ee,\u00ef,\u00ec,\u012f,\u012b",
         null,
-        "!text/double_9qm_rqm",
         null,
-        "!text/single_9qm_rqm",
         null,
         null,
         null,
         null,
         null,
-        "!text/single_raqm_laqm",
         null,
         null,
         null,
-        "!text/double_raqm_laqm"
-    };
-
-    private static final String[] TEXTS_hy = {
-        "hy",
         null,
-        "\u0531\u0532\u0533",
         null,
         null,
         null,
@@ -1779,20 +1777,35 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00e0",
         null,
         null,
         null,
         null,
         null,
+        "\u00e4",
+        "\u00f6",
+        "\u00e8",
         null,
         null,
         null,
-        "!text/morekeys_punctuation",
+        "\u00fc",
         null,
         null,
+        "\u00e9"
+    };
+
+    private static final String[] TEXTS_gl = {
+        "gl",
         null,
+        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
+        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
+        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
+        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
+        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
         null,
         null,
+        "\u00e7,\u0107,\u010d",
         null,
         null,
         null,
@@ -1801,6 +1814,12 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00f1,\u0144"
+    };
+
+    private static final String[] TEXTS_hi = {
+        "hi",
+        "\u0915\u0916\u0917",
         null,
         null,
         null,
@@ -1808,18 +1827,15 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0589",
         null,
         null,
         null,
+        "\u20b9",
         null,
-        "\u055d",
         null,
         null,
-        "\u055e,\u00bf",
         null,
         null,
-        "\u055d",
         null,
         null,
         null,
@@ -1828,12 +1844,33 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "8",
+        "7",
+        "2",
+        "\u096a",
+        "\u096c",
+        "\u096e",
+        "?\u0967\u0968\u0969",
+        "\u0969",
+        "0",
+        "3",
+        "\u0968",
         null,
+        "\u096d",
+        "\u096f",
+        "4",
         null,
-        "!autoColumnOrder!8,\\,\u055e,\u055c,.,\u055a,\u0559,?,!,\u055d,\u055b,\u058a,\u00bb,\u00ab,\u055f,;,:",
+        "5",
+        "!autoColumnOrder!8,\\,.,',#,),(,/,;,@,:,-,\\\",+,\\%,&",
+        "\u0967",
+        "1",
+        "6",
+        "9",
+        "\u096b",
+        "\u0966",
         null,
+        "!autoColumnOrder!9,\\,.,?,!,#,),(,/,;,',@,:,-,\\\",+,\\%,&",
         null,
-        "\u0589",
         null,
         null,
         null,
@@ -1842,6 +1879,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0964",
         null,
         null,
         null,
@@ -1860,6 +1898,11 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0964"
+    };
+
+    private static final String[] TEXTS_hi_ZZ = {
+        "hi_ZZ",
         null,
         null,
         null,
@@ -1871,6 +1914,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u20b9",
         null,
         null,
         null,
@@ -1879,38 +1923,14 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u055c,\u00a1"
-    };
-
-    private static final String[] TEXTS_is = {
-        "is",
-        "\u00e1,\u00e4,\u00e6,\u00e5,\u00e0,\u00e2,\u00e3,\u0101",
         null,
-        "\u00f3,\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
-        "\u00e9,\u00eb,\u00e8,\u00ea,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00fb,\u00f9,\u016b",
-        "\u00ed,\u00ef,\u00ee,\u00ec,\u012f,\u012b",
         null,
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm",
         null,
         null,
         null,
-        "\u00fd,\u00ff",
-        "\u00f0",
         null,
-        "\u00fe"
-    };
-
-    private static final String[] TEXTS_it = {
-        "it",
-        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101,\u00aa",
         null,
-        "\u00f2,\u00f3,\u00f4,\u00f6,\u00f5,\u0153,\u00f8,\u014d,\u00ba",
-        "\u00e8,\u00e9,\u00ea,\u00eb,\u0119,\u0117,\u0113",
-        "\u00f9,\u00fa,\u00fb,\u00fc,\u016b",
-        "\u00ec,\u00ed,\u00ee,\u00ef,\u012f,\u012b",
         null,
         null,
         null,
@@ -1989,41 +2009,55 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00e0",
         null,
+        "Prev",
         null,
         null,
-        "\u00e9",
-        "\u00e4",
+        "Pause",
         null,
-        "\u00fc",
+        "Done",
         null,
         null,
         null,
-        "\u00e8",
-        "\u00f6"
+        "Go",
+        null,
+        null,
+        "Send",
+        null,
+        null,
+        null,
+        "Search",
+        "Next",
+        null,
+        "Wait"
     };
 
-    private static final String[] TEXTS_iw = {
-        "iw",
+    private static final String[] TEXTS_hr = {
+        "hr",
         null,
-        "\u05d0\u05d1\u05d2",
         null,
         null,
         null,
         null,
         null,
-        "!text/double_rqm_9qm",
+        "!text/double_9qm_rqm",
+        "!text/single_9qm_rqm",
+        "\u010d,\u0107",
         null,
-        "!text/single_rqm_9qm",
         null,
-        "\u20aa",
         null,
+        "\u0161",
         null,
         null,
+        "\u017e",
         null,
         null,
+        "\u00e7",
+        "\u015b,\u00df",
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
         null,
+        "\u0111",
         null,
         null,
         null,
@@ -2036,14 +2070,38 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u017a,\u017c"
+    };
+
+    private static final String[] TEXTS_hu = {
+        "hu",
         null,
+        "\u00f3,\u00f6,\u0151",
+        "\u00e1",
+        "\u00fa,\u00fc,\u0171",
+        "\u00e9",
+        "\u00ed",
+        "!text/double_9qm_rqm",
+        "!text/single_9qm_rqm",
         null,
+        "\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
         null,
         null,
+        "\u00fb,\u00f9,\u016b",
+        "\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
         null,
+        "\u00ee,\u00ef,\u00ec,\u012f,\u012b",
         null,
         null,
         null,
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm"
+    };
+
+    private static final String[] TEXTS_hy = {
+        "hy",
+        "\u0531\u0532\u0533",
         null,
         null,
         null,
@@ -2064,27 +2122,12 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "}|{",
-        ">|<",
         null,
-        "\u00ab|\u00bb",
-        "\u2264|\u2265",
         null,
         null,
-        "{|}",
         null,
-        "]|[",
-        ")|(",
-        "\u203a|\u2039",
-        "<|>",
         null,
-        "\u2605",
-        "(|)",
         null,
-        "[|]",
-        "\u00bb|\u00ab",
-        "\u2039|\u203a",
-        "\u2265|\u2264",
         null,
         null,
         null,
@@ -2100,6 +2143,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "!text/morekeys_punctuation",
         null,
         null,
         null,
@@ -2113,9 +2157,11 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u055d",
         null,
         null,
         null,
+        "\u0589",
         null,
         null,
         null,
@@ -2125,39 +2171,30 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u055d",
         null,
         null,
+        "!autoColumnOrder!8,\\,\u055e,\u055c,.,\u055a,\u0559,?,!,\u055d,\u055b,\u058a,\u00bb,\u00ab,\u055f,;,:",
         null,
+        "\u055e,\u00bf",
         null,
         null,
         null,
+        "\u0589",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u00b1,\ufb29"
-    };
-
-    private static final String[] TEXTS_ka = {
-        "ka",
         null,
-        "\u10d0\u10d1\u10d2",
         null,
         null,
         null,
         null,
         null,
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm"
-    };
-
-    private static final String[] TEXTS_kk = {
-        "kk",
         null,
-        "\u0410\u0411\u0412",
         null,
         null,
         null,
@@ -2192,27 +2229,40 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u055c,\u00a1"
+    };
+
+    private static final String[] TEXTS_is = {
+        "is",
         null,
+        "\u00f3,\u00f6",
+        "\u00e1,\u00e4,\u00e6",
+        "\u00fa",
+        "\u00e9",
+        "\u00ed",
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
         null,
+        "\u00e5,\u00e0,\u00e2,\u00e3,\u0101",
+        "\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
         null,
         null,
+        "\u00fc,\u00fb,\u00f9,\u016b",
+        "\u00eb,\u00e8,\u00ea,\u0119,\u0117,\u0113",
         null,
-        "\u0451",
+        "\u00ef,\u00ee,\u00ec,\u012f,\u012b",
         null,
         null,
         null,
-        "\u044a",
         null,
         null,
-        "\u0438",
+        "\u00fd",
+        "\u00f0",
         null,
-        "\u0449",
-        "\u044d",
         null,
         null,
         null,
         null,
-        "\u044b",
         null,
         null,
         null,
@@ -2243,6 +2293,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00fe",
         null,
         null,
         null,
@@ -2253,16 +2304,13 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0493",
         null,
-        "\u0456",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u04e9",
         null,
         null,
         null,
@@ -2272,8 +2320,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u04a3",
-        "\u04af,\u04b1",
         null,
         null,
         null,
@@ -2283,19 +2329,11 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u04bb",
-        "\u049b",
         null,
         null,
         null,
         null,
-        "\u04d9"
-    };
-
-    private static final String[] TEXTS_km = {
-        "km",
         null,
-        "\u1780\u1781\u1782",
         null,
         null,
         null,
@@ -2305,13 +2343,28 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00ff"
+    };
+
+    private static final String[] TEXTS_it = {
+        "it",
         null,
+        "\u00f2",
+        "\u00e0",
+        "\u00f9",
+        "\u00e8,\u00e9",
+        "\u00ec",
         null,
         null,
         null,
+        "\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101,\u00aa",
+        "\u00f3,\u00f4,\u00f6,\u00f5,\u0153,\u00f8,\u014d,\u00ba",
         null,
         null,
+        "\u00fa,\u00fb,\u00fc,\u016b",
+        "\u00ea,\u00eb,\u0119,\u0117,\u0113",
         null,
+        "\u00ed,\u00ee,\u00ef,\u012f,\u012b",
         null,
         null,
         null,
@@ -2384,24 +2437,38 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00e4",
         null,
         null,
         null,
         null,
         null,
+        "\u00e0",
+        "\u00e9",
+        "\u00fc",
         null,
         null,
         null,
+        "\u00e8",
         null,
         null,
+        "\u00f6"
+    };
+
+    private static final String[] TEXTS_iw = {
+        "iw",
+        "\u05d0\u05d1\u05d2",
         null,
         null,
         null,
         null,
         null,
+        "!text/double_rqm_9qm",
+        "!text/single_rqm_9qm",
         null,
         null,
         null,
+        "\u20aa",
         null,
         null,
         null,
@@ -2426,13 +2493,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u17db,\u00a2,\u00a3,\u20ac,\u00a5,\u20b1"
-    };
-
-    private static final String[] TEXTS_kn = {
-        "kn",
         null,
-        "\u0c85\u0c86\u0c87",
         null,
         null,
         null,
@@ -2442,13 +2503,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u20b9"
-    };
-
-    private static final String[] TEXTS_ky = {
-        "ky",
         null,
-        "\u0410\u0411\u0412",
         null,
         null,
         null,
@@ -2465,15 +2520,30 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "[|]",
         null,
+        ")|(",
+        "<|>",
         null,
+        "\u00ab|\u00bb",
         null,
         null,
+        "(|)",
+        "{|}",
         null,
+        "\u2039|\u203a",
         null,
+        "\u2264|\u2265",
+        "\u2265|\u2264",
+        ">|<",
         null,
         null,
+        "\u00bb|\u00ab",
+        "]|[",
+        "\u203a|\u2039",
+        "\u2605",
         null,
+        "}|{",
         null,
         null,
         null,
@@ -2488,22 +2558,16 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0451",
         null,
         null,
         null,
-        "\u044a",
         null,
         null,
-        "\u0438",
         null,
-        "\u0449",
-        "\u044d",
         null,
         null,
         null,
         null,
-        "\u044b",
         null,
         null,
         null,
@@ -2529,11 +2593,24 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00b1,\ufb29"
+    };
+
+    private static final String[] TEXTS_ka = {
+        "ka",
+        "\u10d0\u10d1\u10d2",
         null,
         null,
         null,
         null,
         null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm"
+    };
+
+    private static final String[] TEXTS_kk = {
+        "kk",
+        "\u0410\u0411\u0412",
         null,
         null,
         null,
@@ -2553,7 +2630,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u04e9",
         null,
         null,
         null,
@@ -2563,14 +2639,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u04a3",
-        "\u04af"
-    };
-
-    private static final String[] TEXTS_lo = {
-        "lo",
         null,
-        "\u0e81\u0e82\u0e84",
         null,
         null,
         null,
@@ -2580,55 +2649,26 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u20ad"
-    };
-
-    private static final String[] TEXTS_lt = {
-        "lt",
-        "\u0105",
         null,
+        "\u0451",
         null,
-        "\u0117,\u0119",
-        "\u016b,\u0173",
-        "\u012f",
-        "\u010d",
-        "\u201d,\u201e,\u201c",
         null,
-        "\u2019,\u201a,\u2018",
-        "\u0161",
         null,
-        "\u017e"
-    };
-
-    private static final String[] TEXTS_lv = {
-        "lv",
-        "\u0101,\u00e0,\u00e1,\u00e2,\u00e3,\u00e4,\u00e5,\u00e6,\u0105",
         null,
-        "\u00f2,\u00f3,\u00f4,\u00f5,\u00f6,\u0153,\u0151,\u00f8",
-        "\u0113,\u0117,\u00e8,\u00e9,\u00ea,\u00eb,\u0119,\u011b",
-        "\u016b,\u0173,\u00f9,\u00fa,\u00fb,\u00fc,\u016f,\u0171",
-        "\u012b,\u012f,\u00ec,\u00ed,\u00ee,\u00ef,\u0131",
-        "\u010d,\u00e7,\u0107",
-        "!text/double_9qm_lqm",
-        "\u0146,\u00f1,\u0144",
-        "!text/single_9qm_lqm",
-        "\u0161,\u00df,\u015b,\u015f",
         null,
-        "\u017e,\u017c,\u017a",
-        "\u00fd,\u00ff",
-        "\u010f",
         null,
-        "\u0163,\u0165",
-        "\u0123,\u011f",
-        "\u013c,\u0142,\u013a,\u013e",
         null,
-        "\u0157,\u0159,\u0155",
         null,
+        "\u0449",
         null,
+        "\u044d",
+        "\u044a",
         null,
         null,
         null,
         null,
+        "\u0438",
+        "\u044b",
         null,
         null,
         null,
@@ -2654,21 +2694,13 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0137"
-    };
-
-    private static final String[] TEXTS_mk = {
-        "mk",
         null,
-        "\u0410\u0411\u0412",
         null,
         null,
         null,
         null,
         null,
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm",
         null,
         null,
         null,
@@ -2683,6 +2715,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u04af,\u04b1",
         null,
         null,
         null,
@@ -2691,18 +2724,22 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u04e9",
+        "\u0493",
         null,
         null,
         null,
         null,
         null,
+        "\u0456",
+        "\u04a3",
         null,
         null,
         null,
         null,
-        "\u0450",
         null,
         null,
+        "\u04bb",
         null,
         null,
         null,
@@ -2712,9 +2749,16 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u049b",
         null,
         null,
         null,
+        "\u04d9"
+    };
+
+    private static final String[] TEXTS_km = {
+        "km",
+        "\u1780\u1781\u1782",
         null,
         null,
         null,
@@ -2761,25 +2805,15 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u045d",
         null,
         null,
         null,
         null,
-        "\u0453",
         null,
         null,
-        "\u0455",
         null,
-        "\u045c",
         null,
-        "\u0437"
-    };
-
-    private static final String[] TEXTS_ml = {
-        "ml",
         null,
-        "\u0d05",
         null,
         null,
         null,
@@ -2789,13 +2823,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u20b9"
-    };
-
-    private static final String[] TEXTS_mn = {
-        "mn",
         null,
-        "\u0410\u0411\u0412",
         null,
         null,
         null,
@@ -2805,13 +2833,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u20ae"
-    };
-
-    private static final String[] TEXTS_mr = {
-        "mr",
         null,
-        "\u0915\u0916\u0917",
         null,
         null,
         null,
@@ -2821,7 +2843,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u20b9",
         null,
         null,
         null,
@@ -2831,35 +2852,9 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "6",
-        "8",
-        "\u096f",
-        "\u0969",
-        "9",
-        "5",
-        "\u096d",
         null,
-        "?\u0967\u0968\u0969",
-        "4",
-        "\u0966",
-        "\u096c",
-        "\u096b",
-        "\u0967",
-        "0",
-        "7",
-        "2",
-        "\u0968",
-        "3",
-        "\u096a",
         null,
-        "\u096e",
-        "1"
-    };
-
-    private static final String[] TEXTS_my = {
-        "my",
         null,
-        "\u1000\u1001\u1002",
         null,
         null,
         null,
@@ -2904,35 +2899,41 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u17db,\u00a2,\u00a3,\u20ac,\u00a5,\u20b1"
+    };
+
+    private static final String[] TEXTS_kn = {
+        "kn",
+        "\u0c85\u0c86\u0c87",
         null,
         null,
         null,
-        "\u104b",
         null,
         null,
         null,
         null,
-        "\u104a",
         null,
         null,
         null,
+        "\u20b9"
+    };
+
+    private static final String[] TEXTS_ky = {
+        "ky",
+        "\u0410\u0411\u0412",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u104a",
         null,
-        "\\",
         null,
         null,
         null,
         null,
-        "!autoColumnOrder!9,\u104a,.,?,!,#,),(,/,;,...,',@,:,-,\\\",+,\\%,&",
         null,
         null,
-        "\u104b",
         null,
         null,
         null,
@@ -2959,30 +2960,25 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0451",
         null,
         null,
         null,
-        "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\\\",+,\\%,&"
-    };
-
-    private static final String[] TEXTS_nb = {
-        "nb",
-        "\u00e5,\u00e6,\u00e4,\u00e0,\u00e1,\u00e2,\u00e3,\u0101",
         null,
-        "\u00f8,\u00f6,\u00f4,\u00f2,\u00f3,\u00f5,\u0153,\u014d",
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
-        "\u00fc,\u00fb,\u00f9,\u00fa,\u016b",
         null,
         null,
-        "!text/double_9qm_rqm",
         null,
-        "!text/single_9qm_rqm",
         null,
+        "\u0449",
         null,
+        "\u044d",
+        "\u044a",
         null,
         null,
         null,
         null,
+        "\u0438",
+        "\u044b",
         null,
         null,
         null,
@@ -3011,18 +3007,14 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00f8",
         null,
-        "\u00e5",
         null,
         null,
         null,
         null,
         null,
         null,
-        "\u00f6",
         null,
-        "\u00e6",
         null,
         null,
         null,
@@ -3030,15 +3022,10 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00e4"
-    };
-
-    private static final String[] TEXTS_ne = {
-        "ne",
         null,
-        "\u0915\u0916\u0917",
         null,
         null,
+        "\u04af",
         null,
         null,
         null,
@@ -3046,8 +3033,8 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0930\u0941.",
         null,
+        "\u04e9",
         null,
         null,
         null,
@@ -3055,53 +3042,72 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u04a3"
+    };
+
+    private static final String[] TEXTS_lo = {
+        "lo",
+        "\u0e81\u0e82\u0e84",
         null,
-        "6",
-        "8",
-        "\u096f",
-        "\u0969",
-        "9",
-        "5",
-        "\u096d",
-        "!autoColumnOrder!8,.,\\,',#,),(,/,;,@,:,-,\\\",+,\\%,&",
-        "?\u0967\u0968\u0969",
-        "4",
-        "\u0966",
-        "\u096c",
-        "\u096b",
-        "\u0967",
-        "0",
-        "7",
-        "2",
-        "\u0968",
-        "3",
-        "\u096a",
         null,
-        "\u096e",
-        "1",
         null,
         null,
         null,
-        "!autoColumnOrder!9,.,\\,?,!,#,),(,/,;,',@,:,-,\\\",+,\\%,&",
         null,
-        "\u0964",
         null,
         null,
         null,
         null,
+        "\u20ad"
+    };
+
+    private static final String[] TEXTS_lt = {
+        "lt",
         null,
         null,
+        "\u0105",
+        "\u016b,\u0173",
+        "\u0117,\u0119",
+        "\u012f",
+        "\u201d,\u201e,\u201c",
+        "\u2019,\u201a,\u2018",
+        "\u010d",
         null,
         null,
         null,
+        "\u0161",
         null,
         null,
+        "\u017e"
+    };
+
+    private static final String[] TEXTS_lv = {
+        "lv",
         null,
+        "\u014d",
+        "\u0101",
+        "\u016b",
+        "\u0113",
+        "\u012b",
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
+        "\u010d",
+        "\u00e0,\u00e1,\u00e2,\u00e3,\u00e4,\u00e5,\u00e6,\u0105",
+        "\u00f2,\u00f3,\u00f4,\u00f5,\u00f6,\u0153,\u0151,\u00f8",
         null,
+        "\u0161",
+        "\u0173,\u00f9,\u00fa,\u00fb,\u00fc,\u016f,\u0171",
+        "\u0117,\u00e8,\u00e9,\u00ea,\u00eb,\u0119,\u011b",
+        "\u017e",
+        "\u012f,\u00ec,\u00ed,\u00ee,\u00ef,\u0131",
+        "\u0146",
+        "\u00e7,\u0107",
+        "\u00df,\u015b,\u015f",
         null,
         null,
         null,
         null,
+        "\u0123",
         null,
         null,
         null,
@@ -3109,59 +3115,22 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0964"
-    };
-
-    private static final String[] TEXTS_nl = {
-        "nl",
-        "\u00e1,\u00e4,\u00e2,\u00e0,\u00e6,\u00e3,\u00e5,\u0101",
         null,
-        "\u00f3,\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
-        "\u00e9,\u00eb,\u00ea,\u00e8,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00fb,\u00f9,\u016b",
-        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b,\u0133",
         null,
-        "!text/double_9qm_rqm",
-        "\u00f1,\u0144",
-        "!text/single_9qm_rqm",
         null,
         null,
+        "\u017c,\u017a",
         null,
-        "\u0133"
-    };
-
-    private static final String[] TEXTS_pl = {
-        "pl",
-        "\u0105,\u00e1,\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
         null,
-        "\u00f3,\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
-        "\u0119,\u00e8,\u00e9,\u00ea,\u00eb,\u0117,\u0113",
         null,
         null,
-        "\u0107,\u00e7,\u010d",
-        "!text/double_9qm_rqm",
-        "\u0144,\u00f1",
-        "!text/single_9qm_rqm",
-        "\u015b,\u00df,\u0161",
         null,
-        "\u017c,\u017a,\u017e",
         null,
         null,
         null,
         null,
         null,
-        "\u0142"
-    };
-
-    private static final String[] TEXTS_pt = {
-        "pt",
-        "\u00e1,\u00e3,\u00e0,\u00e2,\u00e4,\u00e5,\u00e6,\u00aa",
         null,
-        "\u00f3,\u00f5,\u00f4,\u00f2,\u00f6,\u0153,\u00f8,\u014d,\u00ba",
-        "\u00e9,\u00ea,\u00e8,\u0119,\u0117,\u0113,\u00eb",
-        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ee,\u00ec,\u00ef,\u012f,\u012b",
-        "\u00e7,\u010d,\u0107",
         null,
         null,
         null,
@@ -3176,10 +3145,12 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00f1,\u0144",
         null,
         null,
         null,
         null,
+        "\u013c",
         null,
         null,
         null,
@@ -3197,6 +3168,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0157",
         null,
         null,
         null,
@@ -3228,6 +3200,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0137",
         null,
         null,
         null,
@@ -3240,58 +3213,45 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u011f",
         null,
         null,
         null,
+        "\u0159,\u0155",
         null,
         null,
+        "\u0142,\u013a,\u013e"
+    };
+
+    private static final String[] TEXTS_mk = {
+        "mk",
+        "\u0410\u0411\u0412",
         null,
         null,
         null,
         null,
-        "\u00e7"
-    };
-
-    private static final String[] TEXTS_rm = {
-        "rm",
         null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
         null,
-        "\u00f2,\u00f3,\u00f6,\u00f4,\u00f5,\u0153,\u00f8"
-    };
-
-    private static final String[] TEXTS_ro = {
-        "ro",
-        "\u0103,\u00e2,\u00e3,\u00e0,\u00e1,\u00e4,\u00e6,\u00e5,\u0101",
         null,
         null,
         null,
         null,
-        "\u00ee,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
         null,
-        "!text/double_9qm_rqm",
         null,
-        "!text/single_9qm_rqm",
-        "\u0219,\u00df,\u015b,\u0161",
         null,
         null,
         null,
         null,
         null,
-        "\u021b"
-    };
-
-    private static final String[] TEXTS_ru = {
-        "ru",
         null,
-        "\u0410\u0411\u0412",
         null,
         null,
         null,
         null,
         null,
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm",
         null,
         null,
         null,
@@ -3305,6 +3265,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0450",
         null,
         null,
         null,
@@ -3323,29 +3284,15 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0451",
         null,
         null,
         null,
-        "\u044a",
         null,
         null,
-        "\u0438",
-        null,
-        "\u0449",
-        "\u044d",
         null,
         null,
         null,
         null,
-        "\u044b"
-    };
-
-    private static final String[] TEXTS_si = {
-        "si",
-        null,
-        "\u0d85,\u0d86",
-        null,
         null,
         null,
         null,
@@ -3354,32 +3301,8 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0dbb\u0dd4"
-    };
-
-    private static final String[] TEXTS_sk = {
-        "sk",
-        "\u00e1,\u00e4,\u0101,\u00e0,\u00e2,\u00e3,\u00e5,\u00e6,\u0105",
         null,
-        "\u00f4,\u00f3,\u00f6,\u00f2,\u00f5,\u0153,\u0151,\u00f8",
-        "\u00e9,\u011b,\u0113,\u0117,\u00e8,\u00ea,\u00eb,\u0119",
-        "\u00fa,\u016f,\u00fc,\u016b,\u0173,\u00f9,\u00fb,\u0171",
-        "\u00ed,\u012b,\u012f,\u00ec,\u00ee,\u00ef,\u0131",
-        "\u010d,\u00e7,\u0107",
-        "!text/double_9qm_lqm",
-        "\u0148,\u0146,\u00f1,\u0144",
-        "!text/single_9qm_lqm",
-        "\u0161,\u00df,\u015b,\u015f",
         null,
-        "\u017e,\u017c,\u017a",
-        "\u00fd,\u00ff",
-        "\u010f",
-        "!text/single_raqm_laqm",
-        "\u0165,\u0163",
-        "\u0123,\u011f",
-        "\u013e,\u013a,\u013c,\u0142",
-        "!text/double_raqm_laqm",
-        "\u0155,\u0159,\u0157",
         null,
         null,
         null,
@@ -3408,54 +3331,47 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0455",
         null,
         null,
         null,
-        "\u0137"
-    };
-
-    private static final String[] TEXTS_sl = {
-        "sl",
         null,
         null,
         null,
+        "\u045c",
         null,
         null,
         null,
-        "\u010d,\u0107",
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm",
-        "\u0161",
+        "\u045d",
         null,
-        "\u017e",
+        "\u0453",
         null,
-        "\u0111",
-        "!text/single_raqm_laqm",
         null,
         null,
         null,
-        "!text/double_raqm_laqm"
+        "\u0437"
     };
 
-    private static final String[] TEXTS_sr_ZZ = {
-        "sr_ZZ",
+    private static final String[] TEXTS_ml = {
+        "ml",
+        "\u0d05",
         null,
         null,
         null,
-        "\u00e8",
         null,
-        "\u00ec",
-        "\u010d,\u0107,%",
         null,
         null,
         null,
-        "\u0161,%",
         null,
-        "\u017e,%",
         null,
-        "\u0111,%",
         null,
+        "\u20b9"
+    };
+
+    private static final String[] TEXTS_mn = {
+        "mn",
+        "\u0410\u0411\u0412",
         null,
         null,
         null,
@@ -3466,6 +3382,12 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u20ae"
+    };
+
+    private static final String[] TEXTS_mr = {
+        "mr",
+        "\u0915\u0916\u0917",
         null,
         null,
         null,
@@ -3476,6 +3398,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u20b9",
         null,
         null,
         null,
@@ -3489,9 +3412,35 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "8",
+        "7",
+        "2",
+        "\u096a",
+        "\u096c",
+        "\u096e",
+        "?\u0967\u0968\u0969",
+        "\u0969",
+        "0",
+        "3",
+        "\u0968",
         null,
+        "\u096d",
+        "\u096f",
+        "4",
         null,
+        "5",
         null,
+        "\u0967",
+        "1",
+        "6",
+        "9",
+        "\u096b",
+        "\u0966"
+    };
+
+    private static final String[] TEXTS_my = {
+        "my",
+        "\u1000\u1001\u1002",
         null,
         null,
         null,
@@ -3540,49 +3489,38 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "Tra\u017ei",
         null,
         null,
-        "\u010cekaj",
         null,
-        "Idi",
         null,
         null,
-        "Pauza",
-        "Sled",
         null,
-        "Preth",
         null,
-        "Gotov",
+        "\u104a",
         null,
-        "\u0160alji"
-    };
-
-    private static final String[] TEXTS_sr = {
-        "sr",
         null,
-        "\u0410\u0411\u0412",
         null,
+        "\u104b",
         null,
         null,
         null,
+        "\u104a",
         null,
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm",
         null,
         null,
         null,
         null,
         null,
-        "!text/single_raqm_laqm",
         null,
+        "!autoColumnOrder!9,\u104a,.,?,!,#,),(,/,;,...,',@,:,-,\\\",+,\\%,&",
         null,
         null,
-        "!text/double_raqm_laqm",
         null,
         null,
         null,
+        "\u104b",
+        "\\",
         null,
         null,
         null,
@@ -3601,7 +3539,6 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0450",
         null,
         null,
         null,
@@ -3611,8 +3548,19 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\\\",+,\\%,&"
+    };
+
+    private static final String[] TEXTS_nb = {
+        "nb",
         null,
+        "\u00f8,\u00f6,\u00f4,\u00f2,\u00f3,\u00f5,\u0153,\u014d",
+        "\u00e5,\u00e6,\u00e4,\u00e0,\u00e1,\u00e2,\u00e3,\u0101",
+        "\u00fc,\u00fb,\u00f9,\u00fa,\u016b",
+        "\u00e9,\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113",
         null,
+        "!text/double_9qm_rqm",
+        "!text/single_9qm_rqm",
         null,
         null,
         null,
@@ -3658,52 +3606,39 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00e6",
+        "\u00e5",
+        "\u00f8",
         null,
         null,
         null,
         null,
-        "\u045d",
         null,
+        "\u00f6",
         null,
         null,
         null,
-        "\u0452",
         null,
         null,
-        "\u0437",
         null,
-        "\u045b",
         null,
-        "\u0455"
+        "\u00e4"
     };
 
-    private static final String[] TEXTS_sv = {
-        "sv",
-        "\u00e4,\u00e5,\u00e6,\u00e1,\u00e0,\u00e2,\u0105,\u00e3",
+    private static final String[] TEXTS_ne = {
+        "ne",
+        "\u0915\u0916\u0917",
+        null,
         null,
-        "\u00f6,\u00f8,\u0153,\u00f3,\u00f2,\u00f4,\u00f5,\u014d",
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0119",
-        "\u00fc,\u00fa,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ec,\u00ee,\u00ef",
-        "\u00e7,\u0107,\u010d",
         null,
-        "\u0144,\u00f1,\u0148",
         null,
-        "\u015b,\u0161,\u015f,\u00df",
         null,
-        "\u017a,\u017e,\u017c",
-        "\u00fd,\u00ff",
-        "\u00f0,\u010f",
-        "!text/single_raqm_laqm",
-        "\u0165,\u00fe",
         null,
-        "\u0142",
-        "!text/double_raqm_laqm",
-        "\u0159",
         null,
         null,
         null,
         null,
+        "\u0930\u0941.",
         null,
         null,
         null,
@@ -3717,24 +3652,44 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "8",
+        "7",
+        "2",
+        "\u096a",
+        "\u096c",
+        "\u096e",
+        "?\u0967\u0968\u0969",
+        "\u0969",
+        "0",
+        "3",
+        "\u0968",
         null,
+        "\u096d",
+        "\u096f",
+        "4",
         null,
+        "5",
+        "!autoColumnOrder!8,.,\\,',#,),(,/,;,@,:,-,\\\",+,\\%,&",
+        "\u0967",
+        "1",
+        "6",
+        "9",
+        "\u096b",
+        "\u0966",
         null,
+        "!autoColumnOrder!9,.,\\,?,!,#,),(,/,;,',@,:,-,\\\",+,\\%,&",
         null,
         null,
         null,
-        "\u00f6",
         null,
-        "\u00e5",
         null,
         null,
         null,
         null,
         null,
+        "\u0964",
         null,
-        "\u00f8,\u0153",
         null,
-        "\u00e4",
         null,
         null,
         null,
@@ -3742,51 +3697,60 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u00e6"
-    };
-
-    private static final String[] TEXTS_sw = {
-        "sw",
-        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
         null,
-        "\u00f4,\u00f6,\u00f2,\u00f3,\u0153,\u00f8,\u014d,\u00f5",
-        "\u00e8,\u00e9,\u00ea,\u00eb,\u0113",
-        "\u00fb,\u00fc,\u00f9,\u00fa,\u016b",
-        "\u00ee,\u00ef,\u00ed,\u012b,\u00ec",
-        "\u00e7",
         null,
-        "\u00f1",
         null,
-        "\u00df",
         null,
         null,
         null,
         null,
         null,
         null,
-        "g\\'"
+        "\u0964"
     };
 
-    private static final String[] TEXTS_ta_IN = {
-        "ta_IN",
+    private static final String[] TEXTS_nl = {
+        "nl",
         null,
-        "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd",
+        "\u00f3,\u00f6",
+        "\u00e1,\u00e4,\u00e2,\u00e0",
+        "\u00fa,\u00fc",
+        "\u00e9,\u00eb,\u00ea,\u00e8",
+        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b,\u0133",
+        "!text/double_9qm_rqm",
+        "!text/single_9qm_rqm",
         null,
+        "\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
         null,
         null,
+        "\u00fb,\u00f9,\u016b",
+        "\u0119,\u0117,\u0113"
+    };
+
+    private static final String[] TEXTS_pl = {
+        "pl",
         null,
+        "\u00f3",
+        "\u0105",
         null,
+        "\u0119",
         null,
+        "!text/double_9qm_rqm",
+        "!text/single_9qm_rqm",
+        "\u0107",
+        "\u00e1,\u00e0,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00f6,\u00f4,\u00f2,\u00f5,\u0153,\u00f8,\u014d",
         null,
+        "\u015b",
         null,
+        "\u00e8,\u00e9,\u00ea,\u00eb,\u0117,\u0113",
+        "\u017c,\u017a",
         null,
-        "\u0bf9"
-    };
-
-    private static final String[] TEXTS_ta_LK = {
-        "ta_LK",
+        "\u0144",
+        "\u00e7,\u010d",
+        "\u00df,\u0161",
         null,
-        "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd",
         null,
         null,
         null,
@@ -3796,35 +3760,19 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0dbb\u0dd4"
-    };
-
-    private static final String[] TEXTS_ta_SG = {
-        "ta_SG",
         null,
-        "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
-    };
-
-    private static final String[] TEXTS_te = {
-        "te",
         null,
-        "\u0c05\u0c06\u0c07",
         null,
         null,
         null,
         null,
+        "\u017e",
         null,
         null,
         null,
         null,
         null,
-        "\u20b9"
-    };
-
-    private static final String[] TEXTS_th = {
-        "th",
         null,
-        "\u0e01\u0e02\u0e04",
         null,
         null,
         null,
@@ -3834,47 +3782,45 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0e3f"
-    };
-
-    private static final String[] TEXTS_tl = {
-        "tl",
-        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
         null,
-        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
-        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
-        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
-        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
         null,
-        "\u00f1,\u0144"
-    };
-
-    private static final String[] TEXTS_uk = {
-        "uk",
         null,
-        "\u0410\u0411\u0412",
         null,
         null,
         null,
         null,
         null,
-        "!text/double_9qm_lqm",
         null,
-        "!text/single_9qm_lqm",
         null,
-        "\u20b4",
+        "\u00f1",
         null,
         null,
         null,
         null,
+        "\u0142"
+    };
+
+    private static final String[] TEXTS_pt = {
+        "pt",
         null,
+        "\u00f3,\u00f5,\u00f4",
+        "\u00e1,\u00e3,\u00e0,\u00e2",
+        "\u00fa,\u00fc",
+        "\u00e9,\u00ea",
+        "\u00ed",
         null,
         null,
+        "\u00e7",
+        "\u00e4,\u00e5,\u00e6,\u00aa",
+        "\u00f2,\u00f6,\u0153,\u00f8,\u014d,\u00ba",
         null,
         null,
+        "\u00f9,\u00fb,\u016b",
+        "\u00e8,\u0119,\u0117,\u0113,\u00eb",
         null,
+        "\u00ee,\u00ec,\u00ef,\u012f,\u012b",
         null,
+        "\u010d,\u0107",
         null,
         null,
         null,
@@ -3897,18 +3843,13 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u044a",
         null,
         null,
-        "\u0438",
         null,
-        "\u0449",
-        "\u0454",
         null,
         null,
         null,
         null,
-        "\u0456",
         null,
         null,
         null,
@@ -3949,90 +3890,189 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0491",
+        "\u00e7"
+    };
+
+    private static final String[] TEXTS_rm = {
+        "rm",
         null,
-        "\u0457"
+        "\u00f2,\u00f3,\u00f6,\u00f4,\u00f5,\u0153,\u00f8"
     };
 
-    private static final String[] TEXTS_uz = {
-        "uz",
-        "\u00e2,\u00e4,\u00e1",
+    private static final String[] TEXTS_ro = {
+        "ro",
         null,
-        "\u00f6,\u00f4,\u0153,\u00f2,\u00f3,\u00f5,\u00f8,\u014d",
-        "\u0259,\u00e9",
-        "\u00fc,\u00fb,\u00f9,\u00fa,\u016b",
-        "\u0131,\u00ee,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
         null,
-        "\u0148,\u00f1",
+        "\u0103,\u00e2",
         null,
-        "\u015f,\u00df,\u015b,\u0161",
         null,
-        "\u017e",
-        "\u00fd",
+        "\u00ee",
+        "!text/double_9qm_rqm",
+        "!text/single_9qm_rqm",
         null,
+        "\u00e3,\u00e0,\u00e1,\u00e4,\u00e6,\u00e5,\u0101",
         null,
         null,
-        "\u011f"
+        "\u0219",
+        null,
+        null,
+        null,
+        "\u00ef,\u00ec,\u00ed,\u012f,\u012b",
+        null,
+        null,
+        "\u00df,\u015b,\u0161",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u021b"
     };
 
-    private static final String[] TEXTS_vi = {
-        "vi",
-        "\u00e0,\u00e1,\u1ea3,\u00e3,\u1ea1,\u0103,\u1eb1,\u1eaf,\u1eb3,\u1eb5,\u1eb7,\u00e2,\u1ea7,\u1ea5,\u1ea9,\u1eab,\u1ead",
+    private static final String[] TEXTS_ru = {
+        "ru",
+        "\u0410\u0411\u0412",
         null,
-        "\u00f2,\u00f3,\u1ecf,\u00f5,\u1ecd,\u00f4,\u1ed3,\u1ed1,\u1ed5,\u1ed7,\u1ed9,\u01a1,\u1edd,\u1edb,\u1edf,\u1ee1,\u1ee3",
-        "\u00e8,\u00e9,\u1ebb,\u1ebd,\u1eb9,\u00ea,\u1ec1,\u1ebf,\u1ec3,\u1ec5,\u1ec7",
-        "\u00f9,\u00fa,\u1ee7,\u0169,\u1ee5,\u01b0,\u1eeb,\u1ee9,\u1eed,\u1eef,\u1ef1",
-        "\u00ec,\u00ed,\u1ec9,\u0129,\u1ecb",
         null,
         null,
         null,
         null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
+        null,
         null,
-        "\u20ab",
         null,
-        "\u1ef3,\u00fd,\u1ef7,\u1ef9,\u1ef5",
-        "\u0111"
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0451",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0449",
+        null,
+        "\u044d",
+        "\u044a",
+        null,
+        null,
+        null,
+        null,
+        "\u0438",
+        "\u044b"
     };
 
-    private static final String[] TEXTS_zu = {
-        "zu",
-        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+    private static final String[] TEXTS_si = {
+        "si",
+        "\u0d85,\u0d86",
+        null,
+        null,
+        null,
+        null,
         null,
-        "\u00f3,\u00f4,\u00f6,\u00f2,\u0153,\u00f8,\u014d,\u00f5",
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0113",
-        "\u00fa,\u00fb,\u00fc,\u00f9,\u016b",
-        "\u00ed,\u00ee,\u00ef,\u012b,\u00ec",
-        "\u00e7",
         null,
-        "\u00f1",
         null,
-        "\u00df"
+        null,
+        null,
+        null,
+        "\u0dbb\u0dd4"
     };
 
-    private static final String[] TEXTS_zz = {
-        "zz",
-        "\u00e0,\u00e1,\u00e2,\u00e3,\u00e4,\u00e5,\u00e6,\u0101,\u0103,\u0105,\u00aa",
+    private static final String[] TEXTS_sk = {
+        "sk",
         null,
-        "\u00f2,\u00f3,\u00f4,\u00f5,\u00f6,\u00f8,\u014d,\u014f,\u0151,\u0153,\u00ba",
-        "\u00e8,\u00e9,\u00ea,\u00eb,\u0113,\u0115,\u0117,\u0119,\u011b",
-        "\u00f9,\u00fa,\u00fb,\u00fc,\u0169,\u016b,\u016d,\u016f,\u0171,\u0173",
-        "\u00ec,\u00ed,\u00ee,\u00ef,\u0129,\u012b,\u012d,\u012f,\u0131,\u0133",
-        "\u00e7,\u0107,\u0109,\u010b,\u010d",
+        "\u00f4,\u00f3",
+        "\u00e1,\u00e4",
+        "\u00fa",
+        "\u00e9",
+        "\u00ed",
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
+        "\u010d",
+        "\u0101,\u00e0,\u00e2,\u00e3,\u00e5,\u00e6,\u0105",
+        "\u00f6,\u00f2,\u00f5,\u0153,\u0151,\u00f8",
+        null,
+        "\u0161",
+        "\u016f,\u00fc,\u016b,\u0173,\u00f9,\u00fb,\u0171",
+        "\u011b,\u0113,\u0117,\u00e8,\u00ea,\u00eb,\u0119",
+        "\u017e",
+        "\u012b,\u012f,\u00ec,\u00ee,\u00ef,\u0131",
+        "\u0148",
+        "\u00e7,\u0107",
+        "\u00df,\u015b,\u015f",
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
+        "\u00fd",
+        "\u010f",
         null,
-        "\u00f1,\u0144,\u0146,\u0148,\u0149,\u014b",
         null,
-        "\u00df,\u015b,\u015d,\u015f,\u0161,\u017f",
         null,
-        "\u017a,\u017c,\u017e",
-        "\u00fd,\u0177,\u00ff,\u0133",
-        "\u010f,\u0111,\u00f0",
         null,
-        "\u00fe,\u0163,\u0165,\u0167",
-        "\u011d,\u011f,\u0121,\u0123",
-        "\u013a,\u013c,\u013e,\u0140,\u0142",
         null,
-        "\u0155,\u0157,\u0159",
         null,
         null,
         null,
@@ -4040,6 +4080,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u017c,\u017a",
         null,
         null,
         null,
@@ -4062,13 +4103,15 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0165",
         null,
         null,
-        "\u0137,\u0138",
+        "\u0146,\u00f1,\u0144",
         null,
         null,
         null,
         null,
+        "\u013e,\u013a",
         null,
         null,
         null,
@@ -4086,6 +4129,7 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u0155",
         null,
         null,
         null,
@@ -4109,11 +4153,10 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
+        "\u00ff",
         null,
-        "\u0125",
         null,
         null,
-        "\u0175",
         null,
         null,
         null,
@@ -4134,401 +4177,1181 @@ public final class KeyboardTextsTable {
         null,
         null,
         null,
-        "\u0135"
+        null,
+        "\u0159,\u0157",
+        null,
+        null,
+        "\u013c,\u0142",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0163"
     };
 
-    private static final String[] TEXTS_DEFAULT = {
-        "DEFAULT",
-        EMPTY,
-        "ABC",
-        EMPTY,
-        EMPTY,
-        EMPTY,
-        EMPTY,
-        EMPTY,
-        "!text/double_lqm_rqm",
-        EMPTY,
-        "!text/single_lqm_rqm",
-        EMPTY,
-        "$",
-        EMPTY,
-        EMPTY,
-        EMPTY,
-        "!text/single_laqm_raqm",
-        EMPTY,
-        EMPTY,
-        EMPTY,
-        "!text/double_laqm_raqm",
-        EMPTY,
-        EMPTY,
-        EMPTY,
-        "9",
-        "3",
-        EMPTY,
-        EMPTY,
-        "7",
-        "!text/morekeys_tablet_punctuation",
-        "?123",
+    private static final String[] TEXTS_sl = {
+        "sl",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
+        "\u010d",
+        null,
+        null,
+        null,
+        "\u0161",
+        null,
+        null,
+        "\u017e",
+        null,
+        null,
+        "\u0107",
+        null,
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm"
+    };
+
+    private static final String[] TEXTS_sr = {
+        "sr",
+        "\u0410\u0411\u0412",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0450",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0437",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u045b",
+        null,
+        null,
+        null,
+        null,
+        "\u045d",
+        null,
+        "\u0452",
+        null,
+        null,
+        null,
+        null,
+        "\u0455"
+    };
+
+    private static final String[] TEXTS_sr_ZZ = {
+        "sr_ZZ",
+        null,
+        null,
+        null,
+        null,
+        "\u00e8",
+        "\u00ec",
+        null,
+        null,
+        "\u010d,\u0107,%",
+        null,
+        null,
+        null,
+        "\u0161,%",
+        null,
+        null,
+        "\u017e,%",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0111,%",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "Preth",
+        null,
+        null,
+        "Pauza",
+        null,
+        "Gotov",
+        null,
+        null,
+        null,
+        "Idi",
+        null,
+        null,
+        "\u0160alji",
+        null,
+        null,
+        null,
+        "Tra\u017ei",
+        "Sled",
+        null,
+        "\u010cekaj"
+    };
+
+    private static final String[] TEXTS_sv = {
+        "sv",
+        null,
+        "\u00f6",
+        "\u00e4,\u00e5",
+        null,
+        "\u00e9",
+        null,
+        null,
+        null,
+        null,
+        "\u00e6,\u00e1,\u00e0,\u00e2,\u0105,\u00e3",
+        "\u00f8,\u0153,\u00f3,\u00f2,\u00f4,\u00f5,\u014d",
+        null,
+        null,
+        null,
+        "\u00e8,\u00ea,\u00eb,\u0119",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "!text/double_raqm_laqm",
+        "!text/single_raqm_laqm",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u00e4",
+        "\u00e5",
+        "\u00f6",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u00f8,\u0153",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u00e6"
+    };
+
+    private static final String[] TEXTS_sw = {
+        "sw",
+        null,
+        "\u00f4,\u00f6,\u00f2,\u00f3,\u0153,\u00f8,\u014d,\u00f5",
+        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00fb,\u00fc,\u00f9,\u00fa,\u016b",
+        "\u00e8,\u00e9,\u00ea,\u00eb,\u0113",
+        "\u00ee,\u00ef,\u00ed,\u012b,\u00ec",
+        null,
+        null,
+        "\u00e7",
+        null,
+        null,
+        null,
+        "\u00df",
+        null,
+        null,
+        null,
+        null,
+        "\u00f1",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "g\\'"
+    };
+
+    private static final String[] TEXTS_ta_IN = {
+        "ta_IN",
+        "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0bf9"
+    };
+
+    private static final String[] TEXTS_ta_LK = {
+        "ta_LK",
+        "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0dbb\u0dd4"
+    };
+
+    private static final String[] TEXTS_ta_SG = {
+        "ta_SG",
+        "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
+    };
+
+    private static final String[] TEXTS_te = {
+        "te",
+        "\u0c05\u0c06\u0c07",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u20b9"
+    };
+
+    private static final String[] TEXTS_th = {
+        "th",
+        "\u0e01\u0e02\u0e04",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0e3f"
+    };
+
+    private static final String[] TEXTS_tl = {
+        "tl",
+        null,
+        "\u00f3,\u00f2,\u00f6,\u00f4,\u00f5,\u00f8,\u0153,\u014d,\u00ba",
+        "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa",
+        "\u00fa,\u00fc,\u00f9,\u00fb,\u016b",
+        "\u00e9,\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113",
+        "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b",
+        null,
+        null,
+        "\u00e7,\u0107,\u010d",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u00f1,\u0144"
+    };
+
+    private static final String[] TEXTS_tr = {
+        "tr",
+        null,
+        "\u00f6",
+        null,
+        "\u00fc",
+        null,
+        "\u0131",
+        null,
+        null,
+        "\u00e7",
+        null,
+        "\u00f4,\u0153,\u00f2,\u00f3,\u00f5,\u00f8,\u014d",
+        null,
+        "\u015f",
+        "\u00fb,\u00f9,\u00fa,\u016b",
+        null,
+        null,
+        "\u00ee,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
+        null,
+        "\u0107,\u010d",
+        "\u00df,\u015b,\u0161",
+        null,
+        null,
+        null,
+        null,
+        "\u011f"
+    };
+
+    private static final String[] TEXTS_uk = {
+        "uk",
+        "\u0410\u0411\u0412",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "!text/double_9qm_lqm",
+        "!text/single_9qm_lqm",
+        null,
+        null,
+        null,
+        "\u20b4",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0449",
+        null,
+        "\u0454",
+        "\u044a",
+        null,
+        null,
+        null,
+        null,
+        "\u0438",
+        "\u0456",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0491",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0457"
+    };
+
+    private static final String[] TEXTS_uz = {
+        "uz",
+        null,
+        "\u00f6,\u00f4,\u0153,\u00f2,\u00f3,\u00f5,\u00f8,\u014d",
+        "\u00e2,\u00e4,\u00e1",
+        "\u00fc,\u00fb,\u00f9,\u00fa,\u016b",
+        "\u0259,\u00e9",
+        "\u0131,\u00ee,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
+        null,
+        null,
+        "\u00e7,\u0107,\u010d",
+        null,
+        null,
+        null,
+        "\u015f,\u00df,\u015b,\u0161",
+        null,
+        null,
+        "\u017e",
+        null,
+        "\u0148,\u00f1",
+        null,
+        null,
+        null,
+        null,
+        "\u00fd",
+        null,
+        "\u011f"
+    };
+
+    private static final String[] TEXTS_vi = {
+        "vi",
+        null,
+        "\u00f2,\u00f3,\u1ecf,\u00f5,\u1ecd,\u00f4,\u1ed3,\u1ed1,\u1ed5,\u1ed7,\u1ed9,\u01a1,\u1edd,\u1edb,\u1edf,\u1ee1,\u1ee3",
+        "\u00e0,\u00e1,\u1ea3,\u00e3,\u1ea1,\u0103,\u1eb1,\u1eaf,\u1eb3,\u1eb5,\u1eb7,\u00e2,\u1ea7,\u1ea5,\u1ea9,\u1eab,\u1ead",
+        "\u00f9,\u00fa,\u1ee7,\u0169,\u1ee5,\u01b0,\u1eeb,\u1ee9,\u1eed,\u1eef,\u1ef1",
+        "\u00e8,\u00e9,\u1ebb,\u1ebd,\u1eb9,\u00ea,\u1ec1,\u1ebf,\u1ec3,\u1ec5,\u1ec7",
+        "\u00ec,\u00ed,\u1ec9,\u0129,\u1ecb",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u20ab",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u1ef3,\u00fd,\u1ef7,\u1ef9,\u1ef5",
+        "\u0111"
+    };
+
+    private static final String[] TEXTS_zu = {
+        "zu",
+        null,
+        "\u00f3,\u00f4,\u00f6,\u00f2,\u0153,\u00f8,\u014d,\u00f5",
+        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00fa,\u00fb,\u00fc,\u00f9,\u016b",
+        "\u00e9,\u00e8,\u00ea,\u00eb,\u0113",
+        "\u00ed,\u00ee,\u00ef,\u012b,\u00ec",
+        null,
+        null,
+        "\u00e7",
+        null,
+        null,
+        null,
+        "\u00df",
+        null,
+        null,
+        null,
+        null,
+        "\u00f1"
+    };
+
+    private static final String[] TEXTS_zz = {
+        "zz",
+        null,
+        "\u00f2,\u00f3,\u00f4,\u00f5,\u00f6,\u00f8,\u014d,\u014f,\u0151,\u0153,\u00ba",
+        "\u00e0,\u00e1,\u00e2,\u00e3,\u00e4,\u00e5,\u00e6,\u0101,\u0103,\u0105,\u00aa",
+        "\u00f9,\u00fa,\u00fb,\u00fc,\u0169,\u016b,\u016d,\u016f,\u0171,\u0173",
+        "\u00e8,\u00e9,\u00ea,\u00eb,\u0113,\u0115,\u0117,\u0119,\u011b",
+        "\u00ec,\u00ed,\u00ee,\u00ef,\u0129,\u012b,\u012d,\u012f,\u0131,\u0133",
+        null,
+        null,
+        "\u00e7,\u0107,\u0109,\u010b,\u010d",
+        null,
+        null,
+        null,
+        "\u00df,\u015b,\u015d,\u015f,\u0161,\u017f",
+        null,
+        null,
+        "\u017a,\u017c,\u017e",
+        null,
+        "\u00f1,\u0144,\u0146,\u0148,\u0149,\u014b",
+        null,
+        null,
+        null,
+        null,
+        "\u00fd,\u0177,\u00ff,\u0133",
+        "\u010f,\u0111,\u00f0",
+        "\u011d,\u011f,\u0121,\u0123",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u00fe,\u0163,\u0165,\u0167",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u013a,\u013c,\u013e,\u0140,\u0142",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0155,\u0157,\u0159",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0125",
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0137,\u0138",
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        "\u0175",
+        null,
+        null,
+        "\u0135"
+    };
+
+    private static final String[] TEXTS_DEFAULT = {
+        "DEFAULT",
+        "ABC",
         EMPTY,
-        "0",
-        "6",
-        "5",
-        "1",
         EMPTY,
         EMPTY,
         EMPTY,
-        "2",
         EMPTY,
-        "4",
+        "!text/double_lqm_rqm",
+        "!text/single_lqm_rqm",
+        EMPTY,
+        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
+        "\u00f3,\u00f4,\u00f6,\u00f2,\u0153,\u00f8,\u014d,\u00f5",
+        "$",
+        EMPTY,
+        "\u00fa,\u00fb,\u00fc,\u00f9,\u016b",
+        "\u00e9,\u00e8,\u00ea,\u00eb,\u0113",
+        EMPTY,
+        "\u00ed,\u00ee,\u00ef,\u012b,\u00ec",
+        EMPTY,
+        "\u00e7",
+        "\u00df",
+        "!text/double_laqm_raqm",
+        "!text/single_laqm_raqm",
+        EMPTY,
+        EMPTY,
+        EMPTY,
+        EMPTY,
         EMPTY,
+        EMPTY,
+        "4",
+        "6",
         "8",
+        "?123",
+        "3",
         EMPTY,
-        "\u00f6",
         EMPTY,
-        "\u00e5",
+        "2",
+        null,
+        "7",
+        "9",
+        EMPTY,
+        EMPTY,
+        EMPTY,
+        "!text/morekeys_tablet_punctuation",
+        "1",
+        EMPTY,
+        EMPTY,
+        EMPTY,
+        "5",
+        "0",
+        EMPTY,
         "!text/morekeys_punctuation",
         EMPTY,
-        ".",
+        EMPTY,
+        "\u00e4",
+        "\u00e5",
+        "\u00f6",
+        ",",
         EMPTY,
         EMPTY,
         EMPTY,
+        ".",
         "\u00f8",
-        ",",
-        "\u00e4",
+        "\u00f1",
+        "[",
+        EMPTY,
+        ")",
+        "<",
         EMPTY,
-        "\u00bf",
-        "}",
-        ">",
-        ",",
         "\u00ab",
-        "\u2264",
         "\u00e6",
-        EMPTY,
+        ",",
+        "(",
         "{",
+        "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
+        "\u2039",
+        "\u00bf",
+        "\u2264",
+        "\u2265",
+        ">",
+        ".",
         EMPTY,
+        "\u00bb",
         "]",
-        ")",
         "\u203a",
-        "<",
-        "/,?,!,\u203d,\u2026,_,\\\\,|,=",
         "\u2020,\u2021,\u2605",
-        "(",
-        ".",
-        "[",
-        "\u00bb",
-        "\u2039",
-        "\u2265",
-        "\u266a,\u2665,\u2660,\u2666,\u2663",
+        EMPTY,
+        "}",
         "!fixedColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys",
-        "\u2030",
-        "?",
+        "\u00f1",
         EMPTY,
         EMPTY,
         EMPTY,
         EMPTY,
-        "!fixedColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys",
+        "?",
+        "%",
+        EMPTY,
         EMPTY,
         EMPTY,
-        "%",
         EMPTY,
         ";",
+        "\u2030",
         EMPTY,
-        "\u00f1",
+        "!fixedColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys",
+        "\u266a,\u2665,\u2660,\u2666,\u2663",
         EMPTY,
         EMPTY,
         EMPTY,
+        "!string/label_previous_key",
+        "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
+        null,
+        "!string/label_pause_key",
         EMPTY,
+        "!string/label_done_key",
         EMPTY,
-        "!string/label_search_key",
         EMPTY,
         EMPTY,
-        "!string/label_wait_key",
-        "/,?,!,\u203d,\u2026,_,\\\\,|,=",
         "!string/label_go_key",
         EMPTY,
         EMPTY,
-        "!string/label_pause_key",
-        "!string/label_next_key",
-        EMPTY,
-        "!string/label_previous_key",
+        "!string/label_send_key",
         EMPTY,
-        "!string/label_done_key",
         EMPTY,
-        "!string/label_send_key",
         EMPTY,
+        "!string/label_search_key",
+        "!string/label_next_key",
         EMPTY,
+        "!string/label_wait_key",
         "w",
-        "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote",
         "\u00a1,\u203d",
         EMPTY,
-        EMPTY,
+        null,
         "x",
-        EMPTY,
         "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote",
-        "y",
-        EMPTY,
-        EMPTY,
         "q",
+        null,
         EMPTY,
         "\u00b1",
+        null,
+        EMPTY,
+        EMPTY,
+        "y",
         "\u00a2,\u00a3,\u20ac,\u00a5,\u20b1",
+        "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote",
         EMPTY,
+        null,
+        "\u2076,\u2086",
+        "~ [ <",
+        "<",
         EMPTY,
-        "\u00fa,\u00fb,\u00fc,\u00f9,\u016b",
-        "!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote",
-        "\u201c,\u201d,\u201e",
         EMPTY,
-        "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket",
-        "(",
-        "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
-        "!fixedColumnOrder!4,!needsDividers!,!icon/action_switch_language|!code/action_switch_language,!icon/action_text_edit|!code/action_text_edit,!icon/action_clipboard_history|!code/action_clipboard_history,!icon/action_emoji|!code/action_emoji,!icon/action_undo|!code/action_undo,!icon/action_redo|!code/action_redo",
-        ")",
-        "!icon/action_redo|!code/action_redo",
-        "\"",
-        "\u00df",
-        ";",
-        "\u2019,\u201a,\u2018",
+        "$,\u20ac,\u00a3,\u00a5,\u00a2",
+        "\u201c,\u201e,\u201d",
+        "\u2074,\u2084",
+        "\u2018,\u2019,\u201a",
+        EMPTY,
+        EMPTY,
+        "*",
+        "!icon/action_copy|!code/action_copy",
+        "PM",
+        EMPTY,
         "@",
         EMPTY,
-        "\u2076,\u2086",
-        "|",
-        "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
-        "!icon/settings_key|!code/key_settings",
         EMPTY,
-        "1",
-        "^",
         EMPTY,
+        EMPTY,
+        "\u2018,\u201a,\u2019",
+        EMPTY,
+        "3",
+        null,
+        "]",
+        "!fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm",
+        "\u201d,\u201e,\u201c",
+        "(,[,{,<",
+        "1",
         "),],},>",
         "\u201a,\u2018,\u2019",
+        "[",
+        "&",
+        EMPTY,
+        "AM",
+        "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket",
+        "-,\u2013,\u2014,_",
+        "!",
+        EMPTY,
+        "7",
+        "!icon/action_redo|!code/action_redo",
+        "\u00b9,\u2081,\u00bd,\u2153,\u00bc,\u215b",
+        "\u2019,\u201a,\u2018",
+        "^",
+        "!fixedColumnOrder!4,!needsDividers!,!icon/action_switch_language|!code/action_switch_language,!icon/action_text_edit|!code/action_text_edit,!icon/action_clipboard_history|!code/action_clipboard_history,!icon/action_emoji|!code/action_emoji,!icon/action_undo|!code/action_undo,!icon/action_redo|!code/action_redo",
         EMPTY,
-        "!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
-        "\uff0a\uff03",
-        "3",
-        "#",
         EMPTY,
         EMPTY,
-        "!icon/shortcut_key|!code/key_shortcut",
-        "}",
-        "=",
-        "4",
+        "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket",
+        "\u201c,\u201d,\u201e",
         EMPTY,
-        "!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote",
-        "123",
         EMPTY,
+        "6",
+        "!icon/action_undo|!code/action_undo",
+        EMPTY,
+        "\u2077,\u2087,\u215e",
+        "\u2078,\u2088",
+        "9",
+        "\u2079,\u2089",
         "*",
         EMPTY,
         EMPTY,
-        "\u00b9,\u2081,\u00bd,\u2153,\u00bc,\u215b",
-        "\u00b3,\u2083,\u00be,\u215c",
-        "\u201d,\u201e,\u201c",
-        "!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote",
-        "\u2075,\u2085,\u215d",
+        "@",
         EMPTY,
-        ".com",
+        ";",
+        EMPTY,
+        "8",
         "\\%",
+        EMPTY,
+        "'",
+        "\uff0a\uff03",
         "?,/",
-        ">",
-        "5",
-        "!icon/action_paste|!code/action_paste",
+        "\u2070,\u2080,\u207f,\u2205",
+        "$",
         "&,|",
-        "\u201c,\u201e,\u201d",
-        "!fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm",
-        EMPTY,
-        "= \\\\ <",
+        "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
         EMPTY,
+        ".com",
+        "!icon/action_paste|!code/action_paste",
+        "$,\u00a2,\u20ac,\u00a3,\u00a5,\u20b1",
+        "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
         "#",
+        "!icon/settings_key|!code/key_settings",
         EMPTY,
-        "PM",
-        EMPTY,
-        "\u201e,\u201c,\u201d",
-        "\\%",
-        EMPTY,
+        "= \\\\ <",
         EMPTY,
         EMPTY,
-        "]",
         EMPTY,
-        "-,\u2013,\u2014,_",
-        "<",
-        "\u00e7",
-        "$,\u20ac,\u00a3,\u00a5,\u00a2",
+        "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
+        "!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
         EMPTY,
-        "\u2079,\u2089",
-        "2",
-        "!icon/action_undo|!code/action_undo",
+        ":",
         EMPTY,
-        "0",
-        "!hasLabels!,.net,.org,.gov,.edu",
-        "\u2078,\u2088",
-        "\u2074,\u2084",
-        "+,=",
-        "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
-        "$",
+        "\u201e,\u201c,\u201d",
+        "!icon/action_cut|!code/action_cut",
         "!hasLabels!,!text/label_next_key|!code/key_action_next",
+        "!icon/shortcut_key|!code/key_shortcut",
+        "\\%",
         EMPTY,
         EMPTY,
-        "%",
-        "!",
-        EMPTY,
-        "(,[,{,<",
         EMPTY,
-        "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket",
+        "=",
         "!",
-        "!icon/action_cut|!code/action_cut",
-        "\u2018,\u201a,\u2019",
-        "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
-        "\\\\",
-        "*",
-        "7",
-        EMPTY,
-        "\u00f3,\u00f4,\u00f6,\u00f2,\u0153,\u00f8,\u014d,\u00f5",
-        "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101",
-        "$,\u00a2,\u20ac,\u00a3,\u00a5,\u20b1",
-        "~ [ <",
-        "@",
-        "9",
-        "6",
-        "\u2070,\u2080,\u207f,\u2205",
-        EMPTY,
-        "\u00e9,\u00e8,\u00ea,\u00eb,\u0113",
-        "'",
-        EMPTY,
-        "8",
-        "\u00ed,\u00ee,\u00ef,\u012b,\u00ec",
-        "AM",
         EMPTY,
-        ":",
-        "[",
-        "\u00f1",
-        "\u2018,\u2019,\u201a",
         "\u00b2,\u2082,\u2154",
-        "&",
         EMPTY,
+        "2",
         "{",
-        EMPTY,
-        "!icon/action_copy|!code/action_copy",
-        EMPTY,
+        ")",
+        "!hasLabels!,.net,.org,.gov,.edu",
+        "(",
+        "\u00b3,\u2083,\u00be,\u215c",
+        "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
+        "!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote",
+        ">",
+        "123",
+        "!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote",
+        "#",
+        "\u2075,\u2085,\u215d",
+        "%",
+        "}",
+        "!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote",
+        "+,=",
+        "\\\\",
+        "|",
         "!icon/action_select_all|!code/action_select_all",
-        "\u2077,\u2087,\u215e"
-    };
-
-    private static final String[] TEXTS_tr = {
-        "tr",
-        "\u00e2,\u00e4,\u00e1",
-        null,
-        "\u00f6,\u00f4,\u0153,\u00f2,\u00f3,\u00f5,\u00f8,\u014d",
-        "\u0259,\u00e9",
-        "\u00fc,\u00fb,\u00f9,\u00fa,\u016b",
-        "\u0131,\u00ee,\u00ef,\u00ec,\u00ed,\u012f,\u012b",
-        "\u00e7,\u0107,\u010d",
-        null,
-        "\u0148,\u00f1",
-        null,
-        "\u015f,\u00df,\u015b,\u0161",
-        null,
-        "\u017e",
-        "\u00fd",
-        null,
-        null,
-        null,
-        "\u011f"
-    };
-
-    private static final String[] TEXTS_ckb = {
-        "ckb",
-        null,
-        "\u0623\u200c\u0628\u200c\u062c",
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        "6",
-        "8",
-        "\u0669",
-        "\u0663",
-        "9",
-        "5",
-        "\u0667",
-        "\u061f",
-        "\u0663\u0662\u0661\u061f",
+        "0",
+        "\"",
         "4",
-        "\u0660",
-        "\u0666",
-        "\u0665",
-        "\u0661",
-        "0,\u066b,\u066c",
-        "7",
-        "2",
-        "\u0662",
-        "3",
-        "\u0664",
-        null,
-        "\u0668",
-        "1",
-        null,
-        null,
-        null,
-        "\u061f",
-        null,
-        ".",
-        null,
-        null,
-        null,
-        null,
-        "\u060c",
-        null,
-        null,
-        "?,\u00bf",
-        "}|{",
-        ">|<",
-        "\u060c",
-        "\u00ab|\u00bb",
-        "\u2264|\u2265",
-        null,
-        "\u0651",
-        "{|}",
-        "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,\\\",\\'",
-        "]|[",
-        ")|(",
-        "\u203a|\u2039",
-        "<|>",
-        null,
-        "\u2605,\u066d",
-        "(|)",
-        null,
-        "[|]",
-        "\u00bb|\u00ab",
-        "\u2039|\u203a",
-        "\u2265|\u2264",
-        "\u266a",
-        "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys",
-        "\\%,\u2030",
-        "\u061f",
-        "\u0651",
-        null,
-        ";",
-        "\u061f",
-        "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys",
-        null,
-        null,
-        "\u066a",
-        null,
-        "\u061b",
-        "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064d|\u064d, \u064c|\u064c, \u064b|\u064b, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064f|\u064f, \u064e|\u064e,\u0640\u0640\u0640|\u0640"
+        "5",
+        EMPTY,
+        EMPTY
     };
 
 
@@ -4542,6 +5365,7 @@ public final class KeyboardTextsTable {
         "bn_BD", TEXTS_bn_BD,
         "bn_IN", TEXTS_bn_IN,
         "ca", TEXTS_ca,
+        "ckb", TEXTS_ckb,
         "cs", TEXTS_cs,
         "da", TEXTS_da,
         "de", TEXTS_de,
@@ -4555,8 +5379,8 @@ public final class KeyboardTextsTable {
         "fi", TEXTS_fi,
         "fr", TEXTS_fr,
         "gl", TEXTS_gl,
-        "hi_ZZ", TEXTS_hi_ZZ,
         "hi", TEXTS_hi,
+        "hi_ZZ", TEXTS_hi_ZZ,
         "hr", TEXTS_hr,
         "hu", TEXTS_hu,
         "hy", TEXTS_hy,
@@ -4587,8 +5411,8 @@ public final class KeyboardTextsTable {
         "si", TEXTS_si,
         "sk", TEXTS_sk,
         "sl", TEXTS_sl,
-        "sr_ZZ", TEXTS_sr_ZZ,
         "sr", TEXTS_sr,
+        "sr_ZZ", TEXTS_sr_ZZ,
         "sv", TEXTS_sv,
         "sw", TEXTS_sw,
         "ta_IN", TEXTS_ta_IN,
@@ -4597,14 +5421,13 @@ public final class KeyboardTextsTable {
         "te", TEXTS_te,
         "th", TEXTS_th,
         "tl", TEXTS_tl,
+        "tr", TEXTS_tr,
         "uk", TEXTS_uk,
         "uz", TEXTS_uz,
         "vi", TEXTS_vi,
         "zu", TEXTS_zu,
         "zz", TEXTS_zz,
-        "DEFAULT", TEXTS_DEFAULT,
-        "tr", TEXTS_tr,
-        "ckb", TEXTS_ckb
+        "DEFAULT", TEXTS_DEFAULT
     };
 
     static {
diff --git a/tools/make-keyboard-text-py/locales/af.json b/tools/make-keyboard-text-py/locales/af.json
index 49739acdec..bd26fbda37 100644
--- a/tools/make-keyboard-text-py/locales/af.json
+++ b/tools/make-keyboard-text-py/locales/af.json
@@ -2,7 +2,29 @@
     "locale": "af",
     "morekeys": {
         "a": [
-            "á",
+            "á"
+        ],
+        "e": [
+            "é",
+            "è",
+            "ê",
+            "ë"
+        ],
+        "i": [
+            "í",
+            "ì",
+            "ï",
+            "î"
+        ],
+        "o": [
+            "ó",
+            "ô"
+        ],
+        "u": [
+            "ú",
+            "û"
+        ],
+        "misc_a": [
             "â",
             "ä",
             "à",
@@ -11,27 +33,17 @@
             "Ã¥",
             "ā"
         ],
-        "e": [
-            "é",
-            "è",
-            "ê",
-            "ë",
+        "misc_e": [
             "Ä™",
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "í",
-            "ì",
-            "ï",
-            "î",
+        "misc_i": [
             "į",
             "Ä«",
             "ij"
         ],
-        "o": [
-            "ó",
-            "ô",
+        "misc_o": [
             "ö",
             "ò",
             "õ",
@@ -39,20 +51,10 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ú",
-            "û",
+        "misc_u": [
             "ü",
             "ù",
             "Å«"
-        ],
-        "n": [
-            "ñ",
-            "Å„"
-        ],
-        "y": [
-            "ý",
-            "ij"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/ca.json b/tools/make-keyboard-text-py/locales/ca.json
index a7e9cd8395..04f6408cc6 100644
--- a/tools/make-keyboard-text-py/locales/ca.json
+++ b/tools/make-keyboard-text-py/locales/ca.json
@@ -2,7 +2,28 @@
     "locale": "ca",
     "morekeys": {
         "a": [
-            "à",
+            "à"
+        ],
+        "c": [
+            "ç"
+        ],
+        "e": [
+            "è",
+            "é"
+        ],
+        "i": [
+            "í",
+            "ï"
+        ],
+        "o": [
+            "ò",
+            "ó"
+        ],
+        "u": [
+            "ú",
+            "ü"
+        ],
+        "misc_a": [
             "á",
             "ä",
             "â",
@@ -13,26 +34,24 @@
             "ā",
             "ª"
         ],
-        "e": [
-            "è",
-            "é",
+        "misc_c": [
+            "ć",
+            "č"
+        ],
+        "misc_e": [
             "ë",
             "ê",
             "Ä™",
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "í",
-            "ï",
+        "misc_i": [
             "ì",
             "î",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ò",
-            "ó",
+        "misc_o": [
             "ö",
             "ô",
             "õ",
@@ -41,26 +60,11 @@
             "ō",
             "º"
         ],
-        "u": [
-            "ú",
-            "ü",
+        "misc_u": [
             "ù",
             "û",
             "Å«"
         ],
-        "n": [
-            "ñ",
-            "Å„"
-        ],
-        "c": [
-            "ç",
-            "ć",
-            "č"
-        ],
-        "l": [
-            "l·l",
-            "Å‚"
-        ],
         "punctuation": [
             "!autoColumnOrder!9",
             "\\",
diff --git a/tools/make-keyboard-text-py/locales/ckb.json b/tools/make-keyboard-text-py/locales/ckb.json
index f0c92f2505..44df1ead31 100644
--- a/tools/make-keyboard-text-py/locales/ckb.json
+++ b/tools/make-keyboard-text-py/locales/ckb.json
@@ -1,143 +1,143 @@
 {
-  "locale": "ckb",
-  "morekeys": {
-    "period": [
-      "\u061F"
-    ],
-    "tablet_period": [
-      "\u061F"
-    ],
-    "question": [
-      "?",
-      "¿"
-    ],
-    "symbols_semicolon": [
-      ";"
-    ],
-    "symbols_percent": [
-      "\\%",
-      "‰"
-    ],
-    "tablet_comma": [
-      "!fixedColumnOrder!4",
-      ":",
-      "!",
-      "ØŸ",
-      "Ø›",
-      "-",
-      "\\\"",
-      "\\'"
-    ],
-    "bullet": [
-      "♪"
-    ],
-    "star": [
-      "★",
-      "Ù­"
-    ],
-    "left_parenthesis": [
-      "!fixedColumnOrder!4",
-      "ï´¾|ï´¿",
-      "!text/keyspecs_left_parenthesis_more_keys"
-    ],
-    "right_parenthesis": [
-      "!fixedColumnOrder!4",
-      "ï´¿|ï´¾",
-      "!text/keyspecs_right_parenthesis_more_keys"
-    ],
-    "arabic_diacritics": [
-      "!fixedColumnOrder!7",
-      " Ù•|Ù•",
-      " Ù”|Ù”",
-      " Ù’|Ù’",
-      " ٍ|ٍ",
-      " ٌ|ٌ",
-      " Ù‹|Ù‹",
-      " Ù‘|Ù‘",
-      " Ù–|Ù–",
-      " Ù°|Ù°",
-      " Ù“|Ù“",
-      " ِ|ِ",
-      " ُ|ُ",
-      " ÙŽ|ÙŽ",
-      "ـــ|ـ"
-    ]
-  },
-  "keyspec": {
-    "period": "\u002E",
-    "comma": "\u060C",
-    "symbols_1": "Ù¡",
-    "symbols_2": "Ù¢",
-    "symbols_3": "Ù£",
-    "symbols_4": "Ù¤",
-    "symbols_5": "Ù¥",
-    "symbols_6": "Ù¦",
-    "symbols_7": "Ù§",
-    "symbols_8": "Ù¨",
-    "symbols_9": "Ù©",
-    "symbols_0": "Ù ",
-    "symbols_question": "ØŸ",
-    "symbols_semicolon": "Ø›",
-    "symbols_percent": "Ùª",
-    "tablet_comma": "،",
-    "left_parenthesis": "(|)",
-    "right_parenthesis": ")|(",
-    "left_square_bracket": "[|]",
-    "right_square_bracket": "]|[",
-    "left_curly_bracket": "{|}",
-    "right_curly_bracket": "}|{",
-    "less_than": "<|>",
-    "greater_than": ">|<",
-    "less_than_equal": "≤|≥",
-    "greater_than_equal": "≥|≤",
-    "left_double_angle_quote": "«|»",
-    "right_double_angle_quote": "»|«",
-    "left_single_angle_quote": "‹|›",
-    "right_single_angle_quote": "›|‹"
-  },
-  "label": {},
-  "keylabel": {
-    "to_alpha": "أ‌ب‌ج",
-    "to_symbol": "٣٢١؟"
-  },
-  "keyhintlabel": {
-    "period": "Ù‘",
-    "tablet_period": "Ù‘",
-    "tablet_comma": "ØŸ"
-  },
-  "additional_morekeys": {
-    "symbols_1": [
-      "1"
-    ],
-    "symbols_2": [
-      "2"
-    ],
-    "symbols_3": [
-      "3"
-    ],
-    "symbols_4": [
-      "4"
-    ],
-    "symbols_5": [
-      "5"
-    ],
-    "symbols_6": [
-      "6"
-    ],
-    "symbols_7": [
-      "7"
-    ],
-    "symbols_8": [
-      "8"
-    ],
-    "symbols_9": [
-      "9"
-    ],
-    "symbols_0": [
-      "0",
-      "Ù«",
-      "Ù¬"
-    ]
-  },
-  "other": {}
+    "locale": "ckb",
+    "morekeys": {
+        "period": [
+            "ØŸ"
+        ],
+        "tablet_period": [
+            "ØŸ"
+        ],
+        "question": [
+            "?",
+            "¿"
+        ],
+        "symbols_semicolon": [
+            ";"
+        ],
+        "symbols_percent": [
+            "\\%",
+            "‰"
+        ],
+        "tablet_comma": [
+            "!fixedColumnOrder!4",
+            ":",
+            "!",
+            "ØŸ",
+            "Ø›",
+            "-",
+            "\\\"",
+            "\\'"
+        ],
+        "bullet": [
+            "♪"
+        ],
+        "star": [
+            "★",
+            "Ù­"
+        ],
+        "left_parenthesis": [
+            "!fixedColumnOrder!4",
+            "ï´¾|ï´¿",
+            "!text/keyspecs_left_parenthesis_more_keys"
+        ],
+        "right_parenthesis": [
+            "!fixedColumnOrder!4",
+            "ï´¿|ï´¾",
+            "!text/keyspecs_right_parenthesis_more_keys"
+        ],
+        "arabic_diacritics": [
+            "!fixedColumnOrder!7",
+            " Ù•|Ù•",
+            " Ù”|Ù”",
+            " Ù’|Ù’",
+            " ٍ|ٍ",
+            " ٌ|ٌ",
+            " Ù‹|Ù‹",
+            " Ù‘|Ù‘",
+            " Ù–|Ù–",
+            " Ù°|Ù°",
+            " Ù“|Ù“",
+            " ِ|ِ",
+            " ُ|ُ",
+            " ÙŽ|ÙŽ",
+            "ـــ|ـ"
+        ]
+    },
+    "keyspec": {
+        "period": ".",
+        "comma": "،",
+        "symbols_1": "Ù¡",
+        "symbols_2": "Ù¢",
+        "symbols_3": "Ù£",
+        "symbols_4": "Ù¤",
+        "symbols_5": "Ù¥",
+        "symbols_6": "Ù¦",
+        "symbols_7": "Ù§",
+        "symbols_8": "Ù¨",
+        "symbols_9": "Ù©",
+        "symbols_0": "Ù ",
+        "symbols_question": "ØŸ",
+        "symbols_semicolon": "Ø›",
+        "symbols_percent": "Ùª",
+        "tablet_comma": "،",
+        "left_parenthesis": "(|)",
+        "right_parenthesis": ")|(",
+        "left_square_bracket": "[|]",
+        "right_square_bracket": "]|[",
+        "left_curly_bracket": "{|}",
+        "right_curly_bracket": "}|{",
+        "less_than": "<|>",
+        "greater_than": ">|<",
+        "less_than_equal": "≤|≥",
+        "greater_than_equal": "≥|≤",
+        "left_double_angle_quote": "«|»",
+        "right_double_angle_quote": "»|«",
+        "left_single_angle_quote": "‹|›",
+        "right_single_angle_quote": "›|‹"
+    },
+    "label": {},
+    "keylabel": {
+        "to_alpha": "أ‌ب‌ج",
+        "to_symbol": "٣٢١؟"
+    },
+    "keyhintlabel": {
+        "period": "Ù‘",
+        "tablet_period": "Ù‘",
+        "tablet_comma": "ØŸ"
+    },
+    "additional_morekeys": {
+        "symbols_1": [
+            "1"
+        ],
+        "symbols_2": [
+            "2"
+        ],
+        "symbols_3": [
+            "3"
+        ],
+        "symbols_4": [
+            "4"
+        ],
+        "symbols_5": [
+            "5"
+        ],
+        "symbols_6": [
+            "6"
+        ],
+        "symbols_7": [
+            "7"
+        ],
+        "symbols_8": [
+            "8"
+        ],
+        "symbols_9": [
+            "9"
+        ],
+        "symbols_0": [
+            "0",
+            "Ù«",
+            "Ù¬"
+        ]
+    },
+    "other": {}
 }
\ No newline at end of file
diff --git a/tools/make-keyboard-text-py/locales/cs.json b/tools/make-keyboard-text-py/locales/cs.json
index cea8810063..89305b242e 100644
--- a/tools/make-keyboard-text-py/locales/cs.json
+++ b/tools/make-keyboard-text-py/locales/cs.json
@@ -2,7 +2,47 @@
     "locale": "cs",
     "morekeys": {
         "a": [
-            "á",
+            "á"
+        ],
+        "c": [
+            "č"
+        ],
+        "d": [
+            "ď"
+        ],
+        "e": [
+            "é",
+            "Ä›"
+        ],
+        "i": [
+            "í"
+        ],
+        "n": [
+            "ň"
+        ],
+        "o": [
+            "ó"
+        ],
+        "r": [
+            "Å™"
+        ],
+        "s": [
+            "Å¡"
+        ],
+        "t": [
+            "Å¥"
+        ],
+        "u": [
+            "ú",
+            "ů"
+        ],
+        "y": [
+            "ý"
+        ],
+        "z": [
+            "ž"
+        ],
+        "misc_a": [
             "à",
             "â",
             "ä",
@@ -11,9 +51,11 @@
             "Ã¥",
             "ā"
         ],
-        "e": [
-            "é",
-            "Ä›",
+        "misc_c": [
+            "ç",
+            "ć"
+        ],
+        "misc_e": [
             "è",
             "ê",
             "ë",
@@ -21,16 +63,18 @@
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "í",
+        "misc_i": [
             "î",
             "ï",
             "ì",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ó",
+        "misc_n": [
+            "ñ",
+            "Å„"
+        ],
+        "misc_o": [
             "ö",
             "ô",
             "ò",
@@ -39,44 +83,20 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ú",
-            "ů",
+        "misc_s": [
+            "ß",
+            "Å›"
+        ],
+        "misc_u": [
             "û",
             "ü",
             "ù",
             "Å«"
         ],
-        "s": [
-            "Å¡",
-            "ß",
-            "Å›"
-        ],
-        "n": [
-            "ň",
-            "ñ",
-            "Å„"
-        ],
-        "c": [
-            "č",
-            "ç",
-            "ć"
-        ],
-        "y": [
-            "ý",
+        "misc_y": [
             "ÿ"
         ],
-        "d": [
-            "ď"
-        ],
-        "r": [
-            "Å™"
-        ],
-        "t": [
-            "Å¥"
-        ],
-        "z": [
-            "ž",
+        "misc_z": [
             "ź",
             "ż"
         ]
diff --git a/tools/make-keyboard-text-py/locales/da.json b/tools/make-keyboard-text-py/locales/da.json
index 62067a3fd8..120aa69d8e 100644
--- a/tools/make-keyboard-text-py/locales/da.json
+++ b/tools/make-keyboard-text-py/locales/da.json
@@ -3,7 +3,12 @@
     "morekeys": {
         "a": [
             "Ã¥",
-            "æ",
+            "æ"
+        ],
+        "o": [
+            "ø"
+        ],
+        "misc_a": [
             "á",
             "ä",
             "à",
@@ -11,16 +16,7 @@
             "ã",
             "ā"
         ],
-        "e": [
-            "é",
-            "ë"
-        ],
-        "i": [
-            "í",
-            "ï"
-        ],
-        "o": [
-            "ø",
+        "misc_o": [
             "ö",
             "ó",
             "ô",
@@ -29,32 +25,6 @@
             "Å“",
             "ō"
         ],
-        "u": [
-            "ú",
-            "ü",
-            "û",
-            "ù",
-            "Å«"
-        ],
-        "s": [
-            "ß",
-            "Å›",
-            "Å¡"
-        ],
-        "n": [
-            "ñ",
-            "Å„"
-        ],
-        "y": [
-            "ý",
-            "ÿ"
-        ],
-        "d": [
-            "ð"
-        ],
-        "l": [
-            "Å‚"
-        ],
         "nordic_row2_10": [
             "ä"
         ],
diff --git a/tools/make-keyboard-text-py/locales/de.json b/tools/make-keyboard-text-py/locales/de.json
index f97e078b5a..0f12675f22 100644
--- a/tools/make-keyboard-text-py/locales/de.json
+++ b/tools/make-keyboard-text-py/locales/de.json
@@ -2,7 +2,18 @@
     "locale": "de",
     "morekeys": {
         "a": [
-            "ä",
+            "ä"
+        ],
+        "o": [
+            "ö"
+        ],
+        "s": [
+            "ß"
+        ],
+        "u": [
+            "ü"
+        ],
+        "misc_a": [
             "%",
             "â",
             "à",
@@ -12,15 +23,7 @@
             "Ã¥",
             "ā"
         ],
-        "e": [
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "Ä—"
-        ],
-        "o": [
-            "ö",
+        "misc_o": [
             "%",
             "ô",
             "ò",
@@ -30,23 +33,17 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ü",
+        "misc_s": [
+            "Å›",
+            "Å¡"
+        ],
+        "misc_u": [
             "%",
             "û",
             "ù",
             "ú",
             "Å«"
         ],
-        "s": [
-            "ß",
-            "Å›",
-            "Å¡"
-        ],
-        "n": [
-            "ñ",
-            "Å„"
-        ],
         "swiss_row1_11": [
             "è"
         ],
diff --git a/tools/make-keyboard-text-py/locales/eo.json b/tools/make-keyboard-text-py/locales/eo.json
index 80f870d7fd..c95826ad88 100644
--- a/tools/make-keyboard-text-py/locales/eo.json
+++ b/tools/make-keyboard-text-py/locales/eo.json
@@ -1,146 +1,53 @@
 {
     "locale": "eo",
     "morekeys": {
-        "a": [
-            "á",
-            "à",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "Ã¥",
-            "ā",
-            "ă",
-            "Ä…",
-            "ª"
-        ],
-        "e": [
-            "é",
-            "Ä›",
-            "è",
-            "ê",
-            "ë",
-            "Ä™",
-            "Ä—",
-            "Ä“"
-        ],
-        "i": [
-            "í",
-            "î",
-            "ï",
-            "Ä©",
-            "ì",
-            "į",
-            "Ä«",
-            "ı",
-            "ij"
+        "c": [
+            "ĉ"
         ],
-        "o": [
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "Å“",
-            "ø",
-            "ō",
-            "Å‘",
-            "º"
+        "g": [
+            "ĝ"
         ],
-        "u": [
-            "ú",
-            "ů",
-            "û",
-            "ü",
-            "ù",
-            "Å«",
-            "Å©",
-            "ű",
-            "ų",
-            "µ"
+        "h": [
+            "Ä¥"
         ],
         "s": [
-            "ß",
-            "Å¡",
-            "Å›",
-            "È™",
-            "ÅŸ"
+            "ŝ"
         ],
-        "n": [
-            "ñ",
-            "Å„",
-            "ņ",
-            "ň",
-            "ʼn",
-            "Å‹"
+        "u": [
+            "Å­"
         ],
-        "c": [
+        "misc_c": [
             "ć",
             "č",
             "ç",
             "Ä‹"
         ],
-        "y": [
-            "y",
-            "ý",
-            "Å·",
-            "ÿ",
-            "þ"
-        ],
-        "d": [
-            "ð",
-            "ď",
-            "Ä‘"
-        ],
-        "r": [
-            "Å™",
-            "Å•",
-            "Å—"
-        ],
-        "t": [
-            "Å¥",
-            "È›",
-            "Å£",
-            "ŧ"
-        ],
-        "z": [
-            "ź",
-            "ż",
-            "ž"
-        ],
-        "k": [
-            "Ä·",
-            "ĸ"
-        ],
-        "l": [
-            "ĺ",
-            "ļ",
-            "ľ",
-            "Å€",
-            "Å‚"
-        ],
-        "g": [
+        "misc_g": [
             "ÄŸ",
             "Ä¡",
             "Ä£"
         ],
-        "v": [
-            "w",
-            "ŵ"
-        ],
-        "h": [
-            "Ä¥",
+        "misc_h": [
             "ħ"
         ],
-        "w": [
-            "w",
-            "ŵ"
-        ],
-        "q": [
-            "q"
+        "misc_s": [
+            "ß",
+            "Å¡",
+            "Å›",
+            "È™",
+            "ÅŸ"
         ],
-        "x": [
-            "x"
+        "misc_u": [
+            "ú",
+            "ů",
+            "û",
+            "ü",
+            "ù",
+            "Å«",
+            "Å©",
+            "ű",
+            "ų",
+            "µ"
         ]
     },
     "keyspec": {
diff --git a/tools/make-keyboard-text-py/locales/es.json b/tools/make-keyboard-text-py/locales/es.json
index b9e6df150e..48816cda9d 100644
--- a/tools/make-keyboard-text-py/locales/es.json
+++ b/tools/make-keyboard-text-py/locales/es.json
@@ -2,7 +2,25 @@
     "locale": "es",
     "morekeys": {
         "a": [
-            "á",
+            "á"
+        ],
+        "e": [
+            "é"
+        ],
+        "i": [
+            "í"
+        ],
+        "n": [
+            "ñ"
+        ],
+        "o": [
+            "ó"
+        ],
+        "u": [
+            "ú",
+            "ü"
+        ],
+        "misc_a": [
             "à",
             "ä",
             "â",
@@ -13,8 +31,7 @@
             "ā",
             "ª"
         ],
-        "e": [
-            "é",
+        "misc_e": [
             "è",
             "ë",
             "ê",
@@ -22,16 +39,17 @@
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "í",
+        "misc_i": [
             "ï",
             "ì",
             "î",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ó",
+        "misc_n": [
+            "Å„"
+        ],
+        "misc_o": [
             "ò",
             "ö",
             "ô",
@@ -41,22 +59,11 @@
             "ō",
             "º"
         ],
-        "u": [
-            "ú",
-            "ü",
+        "misc_u": [
             "ù",
             "û",
             "Å«"
         ],
-        "n": [
-            "ñ",
-            "Å„"
-        ],
-        "c": [
-            "ç",
-            "ć",
-            "č"
-        ],
         "punctuation": [
             "!autoColumnOrder!9",
             "\\",
diff --git a/tools/make-keyboard-text-py/locales/et.json b/tools/make-keyboard-text-py/locales/et.json
index 1bf8c47619..542197863b 100644
--- a/tools/make-keyboard-text-py/locales/et.json
+++ b/tools/make-keyboard-text-py/locales/et.json
@@ -2,7 +2,22 @@
     "locale": "et",
     "morekeys": {
         "a": [
-            "ä",
+            "ä"
+        ],
+        "o": [
+            "ö",
+            "õ"
+        ],
+        "s": [
+            "Å¡"
+        ],
+        "u": [
+            "ü"
+        ],
+        "z": [
+            "ž"
+        ],
+        "misc_a": [
             "ā",
             "à",
             "á",
@@ -12,28 +27,7 @@
             "æ",
             "Ä…"
         ],
-        "e": [
-            "Ä“",
-            "è",
-            "Ä—",
-            "é",
-            "ê",
-            "ë",
-            "Ä™",
-            "Ä›"
-        ],
-        "i": [
-            "Ä«",
-            "ì",
-            "į",
-            "í",
-            "î",
-            "ï",
-            "ı"
-        ],
-        "o": [
-            "ö",
-            "õ",
+        "misc_o": [
             "ò",
             "ó",
             "ô",
@@ -41,8 +35,12 @@
             "Å‘",
             "ø"
         ],
-        "u": [
-            "ü",
+        "misc_s": [
+            "ß",
+            "Å›",
+            "ÅŸ"
+        ],
+        "misc_u": [
             "Å«",
             "ų",
             "ù",
@@ -51,56 +49,10 @@
             "ů",
             "ű"
         ],
-        "s": [
-            "Å¡",
-            "ß",
-            "Å›",
-            "ÅŸ"
-        ],
-        "n": [
-            "ņ",
-            "ñ",
-            "Å„"
-        ],
-        "c": [
-            "č",
-            "ç",
-            "ć"
-        ],
-        "y": [
-            "ý",
-            "ÿ"
-        ],
-        "d": [
-            "ď"
-        ],
-        "r": [
-            "Å—",
-            "Å™",
-            "Å•"
-        ],
-        "t": [
-            "Å£",
-            "Å¥"
-        ],
-        "z": [
-            "ž",
+        "misc_z": [
             "ż",
             "ź"
         ],
-        "k": [
-            "Ä·"
-        ],
-        "l": [
-            "ļ",
-            "Å‚",
-            "ĺ",
-            "ľ"
-        ],
-        "g": [
-            "Ä£",
-            "ÄŸ"
-        ],
         "nordic_row2_10": [
             "õ"
         ]
diff --git a/tools/make-keyboard-text-py/locales/fi.json b/tools/make-keyboard-text-py/locales/fi.json
index 60bcef4df7..07a0b9f79e 100644
--- a/tools/make-keyboard-text-py/locales/fi.json
+++ b/tools/make-keyboard-text-py/locales/fi.json
@@ -3,7 +3,18 @@
     "morekeys": {
         "a": [
             "ä",
-            "Ã¥",
+            "Ã¥"
+        ],
+        "o": [
+            "ö"
+        ],
+        "s": [
+            "Å¡"
+        ],
+        "z": [
+            "ž"
+        ],
+        "misc_a": [
             "æ",
             "à",
             "á",
@@ -11,8 +22,7 @@
             "ã",
             "ā"
         ],
-        "o": [
-            "ö",
+        "misc_o": [
             "ø",
             "ô",
             "ò",
@@ -21,16 +31,11 @@
             "Å“",
             "ō"
         ],
-        "u": [
-            "ü"
-        ],
-        "s": [
-            "Å¡",
+        "misc_s": [
             "ß",
             "Å›"
         ],
-        "z": [
-            "ž",
+        "misc_z": [
             "ź",
             "ż"
         ],
diff --git a/tools/make-keyboard-text-py/locales/fr.json b/tools/make-keyboard-text-py/locales/fr.json
index 89bc9ffb54..dfd883b72c 100644
--- a/tools/make-keyboard-text-py/locales/fr.json
+++ b/tools/make-keyboard-text-py/locales/fr.json
@@ -5,7 +5,37 @@
             "à",
             "â",
             "%",
-            "æ",
+            "æ"
+        ],
+        "c": [
+            "ç"
+        ],
+        "e": [
+            "é",
+            "è",
+            "ê",
+            "ë"
+        ],
+        "i": [
+            "î",
+            "%",
+            "ï"
+        ],
+        "o": [
+            "ô",
+            "Å“"
+        ],
+        "u": [
+            "ù",
+            "û",
+            "%",
+            "ü"
+        ],
+        "y": [
+            "%",
+            "ÿ"
+        ],
+        "misc_a": [
             "á",
             "ä",
             "ã",
@@ -13,28 +43,24 @@
             "ā",
             "ª"
         ],
-        "e": [
-            "é",
-            "è",
-            "ê",
-            "ë",
+        "misc_c": [
+            "%",
+            "ć",
+            "č"
+        ],
+        "misc_e": [
             "%",
             "Ä™",
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "î",
-            "%",
-            "ï",
+        "misc_i": [
             "ì",
             "í",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ô",
-            "Å“",
+        "misc_o": [
             "%",
             "ö",
             "ò",
@@ -44,24 +70,10 @@
             "ō",
             "º"
         ],
-        "u": [
-            "ù",
-            "û",
-            "%",
-            "ü",
+        "misc_u": [
             "ú",
             "Å«"
         ],
-        "c": [
-            "ç",
-            "%",
-            "ć",
-            "č"
-        ],
-        "y": [
-            "%",
-            "ÿ"
-        ],
         "swiss_row1_11": [
             "ü"
         ],
diff --git a/tools/make-keyboard-text-py/locales/hr.json b/tools/make-keyboard-text-py/locales/hr.json
index 18b4ef6350..b9276ac17a 100644
--- a/tools/make-keyboard-text-py/locales/hr.json
+++ b/tools/make-keyboard-text-py/locales/hr.json
@@ -1,27 +1,29 @@
 {
     "locale": "hr",
     "morekeys": {
-        "s": [
-            "Å¡",
-            "Å›",
-            "ß"
+        "c": [
+            "č",
+            "ć"
         ],
-        "n": [
-            "ñ",
-            "Å„"
+        "d": [
+            "Ä‘"
+        ],
+        "s": [
+            "Å¡"
         ],
         "z": [
-            "ž",
-            "ź",
-            "ż"
+            "ž"
         ],
-        "c": [
-            "č",
-            "ć",
+        "misc_c": [
             "ç"
         ],
-        "d": [
-            "Ä‘"
+        "misc_s": [
+            "Å›",
+            "ß"
+        ],
+        "misc_z": [
+            "ź",
+            "ż"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/hu.json b/tools/make-keyboard-text-py/locales/hu.json
index bf8a4ac063..076183e609 100644
--- a/tools/make-keyboard-text-py/locales/hu.json
+++ b/tools/make-keyboard-text-py/locales/hu.json
@@ -2,7 +2,25 @@
     "locale": "hu",
     "morekeys": {
         "a": [
-            "á",
+            "á"
+        ],
+        "e": [
+            "é"
+        ],
+        "i": [
+            "í"
+        ],
+        "o": [
+            "ó",
+            "ö",
+            "Å‘"
+        ],
+        "u": [
+            "ú",
+            "ü",
+            "ű"
+        ],
+        "misc_a": [
             "à",
             "â",
             "ä",
@@ -11,8 +29,7 @@
             "Ã¥",
             "ā"
         ],
-        "e": [
-            "é",
+        "misc_e": [
             "è",
             "ê",
             "ë",
@@ -20,18 +37,14 @@
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "í",
+        "misc_i": [
             "î",
             "ï",
             "ì",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ó",
-            "ö",
-            "Å‘",
+        "misc_o": [
             "ô",
             "ò",
             "õ",
@@ -39,10 +52,7 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ú",
-            "ü",
-            "ű",
+        "misc_u": [
             "û",
             "ù",
             "Å«"
diff --git a/tools/make-keyboard-text-py/locales/is.json b/tools/make-keyboard-text-py/locales/is.json
index de5809f368..a2077d045e 100644
--- a/tools/make-keyboard-text-py/locales/is.json
+++ b/tools/make-keyboard-text-py/locales/is.json
@@ -4,15 +4,38 @@
         "a": [
             "á",
             "ä",
-            "æ",
+            "æ"
+        ],
+        "d": [
+            "ð"
+        ],
+        "e": [
+            "é"
+        ],
+        "i": [
+            "í"
+        ],
+        "o": [
+            "ó",
+            "ö"
+        ],
+        "t": [
+            "þ"
+        ],
+        "u": [
+            "ú"
+        ],
+        "y": [
+            "ý"
+        ],
+        "misc_a": [
             "Ã¥",
             "à",
             "â",
             "ã",
             "ā"
         ],
-        "e": [
-            "é",
+        "misc_e": [
             "ë",
             "è",
             "ê",
@@ -20,17 +43,14 @@
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "í",
+        "misc_i": [
             "ï",
             "î",
             "ì",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ó",
-            "ö",
+        "misc_o": [
             "ô",
             "ò",
             "õ",
@@ -38,22 +58,14 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ú",
+        "misc_u": [
             "ü",
             "û",
             "ù",
             "Å«"
         ],
-        "y": [
-            "ý",
+        "misc_y": [
             "ÿ"
-        ],
-        "d": [
-            "ð"
-        ],
-        "t": [
-            "þ"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/it.json b/tools/make-keyboard-text-py/locales/it.json
index 29e430852e..ee181cd1ce 100644
--- a/tools/make-keyboard-text-py/locales/it.json
+++ b/tools/make-keyboard-text-py/locales/it.json
@@ -2,7 +2,22 @@
     "locale": "it",
     "morekeys": {
         "a": [
-            "à",
+            "à"
+        ],
+        "e": [
+            "è",
+            "é"
+        ],
+        "i": [
+            "ì"
+        ],
+        "o": [
+            "ò"
+        ],
+        "u": [
+            "ù"
+        ],
+        "misc_a": [
             "á",
             "â",
             "ä",
@@ -12,25 +27,21 @@
             "ā",
             "ª"
         ],
-        "e": [
-            "è",
-            "é",
+        "misc_e": [
             "ê",
             "ë",
             "Ä™",
             "Ä—",
             "Ä“"
         ],
-        "i": [
-            "ì",
+        "misc_i": [
             "í",
             "î",
             "ï",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ò",
+        "misc_o": [
             "ó",
             "ô",
             "ö",
@@ -40,8 +51,7 @@
             "ō",
             "º"
         ],
-        "u": [
-            "ù",
+        "misc_u": [
             "ú",
             "û",
             "ü",
diff --git a/tools/make-keyboard-text-py/locales/lt.json b/tools/make-keyboard-text-py/locales/lt.json
index ed758c5434..bd45dccd64 100644
--- a/tools/make-keyboard-text-py/locales/lt.json
+++ b/tools/make-keyboard-text-py/locales/lt.json
@@ -2,11 +2,17 @@
     "locale": "lt",
     "morekeys": {
         "a": "Ä…",
-        "e": ["Ä—", "Ä™"],
+        "c": "č",
+        "e": [
+            "Ä—",
+            "Ä™"
+        ],
         "i": "į",
-        "u": ["ū", "ų"],
         "s": "Å¡",
-        "c": "č",
+        "u": [
+            "Å«",
+            "ų"
+        ],
         "z": "ž"
     },
     "keyspec": {},
@@ -15,7 +21,15 @@
     "keyhintlabel": {},
     "additional_morekeys": {},
     "other": {
-        "single_quotes": ["’", "‚", "‘"],
-        "double_quotes": ["”", "„", "“"]
+        "single_quotes": [
+            "’",
+            "‚",
+            "‘"
+        ],
+        "double_quotes": [
+            "”",
+            "„",
+            "“"
+        ]
     }
 }
\ No newline at end of file
diff --git a/tools/make-keyboard-text-py/locales/lv.json b/tools/make-keyboard-text-py/locales/lv.json
index bbb275b71f..8a0e66fbbe 100644
--- a/tools/make-keyboard-text-py/locales/lv.json
+++ b/tools/make-keyboard-text-py/locales/lv.json
@@ -2,7 +2,45 @@
     "locale": "lv",
     "morekeys": {
         "a": [
-            "ā",
+            "ā"
+        ],
+        "c": [
+            "č"
+        ],
+        "e": [
+            "Ä“"
+        ],
+        "g": [
+            "Ä£"
+        ],
+        "i": [
+            "Ä«"
+        ],
+        "k": [
+            "Ä·"
+        ],
+        "l": [
+            "ļ"
+        ],
+        "n": [
+            "ņ"
+        ],
+        "o": [
+            "ō"
+        ],
+        "r": [
+            "Å—"
+        ],
+        "s": [
+            "Å¡"
+        ],
+        "u": [
+            "Å«"
+        ],
+        "z": [
+            "ž"
+        ],
+        "misc_a": [
             "à",
             "á",
             "â",
@@ -12,8 +50,11 @@
             "æ",
             "Ä…"
         ],
-        "e": [
-            "Ä“",
+        "misc_c": [
+            "ç",
+            "ć"
+        ],
+        "misc_e": [
             "Ä—",
             "è",
             "é",
@@ -22,8 +63,10 @@
             "Ä™",
             "Ä›"
         ],
-        "i": [
-            "Ä«",
+        "misc_g": [
+            "ÄŸ"
+        ],
+        "misc_i": [
             "į",
             "ì",
             "í",
@@ -31,7 +74,16 @@
             "ï",
             "ı"
         ],
-        "o": [
+        "misc_l": [
+            "Å‚",
+            "ĺ",
+            "ľ"
+        ],
+        "misc_n": [
+            "ñ",
+            "Å„"
+        ],
+        "misc_o": [
             "ò",
             "ó",
             "ô",
@@ -41,8 +93,16 @@
             "Å‘",
             "ø"
         ],
-        "u": [
-            "Å«",
+        "misc_r": [
+            "Å™",
+            "Å•"
+        ],
+        "misc_s": [
+            "ß",
+            "Å›",
+            "ÅŸ"
+        ],
+        "misc_u": [
             "ų",
             "ù",
             "ú",
@@ -51,55 +111,9 @@
             "ů",
             "ű"
         ],
-        "s": [
-            "Å¡",
-            "ß",
-            "Å›",
-            "ÅŸ"
-        ],
-        "n": [
-            "ņ",
-            "ñ",
-            "Å„"
-        ],
-        "c": [
-            "č",
-            "ç",
-            "ć"
-        ],
-        "y": [
-            "ý",
-            "ÿ"
-        ],
-        "d": [
-            "ď"
-        ],
-        "r": [
-            "Å—",
-            "Å™",
-            "Å•"
-        ],
-        "t": [
-            "Å£",
-            "Å¥"
-        ],
-        "z": [
-            "ž",
+        "misc_z": [
             "ż",
             "ź"
-        ],
-        "k": [
-            "Ä·"
-        ],
-        "l": [
-            "ļ",
-            "Å‚",
-            "ĺ",
-            "ľ"
-        ],
-        "g": [
-            "Ä£",
-            "ÄŸ"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/nl.json b/tools/make-keyboard-text-py/locales/nl.json
index 3b25876d41..a20c9927dd 100644
--- a/tools/make-keyboard-text-py/locales/nl.json
+++ b/tools/make-keyboard-text-py/locales/nl.json
@@ -5,20 +5,13 @@
             "á",
             "ä",
             "â",
-            "à",
-            "æ",
-            "ã",
-            "Ã¥",
-            "ā"
+            "à"
         ],
         "e": [
             "é",
             "ë",
             "ê",
-            "è",
-            "Ä™",
-            "Ä—",
-            "Ä“"
+            "è"
         ],
         "i": [
             "í",
@@ -31,7 +24,24 @@
         ],
         "o": [
             "ó",
-            "ö",
+            "ö"
+        ],
+        "u": [
+            "ú",
+            "ü"
+        ],
+        "misc_a": [
+            "æ",
+            "ã",
+            "Ã¥",
+            "ā"
+        ],
+        "misc_e": [
+            "Ä™",
+            "Ä—",
+            "Ä“"
+        ],
+        "misc_o": [
             "ô",
             "ò",
             "õ",
@@ -39,19 +49,10 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ú",
-            "ü",
+        "misc_u": [
             "û",
             "ù",
             "Å«"
-        ],
-        "n": [
-            "ñ",
-            "Å„"
-        ],
-        "y": [
-            "ij"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/pl.json b/tools/make-keyboard-text-py/locales/pl.json
index cbd21c6380..45e6c6ff82 100644
--- a/tools/make-keyboard-text-py/locales/pl.json
+++ b/tools/make-keyboard-text-py/locales/pl.json
@@ -2,7 +2,31 @@
     "locale": "pl",
     "morekeys": {
         "a": [
-            "Ä…",
+            "Ä…"
+        ],
+        "c": [
+            "ć"
+        ],
+        "e": [
+            "Ä™"
+        ],
+        "l": [
+            "Å‚"
+        ],
+        "n": [
+            "Å„"
+        ],
+        "o": [
+            "ó"
+        ],
+        "s": [
+            "Å›"
+        ],
+        "z": [
+            "ż",
+            "ź"
+        ],
+        "misc_a": [
             "á",
             "à",
             "â",
@@ -12,8 +36,11 @@
             "Ã¥",
             "ā"
         ],
-        "e": [
-            "Ä™",
+        "misc_c": [
+            "ç",
+            "č"
+        ],
+        "misc_e": [
             "è",
             "é",
             "ê",
@@ -21,8 +48,10 @@
             "Ä—",
             "Ä“"
         ],
-        "o": [
-            "ó",
+        "misc_n": [
+            "ñ"
+        ],
+        "misc_o": [
             "ö",
             "ô",
             "ò",
@@ -31,27 +60,12 @@
             "ø",
             "ō"
         ],
-        "s": [
-            "Å›",
+        "misc_s": [
             "ß",
             "Å¡"
         ],
-        "n": [
-            "Å„",
-            "ñ"
-        ],
-        "c": [
-            "ć",
-            "ç",
-            "č"
-        ],
-        "z": [
-            "ż",
-            "ź",
+        "misc_z": [
             "ž"
-        ],
-        "l": [
-            "Å‚"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/pt.json b/tools/make-keyboard-text-py/locales/pt.json
index a88b94d1cd..8f993857c5 100644
--- a/tools/make-keyboard-text-py/locales/pt.json
+++ b/tools/make-keyboard-text-py/locales/pt.json
@@ -5,33 +5,52 @@
             "á",
             "ã",
             "à",
-            "â",
+            "â"
+        ],
+        "c": [
+            "ç"
+        ],
+        "e": [
+            "é",
+            "ê"
+        ],
+        "i": [
+            "í"
+        ],
+        "o": [
+            "ó",
+            "õ",
+            "ô"
+        ],
+        "u": [
+            "ú",
+            "ü"
+        ],
+        "misc_a": [
             "ä",
             "Ã¥",
             "æ",
             "ª"
         ],
-        "e": [
-            "é",
-            "ê",
+        "misc_c": [
+            "č",
+            "ć"
+        ],
+        "misc_e": [
             "è",
             "Ä™",
             "Ä—",
             "Ä“",
             "ë"
         ],
-        "i": [
-            "í",
+        "misc_i": [
             "î",
             "ì",
             "ï",
             "į",
             "Ä«"
         ],
-        "o": [
-            "ó",
-            "õ",
-            "ô",
+        "misc_o": [
             "ò",
             "ö",
             "Å“",
@@ -39,17 +58,10 @@
             "ō",
             "º"
         ],
-        "u": [
-            "ú",
-            "ü",
+        "misc_u": [
             "ù",
             "û",
             "Å«"
-        ],
-        "c": [
-            "ç",
-            "č",
-            "ć"
         ]
     },
     "keyspec": {
diff --git a/tools/make-keyboard-text-py/locales/ro.json b/tools/make-keyboard-text-py/locales/ro.json
index ba224322f7..abac87349d 100644
--- a/tools/make-keyboard-text-py/locales/ro.json
+++ b/tools/make-keyboard-text-py/locales/ro.json
@@ -3,7 +3,18 @@
     "morekeys": {
         "a": [
             "ă",
-            "â",
+            "â"
+        ],
+        "i": [
+            "î"
+        ],
+        "s": [
+            "È™"
+        ],
+        "t": [
+            "È›"
+        ],
+        "misc_a": [
             "ã",
             "à",
             "á",
@@ -12,22 +23,17 @@
             "Ã¥",
             "ā"
         ],
-        "i": [
-            "î",
+        "misc_i": [
             "ï",
             "ì",
             "í",
             "į",
             "Ä«"
         ],
-        "s": [
-            "È™",
+        "misc_s": [
             "ß",
             "Å›",
             "Å¡"
-        ],
-        "t": [
-            "È›"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/sk.json b/tools/make-keyboard-text-py/locales/sk.json
index 4a6b0e64be..c95f021766 100644
--- a/tools/make-keyboard-text-py/locales/sk.json
+++ b/tools/make-keyboard-text-py/locales/sk.json
@@ -3,7 +3,50 @@
     "morekeys": {
         "a": [
             "á",
-            "ä",
+            "ä"
+        ],
+        "c": [
+            "č"
+        ],
+        "d": [
+            "ď"
+        ],
+        "e": [
+            "é"
+        ],
+        "i": [
+            "í"
+        ],
+        "l": [
+            "ľ",
+            "ĺ"
+        ],
+        "n": [
+            "ň"
+        ],
+        "o": [
+            "ô",
+            "ó"
+        ],
+        "r": [
+            "Å•"
+        ],
+        "s": [
+            "Å¡"
+        ],
+        "t": [
+            "Å¥"
+        ],
+        "u": [
+            "ú"
+        ],
+        "y": [
+            "ý"
+        ],
+        "z": [
+            "ž"
+        ],
+        "misc_a": [
             "ā",
             "à",
             "â",
@@ -12,8 +55,11 @@
             "æ",
             "Ä…"
         ],
-        "e": [
-            "é",
+        "misc_c": [
+            "ç",
+            "ć"
+        ],
+        "misc_e": [
             "Ä›",
             "Ä“",
             "Ä—",
@@ -22,8 +68,7 @@
             "ë",
             "Ä™"
         ],
-        "i": [
-            "í",
+        "misc_i": [
             "Ä«",
             "į",
             "ì",
@@ -31,9 +76,16 @@
             "ï",
             "ı"
         ],
-        "o": [
-            "ô",
-            "ó",
+        "misc_l": [
+            "ļ",
+            "Å‚"
+        ],
+        "misc_n": [
+            "ņ",
+            "ñ",
+            "Å„"
+        ],
+        "misc_o": [
             "ö",
             "ò",
             "õ",
@@ -41,8 +93,19 @@
             "Å‘",
             "ø"
         ],
-        "u": [
-            "ú",
+        "misc_r": [
+            "Å™",
+            "Å—"
+        ],
+        "misc_s": [
+            "ß",
+            "Å›",
+            "ÅŸ"
+        ],
+        "misc_t": [
+            "Å£"
+        ],
+        "misc_u": [
             "ů",
             "ü",
             "Å«",
@@ -51,56 +114,12 @@
             "û",
             "ű"
         ],
-        "s": [
-            "Å¡",
-            "ß",
-            "Å›",
-            "ÅŸ"
-        ],
-        "n": [
-            "ň",
-            "ņ",
-            "ñ",
-            "Å„"
-        ],
-        "c": [
-            "č",
-            "ç",
-            "ć"
-        ],
-        "y": [
-            "ý",
+        "misc_y": [
             "ÿ"
         ],
-        "d": [
-            "ď"
-        ],
-        "r": [
-            "Å•",
-            "Å™",
-            "Å—"
-        ],
-        "t": [
-            "Å¥",
-            "Å£"
-        ],
-        "z": [
-            "ž",
+        "misc_z": [
             "ż",
             "ź"
-        ],
-        "k": [
-            "Ä·"
-        ],
-        "l": [
-            "ľ",
-            "ĺ",
-            "ļ",
-            "Å‚"
-        ],
-        "g": [
-            "Ä£",
-            "ÄŸ"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/sl.json b/tools/make-keyboard-text-py/locales/sl.json
index 2f9c6ef4e6..76dfb05ab4 100644
--- a/tools/make-keyboard-text-py/locales/sl.json
+++ b/tools/make-keyboard-text-py/locales/sl.json
@@ -1,18 +1,17 @@
 {
     "locale": "sl",
     "morekeys": {
-        "s": [
-            "Å¡"
-        ],
         "c": [
-            "č",
-            "ć"
+            "č"
         ],
-        "d": [
-            "Ä‘"
+        "s": [
+            "Å¡"
         ],
         "z": [
             "ž"
+        ],
+        "misc_c": [
+            "ć"
         ]
     },
     "keyspec": {},
diff --git a/tools/make-keyboard-text-py/locales/sr.json b/tools/make-keyboard-text-py/locales/sr.json
index ad5cf6cca6..27ad0304a6 100644
--- a/tools/make-keyboard-text-py/locales/sr.json
+++ b/tools/make-keyboard-text-py/locales/sr.json
@@ -1,11 +1,11 @@
 {
     "locale": "sr",
     "morekeys": {
-        "cyrillic_ie": [
-            "ѐ"
-        ],
         "cyrillic_i": [
             "ѝ"
+        ],
+        "cyrillic_ie": [
+            "ѐ"
         ]
     },
     "keyspec": {
diff --git a/tools/make-keyboard-text-py/locales/sv.json b/tools/make-keyboard-text-py/locales/sv.json
index e8d4da0ec3..71cf64c031 100644
--- a/tools/make-keyboard-text-py/locales/sv.json
+++ b/tools/make-keyboard-text-py/locales/sv.json
@@ -3,7 +3,15 @@
     "morekeys": {
         "a": [
             "ä",
-            "Ã¥",
+            "Ã¥"
+        ],
+        "e": [
+            "é"
+        ],
+        "o": [
+            "ö"
+        ],
+        "misc_a": [
             "æ",
             "á",
             "à",
@@ -11,38 +19,13 @@
             "Ä…",
             "ã"
         ],
-        "c": [
-            "ç",
-            "ć",
-            "č"
-        ],
-        "d": [
-            "ð",
-            "ď"
-        ],
-        "e": [
-            "é",
+        "misc_e": [
             "è",
             "ê",
             "ë",
             "Ä™"
         ],
-        "i": [
-            "í",
-            "ì",
-            "î",
-            "ï"
-        ],
-        "l": [
-            "Å‚"
-        ],
-        "n": [
-            "Å„",
-            "ñ",
-            "ň"
-        ],
-        "o": [
-            "ö",
+        "misc_o": [
             "ø",
             "Å“",
             "ó",
@@ -51,41 +34,12 @@
             "õ",
             "ō"
         ],
-        "r": [
-            "Å™"
-        ],
-        "s": [
-            "Å›",
-            "Å¡",
-            "ÅŸ",
-            "ß"
-        ],
-        "t": [
-            "Å¥",
-            "þ"
-        ],
-        "u": [
-            "ü",
-            "ú",
-            "ù",
-            "û",
-            "Å«"
-        ],
-        "y": [
-            "ý",
-            "ÿ"
-        ],
-        "z": [
-            "ź",
-            "ž",
-            "ż"
-        ],
-        "nordic_row2_11": [
-            "æ"
-        ],
         "nordic_row2_10": [
             "ø",
             "Å“"
+        ],
+        "nordic_row2_11": [
+            "æ"
         ]
     },
     "keyspec": {
diff --git a/tools/make-keyboard-text-py/locales/tr.json b/tools/make-keyboard-text-py/locales/tr.json
index c1ad9576fc..dbdfb57fcf 100644
--- a/tools/make-keyboard-text-py/locales/tr.json
+++ b/tools/make-keyboard-text-py/locales/tr.json
@@ -1,17 +1,29 @@
 {
     "locale": "tr",
     "morekeys": {
-        "a": [
-            "â",
-            "ä",
-            "á"
+        "c": [
+            "ç"
         ],
-        "e": [
-            "É™",
-            "é"
+        "g": [
+            "ÄŸ"
         ],
         "i": [
-            "ı",
+            "ı"
+        ],
+        "o": [
+            "ö"
+        ],
+        "s": [
+            "ÅŸ"
+        ],
+        "u": [
+            "ü"
+        ],
+        "misc_c": [
+            "ć",
+            "č"
+        ],
+        "misc_i": [
             "î",
             "ï",
             "ì",
@@ -19,8 +31,7 @@
             "į",
             "Ä«"
         ],
-        "o": [
-            "ö",
+        "misc_o": [
             "ô",
             "Å“",
             "ò",
@@ -29,36 +40,16 @@
             "ø",
             "ō"
         ],
-        "u": [
-            "ü",
-            "û",
-            "ù",
-            "ú",
-            "Å«"
-        ],
-        "s": [
-            "ÅŸ",
+        "misc_s": [
             "ß",
             "Å›",
             "Å¡"
         ],
-        "g": [
-            "ÄŸ"
-        ],
-        "n": [
-            "ň",
-            "ñ"
-        ],
-        "c": [
-            "ç",
-            "ć",
-            "č"
-        ],
-        "y": [
-            "ý"
-        ],
-        "z": [
-            "ž"
+        "misc_u": [
+            "û",
+            "ù",
+            "ú",
+            "Å«"
         ]
     },
     "keyspec": {},
-- 
GitLab