diff --git a/java/src/org/futo/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/org/futo/inputmethod/keyboard/KeyboardSwitcher.java index 8d3bd54ad..fbfff2193 100644 --- a/java/src/org/futo/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/org/futo/inputmethod/keyboard/KeyboardSwitcher.java @@ -40,6 +40,7 @@ import org.futo.inputmethod.latin.RichInputMethodManager; import org.futo.inputmethod.latin.RichInputMethodSubtype; import org.futo.inputmethod.latin.Subtypes; import org.futo.inputmethod.latin.WordComposer; +import org.futo.inputmethod.latin.settings.LongPressKeySettings; import org.futo.inputmethod.latin.settings.Settings; import org.futo.inputmethod.latin.settings.SettingsValues; import org.futo.inputmethod.latin.utils.LanguageOnSpacebarUtils; @@ -135,7 +136,8 @@ public final class KeyboardSwitcher implements SwitchActions { settingsValues.mIsNumberRowEnabled, 4.0f, res.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE, - settingsValues.mShowsActionKey ? settingsValues.mActionKeyId : null + settingsValues.mShowsActionKey ? settingsValues.mActionKeyId : null, + LongPressKeySettings.load(mThemeContext) ); try { diff --git a/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java index 3370ba83e..1f19e5511 100644 --- a/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java +++ b/java/src/org/futo/inputmethod/keyboard/internal/KeyboardTextsTable.java @@ -81,8 +81,8 @@ public final class KeyboardTextsTable { // /* index:histogram */ "name", "locale", "keylabel_to_alpha", - "morekeys_a", "morekeys_o", + "morekeys_a", "morekeys_u", "morekeys_e", "morekeys_i", @@ -96,280 +96,280 @@ public final class KeyboardTextsTable { "morekeys_misc_u", "morekeys_misc_e", "morekeys_misc_i", - "morekeys_z", "morekeys_n", + "morekeys_z", "morekeys_misc_c", "morekeys_misc_s", "single_angle_quotes", "double_angle_quotes", - "additional_morekeys_symbols_0", - "keyspec_symbols_0", - "keyspec_symbols_9", - "keyspec_symbols_5", - "keyspec_symbols_6", - "keyspec_symbols_8", + "keyspec_symbols_1", + "additional_morekeys_symbols_6", "additional_morekeys_symbols_8", "keyspec_symbols_7", - "additional_morekeys_symbols_7", - "additional_morekeys_symbols_4", - "keyspec_symbols_4", + "keyspec_symbols_6", + "additional_morekeys_symbols_0", "additional_morekeys_symbols_2", + "keyspec_symbols_4", + "keyspec_symbols_2", + "keyspec_symbols_3", + "additional_morekeys_symbols_1", + "keyspec_symbols_8", + "keyspec_symbols_0", + "keyspec_symbols_5", "morekeys_y", "additional_morekeys_symbols_5", - "keyspec_symbols_3", - "additional_morekeys_symbols_6", - "keyspec_symbols_1", - "additional_morekeys_symbols_1", - "keyspec_symbols_2", + "additional_morekeys_symbols_7", "additional_morekeys_symbols_3", + "keyspec_symbols_9", + "additional_morekeys_symbols_4", "additional_morekeys_symbols_9", - "morekeys_misc_z", "morekeys_g", "keylabel_to_symbol", "morekeys_d", + "morekeys_misc_z", "morekeys_cyrillic_ie", "morekeys_tablet_period", - "morekeys_cyrillic_soft_sign", - "keyspec_tablet_comma", - "morekeys_nordic_row2_10", - "keyspec_nordic_row2_11", "morekeys_misc_n", - "keyspec_period", - "keyspec_nordic_row2_10", - "keyspec_east_slavic_row2_2", - "keyspec_nordic_row1_11", "morekeys_period", + "keyspec_east_slavic_row2_2", + "keyspec_tablet_comma", "morekeys_t", "keyspec_east_slavic_row1_9", + "keyspec_nordic_row1_11", "keyspec_east_slavic_row2_11", + "keyspec_nordic_row2_11", + "keyspec_period", "keyspec_east_slavic_row3_5", - "keyspec_left_double_angle_quote", - "morekeys_r", - "keyspec_tablet_period", - "keyhintlabel_period", - "keyspec_right_curly_bracket", - "keyspec_comma", - "morekeys_punctuation", - "morekeys_nordic_row2_11", - "keyspec_less_than", - "keyspec_left_single_angle_quote", - "keyspec_greater_than", - "morekeys_star", - "keyspec_right_double_angle_quote", - "keyspec_left_parenthesis", - "keyspec_left_square_bracket", - "keyspec_right_single_angle_quote", - "keyspec_left_curly_bracket", - "keyspec_greater_than_equal", - "keyspec_less_than_equal", - "keyspec_right_parenthesis", - "morekeys_question", - "morekeys_tablet_comma", - "keyspec_right_square_bracket", + "keyspec_nordic_row2_10", + "morekeys_cyrillic_soft_sign", + "morekeys_nordic_row2_10", "morekeys_l", - "morekeys_bullet", - "morekeys_swiss_row1_11", - "morekeys_symbols_semicolon", - "keyspec_spanish_row2_10", - "morekeys_misc_y", - "keyhintlabel_tablet_comma", - "keyspec_symbols_question", - "keyhintlabel_tablet_period", - "keyspec_swiss_row2_11", - "keyspec_swiss_row1_11", - "morekeys_swiss_row2_10", - "keyspec_symbols_percent", - "morekeys_left_parenthesis", - "morekeys_right_parenthesis", - "keyspec_symbols_semicolon", - "keyspec_swiss_row2_10", + "keyspec_right_single_angle_quote", + "keyspec_greater_than", + "keyspec_tablet_period", + "keyspec_left_square_bracket", + "keyspec_left_curly_bracket", + "morekeys_r", + "morekeys_star", + "morekeys_tablet_comma", + "keyspec_comma", + "keyspec_left_single_angle_quote", + "keyspec_less_than_equal", + "keyspec_right_curly_bracket", + "keyspec_greater_than_equal", + "morekeys_nordic_row2_11", + "morekeys_question", + "keyspec_right_square_bracket", + "keyspec_left_double_angle_quote", + "keyspec_less_than", + "keyspec_right_double_angle_quote", + "morekeys_punctuation", + "keyspec_left_parenthesis", + "keyhintlabel_period", + "keyspec_right_parenthesis", "morekeys_arabic_diacritics", + "keyspec_swiss_row2_11", + "keyhintlabel_tablet_comma", + "morekeys_misc_y", + "morekeys_swiss_row1_11", + "keyspec_symbols_percent", + "keyhintlabel_tablet_period", "morekeys_symbols_percent", + "keyspec_swiss_row1_11", + "keyspec_swiss_row2_10", + "morekeys_left_parenthesis", + "keyspec_spanish_row2_10", "morekeys_swiss_row2_11", - "morekeys_cyrillic_ghe", - "label_done_key", + "keyspec_symbols_question", + "keyspec_symbols_semicolon", + "morekeys_bullet", + "morekeys_right_parenthesis", + "morekeys_symbols_semicolon", + "morekeys_swiss_row2_10", + "morekeys_misc_r", + "morekeys_k", "morekeys_misc_g", - "morekeys_h", - "label_search_key", - "morekeys_cyrillic_o", - "label_go_key", - "label_wait_key", - "morekeys_tablet_punctuation", "label_send_key", - "keyspec_south_slavic_row2_11", + "morekeys_cyrillic_o", + "keyspec_south_slavic_row3_8", + "morekeys_tablet_punctuation", "label_next_key", + "label_search_key", + "label_go_key", + "morekeys_east_slavic_row2_2", + "keyspec_south_slavic_row3_1", + "label_done_key", + "morekeys_misc_l", + "morekeys_h", + "keyspec_south_slavic_row1_6", + "morekeys_cyrillic_i", + "morekeys_j", + "keyspec_south_slavic_row2_11", + "label_wait_key", + "label_previous_key", + "morekeys_cyrillic_ghe", + "morekeys_cyrillic_en", "label_pause_key", "morekeys_cyrillic_u", - "keyspec_south_slavic_row3_8", - "keyspec_south_slavic_row3_1", - "morekeys_east_slavic_row2_2", - "morekeys_j", - "morekeys_cyrillic_en", - "morekeys_misc_l", - "label_previous_key", - "morekeys_misc_r", - "morekeys_cyrillic_i", - "morekeys_k", - "keyspec_south_slavic_row1_6", - "morekeys_misc_h", + "morekeys_exclamation", + "morekeys_less_than", "morekeys_misc_t", - "morekeys_plus", "keyspec_w", - "morekeys_currency_dollar", - "morekeys_cyrillic_ka", "morekeys_greater_than", "keyspec_x", - "keyspec_q", - "morekeys_exclamation", - "keyspec_y", - "morekeys_cyrillic_a", - "morekeys_less_than", "morekeys_w", + "morekeys_cyrillic_a", + "morekeys_currency_dollar", "morekeys_east_slavic_row2_11", - "morekeys_single_quote", - "actions_0", - "number_1", - "morekeys_symbols_8", - "single_9qm_lqm", - "morekeys_f", - "morekeys_am_pm", - "actions_j", - "morekeys_symbols_0", - "actions_f", - "actions_b", - "double_laqm_raqm", - "single_9qm_rqm", - "actions_q", - "morekeys_misc_j", - "qwertysyms_r", - "morekeys_x", - "keyspec_action_next", - "actions_w", - "morekeys_misc_p", - "double_9qm_rqm", - "actions_y", - "keyspecs_right_parenthesis_more_keys", - "morekeys_symbols_1", - "qwertysyms_n", - "actions_c", - "qwertysyms_6", - "qwertysyms_g", - "morekeys_tablet_double_quote", - "qwertysyms_1", - "number_8", - "actions_a", - "qwertysyms_2", - "qwertysyms_8", - "morekeys_q", - "morekeys_misc_b", - "qwertysyms_4", - "morekeys_symbols_7", - "actions_o", - "keylabel_to_phone_numeric", - "double_9qm_lqm", - "morekeys_double_quote", - "keylabel_time_pm", - "keyspec_settings", - "actions_m", - "qwertysyms_q", - "qwertysyms_y", - "number_6", - "morekeys_misc_f", - "morekeys_misc_k", - "single_rqm_9qm", - "qwertysyms_0", - "qwertysyms_c", - "actions_7", + "morekeys_cyrillic_ka", + "morekeys_misc_h", + "keyspec_y", + "keyspec_q", + "morekeys_plus", "morekeys_misc_v", - "actions_4", - "actions_d", - "actions_e", - "morekeys_v", - "actions_s", - "keyspec_emoji_action_key_navigation", - "single_lqm_rqm", - "morekeys_popular_domain", - "keyspec_shortcut", - "qwertysyms_d", - "qwertysyms_w", - "actions_u", - "actions_6", - "actions_l", - "actions_t", - "qwertysyms_j", - "keylabel_to_more_symbol", - "qwertysyms_3", - "morekeys_bottomrow_comma", - "qwertysyms_h", - "morekeys_misc_d", - "morekeys_misc_x", - "qwertysyms_i", - "morekeys_symbols_5", - "morekeys_symbols_2", - "single_laqm_raqm", - "keyspec_popular_domain", - "actions_h", - "number_0", - "morekeys_p", - "keylabel_to_phone_symbols", - "qwertysyms_o", - "actions_v", - "morekeys_symbols_6", - "morekeys_symbols_4", - "actions_1", - "actions_9", - "actions_z", - "actions_x", - "keyspec_emoji_action_key", - "double_rqm_9qm", - "qwertysyms_f", - "qwertysyms_7", - "qwertysyms_l", - "qwertysyms_m", - "actions_i", - "single_raqm_laqm", - "morekeys_misc_q", - "qwertysyms_5", - "number_2", - "morekeys_symbols_9", - "keylabel_tablet_to_more_symbol", - "morekeys_symbols_3", - "actions_p", - "qwertysyms_p", - "actions_k", - "double_lqm_rqm", "number_7", - "keyspecs_left_parenthesis_more_keys", - "qwertysyms_e", - "qwertysyms_t", - "morekeys_misc_m", - "morekeys_b", - "actions_5", - "qwertysyms_b", - "number_5", - "qwertysyms_s", - "actions_2", - "actions_3", - "double_raqm_laqm", - "keyspec_action_previous", - "number_9", - "morekeys_m", - "qwertysyms_a", - "number_3", - "morekeys_currency_generic", - "morekeys_misc_w", - "keylabel_time_am", - "qwertysyms_9", - "actions_8", - "number_4", - "qwertysyms_x", - "actions_n", + "qwertysyms_q", "actions_g", - "qwertysyms_z", + "qwertysyms_a", + "morekeys_misc_q", + "morekeys_am_pm", + "actions_k", + "morekeys_tablet_double_quote", + "double_laqm_raqm", + "actions_0", + "qwertysyms_h", + "qwertysyms_g", + "qwertysyms_6", + "actions_s", + "morekeys_misc_j", + "morekeys_misc_f", + "actions_j", + "morekeys_misc_k", + "keylabel_tablet_to_more_symbol", + "qwertysyms_f", "qwertysyms_v", + "actions_a", + "actions_5", + "single_rqm_9qm", + "double_raqm_laqm", + "morekeys_symbols_1", + "keyspec_action_previous", + "double_rqm_9qm", + "morekeys_f", + "morekeys_misc_p", + "actions_x", + "number_4", + "single_laqm_raqm", + "single_9qm_rqm", + "morekeys_symbols_0", + "keyspec_emoji_action_key", + "qwertysyms_s", + "qwertysyms_r", + "morekeys_symbols_2", + "actions_l", + "keyspec_action_next", + "qwertysyms_1", + "actions_6", + "actions_b", + "double_lqm_rqm", + "double_9qm_lqm", + "actions_1", + "actions_h", + "number_5", + "qwertysyms_w", + "number_6", + "qwertysyms_p", + "actions_q", + "single_9qm_lqm", + "keylabel_to_more_symbol", + "actions_7", + "morekeys_bottomrow_comma", + "actions_t", + "morekeys_b", + "morekeys_misc_w", + "qwertysyms_c", + "number_0", + "actions_v", + "number_9", + "qwertysyms_u", + "actions_4", + "keylabel_time_pm", + "qwertysyms_3", + "morekeys_symbols_9", + "actions_m", + "actions_9", + "qwertysyms_b", + "number_3", + "qwertysyms_z", + "keyspec_emoji_action_key_navigation", + "actions_i", + "actions_f", + "number_2", + "qwertysyms_0", + "keyspec_popular_domain", + "qwertysyms_t", + "actions_y", + "morekeys_popular_domain", + "qwertysyms_m", + "morekeys_x", + "keylabel_to_phone_numeric", + "single_lqm_rqm", + "qwertysyms_y", + "actions_n", + "morekeys_misc_d", + "morekeys_misc_m", + "morekeys_m", + "keyspec_shortcut", + "qwertysyms_7", + "morekeys_misc_x", + "qwertysyms_o", + "actions_e", + "qwertysyms_9", + "morekeys_symbols_6", "actions_r", + "actions_3", + "keylabel_to_phone_symbols", + "qwertysyms_2", + "morekeys_symbols_5", + "actions_2", + "actions_u", + "morekeys_q", + "single_raqm_laqm", + "morekeys_symbols_7", + "actions_z", + "morekeys_p", + "morekeys_currency_generic", + "qwertysyms_5", + "qwertysyms_d", + "qwertysyms_l", + "number_1", + "qwertysyms_j", "qwertysyms_k", - "qwertysyms_u" + "qwertysyms_x", + "qwertysyms_i", + "keylabel_time_am", + "actions_o", + "keyspecs_right_parenthesis_more_keys", + "actions_d", + "actions_c", + "qwertysyms_8", + "morekeys_v", + "morekeys_symbols_4", + "morekeys_misc_b", + "double_9qm_rqm", + "qwertysyms_n", + "actions_p", + "qwertysyms_e", + "actions_8", + "morekeys_single_quote", + "morekeys_symbols_8", + "keyspec_settings", + "actions_w", + "qwertysyms_4", + "number_8", + "morekeys_symbols_3", + "morekeys_double_quote", + "keyspecs_left_parenthesis_more_keys" }; private static final String EMPTY = ""; @@ -377,8 +377,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_af = { "af", null, - "\u00e1", "\u00f3,\u00f4", + "\u00e1", "\u00fa,\u00fb", "\u00e9,\u00e8,\u00ea,\u00eb", "\u00ed,\u00ec,\u00ef,\u00ee", @@ -418,32 +418,34 @@ public final class KeyboardTextsTable { null, null, null, - "0,\u066b,\u066c", - "\u0660", - "\u0669", - "\u0665", - "\u0666", - "\u0668", + "\u0661", + "6", "8", "\u0667", - "7", - "4", - "\u0664", + "\u0666", + "0,\u066b,\u066c", "2", + "\u0664", + "\u0662", + "\u0663", + "1", + "\u0668", + "\u0660", + "\u0665", null, "5", - "\u0663", - "6", - "\u0661", - "1", - "\u0662", + "7", "3", + "\u0669", + "4", "9", null, - null, "\u0663\u0662\u0661\u061f", null, null, + null, + "!text/morekeys_arabic_diacritics", + null, "!text/morekeys_arabic_diacritics", null, "\u060c", @@ -454,60 +456,58 @@ public final class KeyboardTextsTable { null, null, null, - "!text/morekeys_arabic_diacritics", null, null, null, null, - "\u00ab|\u00bb", - null, - null, - "\u0651", - "}|{", - "\u060c", - null, - null, - "<|>", - "\u2039|\u203a", - ">|<", - "\u2605,\u066d", - "\u00bb|\u00ab", - "(|)", - "[|]", "\u203a|\u2039", + ">|<", + null, + "[|]", "{|}", - "\u2265|\u2264", - "\u2264|\u2265", - ")|(", - "?,\u00bf", + null, + "\u2605,\u066d", "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,\\\",\\'", + "\u060c", + "\u2039|\u203a", + "\u2264|\u2265", + "}|{", + "\u2265|\u2264", + null, + "?,\u00bf", "]|[", + "\u00ab|\u00bb", + "<|>", + "\u00bb|\u00ab", null, - "\u266a", - null, - ";", - null, - null, - "\u061f", - "\u061f", + "(|)", "\u0651", + ")|(", + "!fixedColumnOrder!8, \u0654\u25cc|\u0654, \u0652\u25cc|\u0652, \u064d\u25cc|\u064d, \u064c\u25cc|\u064c, \u0651\u25cc|\u0651, \u064b\u25cc|\u064b,!text/keyspec_symbols_question,!, \u0656\u25cc|\u0656, \u0670\u25cc|\u0670, \u0653\u25cc|\u0653, \u0650\u25cc|\u0650, \u064f\u25cc|\u064f,\u0640, \u0655\u25cc|\u0655, \u064e\u25cc|\u064e", null, + "\u061f", null, null, "\u066a", - "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys", - "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys", - "\u061b", + "\u0651", + "\\%,\u2030", null, - "!fixedColumnOrder!8, \u0654\u25cc|\u0654, \u0652\u25cc|\u0652, \u064d\u25cc|\u064d, \u064c\u25cc|\u064c, \u0651\u25cc|\u0651, \u064b\u25cc|\u064b,!text/keyspec_symbols_question,!, \u0656\u25cc|\u0656, \u0670\u25cc|\u0670, \u0653\u25cc|\u0653, \u0650\u25cc|\u0650, \u064f\u25cc|\u064f,\u0640, \u0655\u25cc|\u0655, \u064e\u25cc|\u064e", - "\\%,\u2030" + null, + "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys", + null, + null, + "\u061f", + "\u061b", + "\u266a", + "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys", + ";" }; private static final String[] TEXTS_az = { "az", null, - "\u00e2,\u00e4,\u00e1", "\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", @@ -521,8 +521,10 @@ public final class KeyboardTextsTable { null, null, null, - "\u017e", "\u0148,\u00f1", + "\u017e", + null, + null, null, null, null, @@ -546,9 +548,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u011f" }; @@ -603,20 +602,19 @@ public final class KeyboardTextsTable { null, "\u0451", null, - "\u044a", - null, - null, - null, - null, null, null, "\u044b", null, null, - null, "\u045e", + null, "\u044d", - "\u0456" + null, + null, + "\u0456", + null, + "\u044a" }; private static final String[] TEXTS_bg = { @@ -654,26 +652,26 @@ public final class KeyboardTextsTable { null, null, null, - "0", - "\u09e6", - "\u09ef", - "\u09eb", - "\u09ec", - "\u09ee", + "\u09e7", + "6", "8", "\u09ed", - "7", - "4", - "\u09ea", + "\u09ec", + "0", "2", + "\u09ea", + "\u09e8", + "\u09e9", + "1", + "\u09ee", + "\u09e6", + "\u09eb", null, "5", - "\u09e9", - "6", - "\u09e7", - "1", - "\u09e8", + "7", "3", + "\u09ef", + "4", "9" }; @@ -694,8 +692,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_ca = { "ca", null, - "\u00e0", "\u00f2,\u00f3", + "\u00e0", "\u00fa,\u00fc", "\u00e8,\u00e9", "\u00ed,\u00ef", @@ -762,6 +760,20 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, "!autoColumnOrder!9,\\\\,?,!,\u00b7,#,),(,/,;,',@,:,-,\\\",+,\\%,&", null, null, @@ -777,12 +789,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, "\u00e7", null, null, @@ -797,16 +803,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, "!autoColumnOrder!8,\\\\,',\u00b7,#,),(,/,;,@,:,-,\\\",+,\\%,&" }; @@ -834,96 +830,96 @@ public final class KeyboardTextsTable { null, null, null, - "0,\u066b,\u066c", - "\u0660", - "\u0669", - "\u0665", - "\u0666", - "\u0668", + "\u0661", + "6", "8", "\u0667", - "7", - "4", - "\u0664", + "\u0666", + "0,\u066b,\u066c", "2", + "\u0664", + "\u0662", + "\u0663", + "1", + "\u0668", + "\u0660", + "\u0665", null, "5", - "\u0663", - "6", - "\u0661", - "1", - "\u0662", + "7", "3", + "\u0669", + "4", "9", null, - null, "\u0663\u0662\u0661\u061f", null, null, + null, + "\u061f", + null, "\u061f", null, "\u060c", null, null, null, + null, + null, ".", null, null, null, - "\u061f", null, null, - null, - null, - "\u00ab|\u00bb", - null, - null, - "\u0651", - "}|{", - "\u060c", - null, - null, - "<|>", - "\u2039|\u203a", - ">|<", - "\u2605,\u066d", - "\u00bb|\u00ab", - "(|)", - "[|]", "\u203a|\u2039", + ">|<", + null, + "[|]", "{|}", - "\u2265|\u2264", - "\u2264|\u2265", - ")|(", - "?,\u00bf", + null, + "\u2605,\u066d", "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,\\\",\\'", + "\u060c", + "\u2039|\u203a", + "\u2264|\u2265", + "}|{", + "\u2265|\u2264", + null, + "?,\u00bf", "]|[", + "\u00ab|\u00bb", + "<|>", + "\u00bb|\u00ab", null, - "\u266a", - null, - ";", - null, - null, - "\u061f", - "\u061f", + "(|)", "\u0651", + ")|(", + "!fixedColumnOrder!7, \u0655\u25cc|\u0655, \u0654\u25cc|\u0654, \u0652\u25cc|\u0652, \u064d\u25cc|\u064d, \u064c\u25cc|\u064c, \u064b\u25cc|\u064b, \u0651\u25cc|\u0651, \u0656\u25cc|\u0656, \u0670\u25cc|\u0670, \u0653\u25cc|\u0653, \u0650\u25cc|\u0650, \u064f\u25cc|\u064f, \u064e\u25cc|\u064e,\u0640|\u0640", null, + "\u061f", null, null, "\u066a", - "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys", - "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys", - "\u061b", + "\u0651", + "\\%,\u2030", null, - "!fixedColumnOrder!7, \u0655\u25cc|\u0655, \u0654\u25cc|\u0654, \u0652\u25cc|\u0652, \u064d\u25cc|\u064d, \u064c\u25cc|\u064c, \u064b\u25cc|\u064b, \u0651\u25cc|\u0651, \u0656\u25cc|\u0656, \u0670\u25cc|\u0670, \u0653\u25cc|\u0653, \u0650\u25cc|\u0650, \u064f\u25cc|\u064f, \u064e\u25cc|\u064e,\u0640|\u0640", - "\\%,\u2030" + null, + "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys", + null, + null, + "\u061f", + "\u061b", + "\u266a", + "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys", + ";" }; private static final String[] TEXTS_cs = { "cs", null, - "\u00e1", "\u00f3", + "\u00e1", "\u00fa,\u016f", "\u00e9,\u011b", "\u00ed", @@ -937,8 +933,8 @@ public final class KeyboardTextsTable { "\u00fb,\u00fc,\u00f9,\u016b", "\u00e8,\u00ea,\u00eb,\u0119,\u0117,\u0113", "\u00ee,\u00ef,\u00ec,\u012f,\u012b", - "\u017e", "\u0148", + "\u017e", "\u00e7,\u0107", "\u00df,\u015b", "!text/single_raqm_laqm", @@ -955,6 +951,8 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, "\u00fd", null, null, @@ -964,27 +962,30 @@ public final class KeyboardTextsTable { null, null, null, + "\u010f", "\u017a,\u017c", null, null, - "\u010f", - null, - null, - null, - null, - null, - null, "\u00f1,\u0144", null, null, null, - null, - null, "\u0165", null, null, null, null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, "\u0159", null, null, @@ -1006,20 +1007,14 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, "\u00ff" }; private static final String[] TEXTS_da = { "da", null, - "\u00e5,\u00e6", "\u00f8", + "\u00e5,\u00e6", null, null, null, @@ -1068,13 +1063,20 @@ public final class KeyboardTextsTable { null, null, null, - "\u00e4", + null, + null, + null, + null, + "\u00e5", + null, "\u00f8", null, null, "\u00e6", null, - "\u00e5", + "\u00e4", + null, + null, null, null, null, @@ -1093,8 +1095,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_de = { "de", null, - "\u00e4", "\u00f6", + "\u00e4", "\u00fc", null, null, @@ -1180,24 +1182,24 @@ public final class KeyboardTextsTable { null, null, null, + "\u00e4", + null, + null, "\u00e8", null, null, null, - null, - null, - null, - "\u00e4", "\u00fc", - "\u00e9", - null, - null, - null, - null, "\u00f6", null, null, - "\u00e0" + "\u00e0", + null, + null, + null, + null, + null, + "\u00e9" }; private static final String[] TEXTS_el = { @@ -1254,7 +1256,6 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u011d", null, null, @@ -1301,6 +1302,15 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + null, + null, + null, + null, + null, + null, "\u0135", null, null, @@ -1311,29 +1321,21 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, - null, - null, "\u011f,\u0121,\u0123", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, "\u0125", null, null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, "\u0135", null, null, @@ -1342,24 +1344,27 @@ public final class KeyboardTextsTable { null, null, null, - "\u0127", + null, null, null, "\u011d", null, - null, - null, "\u0109", - "\u015d", null, - "\u016d" + null, + null, + null, + null, + "\u0127", + "\u016d", + "\u015d" }; private static final String[] TEXTS_es = { "es", null, - "\u00e1", "\u00f3", + "\u00e1", "\u00fa,\u00fc", "\u00e9", "\u00ed", @@ -1373,7 +1378,6 @@ public final class KeyboardTextsTable { "\u00f9,\u00fb,\u016b", "\u00e8,\u00eb,\u00ea,\u0119,\u0117,\u0113", "\u00ef,\u00ec,\u00ee,\u012f,\u012b", - null, "\u00f1", null, null, @@ -1407,9 +1411,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u0144", null, null, @@ -1426,14 +1427,32 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, "!autoColumnOrder!9,\\\\,?,!,#,),(,/,;,\u00a1,',@,:,-,\\\",+,\\%,&,\u00bf" }; private static final String[] TEXTS_et = { "et", null, - "\u00e4", "\u00f6,\u00f5", + "\u00e4", "\u00fc", null, null, @@ -1447,9 +1466,9 @@ public final class KeyboardTextsTable { "\u016b,\u0173,\u00f9,\u00fa,\u00fb,\u016f,\u0171", null, null, + null, "\u017e", null, - null, "\u00df,\u015b,\u015f", null, null, @@ -1474,6 +1493,9 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, "\u017c,\u017a", null, null, @@ -1482,20 +1504,22 @@ public final class KeyboardTextsTable { null, null, null, - "\u00f5", + null, + "\u00fc", + null, "\u00e4", null, null, "\u00f6", null, - "\u00fc" + "\u00f5" }; private static final String[] TEXTS_eu = { "eu", null, - "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa", "\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", @@ -1509,7 +1533,6 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u00f1,\u0144" }; @@ -1537,32 +1560,34 @@ public final class KeyboardTextsTable { null, null, null, - "0,\u066b,\u066c", - "\u06f0", - "\u06f9", - "\u06f5", - "\u06f6", - "\u06f8", + "\u06f1", + "6", "8", "\u06f7", - "7", - "4", - "\u06f4", + "\u06f6", + "0,\u066b,\u066c", "2", + "\u06f4", + "\u06f2", + "\u06f3", + "1", + "\u06f8", + "\u06f0", + "\u06f5", null, "5", - "\u06f3", - "6", - "\u06f1", - "1", - "\u06f2", + "7", "3", + "\u06f9", + "4", "9", null, - null, "\u06f3\u06f2\u06f1\u061f", null, null, + null, + "!text/morekeys_arabic_diacritics", + null, "!text/morekeys_arabic_diacritics", null, "\u060c", @@ -1573,55 +1598,51 @@ public final class KeyboardTextsTable { null, null, null, - "!text/morekeys_arabic_diacritics", null, null, null, null, - "\u00ab|\u00bb", - null, - null, - "\u064b", - "}|{", - "\u060c", - null, - null, - "<|>", - "\u2039|\u203a", - ">|<", - "\u2605,\u066d", - "\u00bb|\u00ab", - "(|)", - "[|]", "\u203a|\u2039", + ">|<", + null, + "[|]", "{|}", - "\u2265|\u2264", - "\u2264|\u2265", - ")|(", - "?,\u00bf", + null, + "\u2605,\u066d", "!fixedColumnOrder!4,:,!,\u061f,\u061b,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote", + "\u060c", + "\u2039|\u203a", + "\u2264|\u2265", + "}|{", + "\u2265|\u2264", + null, + "?,\u00bf", "]|[", + "\u00ab|\u00bb", + "<|>", + "\u00bb|\u00ab", null, - "\u266a", - null, - ";", - null, - null, - "\u061f", - "\u061f", + "(|)", "\u064b", + ")|(", + "!fixedColumnOrder!8, \u0654\u25cc|\u0654, \u0652\u25cc|\u0652, \u064d\u25cc|\u064d, \u064c\u25cc|\u064c, \u0651\u25cc|\u0651, \u064b\u25cc|\u064b,!text/keyspec_symbols_question,!, \u0656\u25cc|\u0656, \u0670\u25cc|\u0670, \u0653\u25cc|\u0653, \u0650\u25cc|\u0650, \u064f\u25cc|\u064f,\u0640, \u0655\u25cc|\u0655, \u064e\u25cc|\u064e", null, + "\u061f", null, null, "\u066a", - "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys", - "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys", - "\u061b", - null, - "!fixedColumnOrder!8, \u0654\u25cc|\u0654, \u0652\u25cc|\u0652, \u064d\u25cc|\u064d, \u064c\u25cc|\u064c, \u0651\u25cc|\u0651, \u064b\u25cc|\u064b,!text/keyspec_symbols_question,!, \u0656\u25cc|\u0656, \u0670\u25cc|\u0670, \u0653\u25cc|\u0653, \u0650\u25cc|\u0650, \u064f\u25cc|\u064f,\u0640, \u0655\u25cc|\u0655, \u064e\u25cc|\u064e", + "\u064b", "\\%,\u2030", null, null, + "!fixedColumnOrder!4,\ufd3e|\ufd3f,!text/keyspecs_left_parenthesis_more_keys", + null, + null, + "\u061f", + "\u061b", + "\u266a", + "!fixedColumnOrder!4,\ufd3f|\ufd3e,!text/keyspecs_right_parenthesis_more_keys", + ";", null, null, null, @@ -1649,23 +1670,17 @@ 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, - "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than", - null, - null, - null, - null, - null, - "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than" + "!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, - "\u00e4,\u00e5", "\u00f6", + "\u00e4,\u00e5", null, null, null, @@ -1679,9 +1694,9 @@ public final class KeyboardTextsTable { null, null, null, + null, "\u017e", null, - null, "\u00df,\u015b", null, null, @@ -1706,6 +1721,9 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, "\u017a,\u017c", null, null, @@ -1714,13 +1732,17 @@ public final class KeyboardTextsTable { null, null, null, - "\u00f8", + null, + "\u00e5", + null, "\u00e4", null, null, "\u00f6", null, - "\u00e5", + "\u00f8", + null, + null, null, null, null, @@ -1739,8 +1761,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_fr = { "fr", null, - "\u00e0,\u00e2,%,\u00e6", "\u00f4,\u0153", + "\u00e0,\u00e2,%,\u00e6", "\u00f9,\u00fb,%,\u00fc", "\u00e9,\u00e8,\u00ea,\u00eb", "\u00ee,%,\u00ef", @@ -1772,6 +1794,8 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, "%,\u00ff", null, null, @@ -1824,33 +1848,31 @@ public final class KeyboardTextsTable { null, null, null, + "\u00e0", null, null, "\u00fc", null, null, null, - null, - null, - null, - "\u00e0", "\u00e8", - "\u00f6", - null, - null, - null, - null, "\u00e9", null, null, - "\u00e4" + "\u00e4", + null, + null, + null, + null, + null, + "\u00f6" }; private static final String[] TEXTS_gl = { "gl", null, - "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa", "\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", @@ -1864,7 +1886,6 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u00f1,\u0144" }; @@ -1892,34 +1913,38 @@ public final class KeyboardTextsTable { null, null, null, - "0", - "\u0966", - "\u096f", - "\u096b", - "\u096c", - "\u096e", + "\u0967", + "6", "8", "\u096d", - "7", - "4", - "\u096a", + "\u096c", + "0", "2", + "\u096a", + "\u0968", + "\u0969", + "1", + "\u096e", + "\u0966", + "\u096b", null, "5", - "\u0969", - "6", - "\u0967", - "1", - "\u0968", + "7", "3", + "\u096f", + "4", "9", null, - null, "?\u0967\u0968\u0969", null, null, + null, "!autoColumnOrder!8,.,\\,,?,!,\u0965,#,),(,',/,@,:,;,-,\",+", null, + "!autoColumnOrder!8,\\,,.,?,!,\u0965,#,),(,/,',@,:,;,-,\",+", + null, + null, + null, null, null, null, @@ -1928,9 +1953,6 @@ public final class KeyboardTextsTable { null, null, null, - "!autoColumnOrder!8,\\,,.,?,!,\u0965,#,),(,/,',@,:,;,-,\",+", - null, - null, null, null, null, @@ -2047,26 +2069,29 @@ public final class KeyboardTextsTable { null, null, null, - "Done", null, null, - "Search", - null, - "Go", - "Wait", - null, "Send", null, + null, + null, "Next", - "Pause", + "Search", + "Go", + null, + null, + "Done", null, null, null, null, null, null, + "Wait", + "Prev", null, - "Prev" + null, + "Pause" }; private static final String[] TEXTS_hr = { @@ -2087,8 +2112,8 @@ public final class KeyboardTextsTable { null, null, null, - "\u017e", null, + "\u017e", "\u00e7", "\u015b,\u00df", "!text/single_raqm_laqm", @@ -2114,17 +2139,17 @@ public final class KeyboardTextsTable { null, null, null, - "\u017a,\u017c", null, null, - "\u0111" + "\u0111", + "\u017a,\u017c" }; private static final String[] TEXTS_hu = { "hu", null, - "\u00e1", "\u00f3,\u00f6,\u0151", + "\u00e1", "\u00fa,\u00fc,\u0171", "\u00e9", "\u00ed", @@ -2198,10 +2223,14 @@ public final class KeyboardTextsTable { null, "!text/morekeys_punctuation", null, + null, + null, "\u055d", null, null, null, + null, + null, "\u0589", null, null, @@ -2210,22 +2239,13 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u0589", null, null, + null, + null, + null, "\u055d", - "!autoColumnOrder!8,\\,,\u055e,\u055c,.,\u055a,\u0559,?,!,\u055d,\u055b,\u058a,\u00bb,\u00ab,\u055f,;,:", - null, - null, - null, - null, - null, - null, - null, - null, null, null, null, @@ -2236,11 +2256,7 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, + "!autoColumnOrder!8,\\,,\u055e,\u055c,.,\u055a,\u0559,?,!,\u055d,\u055b,\u058a,\u00bb,\u00ab,\u055f,;,:", null, null, null, @@ -2294,8 +2310,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_is = { "is", null, - "\u00e1,\u00e4,\u00e6", "\u00f3,\u00f6", + "\u00e1,\u00e4,\u00e6", "\u00fa", "\u00e9", "\u00ed", @@ -2327,6 +2343,8 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, "\u00fd", null, null, @@ -2336,9 +2354,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u00f0", null, null, @@ -2347,11 +2362,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, "\u00fe", null, null, @@ -2384,14 +2394,19 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + null, + null, "\u00ff" }; private static final String[] TEXTS_it = { "it", null, - "\u00e0", "\u00f2", + "\u00e0", "\u00f9", "\u00e8,\u00e9", "\u00ec", @@ -2477,24 +2492,24 @@ public final class KeyboardTextsTable { null, null, null, + "\u00e4", + null, + null, "\u00e8", null, null, null, - null, - null, - null, - "\u00e4", "\u00fc", - "\u00e9", - null, - null, - null, - null, "\u00f6", null, null, - "\u00e0" + "\u00e0", + null, + null, + null, + null, + null, + "\u00e9" }; private static final String[] TEXTS_iw = { @@ -2562,29 +2577,41 @@ public final class KeyboardTextsTable { null, null, null, - "\u00ab|\u00bb", null, - null, - null, - "}|{", - null, - null, - null, - "<|>", - "\u2039|\u203a", - ">|<", - "\u2605", - "\u00bb|\u00ab", - "(|)", - "[|]", "\u203a|\u2039", + ">|<", + null, + "[|]", "{|}", - "\u2265|\u2264", + null, + "\u2605", + null, + null, + "\u2039|\u203a", "\u2264|\u2265", - ")|(", + "}|{", + "\u2265|\u2264", null, null, "]|[", + "\u00ab|\u00bb", + "<|>", + "\u00bb|\u00ab", + null, + "(|)", + null, + ")|(", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, null, null, null, @@ -2698,6 +2725,18 @@ public final class KeyboardTextsTable { null, "\u0451", null, + null, + null, + "\u044b", + null, + null, + "\u0449", + null, + "\u044d", + null, + null, + "\u0438", + null, "\u044a", null, null, @@ -2705,13 +2744,6 @@ public final class KeyboardTextsTable { null, null, null, - "\u044b", - null, - null, - null, - "\u0449", - "\u044d", - "\u0438", null, null, null, @@ -2754,38 +2786,29 @@ public final class KeyboardTextsTable { null, null, null, + "\u04e9", + null, + null, + null, + null, + null, + "\u0456", + null, + null, + null, + null, + null, + null, + null, + null, + null, null, "\u0493", - null, - null, - null, - null, - "\u04e9", - null, - null, - null, - null, - null, - null, + "\u04a3", null, "\u04af,\u04b1", null, null, - "\u0456", - null, - "\u04a3", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - "\u049b", null, null, null, @@ -2793,8 +2816,8 @@ public final class KeyboardTextsTable { null, "\u04d9", null, - null, - "\u04bb" + "\u04bb", + "\u049b" }; private static final String[] TEXTS_km = { @@ -2934,6 +2957,10 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + null, "\u17db,\u00a2,\u00a3,\u20ac,\u00a5,\u20b1" }; @@ -2961,29 +2988,28 @@ public final class KeyboardTextsTable { null, null, null, - "0", - "\u0ce6", - "\u0cef", - "\u0ceb", - "\u0cec", - "\u0cee", + "\u0ce7", + "6", "8", "\u0ced", - "7", - "4", - "\u0cea", + "\u0cec", + "0", "2", + "\u0cea", + "\u0ce8", + "\u0ce9", + "1", + "\u0cee", + "\u0ce6", + "\u0ceb", null, "5", - "\u0ce9", - "6", - "\u0ce7", - "1", - "\u0ce8", + "7", "3", + "\u0cef", + "4", "9", null, - null, "?\u0ce7\u0ce8\u0ce9" }; @@ -3038,21 +3064,20 @@ public final class KeyboardTextsTable { null, "\u0451", null, - "\u044a", - null, - null, - null, - null, null, null, "\u044b", null, null, - null, "\u0449", + null, "\u044d", + null, + null, "\u0438", null, + "\u044a", + null, null, null, null, @@ -3108,12 +3133,19 @@ public final class KeyboardTextsTable { null, null, null, - "\u04af", null, null, null, null, - "\u04a3" + null, + null, + null, + null, + null, + null, + "\u04a3", + null, + "\u04af" }; private static final String[] TEXTS_lo = { @@ -3133,8 +3165,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_lt = { "lt", null, - "\u0105", null, + "\u0105", "\u016b,\u0173", "\u0117,\u0119", "\u012f", @@ -3148,14 +3180,15 @@ public final class KeyboardTextsTable { null, null, null, + null, "\u017e" }; private static final String[] TEXTS_lv = { "lv", null, - "\u0101", "\u014d", + "\u0101", "\u016b", "\u0113", "\u012b", @@ -3169,8 +3202,8 @@ public final class KeyboardTextsTable { "\u0173,\u00f9,\u00fa,\u00fb,\u00fc,\u016f,\u0171", "\u0117,\u00e8,\u00e9,\u00ea,\u00eb,\u0119,\u011b", "\u012f,\u00ec,\u00ed,\u00ee,\u00ef,\u0131", - "\u017e", "\u0146", + "\u017e", "\u00e7,\u0107", "\u00df,\u015b,\u015f", null, @@ -3196,14 +3229,10 @@ public final class KeyboardTextsTable { null, null, null, - "\u017c,\u017a", "\u0123", null, null, - null, - null, - null, - null, + "\u017c,\u017a", null, null, "\u00f1,\u0144", @@ -3217,6 +3246,15 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + "\u013c", + null, + null, + null, + null, + null, "\u0157", null, null, @@ -3239,13 +3277,6 @@ public final class KeyboardTextsTable { null, null, null, - "\u013c", - null, - null, - null, - null, - null, - null, null, null, null, @@ -3261,6 +3292,8 @@ public final class KeyboardTextsTable { null, null, null, + "\u0159,\u0155", + "\u0137", "\u011f", null, null, @@ -3272,17 +3305,7 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, - "\u0142,\u013a,\u013e", - null, - "\u0159,\u0155", - null, - "\u0137" + "\u0142,\u013a,\u013e" }; private static final String[] TEXTS_mk = { @@ -3398,26 +3421,20 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - "\u045c", - null, - null, - null, "\u0453", + null, + null, + null, + null, + null, "\u0437", null, null, null, - null, - null, - null, + "\u0455", "\u045d", null, - "\u0455" + "\u045c" }; private static final String[] TEXTS_ml = { @@ -3472,29 +3489,28 @@ public final class KeyboardTextsTable { null, null, null, - "0", - "\u0966", - "\u096f", - "\u096b", - "\u096c", - "\u096e", + "\u0967", + "6", "8", "\u096d", - "7", - "4", - "\u096a", + "\u096c", + "0", "2", + "\u096a", + "\u0968", + "\u0969", + "1", + "\u096e", + "\u0966", + "\u096b", null, "5", - "\u0969", - "6", - "\u0967", - "1", - "\u0968", + "7", "3", + "\u096f", + "4", "9", null, - null, "?\u0967\u0968\u0969" }; @@ -3550,10 +3566,14 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, "\u104a", null, null, null, + null, + null, "\u104b", null, null, @@ -3562,24 +3582,7 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u104b", - "\u104a", - null, - null, - "!autoColumnOrder!9,\u104a,.,?,!,#,),(,/,;,...,',@,:,-,\\\",+,\\%,&", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, null, null, null, @@ -3596,6 +3599,17 @@ public final class KeyboardTextsTable { null, null, null, + "!autoColumnOrder!9,\u104a,.,?,!,#,),(,/,;,...,',@,:,-,\\\",+,\\%,&", + null, + "\u104a", + null, + null, + null, + null, + null, + null, + null, + null, null, null, null, @@ -3620,8 +3634,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_nb = { "nb", null, - "\u00e5,\u00e6,\u00e4,\u00e0,\u00e1,\u00e2,\u00e3,\u0101", "\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, @@ -3670,13 +3684,20 @@ public final class KeyboardTextsTable { null, null, null, - "\u00f6", + null, + null, + null, + null, + "\u00e5", + null, "\u00e6", null, null, "\u00f8", null, - "\u00e5", + "\u00f6", + null, + null, null, null, null, @@ -3716,34 +3737,38 @@ public final class KeyboardTextsTable { null, null, null, - "0", - "\u0966", - "\u096f", - "\u096b", - "\u096c", - "\u096e", + "\u0967", + "6", "8", "\u096d", - "7", - "4", - "\u096a", + "\u096c", + "0", "2", + "\u096a", + "\u0968", + "\u0969", + "1", + "\u096e", + "\u0966", + "\u096b", null, "5", - "\u0969", - "6", - "\u0967", - "1", - "\u0968", + "7", "3", + "\u096f", + "4", "9", null, - null, "?\u0967\u0968\u0969", null, null, + null, "!autoColumnOrder!8,.,\\,,?,!,\u0965,#,),(,',/,@,:,;,-,\",+", null, + "!autoColumnOrder!8,\\,,.,?,!,\u0965,#,),(,/,',@,:,;,-,\",+", + null, + null, + null, null, null, null, @@ -3752,9 +3777,6 @@ public final class KeyboardTextsTable { null, null, null, - "!autoColumnOrder!8,\\,,.,?,!,\u0965,#,),(,/,',@,:,;,-,\",+", - null, - null, null, null, null, @@ -3765,8 +3787,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_nl = { "nl", null, - "\u00e1,\u00e4,\u00e2,\u00e0", "\u00f3,\u00f6", + "\u00e1,\u00e4,\u00e2,\u00e0", "\u00fa,\u00fc", "\u00e9,\u00eb,\u00ea,\u00e8", "\u00ed,\u00ef,\u00ec,\u00ee,\u012f,\u012b,\u0133", @@ -3784,8 +3806,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_pl = { "pl", null, - "\u0105", "\u00f3", + "\u0105", null, "\u0119", null, @@ -3799,8 +3821,8 @@ public final class KeyboardTextsTable { null, "\u00e8,\u00e9,\u00ea,\u00eb,\u0117,\u0113", null, - "\u017c,\u017a", "\u0144", + "\u017c,\u017a", "\u00e7,\u010d", "\u00df,\u0161", null, @@ -3826,16 +3848,12 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, "\u017e", null, null, - null, - null, - null, - null, - null, - null, - null, "\u00f1", null, null, @@ -3850,33 +3868,14 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, "\u0142" }; private static final String[] TEXTS_pt = { "pt", null, - "\u00e1,\u00e3,\u00e0,\u00e2", "\u00f3,\u00f5,\u00f4", + "\u00e1,\u00e3,\u00e0,\u00e2", "\u00fa,\u00fc", "\u00e9,\u00ea", "\u00ed", @@ -3964,21 +3963,28 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + null, + null, + null, + null, + null, + null, "\u00e7" }; private static final String[] TEXTS_rm = { "rm", null, - null, "\u00f2,\u00f3,\u00f6,\u00f4,\u00f5,\u0153,\u00f8" }; private static final String[] TEXTS_ro = { "ro", null, - "\u0103,\u00e2", null, + "\u0103,\u00e2", null, null, "\u00ee", @@ -4029,12 +4035,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, "\u021b" }; @@ -4089,20 +4089,19 @@ public final class KeyboardTextsTable { null, "\u0451", null, - "\u044a", - null, - null, - null, - null, null, null, "\u044b", null, null, - null, "\u0449", + null, "\u044d", - "\u0438" + null, + null, + "\u0438", + null, + "\u044a" }; private static final String[] TEXTS_si = { @@ -4122,8 +4121,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_sk = { "sk", null, - "\u00e1,\u00e4", "\u00f4,\u00f3", + "\u00e1,\u00e4", "\u00fa", "\u00e9", "\u00ed", @@ -4137,8 +4136,8 @@ public final class KeyboardTextsTable { "\u016f,\u00fc,\u016b,\u0173,\u00f9,\u00fb,\u0171", "\u011b,\u0113,\u0117,\u00e8,\u00ea,\u00eb,\u0119", "\u012b,\u012f,\u00ec,\u00ee,\u00ef,\u0131", - "\u017e", "\u0148", + "\u017e", "\u00e7,\u0107", "\u00df,\u015b,\u015f", "!text/single_raqm_laqm", @@ -4155,6 +4154,8 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, "\u00fd", null, null, @@ -4164,27 +4165,30 @@ public final class KeyboardTextsTable { null, null, null, - "\u017c,\u017a", - null, - null, "\u010f", - null, - null, - null, - null, + "\u017c,\u017a", null, null, "\u0146,\u00f1,\u0144", null, null, null, - null, - null, "\u0165", null, null, null, null, + null, + null, + null, + null, + null, + "\u013e,\u013a", + null, + null, + null, + null, + null, "\u0155", null, null, @@ -4206,12 +4210,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - "\u013e,\u013a", - null, - null, - null, - null, "\u00ff", null, null, @@ -4228,12 +4226,7 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - null, + "\u0159,\u0157", null, null, null, @@ -4248,7 +4241,14 @@ public final class KeyboardTextsTable { null, "\u013c,\u0142", null, - "\u0159,\u0157", + null, + null, + null, + null, + null, + null, + null, + null, null, null, null, @@ -4274,8 +4274,8 @@ public final class KeyboardTextsTable { null, null, null, - "\u017e", null, + "\u017e", "\u0107", null, "!text/single_raqm_laqm", @@ -4395,26 +4395,20 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - "\u045b", - null, - null, - null, "\u0452", + null, + null, + null, + null, + null, "\u0455", null, null, null, - null, - null, - null, + "\u0437", "\u045d", null, - "\u0437" + "\u045b" }; private static final String[] TEXTS_sr_ZZ = { @@ -4435,6 +4429,7 @@ public final class KeyboardTextsTable { null, null, null, + null, "\u017e,%", null, null, @@ -4463,8 +4458,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, "\u0111,%", null, null, @@ -4526,33 +4519,37 @@ public final class KeyboardTextsTable { null, null, null, - "Gotov", null, null, - "Tra\u017ei", - null, - "Idi", - "\u010cekaj", null, "\u0160alji", null, + null, + null, "Sled", - "Pauza", + "Tra\u017ei", + "Idi", + null, + null, + "Gotov", null, null, null, null, null, null, + "\u010cekaj", + "Preth", null, - "Preth" + null, + "Pauza" }; private static final String[] TEXTS_sv = { "sv", null, - "\u00e4,\u00e5", "\u00f6", + "\u00e4,\u00e5", null, "\u00e9", null, @@ -4601,13 +4598,20 @@ public final class KeyboardTextsTable { null, null, null, - "\u00f8,\u0153", + null, + null, + null, + null, + "\u00e5", + null, "\u00e4", null, null, "\u00f6", null, - "\u00e5", + "\u00f8,\u0153", + null, + null, null, null, null, @@ -4626,8 +4630,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_sw = { "sw", null, - "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101", "\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", @@ -4641,7 +4645,6 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u00f1", null, null, @@ -4736,8 +4739,8 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_tl = { "tl", null, - "\u00e1,\u00e0,\u00e4,\u00e2,\u00e3,\u00e5,\u0105,\u00e6,\u0101,\u00aa", "\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", @@ -4751,15 +4754,14 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u00f1,\u0144" }; private static final String[] TEXTS_tr = { "tr", null, - null, "\u00f6", + null, "\u00fc", null, "\u0131", @@ -4800,7 +4802,6 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u011f" }; @@ -4855,6 +4856,18 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, + "\u0456", + null, + null, + "\u0449", + null, + "\u0454", + null, + null, + "\u0438", + null, "\u044a", null, null, @@ -4862,13 +4875,6 @@ public final class KeyboardTextsTable { null, null, null, - "\u0456", - null, - null, - null, - "\u0449", - "\u0454", - "\u0438", null, null, null, @@ -4912,7 +4918,12 @@ public final class KeyboardTextsTable { null, null, null, - "\u0491", + null, + null, + null, + null, + null, + "\u0457", null, null, null, @@ -4923,19 +4934,14 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, - "\u0457" + "\u0491" }; private static final String[] TEXTS_uz = { "uz", null, - "\u00e2,\u00e4,\u00e1", "\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", @@ -4949,8 +4955,10 @@ public final class KeyboardTextsTable { null, null, null, - "\u017e", "\u0148,\u00f1", + "\u017e", + null, + null, null, null, null, @@ -4974,17 +4982,14 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u011f" }; private static final String[] TEXTS_vi = { "vi", null, - "\u00e0,\u00e1,\u1ea3,\u00e3,\u1ea1,\u0103,\u1eb1,\u1eaf,\u1eb3,\u1eb5,\u1eb7,\u00e2,\u1ea7,\u1ea5,\u1ea9,\u1eab,\u1ead", "\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", @@ -5016,6 +5021,8 @@ public final class KeyboardTextsTable { null, null, null, + null, + null, "\u1ef3,\u00fd,\u1ef7,\u1ef9,\u1ef5", null, null, @@ -5025,17 +5032,14 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u0111" }; private static final String[] TEXTS_zu = { "zu", null, - "\u00e0,\u00e1,\u00e2,\u00e4,\u00e6,\u00e3,\u00e5,\u0101", "\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", @@ -5049,15 +5053,14 @@ public final class KeyboardTextsTable { null, null, null, - null, "\u00f1" }; private static final String[] TEXTS_zz = { "zz", null, - "\u00e0,\u00e1,\u00e2,\u00e3,\u00e4,\u00e5,\u00e6,\u0101,\u0103,\u0105,\u00aa", "\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", @@ -5071,8 +5074,10 @@ public final class KeyboardTextsTable { null, null, null, - "\u017a,\u017c,\u017e", "\u00f1,\u0144,\u0146,\u0148,\u0149,\u014b", + "\u017a,\u017c,\u017e", + null, + null, null, null, null, @@ -5096,9 +5101,6 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, "\u011d,\u011f,\u0121,\u0123", null, "\u010f,\u0111,\u00f0", @@ -5109,16 +5111,22 @@ public final class KeyboardTextsTable { null, null, null, - null, - null, - null, - null, - null, "\u00fe,\u0163,\u0165,\u0167", null, null, null, null, + null, + null, + null, + null, + null, + "\u013a,\u013c,\u013e,\u0140,\u0142", + null, + null, + null, + null, + null, "\u0155,\u0157,\u0159", null, null, @@ -5141,7 +5149,6 @@ public final class KeyboardTextsTable { null, null, null, - "\u013a,\u013c,\u013e,\u0140,\u0142", null, null, null, @@ -5158,6 +5165,13 @@ public final class KeyboardTextsTable { null, null, null, + "\u0137,\u0138", + null, + null, + null, + null, + null, + null, null, null, null, @@ -5167,30 +5181,12 @@ public final class KeyboardTextsTable { "\u0125", null, null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, "\u0135", null, null, null, null, null, - "\u0137,\u0138", - null, - null, - null, - null, - null, - null, null, null, null, @@ -5226,274 +5222,274 @@ public final class KeyboardTextsTable { "\u00df", "!text/single_laqm_raqm", "!text/double_laqm_raqm", + "1", EMPTY, - "0", - "9", - "5", - "6", - "8", EMPTY, "7", + "6", EMPTY, EMPTY, "4", - EMPTY, - EMPTY, - EMPTY, + "2", "3", EMPTY, - "1", + "8", + "0", + "5", EMPTY, - "2", EMPTY, EMPTY, EMPTY, + "9", + EMPTY, + EMPTY, EMPTY, "?123", EMPTY, EMPTY, + EMPTY, "!text/morekeys_tablet_punctuation", - EMPTY, - ",", - "\u00f8", - "\u00e4", "\u00f1", - ".", - "\u00f6", - EMPTY, - "\u00e5", "!text/morekeys_punctuation", EMPTY, + ",", EMPTY, EMPTY, + "\u00e5", EMPTY, - "\u00ab", - EMPTY, + "\u00e4", ".", EMPTY, - "}", - ",", - "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&", - "\u00e6", - "<", - "\u2039", - ">", - "\u2020,\u2021,\u2605", - "\u00bb", - "(", - "[", + "\u00f6", + EMPTY, + "\u00f8", + EMPTY, "\u203a", + ">", + ".", + "[", "{", - "\u2265", + EMPTY, + "\u2020,\u2021,\u2605", + EMPTY, + ",", + "\u2039", "\u2264", - ")", + "}", + "\u2265", + "\u00e6", "\u00bf", - EMPTY, "]", + "\u00ab", + "<", + "\u00bb", + "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&", + "(", EMPTY, - "\u266a,\u2665,\u2660,\u2666,\u2663", + ")", EMPTY, EMPTY, - "\u00f1", - EMPTY, - EMPTY, - "?", - EMPTY, EMPTY, EMPTY, EMPTY, "%", - "!autoColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys", - "!autoColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys", - ";", - EMPTY, EMPTY, "\u2030", EMPTY, EMPTY, + "!autoColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys", + "\u00f1", + EMPTY, + "?", + ";", + "\u266a,\u2665,\u2660,\u2666,\u2663", + "!autoColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys", + EMPTY, + EMPTY, + EMPTY, + EMPTY, + EMPTY, + "!string/label_send_key", + EMPTY, + EMPTY, + "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&", + "!string/label_next_key", + "!string/label_search_key", + "!string/label_go_key", + EMPTY, + EMPTY, "!string/label_done_key", EMPTY, EMPTY, - "!string/label_search_key", EMPTY, - "!string/label_go_key", + EMPTY, + EMPTY, + EMPTY, "!string/label_wait_key", - "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&", - "!string/label_send_key", - EMPTY, - "!string/label_next_key", - "!string/label_pause_key", - EMPTY, - EMPTY, - EMPTY, - EMPTY, - EMPTY, - EMPTY, - EMPTY, "!string/label_previous_key", EMPTY, EMPTY, + "!string/label_pause_key", EMPTY, - EMPTY, - EMPTY, - EMPTY, - "\u00b1", - "w", - "\u00a2,\u00a3,\u20ac,\u00a5,\u20b1", - EMPTY, - "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote", - "x", - "q", "\u00a1,\u203d", - "y", - EMPTY, "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote", EMPTY, + "w", + "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote", + "x", EMPTY, - "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes", EMPTY, - "1", - "\u2078,\u2088", - "\u2019,\u201a,\u2018", + "\u00a2,\u00a3,\u20ac,\u00a5,\u20b1", + EMPTY, + EMPTY, + EMPTY, + "y", + "q", + "\u00b1", + EMPTY, + "7", + "\\%", + EMPTY, + "@", EMPTY, "!fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm", EMPTY, - "\u2070,\u2080,\u207f,\u2205", - EMPTY, - EMPTY, - "!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote", - "\u2018,\u201a,\u2019", - EMPTY, - EMPTY, - "=", - EMPTY, - "!hasLabels!,!text/label_next_key|!code/key_action_next", - EMPTY, - EMPTY, - "\u201c,\u201e,\u201d", - "!icon/action_redo|!code/action_redo", - "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket", - "\u00b9,\u2081,\u00bd,\u2153,\u00bc,\u215b", - "!", - "!icon/action_copy|!code/action_copy", - "^", - "&,|", "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes", - "!", - "8", - "!icon/action_select_all|!code/action_select_all", - "@", - "*", + "!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote", + EMPTY, + "-,\u2013,\u2014,_", + "&,|", + "^", EMPTY, EMPTY, - "$", - "\u2077,\u2087,\u215e", EMPTY, - "123", - "\u201d,\u201e,\u201c", - "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes", - "PM", - "!icon/settings_key|!code/key_settings", EMPTY, + EMPTY, + "~ [ <", "\\%", - "]", - "6", - EMPTY, + ":", + "!icon/action_select_all|!code/action_select_all", EMPTY, "\u2018,\u2019,\u201a", - ")", - "'", - EMPTY, - EMPTY, - EMPTY, - EMPTY, - EMPTY, - EMPTY, - EMPTY, - "!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/previous_key|!code/key_action_previous,!icon/next_key|!code/key_action_next,!icon/action_undo|!code/action_undo,!icon/action_redo|!code/action_redo", - "\u201a,\u2018,\u2019", - "!hasLabels!,.net,.org,.gov,.edu", - "!icon/shortcut_key|!code/key_shortcut", - "!text/keyspec_currency,$", - "\\\\", - EMPTY, - EMPTY, - EMPTY, - EMPTY, - "+,=", - "= \\\\ <", - "#", - "!icon/action_settings|!code/action_settings", - "-,\u2013,\u2014,_", - EMPTY, - EMPTY, - ">", - "\u2075,\u2085,\u215d", - "\u00b2,\u2082,\u2154", - "!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote", - ".com", - EMPTY, - "0", - EMPTY, - "\uff0a\uff03", - "{", - "!icon/action_paste|!code/action_paste", - "\u2076,\u2086", - "\u2074,\u2084", - EMPTY, - EMPTY, - "!icon/action_undo|!code/action_undo", - "!icon/action_cut|!code/action_cut", - "!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", + "!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote", + "\u00b9,\u2081,\u00bd,\u2153,\u00bc,\u215b", + "!hasLabels!,!text/label_previous_key|!code/key_action_previous", "\u201c,\u201d,\u201e", - "\\%", - "&", - "),],},>", - "?,/", EMPTY, - "!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote", EMPTY, - "%", - "2", - "\u2079,\u2089", - "~ [ <", - "\u00b3,\u2083,\u00be,\u215c", + "!icon/action_cut|!code/action_cut", + "4", + "!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote", + "\u2018,\u201a,\u2019", + "\u2070,\u2080,\u207f,\u2205", + "!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", + "#", + "=", + "\u00b2,\u2082,\u2154", + EMPTY, + "!hasLabels!,!text/label_next_key|!code/key_action_next", + "!", EMPTY, - "}", EMPTY, "\u201e,\u201c,\u201d", - "7", - "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket", - "|", - "[", + "\u201d,\u201e,\u201c", EMPTY, EMPTY, + "5", + "\\\\", + "6", + "}", + EMPTY, + "\u2019,\u201a,\u2018", + "= \\\\ <", + EMPTY, + "!icon/action_settings|!code/action_settings", + EMPTY, + EMPTY, + EMPTY, + "'", + "0", + "!icon/action_paste|!code/action_paste", + "9", + "<", + EMPTY, + "PM", + "#", + "\u2079,\u2089", + EMPTY, EMPTY, ";", - "5", - "#", - EMPTY, - EMPTY, - "!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote", - "!hasLabels!,!text/label_previous_key|!code/key_action_previous", - "9", - EMPTY, - "@", "3", - "$,\u00a2,\u20ac,\u00a3,\u00a5,\u20b1", - EMPTY, - "AM", - "(", - EMPTY, - "4", - "\"", - EMPTY, - EMPTY, "*", - ":", + "!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/previous_key|!code/key_action_previous,!icon/next_key|!code/key_action_next,!icon/action_undo|!code/action_undo,!icon/action_redo|!code/action_redo", EMPTY, + EMPTY, + "2", + ")", + ".com", + "[", + "!icon/action_redo|!code/action_redo", + "!hasLabels!,.net,.org,.gov,.edu", + "?,/", + EMPTY, + "123", + "\u201a,\u2018,\u2019", + "]", + EMPTY, + EMPTY, + EMPTY, + EMPTY, + "!icon/shortcut_key|!code/key_shortcut", + "&", + EMPTY, + "{", + EMPTY, + "(", + "\u2076,\u2086", + EMPTY, + EMPTY, + "\uff0a\uff03", + "@", + "\u2075,\u2085,\u215d", + EMPTY, + EMPTY, + EMPTY, + "!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote", + "\u2077,\u2087,\u215e", + "!icon/action_undo|!code/action_undo", + EMPTY, + "$,\u00a2,\u00a3,\u20ac,\u00a5,\u20b1", + "%", + "!text/keyspec_currency,$", + "),],},>", + "1", + "+,=", "(,[,{,<", - "<" + "\"", + ">", + "AM", + EMPTY, + "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket", + EMPTY, + "!icon/action_copy|!code/action_copy", + "*", + EMPTY, + "\u2074,\u2084", + EMPTY, + "\u201c,\u201e,\u201d", + "!", + EMPTY, + "|", + EMPTY, + "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes", + "\u2078,\u2088", + "!icon/settings_key|!code/key_settings", + EMPTY, + "$", + "8", + "\u00b3,\u2083,\u00be,\u215c", + "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes", + "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket" }; diff --git a/java/src/org/futo/inputmethod/latin/settings/LongPressKeySettings.kt b/java/src/org/futo/inputmethod/latin/settings/LongPressKeySettings.kt index 0da4ac272..9a9e61a91 100644 --- a/java/src/org/futo/inputmethod/latin/settings/LongPressKeySettings.kt +++ b/java/src/org/futo/inputmethod/latin/settings/LongPressKeySettings.kt @@ -112,6 +112,10 @@ data class LongPressKeySettings(val currentOrder: List) { it.replace("\\", "\\\\") .replace(",", "\\,") }.joinToString(",") + + @JvmStatic + fun forTest(): LongPressKeySettings = + LongPressKeySettings(listOf(LongPressKey.Numbers, LongPressKey.LanguageKeys, LongPressKey.MiscLetters)) } fun reorderMoreKeys(moreKeys: String): String = diff --git a/java/src/org/futo/inputmethod/latin/uix/actions/Registry.kt b/java/src/org/futo/inputmethod/latin/uix/actions/Registry.kt index 33db05def..216a63da7 100644 --- a/java/src/org/futo/inputmethod/latin/uix/actions/Registry.kt +++ b/java/src/org/futo/inputmethod/latin/uix/actions/Registry.kt @@ -37,6 +37,7 @@ val AllActionsMap = mapOf( val ActionToId = AllActionsMap.entries.associate { it.value to it.key } val AllActions = AllActionsMap.values.toList() +val AllActionKeys = AllActionsMap.keys.toList() val ActionIdToInt = AllActionsMap.entries.associate { it.key to AllActions.indexOf(it.value) } diff --git a/java/src/org/futo/inputmethod/v2keyboard/KeySpecShortcuts.kt b/java/src/org/futo/inputmethod/v2keyboard/KeySpecShortcuts.kt index 7b61c2d95..ae7c26bb8 100644 --- a/java/src/org/futo/inputmethod/v2keyboard/KeySpecShortcuts.kt +++ b/java/src/org/futo/inputmethod/v2keyboard/KeySpecShortcuts.kt @@ -36,6 +36,9 @@ val KeySpecShortcuts = listOf( "*" to listOf("*", "morekeys_star"), "=" to listOf("=", "≠", "≈", "∞"), + "," to listOf("keyspec_comma"), + "." to listOf("keyspec_period", "…"), + "1" to listOf("keyspec_symbols_1", "additional_morekeys_symbols_1", "morekeys_symbols_1"), "2" to listOf("keyspec_symbols_2", "additional_morekeys_symbols_2", "morekeys_symbols_2"), "3" to listOf("keyspec_symbols_3", "additional_morekeys_symbols_3", "morekeys_symbols_3"), diff --git a/java/src/org/futo/inputmethod/v2keyboard/KeyboardLayoutSet.kt b/java/src/org/futo/inputmethod/v2keyboard/KeyboardLayoutSet.kt index bf7fdd5fd..b8df7b3c2 100644 --- a/java/src/org/futo/inputmethod/v2keyboard/KeyboardLayoutSet.kt +++ b/java/src/org/futo/inputmethod/v2keyboard/KeyboardLayoutSet.kt @@ -80,11 +80,12 @@ data class KeyboardLayoutSetV2Params( val height: Int?, val keyboardLayoutSet: String, val locale: Locale, - val editorInfo: EditorInfo, + val editorInfo: EditorInfo?, val numberRow: Boolean, val gap: Float = 4.0f, val useSplitLayout: Boolean, - val bottomActionKey: Int? + val bottomActionKey: Int?, + val longPressKeySettings: LongPressKeySettings? = null ) @@ -94,14 +95,16 @@ class KeyboardLayoutSetV2 internal constructor( ) { val script = Script.Latin - val privateParams = params.editorInfo.getPrivateImeOptions() + val editorInfo = params.editorInfo ?: EditorInfo() + + val privateParams = editorInfo.getPrivateImeOptions() val forcedLayout = privateParams["org.futo.inputmethod.latin.ForceLayout"] val forcedLocale = privateParams["org.futo.inputmethod.latin.ForceLocale"]?.let { Locale.forLanguageTag(it) } // Necessary for Java API fun getScriptId(): Int = script.id - private val keyboardMode = getKeyboardMode(params.editorInfo) + private val keyboardMode = getKeyboardMode(editorInfo) val layoutName = forcedLayout ?: params.keyboardLayoutSet val mainLayout = LayoutManager.getLayout(context, layoutName) @@ -207,15 +210,15 @@ class KeyboardLayoutSetV2 internal constructor( params.height ?: getRecommendedKeyboardHeight(), keyboardMode, element.elementId, - params.editorInfo, + editorInfo, false, params.bottomActionKey != null, params.bottomActionKey ?: -1, - params.editorInfo.actionLabel?.toString() ?: "", + editorInfo.actionLabel?.toString() ?: "", false, false, isNumberRowActive, - LongPressKeySettings.load(context) + params.longPressKeySettings ?: LongPressKeySettings.load(context) ) val layout = getKeyboardLayoutForElement(element) diff --git a/java/src/org/futo/inputmethod/v2keyboard/MoreKeysMapping.kt b/java/src/org/futo/inputmethod/v2keyboard/MoreKeysMapping.kt index 98cb07a0c..b8c70c8dd 100644 --- a/java/src/org/futo/inputmethod/v2keyboard/MoreKeysMapping.kt +++ b/java/src/org/futo/inputmethod/v2keyboard/MoreKeysMapping.kt @@ -1,5 +1,6 @@ package org.futo.inputmethod.v2keyboard +import org.futo.inputmethod.keyboard.internal.KeyboardLayoutKind import org.futo.inputmethod.latin.common.Constants fun getDefaultMoreKeysForKey(code: Int, relevantSpecShortcut: List?): String { @@ -14,7 +15,7 @@ fun getDefaultMoreKeysForKey(code: Int, relevantSpecShortcut: List?): St fun getSpecialFromRow(keyCoordinate: KeyCoordinate, row: Row): String { - if(row.isBottomRow) { + if(row.isBottomRow && keyCoordinate.element.kind == KeyboardLayoutKind.Alphabet) { val numCols = keyCoordinate.measurement.numColumnsByRow.getOrNull(keyCoordinate.regularRow) ?: -10 if(keyCoordinate.regularColumn == 0) { return "!text/morekeys_bottomrow_comma" diff --git a/java/src/org/futo/inputmethod/v2keyboard/TemplateKeys.kt b/java/src/org/futo/inputmethod/v2keyboard/TemplateKeys.kt index 061766d41..e8c323fb5 100644 --- a/java/src/org/futo/inputmethod/v2keyboard/TemplateKeys.kt +++ b/java/src/org/futo/inputmethod/v2keyboard/TemplateKeys.kt @@ -6,8 +6,8 @@ import kotlinx.serialization.Serializable import org.futo.inputmethod.keyboard.KeyboardId import org.futo.inputmethod.keyboard.internal.KeyboardIconsSet import org.futo.inputmethod.keyboard.internal.KeyboardParams -import org.futo.inputmethod.keyboard.internal.MoreKeySpec import org.futo.inputmethod.latin.common.Constants +import org.futo.inputmethod.latin.uix.actions.AllActionKeys import org.futo.inputmethod.latin.utils.InputTypeUtils val FunctionalAttributes = KeyAttributes( @@ -182,13 +182,14 @@ data class ActionKey( val attributes = attributes.getEffectiveAttributes(row, keyboard) val actionId = params.mId.mBottomActionKeyId + val actionName = AllActionKeys[actionId] return ComputedKeyData( label = "", code = Constants.CODE_ACTION_0 + actionId, outputText = null, width = attributes.width ?: KeyWidth.Regular, - icon = "action_$actionId", + icon = "action_$actionName", style = attributes.style ?: KeyVisualStyle.Functional, anchored = true, showPopup = false, diff --git a/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java b/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java index 13c7e8be1..0597f3005 100644 --- a/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java +++ b/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java @@ -21,7 +21,6 @@ import android.content.res.Resources; import android.test.AndroidTestCase; import android.view.ContextThemeWrapper; import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import org.futo.inputmethod.compat.InputMethodSubtypeCompatUtils; @@ -30,10 +29,11 @@ import org.futo.inputmethod.latin.RichInputMethodManager; import org.futo.inputmethod.latin.RichInputMethodSubtype; import org.futo.inputmethod.latin.Subtypes; import org.futo.inputmethod.latin.common.Constants; +import org.futo.inputmethod.latin.settings.LongPressKeySettings; import org.futo.inputmethod.latin.settings.Settings; +import org.futo.inputmethod.latin.uix.actions.ActionRegistry; import org.futo.inputmethod.latin.utils.AdditionalSubtypeUtils; import org.futo.inputmethod.latin.utils.ResourceUtils; -import org.futo.inputmethod.latin.utils.SubtypeLocaleUtils; import org.futo.inputmethod.v2keyboard.KeyboardLayoutSetV2; import org.futo.inputmethod.v2keyboard.KeyboardLayoutSetV2Params; @@ -128,24 +128,7 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase { protected final InputMethodSubtype getSubtype(final Locale locale, final String keyboardLayout) { - for (final InputMethodSubtype subtype : mAllSubtypesList) { - final Locale subtypeLocale = SubtypeLocaleUtils.getSubtypeLocale(subtype); - final String subtypeLayout = SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype); - if (locale.equals(subtypeLocale) && keyboardLayout.equals(subtypeLayout)) { - // Found subtype that matches locale and keyboard layout. - return subtype; - } - } - for (final InputMethodSubtype subtype : getSubtypesFilteredBy(FILTER_IS_ASCII_CAPABLE)) { - final Locale subtypeLocale = SubtypeLocaleUtils.getSubtypeLocale(subtype); - if (locale.equals(subtypeLocale)) { - // Create additional subtype. - return AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype( - locale.toString(), keyboardLayout); - } - } - throw new RuntimeException( - "Unknown subtype: locale=" + locale + " keyboardLayout=" + keyboardLayout); + return Subtypes.INSTANCE.makeSubtype(locale.toString(), keyboardLayout); } protected KeyboardLayoutSetV2 createKeyboardLayoutSet(final InputMethodSubtype subtype, @@ -172,7 +155,8 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase { richInputMethodSubtype.getLocale(), editorInfo, false, 4.0f, splitLayoutEnabled, - languageSwitchKeyEnabled ? 1 : null + languageSwitchKeyEnabled ? ActionRegistry.INSTANCE.actionStringIdToIdx("switch_language") : null, + LongPressKeySettings.forTest() ) ); } diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/Symbols.java b/tests/src/org/futo/inputmethod/keyboard/layout/Symbols.java index b002bd18e..4642d914d 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/Symbols.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/Symbols.java @@ -119,32 +119,19 @@ public class Symbols extends AbstractLayoutBase { // Common symbols keyboard layout. private static final ExpectedKey[][] SYMBOLS_COMMON = new ExpectedKeyboardBuilder() .setKeysOfRow(1, - // U+00B9: "¹" SUPERSCRIPT ONE - // U+00BD: "½" VULGAR FRACTION ONE HALF - // U+2153: "⅓" VULGAR FRACTION ONE THIRD - // U+00BC: "¼" VULGAR FRACTION ONE QUARTER - // U+215B: "⅛" VULGAR FRACTION ONE EIGHTH - key("1", joinMoreKeys("\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")), - // U+00B2: "²" SUPERSCRIPT TWO - // U+2154: "⅔" VULGAR FRACTION TWO THIRDS - key("2", joinMoreKeys("\u00B2", "\u2154")), - // U+00B3: "³" SUPERSCRIPT THREE - // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS - // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS - key("3", joinMoreKeys("\u00B3", "\u00BE", "\u215C")), - // U+2074: "⁴" SUPERSCRIPT FOUR - key("4", moreKey("\u2074")), - // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS - key("5", moreKey("\u215D")), - "6", - // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS - key("7", moreKey("\u215E")), - "8", "9", - // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N - // U+2205: "∅" EMPTY SET - key("0", joinMoreKeys("\u207F", "\u2205"))) + key("1", joinMoreKeys("¹", "₁", "½", "⅓", "¼", "⅛")), + key("2", joinMoreKeys("²", "₂", "⅔")), + key("3", joinMoreKeys("³", "₃", "¾", "⅜")), + key("4", joinMoreKeys("⁴", "₄")), + key("5", joinMoreKeys("⁵", "₅", "⅝")), + key("6", joinMoreKeys("⁶", "₆")), + key("7", joinMoreKeys("⁷", "₇", "⅞")), + key("8", joinMoreKeys("⁸", "₈")), + key("9", joinMoreKeys("⁹", "₉")), + key("0", joinMoreKeys("⁰", "₀", "ⁿ", "∅"))) .setKeysOfRow(2, key("@"), key("#"), key(CURRENCY), + "_", // U+2030: "‰" PER MILLE SIGN key("%", moreKey("\u2030")), "&", @@ -163,11 +150,11 @@ public class Symbols extends AbstractLayoutBase { key("*", joinMoreKeys("\u2020", "\u2021", "\u2605")), key(DOUBLE_QUOTE), key(SINGLE_QUOTE), key(":"), key(";"), // U+00A1: "¡" INVERTED EXCLAMATION MARK - key("!", moreKey("\u00A1")), + key("!", joinMoreKeys("\u00A1", "‽")), // U+00BF: "¿" INVERTED QUESTION MARK key("?", moreKey("\u00BF"))) .setKeysOfRow(4, - key(","), key("_"), SPACE_KEY, key("/"), + key(","), NUMPAD_KEY, SPACE_KEY, key("/"), // U+2026: "…" HORIZONTAL ELLIPSIS key(".", moreKey("\u2026"))) .build(); diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java b/tests/src/org/futo/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java index 39707c212..756dac553 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java @@ -161,7 +161,8 @@ public class LayoutCustomizer extends AbstractLayoutBase { * @return the array of {@link ExpectedKey} that should be placed as an enter key. */ public ExpectedKey getEnterKey(final boolean isPhone) { - return isPhone ? key(ENTER_KEY, EMOJI_ACTION_KEY) : ENTER_KEY; + return key(ENTER_KEY, SWITCH_LANGUAGE_KEY, TEXT_EDIT_KEY, CLIPBOARD_HISTORY_KEY, EMOJI_KEY, + UNDO_KEY, REDO_KEY); } /** diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java b/tests/src/org/futo/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java index 0d4112477..f82447699 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java @@ -19,6 +19,13 @@ package org.futo.inputmethod.keyboard.layout.expected; import org.futo.inputmethod.keyboard.internal.KeyboardIconsSet; import org.futo.inputmethod.keyboard.layout.expected.ExpectedKey.ExpectedAdditionalMoreKey; import org.futo.inputmethod.latin.common.Constants; +import org.futo.inputmethod.latin.uix.Action; +import org.futo.inputmethod.latin.uix.actions.ActionRegistry; +import org.futo.inputmethod.latin.uix.actions.ClipboardHistoryActionKt; +import org.futo.inputmethod.latin.uix.actions.EmojiActionKt; +import org.futo.inputmethod.latin.uix.actions.SwitchLanguageActionKt; +import org.futo.inputmethod.latin.uix.actions.TextEditActionKt; +import org.futo.inputmethod.latin.uix.actions.UndoRedoActionsKt; /** * Base class to create an expected keyboard for unit test. @@ -50,6 +57,11 @@ public abstract class AbstractLayoutBase { return ExpectedKey.newIconInstance(iconId, outputText, moreKeys); } + public static ExpectedKey actionKey(final Action action) { + String id = ActionRegistry.INSTANCE.actionToStringId(action); + return iconKey("action_"+id, Constants.CODE_ACTION_0 + ActionRegistry.INSTANCE.actionStringIdToIdx(id)); + } + // Helper method to create an {@link ExpectedKey} object that has the icon and the output code. public static ExpectedKey iconKey(final String iconId, final int code, final ExpectedKey ... moreKeys) { @@ -121,9 +133,9 @@ public abstract class AbstractLayoutBase { // Functional keys. protected static final ExpectedKey DELETE_KEY = iconKey(ICON_DELETE, Constants.CODE_DELETE); protected static final ExpectedKey TAB_KEY = iconKey(ICON_TAB, Constants.CODE_TAB); - protected static final ExpectedKey SETTINGS_KEY = iconKey(ICON_SETTINGS, Constants.CODE_SETTINGS); + protected static final ExpectedKey SETTINGS_KEY = iconKey("action_settings", Constants.CODE_ACTION_0 + ActionRegistry.INSTANCE.actionStringIdToIdx("settings")); protected static final ExpectedKey LANGUAGE_SWITCH_KEY = iconKey( - "action_switch_language", Constants.CODE_LANGUAGE_SWITCH); + "action_switch_language", Constants.CODE_ACTION_0 + ActionRegistry.INSTANCE.actionStringIdToIdx("switch_language")); protected static final ExpectedKey ENTER_KEY = iconKey(ICON_ENTER, Constants.CODE_ENTER); protected static final ExpectedKey EMOJI_ACTION_KEY = iconKey(ICON_EMOJI_ACTION, Constants.CODE_EMOJI); protected static final ExpectedKey EMOJI_NORMAL_KEY = iconKey(ICON_EMOJI_NORMAL, Constants.CODE_EMOJI); @@ -139,6 +151,15 @@ public abstract class AbstractLayoutBase { protected static final ExpectedKey SYMBOLS_SHIFT_KEY = key("= \\ <", Constants.CODE_SHIFT); protected static final ExpectedKey TABLET_SYMBOLS_SHIFT_KEY = key("~ [ <", Constants.CODE_SHIFT); + protected static final ExpectedKey SWITCH_LANGUAGE_KEY = actionKey(SwitchLanguageActionKt.getSwitchLanguageAction()); + protected static final ExpectedKey TEXT_EDIT_KEY = actionKey(TextEditActionKt.getTextEditAction()); + protected static final ExpectedKey CLIPBOARD_HISTORY_KEY = actionKey(ClipboardHistoryActionKt.getClipboardHistoryAction()); + protected static final ExpectedKey EMOJI_KEY = actionKey(EmojiActionKt.getEmojiAction()); + protected static final ExpectedKey UNDO_KEY = actionKey(UndoRedoActionsKt.getUndoAction()); + protected static final ExpectedKey REDO_KEY = actionKey(UndoRedoActionsKt.getRedoAction()); + + protected static final ExpectedKey NUMPAD_KEY = iconKey("numpad", Constants.CODE_TO_NUMBER_LAYOUT); + // U+00A1: "¡" INVERTED EXCLAMATION MARK // U+00BF: "¿" INVERTED QUESTION MARK protected static final ExpectedKey[] EXCLAMATION_AND_QUESTION_MARKS = joinKeys( diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKey.java b/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKey.java index 9692cce6c..444e01464 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKey.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKey.java @@ -164,7 +164,7 @@ public class ExpectedKey { public boolean equalsTo(final Key key) { // This key has no "more keys". return mVisual.hasSameKeyVisual(key) && mOutput.hasSameKeyOutput(key) - && key.getMoreKeys() == null; + && key.getMoreKeys().isEmpty(); } public boolean equalsTo(final MoreKeySpec moreKeySpec) { diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java b/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java index a89dd8530..fa09296ce 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java @@ -22,6 +22,7 @@ import org.futo.inputmethod.keyboard.internal.MoreKeySpec; import org.futo.inputmethod.latin.common.StringUtils; import java.util.Locale; +import java.util.Objects; /** * This class represents an expected visual outlook of a key. @@ -86,7 +87,7 @@ public abstract class ExpectedKeyVisual { boolean hasSameKeyVisual(final Key key) { // If the actual key has an icon as its visual, a label has to be null. // See {@link KeyboardView#onDrawKeyTopVisuals(Key,Canvas,Paint,KeyDrawParams). - return mIconId == key.getIconId() && key.getLabel() == null; + return Objects.equals(mIconId, key.getIconId()) && key.getLabel().isEmpty(); } @Override @@ -94,7 +95,7 @@ public abstract class ExpectedKeyVisual { // If the actual more key has an icon as its visual, a label has to be null. // See {@link KeySpecParser#getIconId(String)} and // {@link KeySpecParser#getLabel(String)}. - return mIconId == moreKeySpec.mIconId && moreKeySpec.mLabel == null; + return Objects.equals(mIconId, moreKeySpec.mIconId) && moreKeySpec.mLabel == null; } @Override @@ -104,7 +105,7 @@ public abstract class ExpectedKeyVisual { @Override boolean hasSameKeyVisual(final ExpectedKeyVisual visual) { - return (visual instanceof Icon) && mIconId == ((Icon)visual).mIconId; + return (visual instanceof Icon) && Objects.equals(mIconId, ((Icon) visual).mIconId); } @Override @@ -153,7 +154,7 @@ public abstract class ExpectedKeyVisual { // If the actual key has a label as its visual, an icon has to be undefined. // See {@link KeyboardView#onDrawKeyTopVisuals(Key,Canvas,Paint,KeyDrawParams). return mLabel.equals(key.getLabel()) - && key.getIconId() == KeyboardIconsSet.ICON_UNDEFINED; + && key.getIconId().equals(KeyboardIconsSet.ICON_UNDEFINED); } @Override @@ -162,7 +163,7 @@ public abstract class ExpectedKeyVisual { // See {@link KeySpecParser#getIconId(String)} and // {@link KeySpecParser#getLabel(String)}. return mLabel.equals(moreKeySpec.mLabel) - && moreKeySpec.mIconId == KeyboardIconsSet.ICON_UNDEFINED; + && Objects.equals(moreKeySpec.mIconId, KeyboardIconsSet.ICON_UNDEFINED); } @Override diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/tests/LayoutTestsBase.java b/tests/src/org/futo/inputmethod/keyboard/layout/tests/LayoutTestsBase.java index 94a3a7501..eed959cf6 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/tests/LayoutTestsBase.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/tests/LayoutTestsBase.java @@ -165,10 +165,13 @@ abstract class LayoutTestsBase extends KeyboardLayoutSetTestsBase { final Key actualKey = actualKeyboard[r][c]; final ExpectedKey expectedKey = expectedKeyboard[r][c]; // Test both keyboards' keys have the same visual outlook and key output. - assertTrue(tag + " labels row,column=" + row + "," + column - + "\nexpected=" + expectedKey - + "\nactual =" + ActualKeyboardBuilder.toString(actualKey), - expectedKey.equalsTo(actualKey)); + if(!expectedKey.equalsTo(actualKey)) { + assertTrue(tag + " labels row,column=" + row + "," + column + + "\nexpected=" + expectedKey + + "\nactual =" + ActualKeyboardBuilder.toString(actualKey), + expectedKey.equalsTo(actualKey)); + } + } } } diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyEmail.java b/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyEmail.java index 69e78e519..98c84c5e7 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyEmail.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyEmail.java @@ -56,18 +56,9 @@ public class TestsQwertyEmail extends LayoutTestsBase { EnglishEmailCustomizer(final Locale locale) { super(locale); } @Override - public ExpectedKey getEnterKey(final boolean isPhone) { - return isPhone ? ENTER_KEY : super.getEnterKey(isPhone); - } - - @Override - public ExpectedKey getEmojiKey(final boolean isPhone) { - return DOMAIN_KEY; - } - - @Override - public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) { - return joinKeys(key("@", SETTINGS_KEY)); + public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) { + final ExpectedKey periodKey = key(".", getPunctuationMoreKeys(isPhone)); + return joinKeys(key("@"), periodKey); } } } diff --git a/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyUrl.java b/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyUrl.java index 6b60d3eb4..5a2019f74 100644 --- a/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyUrl.java +++ b/tests/src/org/futo/inputmethod/keyboard/layout/tests/TestsQwertyUrl.java @@ -56,18 +56,9 @@ public class TestsQwertyUrl extends LayoutTestsBase { EnglishUrlCustomizer(final Locale locale) { super(locale); } @Override - public ExpectedKey getEnterKey(final boolean isPhone) { - return isPhone ? ENTER_KEY : super.getEnterKey(isPhone); - } - - @Override - public ExpectedKey getEmojiKey(final boolean isPhone) { - return DOMAIN_KEY; - } - - @Override - public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) { - return joinKeys(key("/", SETTINGS_KEY)); + public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) { + final ExpectedKey periodKey = key(".", getPunctuationMoreKeys(isPhone)); + return joinKeys(key("/"), periodKey); } } } diff --git a/tools/make-keyboard-text-py/locales/DEFAULT.json b/tools/make-keyboard-text-py/locales/DEFAULT.json index 488dcf0cd..fb7dbea08 100644 --- a/tools/make-keyboard-text-py/locales/DEFAULT.json +++ b/tools/make-keyboard-text-py/locales/DEFAULT.json @@ -127,8 +127,8 @@ "currency_generic": [ "$", "¢", - "€", "£", + "€", "¥", "₱" ],