diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml index df1ffa53c..60c3a5ab3 100644 --- a/.github/workflows/android-build.yml +++ b/.github/workflows/android-build.yml @@ -25,13 +25,13 @@ jobs: run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew build + run: ./gradlew assembleDebug - - name: Upload our APK + - name: Upload APK uses: actions/upload-artifact@v2.2.0 with: name: APK - path: app/build/outputs/apk/release/app-release-unsigned.apk + path: app/build/outputs/apk/debug/app-debug.apk - name: Upload lint report uses: actions/upload-artifact@v2.2.0 diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java index 8be6c6281..d994bc5df 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java @@ -85,6 +85,7 @@ public final class KeyboardId { public final String mCustomActionLabel; public final boolean mHasShortcutKey; public final boolean mIsSplitLayout; + public final boolean mOneHandedModeEnabled; private final int mHashCode; @@ -103,6 +104,7 @@ public final class KeyboardId { ? mEditorInfo.actionLabel.toString() : null; mHasShortcutKey = params.mVoiceInputKeyEnabled; mIsSplitLayout = params.mIsSplitLayoutEnabled; + mOneHandedModeEnabled = params.mOneHandedModeEnabled; mHashCode = computeHashCode(this); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java index 5c71497b8..c31da5e12 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java @@ -122,6 +122,7 @@ public final class KeyboardLayoutSet { boolean mNumberRowEnabled; boolean mLanguageSwitchKeyEnabled; boolean mEmojiKeyEnabled; + boolean mOneHandedModeEnabled; RichInputMethodSubtype mSubtype; boolean mIsSpellChecker; int mKeyboardWidth; @@ -351,6 +352,11 @@ public final class KeyboardLayoutSet { return this; } + public Builder setOneHandedModeEnabled(boolean enabled) { + mParams.mOneHandedModeEnabled = enabled; + return this; + } + // Super redux version of reading the script ID for some subtype from Xml. static int readScriptId(final Resources resources, final InputMethodSubtype subtype) { final String layoutSetName = KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java index ba365d20f..e46d85d2e 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java @@ -32,6 +32,7 @@ import org.dslul.openboard.inputmethod.keyboard.emoji.EmojiPalettesView; import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardState; import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardTextsSet; import org.dslul.openboard.inputmethod.latin.InputView; +import org.dslul.openboard.inputmethod.latin.KeyboardWrapperView; import org.dslul.openboard.inputmethod.latin.LatinIME; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.RichInputMethodManager; @@ -51,6 +52,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private static final String TAG = KeyboardSwitcher.class.getSimpleName(); private InputView mCurrentInputView; + private KeyboardWrapperView mKeyboardViewWrapper; private View mMainKeyboardFrame; private MainKeyboardView mKeyboardView; private EmojiPalettesView mEmojiPalettesView; @@ -117,7 +119,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder( mThemeContext, editorInfo); final Resources res = mThemeContext.getResources(); - final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res); + final int keyboardWidth = ResourceUtils.getKeyboardWidth(res, settingsValues); final int keyboardHeight = ResourceUtils.getKeyboardHeight(res, settingsValues); builder.setKeyboardGeometry(keyboardWidth, keyboardHeight); builder.setSubtype(mRichImm.getCurrentSubtype()); @@ -127,9 +129,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { builder.setEmojiKeyEnabled(settingsValues.mShowsEmojiKey); builder.setSplitLayoutEnabledByUser(ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED && settingsValues.mIsSplitKeyboardEnabled); + final boolean oneHandedModeEnabled = settingsValues.mOneHandedModeEnabled; + builder.setOneHandedModeEnabled(oneHandedModeEnabled); mKeyboardLayoutSet = builder.build(); try { - mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); + mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState, + oneHandedModeEnabled); mKeyboardTextsSet.setLocale(mRichImm.getCurrentSubtypeLocale(), mThemeContext); } catch (KeyboardLayoutSetException e) { Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause()); @@ -424,6 +429,30 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { } } + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setOneHandedModeEnabled(boolean enabled) { + if (mKeyboardViewWrapper.getOneHandedModeEnabled() == enabled) { + return; + } + final Settings settings = Settings.getInstance(); + mKeyboardViewWrapper.setOneHandedModeEnabled(enabled); + mKeyboardViewWrapper.setOneHandedGravity(settings.getCurrent().mOneHandedModeGravity); + + settings.writeOneHandedModeEnabled(enabled); + + // Reload the entire keyboard set with the same parameters + loadKeyboard(mLatinIME.getCurrentInputEditorInfo(), settings.getCurrent(), + mLatinIME.getCurrentAutoCapsState(), mLatinIME.getCurrentRecapitalizeState()); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void switchOneHandedMode() { + mKeyboardViewWrapper.switchOneHandedModeSide(); + Settings.getInstance().writeOneHandedModeGravity(mKeyboardViewWrapper.getOneHandedGravity()); + } + // Implements {@link KeyboardState.SwitchActions}. @Override public boolean isInDoubleTapShiftKeyTimeout() { @@ -476,7 +505,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { } else if (isShowingClipboardHistory()) { return mClipboardHistoryView; } - return mKeyboardView; + return mKeyboardViewWrapper; } public MainKeyboardView getMainKeyboardView() { @@ -509,6 +538,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mEmojiPalettesView = mCurrentInputView.findViewById(R.id.emoji_palettes_view); mClipboardHistoryView = mCurrentInputView.findViewById(R.id.clipboard_history_view); + mKeyboardViewWrapper = mCurrentInputView.findViewById(R.id.keyboard_view_wrapper); + mKeyboardViewWrapper.setKeyboardActionListener(mLatinIME); mKeyboardView = mCurrentInputView.findViewById(R.id.keyboard_view); mKeyboardView.setHardwareAcceleratedDrawingEnabled(isHardwareAcceleratedDrawingEnabled); mKeyboardView.setKeyboardActionListener(mLatinIME); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.java index bf5ed81ec..b3c3189e1 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.java @@ -700,13 +700,16 @@ public class KeyboardBuilder { final boolean countryCodeMatched = matchCountryCodes(caseAttr, locale); final boolean splitLayoutMatched = matchBoolean(caseAttr, R.styleable.Keyboard_Case_isSplitLayout, id.mIsSplitLayout); + final boolean oneHandedModeEnabledMatched = matchBoolean(caseAttr, + R.styleable.Keyboard_Case_oneHandedModeEnabled, + id.mOneHandedModeEnabled); final boolean selected = keyboardLayoutSetMatched && keyboardLayoutSetElementMatched && keyboardThemeMacthed && modeMatched && navigateNextMatched && navigatePreviousMatched && passwordInputMatched && clobberSettingsKeyMatched && hasShortcutKeyMatched && numberRowEnabledMatched && languageSwitchKeyEnabledMatched && emojiKeyEnabledMatched && isMultiLineMatched && imeActionMatched && isIconDefinedMatched && localeCodeMatched && languageCodeMatched && countryCodeMatched - && splitLayoutMatched; + && splitLayoutMatched && oneHandedModeEnabledMatched; if (DEBUG) { startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, @@ -748,6 +751,8 @@ public class KeyboardBuilder { "languageCode"), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_countryCode), "countryCode"), + booleanAttr(caseAttr, R.styleable.Keyboard_Case_oneHandedModeEnabled, + "oneHandedModeEnabled"), selected ? "" : " skipped"); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java index 9218b2e05..3cda8b46b 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java @@ -54,7 +54,10 @@ public final class KeyboardCodesSet { "key_alpha_from_emoji", "key_unspecified", "key_clipboard", - "key_alpha_from_clipboard" + "key_alpha_from_clipboard", + "key_start_onehanded", + "key_stop_onehanded", + "key_switch_onehanded" }; private static final int[] DEFAULT = { @@ -76,7 +79,10 @@ public final class KeyboardCodesSet { Constants.CODE_ALPHA_FROM_EMOJI, Constants.CODE_UNSPECIFIED, Constants.CODE_CLIPBOARD, - Constants.CODE_ALPHA_FROM_CLIPBOARD + Constants.CODE_ALPHA_FROM_CLIPBOARD, + Constants.CODE_START_ONE_HANDED_MODE, + Constants.CODE_STOP_ONE_HANDED_MODE, + Constants.CODE_SWITCH_ONE_HANDED_MODE }; static { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java index d97223b3d..44f1cf358 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java @@ -62,6 +62,9 @@ public final class KeyboardIconsSet { public static final String NAME_CLIPBOARD_ACTION_KEY = "clipboard_action_key"; public static final String NAME_CLIPBOARD_NORMAL_KEY = "clipboard_normal_key"; public static final String NAME_CLEAR_CLIPBOARD_KEY = "clear_clipboard_key"; + public static final String NAME_START_ONEHANDED_KEY = "start_onehanded_mode_key"; + public static final String NAME_STOP_ONEHANDED_KEY = "stop_onehanded_mode_key"; + public static final String NAME_SWITCH_ONEHANDED_KEY = "switch_onehanded_key"; private static final SparseIntArray ATTR_ID_TO_ICON_ID = new SparseIntArray(); @@ -95,6 +98,9 @@ public final class KeyboardIconsSet { NAME_CLIPBOARD_ACTION_KEY, R.styleable.Keyboard_iconClipboardActionKey, NAME_CLIPBOARD_NORMAL_KEY, R.styleable.Keyboard_iconClipboardNormalKey, NAME_CLEAR_CLIPBOARD_KEY, R.styleable.Keyboard_iconClearClipboardKey, + NAME_START_ONEHANDED_KEY, R.styleable.Keyboard_iconStartOneHandedMode, + NAME_STOP_ONEHANDED_KEY, R.styleable.Keyboard_iconStopOneHandedMode, + NAME_SWITCH_ONEHANDED_KEY, R.styleable.Keyboard_iconSwitchOneHandedMode, }; private static int NUM_ICONS = NAMES_AND_ATTR_IDS.length / 2; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java index 098de98f8..fa80f445f 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java @@ -30,7 +30,7 @@ import org.dslul.openboard.inputmethod.latin.utils.RecapitalizeStatus; * * This class contains all keyboard state transition logic. * - * The input events are {@link #onLoadKeyboard(int, int)}, {@link #onSaveKeyboardState()}, + * The input events are {@link #onLoadKeyboard(int, int, boolean)}, {@link #onSaveKeyboardState()}, * {@link #onPressKey(int,boolean,int,int)}, {@link #onReleaseKey(int,boolean,int,int)}, * {@link #onEvent(Event,int,int)}, {@link #onFinishSlidingInput(int,int)}, * {@link #onUpdateShiftState(int,int)}, {@link #onResetKeyboardStateToAlphabet(int,int)}. @@ -65,6 +65,9 @@ public final class KeyboardState { void startDoubleTapShiftKeyTimer(); boolean isInDoubleTapShiftKeyTimeout(); void cancelDoubleTapShiftKeyTimer(); + + void setOneHandedModeEnabled(boolean enabled); + void switchOneHandedMode(); } private final SwitchActions mSwitchActions; @@ -130,7 +133,8 @@ public final class KeyboardState { mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE; } - public void onLoadKeyboard(final int autoCapsFlags, final int recapitalizeMode) { + public void onLoadKeyboard(final int autoCapsFlags, final int recapitalizeMode, + final boolean onHandedModeEnabled) { if (DEBUG_EVENT) { Log.d(TAG, "onLoadKeyboard: " + stateToString(autoCapsFlags, recapitalizeMode)); } @@ -147,6 +151,7 @@ public final class KeyboardState { // Reset keyboard to alphabet mode. setAlphabetKeyboard(autoCapsFlags, recapitalizeMode); } + mSwitchActions.setOneHandedModeEnabled(onHandedModeEnabled); } // Constants for {@link SavedKeyboardState#mShiftMode} and {@link #setShifted(int)}. @@ -368,6 +373,20 @@ public final class KeyboardState { mSwitchActions.setClipboardKeyboard(); } + private void setOneHandedModeEnabled(boolean enabled) { + if (DEBUG_INTERNAL_ACTION) { + Log.d(TAG, "setOneHandedModeEnabled"); + } + mSwitchActions.setOneHandedModeEnabled(enabled); + } + + private void switchOneHandedMode() { + if (DEBUG_INTERNAL_ACTION) { + Log.d(TAG, "switchOneHandedMode"); + } + mSwitchActions.switchOneHandedMode(); + } + public void onPressKey(final int code, final boolean isSinglePointer, final int autoCapsFlags, final int recapitalizeMode) { if (DEBUG_EVENT) { @@ -697,6 +716,12 @@ public final class KeyboardState { } } else if (code == Constants.CODE_ALPHA_FROM_CLIPBOARD) { setAlphabetKeyboard(autoCapsFlags, recapitalizeMode); + } else if (code == Constants.CODE_START_ONE_HANDED_MODE) { + setOneHandedModeEnabled(true); + } else if (code == Constants.CODE_STOP_ONE_HANDED_MODE) { + setOneHandedModeEnabled(false); + } else if (code == Constants.CODE_SWITCH_ONE_HANDED_MODE) { + switchOneHandedMode(); } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java index 5336cbaaf..ba489b913 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java @@ -81,26 +81,26 @@ public final class KeyboardTextsTable { private static final String[] NAMES = { // /* index:histogram */ "name", - /* 0:35 */ "morekeys_a", - /* 1:35 */ "morekeys_o", - /* 2:34 */ "morekeys_e", - /* 3:33 */ "morekeys_u", - /* 4:31 */ "morekeys_i", - /* 5:31 */ "keylabel_to_alpha", - /* 6:27 */ "morekeys_n", + /* 0:34 */ "morekeys_a", + /* 1:34 */ "morekeys_o", + /* 2:33 */ "morekeys_e", + /* 3:32 */ "morekeys_u", + /* 4:31 */ "keylabel_to_alpha", + /* 5:30 */ "morekeys_i", + /* 6:26 */ "morekeys_n", /* 7:25 */ "morekeys_c", - /* 8:25 */ "double_quotes", - /* 9:24 */ "morekeys_s", - /* 10:24 */ "single_quotes", + /* 8:24 */ "double_quotes", + /* 9:23 */ "morekeys_s", + /* 10:23 */ "single_quotes", /* 11:19 */ "keyspec_currency", /* 12:17 */ "morekeys_y", /* 13:16 */ "morekeys_z", /* 14:14 */ "morekeys_d", - /* 15:11 */ "single_angle_quotes", - /* 16:11 */ "double_angle_quotes", - /* 17:10 */ "morekeys_t", - /* 18:10 */ "morekeys_l", - /* 19:10 */ "morekeys_g", + /* 15:10 */ "morekeys_t", + /* 16:10 */ "morekeys_l", + /* 17:10 */ "morekeys_g", + /* 18:10 */ "single_angle_quotes", + /* 19:10 */ "double_angle_quotes", /* 20: 8 */ "morekeys_r", /* 21: 6 */ "morekeys_k", /* 22: 6 */ "morekeys_cyrillic_ie", @@ -260,6 +260,8 @@ public final class KeyboardTextsTable { /* 176: 0 */ "keyspec_emoji_normal_key", /* 177: 0 */ "keyspec_clipboard_action_key", /* 178: 0 */ "keyspec_clipboard_normal_key", + /* 179: 0 */ "keyspec_start_onehanded_mode", + /* 180: 0 */ "keyspec_language_switch", }; private static final String EMPTY = ""; @@ -267,23 +269,24 @@ public final class KeyboardTextsTable { /* Default texts */ private static final String[] TEXTS_DEFAULT = { /* morekeys_a ~ */ - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ morekeys_i */ + EMPTY, EMPTY, EMPTY, EMPTY, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. /* keylabel_to_alpha */ "ABC", - /* morekeys_n */ EMPTY, - /* morekeys_c */ EMPTY, + /* morekeys_i ~ */ + EMPTY, EMPTY, EMPTY, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_lqm_rqm", /* morekeys_s */ EMPTY, /* single_quotes */ "!text/single_lqm_rqm", /* keyspec_currency */ "$", /* morekeys_y ~ */ - EMPTY, EMPTY, EMPTY, - /* ~ morekeys_d */ + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_laqm_raqm", /* double_angle_quotes */ "!text/double_laqm_raqm", - /* morekeys_t ~ */ - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + /* morekeys_r ~ */ + EMPTY, EMPTY, EMPTY, /* ~ morekeys_cyrillic_ie */ /* keyspec_symbols_1 */ "1", /* keyspec_symbols_2 */ "2", @@ -486,6 +489,8 @@ public final class KeyboardTextsTable { /* keyspec_emoji_normal_key */ "!icon/emoji_normal_key|!code/key_emoji", /* keyspec_clipboard_action_key */ "!icon/clipboard_action_key|!code/key_clipboard", /* keyspec_clipboard_normal_key */ "!icon/clipboard_normal_key|!code/key_clipboard", + /* keyspec_start_onehanded_mode */ "!icon/start_onehanded_mode_key|!code/key_start_onehanded", + /* keyspec_language_switch */ "!icon/language_switch_key|!code/key_language_switch", }; /* Locale af: Afrikaans */ @@ -523,6 +528,7 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -531,7 +537,6 @@ public final class KeyboardTextsTable { // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+0133: "ij" LATIN SMALL LIGATURE IJ /* morekeys_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -546,17 +551,17 @@ public final class KeyboardTextsTable { /* Locale ar: Arabic */ private static final String[] TEXTS_ar = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE // U+200C: ZERO WIDTH NON-JOINER // U+0628: "ب" ARABIC LETTER BEH // U+062C: "ج" ARABIC LETTER JEEM /* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C", - /* morekeys_n ~ */ + /* morekeys_i ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, + null, null, null, /* ~ morekeys_cyrillic_ie */ // U+0661: "١" ARABIC-INDIC DIGIT ONE /* keyspec_symbols_1 */ "\u0661", @@ -699,6 +704,7 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* keylabel_to_alpha */ null, // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -707,7 +713,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u0148,\u00F1", @@ -728,7 +733,7 @@ public final class KeyboardTextsTable { // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON /* morekeys_z */ "\u017E", /* morekeys_d ~ */ - null, null, null, null, null, + null, null, null, /* ~ morekeys_l */ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u011F", @@ -737,15 +742,16 @@ public final class KeyboardTextsTable { /* Locale be: Belarusian */ private static final String[] TEXTS_be = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", @@ -773,15 +779,16 @@ public final class KeyboardTextsTable { /* Locale bg: Bulgarian */ private static final String[] TEXTS_bg = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ // single_quotes of Bulgarian is default single_quotes_right_left. /* double_quotes */ "!text/double_9qm_lqm", }; @@ -789,15 +796,15 @@ public final class KeyboardTextsTable { /* Locale bn_BD: Bangla (Bangladesh) */ private static final String[] TEXTS_bn_BD = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0995: "क" BENGALI LETTER KA // U+0996: "ख" BENGALI LETTER KHA // U+0997: "ग" BENGALI LETTER GA /* keylabel_to_alpha */ "\u0995\u0996\u0997", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+09F3: "৳" BENGALI RUPEE SIGN /* keyspec_currency */ "\u09F3", @@ -849,15 +856,15 @@ public final class KeyboardTextsTable { /* Locale bn_IN: Bangla (India) */ private static final String[] TEXTS_bn_IN = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0995: "क" BENGALI LETTER KA // U+0996: "ख" BENGALI LETTER KHA // U+0997: "ग" BENGALI LETTER GA /* keylabel_to_alpha */ "\u0995\u0996\u0997", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN /* keyspec_currency */ "\u20B9", @@ -900,6 +907,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -907,7 +915,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -916,7 +923,7 @@ public final class KeyboardTextsTable { // U+010D: "č" LATIN SMALL LETTER C WITH CARON /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes ~ */ - null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, /* ~ morekeys_t */ // U+00B7: "·" MIDDLE DOT // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE @@ -925,6 +932,7 @@ 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, 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, /* ~ morekeys_swiss_row2_11 */ // U+00B7: "·" MIDDLE DOT /* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&", @@ -974,6 +982,7 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -981,7 +990,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE @@ -1006,12 +1014,12 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,\u017A,\u017C", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON /* morekeys_d */ "\u010F", - /* single_angle_quotes */ "!text/single_raqm_laqm", - /* double_angle_quotes */ "!text/double_raqm_laqm", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON /* morekeys_t */ "\u0165", /* morekeys_l */ null, /* morekeys_g */ null, + /* single_angle_quotes */ "!text/single_raqm_laqm", + /* double_angle_quotes */ "!text/double_raqm_laqm", // U+0159: "ř" LATIN SMALL LETTER R WITH CARON /* morekeys_r */ "\u0159", }; @@ -1045,10 +1053,10 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS /* morekeys_i */ "\u00ED,\u00EF", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -1066,14 +1074,15 @@ public final class KeyboardTextsTable { /* morekeys_z */ null, // U+00F0: "ð" LATIN SMALL LETTER ETH /* morekeys_d */ "\u00F0", - /* single_angle_quotes */ "!text/single_raqm_laqm", - /* double_angle_quotes */ "!text/double_raqm_laqm", /* morekeys_t */ null, // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE /* morekeys_l */ "\u0142", - /* morekeys_g ~ */ + /* morekeys_g */ null, + /* single_angle_quotes */ "!text/single_raqm_laqm", + /* double_angle_quotes */ "!text/double_raqm_laqm", + /* morekeys_r ~ */ 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, /* ~ morekeys_tablet_period */ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE /* keyspec_nordic_row1_11 */ "\u00E5", @@ -1122,8 +1131,8 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,%,\u00FB,\u00F9,\u00FA,\u016B", - /* morekeys_i */ null, /* keylabel_to_alpha */ null, + /* morekeys_i */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -1135,14 +1144,14 @@ public final class KeyboardTextsTable { /* morekeys_s */ "\u00DF,\u015B,\u0161", /* single_quotes */ "!text/single_9qm_lqm", /* keyspec_currency ~ */ - null, null, null, null, - /* ~ morekeys_d */ + null, null, null, null, null, null, null, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* morekeys_t ~ */ + /* morekeys_r ~ */ 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, /* ~ morekeys_nordic_row2_11 */ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS /* keyspec_swiss_row1_11 */ "\u00FC", @@ -1190,8 +1199,8 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - /* morekeys_i */ null, /* keylabel_to_alpha */ null, + /* morekeys_i */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -1203,14 +1212,14 @@ public final class KeyboardTextsTable { /* morekeys_s */ "\u00DF,%,\u015B,\u0161", /* single_quotes */ "!text/single_9qm_lqm", /* keyspec_currency ~ */ - null, null, null, null, - /* ~ morekeys_d */ + null, null, null, null, null, null, null, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* morekeys_t ~ */ + /* morekeys_r ~ */ 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, /* ~ morekeys_nordic_row2_11 */ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS /* keyspec_swiss_row1_11 */ "\u00FC", @@ -1229,8 +1238,8 @@ public final class KeyboardTextsTable { /* Locale el: Greek */ private static final String[] TEXTS_el = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0391: "Α" GREEK CAPITAL LETTER ALPHA // U+0392: "Β" GREEK CAPITAL LETTER BETA @@ -1270,13 +1279,13 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u00F1", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA @@ -1331,6 +1340,7 @@ public final class KeyboardTextsTable { // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK // U+00B5: "µ" MICRO SIGN /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -1341,7 +1351,6 @@ public final class KeyboardTextsTable { // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+0133: "ij" LATIN SMALL LIGATURE IJ /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA @@ -1376,8 +1385,6 @@ public final class KeyboardTextsTable { // U+010F: "ď" LATIN SMALL LETTER D WITH CARON // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE /* morekeys_d */ "\u00F0,\u010F,\u0111", - /* single_angle_quotes */ null, - /* double_angle_quotes */ null, // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA @@ -1393,6 +1400,8 @@ public final class KeyboardTextsTable { // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA /* morekeys_g */ "\u011F,\u0121,\u0123", + /* single_angle_quotes */ null, + /* double_angle_quotes */ null, // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA @@ -1473,6 +1482,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -1480,7 +1490,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -1538,6 +1547,7 @@ public final class KeyboardTextsTable { // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE /* morekeys_u */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171", + /* keylabel_to_alpha */ null, // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK @@ -1546,7 +1556,6 @@ public final class KeyboardTextsTable { // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I /* morekeys_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131", - /* keylabel_to_alpha */ null, // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE @@ -1572,8 +1581,6 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,\u017C,\u017A", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON /* morekeys_d */ "\u010F", - /* single_angle_quotes */ null, - /* double_angle_quotes */ null, // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON /* morekeys_t */ "\u0163,\u0165", @@ -1585,6 +1592,8 @@ public final class KeyboardTextsTable { // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u0123,\u011F", + /* single_angle_quotes */ null, + /* double_angle_quotes */ null, // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE @@ -1642,6 +1651,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -1649,7 +1659,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -1662,16 +1671,16 @@ public final class KeyboardTextsTable { /* Locale fa: Persian */ private static final String[] TEXTS_fa = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0627: "ا" ARABIC LETTER ALEF // U+200C: ZERO WIDTH NON-JOINER // U+0628: "ب" ARABIC LETTER BEH // U+067E: "پ" ARABIC LETTER PEH /* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+FDFC: "﷼" RIAL SIGN /* keyspec_currency */ "\uFDFC", @@ -1825,7 +1834,7 @@ public final class KeyboardTextsTable { /* morekeys_e */ null, // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS /* morekeys_u */ "\u00FC", - /* morekeys_i ~ */ + /* keylabel_to_alpha ~ */ null, null, null, null, null, /* ~ double_quotes */ // U+0161: "š" LATIN SMALL LETTER S WITH CARON @@ -1895,6 +1904,7 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B", + /* keylabel_to_alpha */ null, // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -1902,7 +1912,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* keylabel_to_alpha */ null, /* morekeys_n */ null, // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE @@ -1969,6 +1978,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -1976,7 +1986,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -1989,15 +1998,15 @@ public final class KeyboardTextsTable { /* Locale hi: Hindi */ private static final String[] TEXTS_hi = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0915: "क" DEVANAGARI LETTER KA // U+0916: "ख" DEVANAGARI LETTER KHA // U+0917: "ग" DEVANAGARI LETTER GA /* keylabel_to_alpha */ "\u0915\u0916\u0917", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN /* keyspec_currency */ "\u20B9", @@ -2076,7 +2085,7 @@ public final class KeyboardTextsTable { private static final String[] TEXTS_hr = { /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ keylabel_to_alpha */ + /* ~ morekeys_i */ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -2098,6 +2107,9 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,\u017A,\u017C", // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE /* morekeys_d */ "\u0111", + /* morekeys_t ~ */ + null, null, null, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", }; @@ -2116,17 +2128,17 @@ public final class KeyboardTextsTable { // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE /* morekeys_u */ "\u00FA,\u00FC,\u0171", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE /* morekeys_i */ "\u00ED", - /* keylabel_to_alpha ~ */ - null, null, null, - /* ~ morekeys_c */ + /* morekeys_n */ null, + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_rqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_rqm", /* keyspec_currency ~ */ - null, null, null, null, - /* ~ morekeys_d */ + null, null, null, null, null, null, null, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", }; @@ -2134,17 +2146,17 @@ public final class KeyboardTextsTable { /* Locale hy: Armenian */ private static final String[] TEXTS_hy = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM /* keylabel_to_alpha */ "\u0531\u0532\u0533", - /* morekeys_n ~ */ + /* morekeys_i ~ */ 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, /* ~ additional_morekeys_symbols_0 */ /* morekeys_tablet_period */ "!text/morekeys_punctuation", /* keyspec_nordic_row1_11 ~ */ @@ -2228,6 +2240,7 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX @@ -2235,9 +2248,8 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B", - /* keylabel_to_alpha ~ */ - null, null, null, - /* ~ morekeys_c */ + /* morekeys_n */ null, + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", @@ -2248,8 +2260,6 @@ public final class KeyboardTextsTable { /* morekeys_z */ null, // U+00F0: "ð" LATIN SMALL LETTER ETH /* morekeys_d */ "\u00F0", - /* single_angle_quotes */ null, - /* double_angle_quotes */ null, // U+00FE: "þ" LATIN SMALL LETTER THORN /* morekeys_t */ "\u00FE", }; @@ -2291,6 +2301,7 @@ public final class KeyboardTextsTable { // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B", + /* keylabel_to_alpha */ null, // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX @@ -2298,11 +2309,11 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B", - /* keylabel_to_alpha ~ */ + /* morekeys_n ~ */ 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, /* ~ morekeys_nordic_row2_11 */ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS /* keyspec_swiss_row1_11 */ "\u00FC", @@ -2321,15 +2332,16 @@ public final class KeyboardTextsTable { /* Locale iw: Hebrew */ private static final String[] TEXTS_iw = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+05D0: "א" HEBREW LETTER ALEF // U+05D1: "ב" HEBREW LETTER BET // U+05D2: "ג" HEBREW LETTER GIMEL /* keylabel_to_alpha */ "\u05D0\u05D1\u05D2", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_rqm_9qm", /* morekeys_s */ null, /* single_quotes */ "!text/single_rqm_9qm", @@ -2379,15 +2391,16 @@ public final class KeyboardTextsTable { /* Locale ka: Georgian */ private static final String[] TEXTS_ka = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+10D0: "ა" GEORGIAN LETTER AN // U+10D1: "ბ" GEORGIAN LETTER BAN // U+10D2: "გ" GEORGIAN LETTER GAN /* keylabel_to_alpha */ "\u10D0\u10D1\u10D2", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", @@ -2396,16 +2409,16 @@ public final class KeyboardTextsTable { /* Locale kk: Kazakh */ private static final String[] TEXTS_kk = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n ~ */ + /* morekeys_i ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, + null, null, /* ~ morekeys_k */ // U+0451: "ё" CYRILLIC SMALL LETTER IO /* morekeys_cyrillic_ie */ "\u0451", @@ -2455,14 +2468,14 @@ public final class KeyboardTextsTable { /* Locale km: Khmer */ private static final String[] TEXTS_km = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+1780: "ក" KHMER LETTER KA // U+1781: "ខ" KHMER LETTER KHA // U+1782: "គ" KHMER LETTER KO /* keylabel_to_alpha */ "\u1780\u1781\u1782", - /* morekeys_n ~ */ + /* morekeys_i ~ */ 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, @@ -2471,7 +2484,7 @@ 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, 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, /* ~ morekeys_cyrillic_a */ // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL /* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", @@ -2480,15 +2493,15 @@ public final class KeyboardTextsTable { /* Locale kn: Kannada */ private static final String[] TEXTS_kn = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0C85: "ಅ" KANNADA LETTER A // U+0C86: "ಆ" KANNADA LETTER AA // U+0C87: "ಇ" KANNADA LETTER I /* keylabel_to_alpha */ "\u0C85\u0C86\u0C87", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN /* keyspec_currency */ "\u20B9", @@ -2497,16 +2510,16 @@ public final class KeyboardTextsTable { /* Locale ky: Kyrgyz */ private static final String[] TEXTS_ky = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n ~ */ + /* morekeys_i ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, + null, null, /* ~ morekeys_k */ // U+0451: "ё" CYRILLIC SMALL LETTER IO /* morekeys_cyrillic_ie */ "\u0451", @@ -2538,73 +2551,18 @@ public final class KeyboardTextsTable { /* morekeys_cyrillic_o */ "\u04E9", }; - /* Locale lb: Luxembourgish */ - private static final String[] TEXTS_lb = { - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+0040: "@" COMMERCIAL AT - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* morekeys_a */ "\u00E4,@,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* morekeys_o */ "\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB", - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX - // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE - // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE - // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE - // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE - // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX - // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS - /* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF", - /* keylabel_to_alpha */ null, - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* morekeys_n */ "\u00F1,\u0144", - /* morekeys_c */ null, - /* double_quotes */ "!text/double_9qm_lqm", - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* morekeys_s */ "\u00DF,\u015B,\u0161", - /* single_quotes */ "!text/single_9qm_lqm", - /* keyspec_currency ~ */ - null, null, null, null, - /* ~ morekeys_d */ - /* single_angle_quotes */ "!text/single_raqm_laqm", - /* double_angle_quotes */ "!text/double_raqm_laqm", - }; - /* Locale lo: Lao */ private static final String[] TEXTS_lo = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0E81: "ກ" LAO LETTER KO // U+0E82: "ຂ" LAO LETTER KHO SUNG // U+0E84: "ຄ" LAO LETTER KHO TAM /* keylabel_to_alpha */ "\u0E81\u0E82\u0E84", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20AD: "₭" KIP SIGN /* keyspec_currency */ "\u20AD", @@ -2650,6 +2608,7 @@ public final class KeyboardTextsTable { // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE /* morekeys_u */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171", + /* keylabel_to_alpha */ null, // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -2658,7 +2617,6 @@ public final class KeyboardTextsTable { // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I /* morekeys_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", - /* keylabel_to_alpha */ null, // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE @@ -2684,8 +2642,6 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,\u017C,\u017A", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON /* morekeys_d */ "\u010F", - /* single_angle_quotes */ null, - /* double_angle_quotes */ null, // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON /* morekeys_t */ "\u0163,\u0165", @@ -2697,6 +2653,8 @@ public final class KeyboardTextsTable { // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u0123,\u011F", + /* single_angle_quotes */ null, + /* double_angle_quotes */ null, // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE @@ -2744,6 +2702,7 @@ public final class KeyboardTextsTable { // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE /* morekeys_u */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171", + /* keylabel_to_alpha */ null, // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -2752,7 +2711,6 @@ public final class KeyboardTextsTable { // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I /* morekeys_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", - /* keylabel_to_alpha */ null, // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE @@ -2778,8 +2736,6 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,\u017C,\u017A", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON /* morekeys_d */ "\u010F", - /* single_angle_quotes */ null, - /* double_angle_quotes */ null, // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON /* morekeys_t */ "\u0163,\u0165", @@ -2791,6 +2747,8 @@ public final class KeyboardTextsTable { // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u0123,\u011F", + /* single_angle_quotes */ null, + /* double_angle_quotes */ null, // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE @@ -2802,15 +2760,16 @@ public final class KeyboardTextsTable { /* Locale mk: Macedonian */ private static final String[] TEXTS_mk = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", @@ -2841,13 +2800,13 @@ public final class KeyboardTextsTable { /* Locale ml: Malayalam */ private static final String[] TEXTS_ml = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0D05: "അ" MALAYALAM LETTER A /* keylabel_to_alpha */ "\u0D05", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN /* keyspec_currency */ "\u20B9", @@ -2856,15 +2815,15 @@ public final class KeyboardTextsTable { /* Locale mn: Mongolian */ private static final String[] TEXTS_mn = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20AE: "₮" TUGRIK SIGN /* keyspec_currency */ "\u20AE", @@ -2873,15 +2832,15 @@ public final class KeyboardTextsTable { /* Locale mr: Marathi */ private static final String[] TEXTS_mr = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0915: "क" DEVANAGARI LETTER KA // U+0916: "ख" DEVANAGARI LETTER KHA // U+0917: "ग" DEVANAGARI LETTER GA /* keylabel_to_alpha */ "\u0915\u0916\u0917", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN /* keyspec_currency */ "\u20B9", @@ -2925,18 +2884,18 @@ public final class KeyboardTextsTable { /* Locale my: Burmese */ private static final String[] TEXTS_my = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+1000: "က" MYANMAR LETTER KA // U+1001: "ခ" MYANMAR LETTER KHA // U+1002: "ဂ" MYANMAR LETTER GA /* keylabel_to_alpha */ "\u1000\u1001\u1002", - /* morekeys_n ~ */ + /* morekeys_i ~ */ 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, /* ~ morekeys_cyrillic_soft_sign */ /* keyspec_period */ "\u104B", /* morekeys_period */ null, @@ -2994,7 +2953,7 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - /* morekeys_i ~ */ + /* keylabel_to_alpha ~ */ null, null, null, null, /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_rqm", @@ -3023,15 +2982,15 @@ public final class KeyboardTextsTable { /* Locale ne: Nepali */ private static final String[] TEXTS_ne = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0915: "क" DEVANAGARI LETTER KA // U+0916: "ख" DEVANAGARI LETTER KHA // U+0917: "ग" DEVANAGARI LETTER GA /* keylabel_to_alpha */ "\u0915\u0916\u0917", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN /* keyspec_currency */ "\u0930\u0941.", @@ -3114,6 +3073,7 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -3122,7 +3082,6 @@ public final class KeyboardTextsTable { // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+0133: "ij" LATIN SMALL LIGATURE IJ /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -3166,7 +3125,7 @@ public final class KeyboardTextsTable { /* morekeys_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113", /* morekeys_u ~ */ null, null, null, - /* ~ keylabel_to_alpha */ + /* ~ morekeys_i */ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u0144,\u00F1", @@ -3186,9 +3145,8 @@ public final class KeyboardTextsTable { // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON /* morekeys_z */ "\u017C,\u017A,\u017E", - /* morekeys_d ~ */ - null, null, null, null, - /* ~ morekeys_t */ + /* morekeys_d */ null, + /* morekeys_t */ null, // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE /* morekeys_l */ "\u0142", }; @@ -3228,6 +3186,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -3235,7 +3194,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B", - /* keylabel_to_alpha */ null, /* morekeys_n */ null, // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+010D: "č" LATIN SMALL LETTER C WITH CARON @@ -3269,8 +3227,8 @@ public final class KeyboardTextsTable { // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON /* morekeys_a */ "\u0103,\u00E2,\u00E3,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101", /* morekeys_o ~ */ - null, null, null, - /* ~ morekeys_u */ + null, null, null, null, + /* ~ keylabel_to_alpha */ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -3278,9 +3236,8 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* keylabel_to_alpha ~ */ - null, null, null, - /* ~ morekeys_c */ + /* morekeys_n */ null, + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_rqm", // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW // U+00DF: "ß" LATIN SMALL LETTER SHARP S @@ -3289,8 +3246,8 @@ public final class KeyboardTextsTable { /* morekeys_s */ "\u0219,\u00DF,\u015B,\u0161", /* single_quotes */ "!text/single_9qm_rqm", /* keyspec_currency ~ */ - null, null, null, null, null, null, - /* ~ double_angle_quotes */ + null, null, null, null, + /* ~ morekeys_d */ // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW /* morekeys_t */ "\u021B", }; @@ -3298,15 +3255,16 @@ public final class KeyboardTextsTable { /* Locale ru: Russian */ private static final String[] TEXTS_ru = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", @@ -3334,14 +3292,14 @@ public final class KeyboardTextsTable { /* Locale si: Sinhala */ private static final String[] TEXTS_si = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0D85: "අ" SINHALA LETTER AYANNA // U+0D86: "ආ" SINHALA LETTER AAYANNA /* keylabel_to_alpha */ "\u0D85,\u0D86", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+0DBB/U+0DD4: "රු" SINHALA LETTER RAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA /* keyspec_currency */ "\u0DBB\u0DD4", @@ -3386,6 +3344,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE /* morekeys_u */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK @@ -3394,7 +3353,6 @@ public final class KeyboardTextsTable { // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I /* morekeys_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131", - /* keylabel_to_alpha */ null, // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE @@ -3421,8 +3379,6 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,\u017C,\u017A", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON /* morekeys_d */ "\u010F", - /* single_angle_quotes */ "!text/single_raqm_laqm", - /* double_angle_quotes */ "!text/double_raqm_laqm", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA /* morekeys_t */ "\u0165,\u0163", @@ -3434,6 +3390,8 @@ public final class KeyboardTextsTable { // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u0123,\u011F", + /* single_angle_quotes */ "!text/single_raqm_laqm", + /* double_angle_quotes */ "!text/double_raqm_laqm", // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA @@ -3460,6 +3418,9 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E", // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE /* morekeys_d */ "\u0111", + /* morekeys_t ~ */ + null, null, null, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", }; @@ -3467,27 +3428,27 @@ public final class KeyboardTextsTable { /* Locale sr: Serbian */ private static final String[] TEXTS_sr = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // END: More keys definitions for Serbian (Cyrillic) // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", /* keyspec_currency ~ */ - null, null, null, null, - /* ~ morekeys_d */ + null, null, null, null, null, null, null, + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* morekeys_t ~ */ - null, null, null, null, null, - /* ~ morekeys_k */ + /* morekeys_r */ null, + /* morekeys_k */ null, // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE /* morekeys_cyrillic_ie */ "\u0450", /* keyspec_symbols_1 ~ */ @@ -3534,9 +3495,9 @@ public final class KeyboardTextsTable { // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE /* morekeys_e */ "\u00E8", /* morekeys_u */ null, + /* keylabel_to_alpha */ null, // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE /* morekeys_i */ "\u00EC", - /* keylabel_to_alpha */ null, /* morekeys_n */ null, // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE @@ -3551,7 +3512,7 @@ public final class KeyboardTextsTable { /* morekeys_z */ "\u017E,%", // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE /* morekeys_d */ "\u0111,%", - /* single_angle_quotes ~ */ + /* morekeys_t ~ */ 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, @@ -3602,12 +3563,12 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS /* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF", - /* keylabel_to_alpha */ null, // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0148: "ň" LATIN SMALL LETTER N WITH CARON @@ -3634,14 +3595,14 @@ public final class KeyboardTextsTable { // U+00F0: "ð" LATIN SMALL LETTER ETH // U+010F: "ď" LATIN SMALL LETTER D WITH CARON /* morekeys_d */ "\u00F0,\u010F", - /* single_angle_quotes */ "!text/single_raqm_laqm", - /* double_angle_quotes */ "!text/double_raqm_laqm", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+00FE: "þ" LATIN SMALL LETTER THORN /* morekeys_t */ "\u0165,\u00FE", // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE /* morekeys_l */ "\u0142", /* morekeys_g */ null, + /* single_angle_quotes */ "!text/single_raqm_laqm", + /* double_angle_quotes */ "!text/double_raqm_laqm", // U+0159: "ř" LATIN SMALL LETTER R WITH CARON /* morekeys_r */ "\u0159", /* morekeys_k ~ */ @@ -3697,13 +3658,13 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + /* keylabel_to_alpha */ null, // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u00F1", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA @@ -3712,7 +3673,7 @@ public final class KeyboardTextsTable { // U+00DF: "ß" LATIN SMALL LETTER SHARP S /* morekeys_s */ "\u00DF", /* single_quotes ~ */ - null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, /* ~ morekeys_l */ /* morekeys_g */ "g\'", }; @@ -3720,15 +3681,15 @@ public final class KeyboardTextsTable { /* Locale ta_IN: Tamil (India) */ private static final String[] TEXTS_ta_IN = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0BA4: "த" TAMIL LETTER TA // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA /* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+0BF9: "௹" TAMIL RUPEE SIGN /* keyspec_currency */ "\u0BF9", @@ -3737,15 +3698,15 @@ public final class KeyboardTextsTable { /* Locale ta_LK: Tamil (Sri Lanka) */ private static final String[] TEXTS_ta_LK = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0BA4: "த" TAMIL LETTER TA // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA /* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+0DBB/U+0DD4: "රු" SINHALA LETTER RAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA /* keyspec_currency */ "\u0DBB\u0DD4", @@ -3754,8 +3715,8 @@ public final class KeyboardTextsTable { /* Locale ta_SG: Tamil (Singapore) */ private static final String[] TEXTS_ta_SG = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0BA4: "த" TAMIL LETTER TA // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I @@ -3766,15 +3727,15 @@ public final class KeyboardTextsTable { /* Locale te: Telugu */ private static final String[] TEXTS_te = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0C05: "అ" TELUGU LETTER A // U+0C06: "ఆ" TELUGU LETTER AA // U+0C07: "ఇ" TELUGU LETTER I /* keylabel_to_alpha */ "\u0C05\u0C06\u0C07", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN /* keyspec_currency */ "\u20B9", @@ -3783,15 +3744,15 @@ public final class KeyboardTextsTable { /* Locale th: Thai */ private static final String[] TEXTS_th = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0E01: "ก" THAI CHARACTER KO KAI // U+0E02: "ข" THAI CHARACTER KHO KHAI // U+0E04: "ค" THAI CHARACTER KHO KHWAI /* keylabel_to_alpha */ "\u0E01\u0E02\u0E04", - /* morekeys_n ~ */ - null, null, null, null, null, + /* morekeys_i ~ */ + null, null, null, null, null, null, /* ~ single_quotes */ // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT /* keyspec_currency */ "\u0E3F", @@ -3834,6 +3795,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -3841,7 +3803,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE /* morekeys_n */ "\u00F1,\u0144", @@ -3875,6 +3836,7 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* keylabel_to_alpha */ null, // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -3883,7 +3845,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u0148,\u00F1", @@ -3904,7 +3865,7 @@ public final class KeyboardTextsTable { // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON /* morekeys_z */ "\u017E", /* morekeys_d ~ */ - null, null, null, null, null, + null, null, null, /* ~ morekeys_l */ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u011F", @@ -3913,15 +3874,16 @@ public final class KeyboardTextsTable { /* Locale uk: Ukrainian */ private static final String[] TEXTS_uk = { /* morekeys_a ~ */ - null, null, null, null, null, - /* ~ morekeys_i */ + null, null, null, null, + /* ~ morekeys_u */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE /* keylabel_to_alpha */ "\u0410\u0411\u0412", - /* morekeys_n */ null, - /* morekeys_c */ null, + /* morekeys_i ~ */ + null, null, null, + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", /* morekeys_s */ null, /* single_quotes */ "!text/single_9qm_lqm", @@ -3980,6 +3942,7 @@ public final class KeyboardTextsTable { // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* keylabel_to_alpha */ null, // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -3988,7 +3951,6 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* keylabel_to_alpha */ null, // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u0148,\u00F1", @@ -4009,7 +3971,7 @@ public final class KeyboardTextsTable { // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON /* morekeys_z */ "\u017E", /* morekeys_d ~ */ - null, null, null, null, null, + null, null, null, /* ~ morekeys_l */ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE /* morekeys_g */ "\u011F", @@ -4077,14 +4039,15 @@ public final class KeyboardTextsTable { // U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE // U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW /* morekeys_u */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1", + /* keylabel_to_alpha */ null, // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE // U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW /* morekeys_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB", - /* keylabel_to_alpha ~ */ - null, null, null, null, null, null, + /* morekeys_n ~ */ + null, null, null, null, null, /* ~ single_quotes */ // U+20AB: "₫" DONG SIGN /* keyspec_currency */ "\u20AB", @@ -4132,13 +4095,13 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", + /* keylabel_to_alpha */ null, // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE /* morekeys_n */ "\u00F1", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA @@ -4195,6 +4158,7 @@ public final class KeyboardTextsTable { // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173", + /* keylabel_to_alpha */ null, // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX @@ -4206,7 +4170,6 @@ public final class KeyboardTextsTable { // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+0133: "ij" LATIN SMALL LIGATURE IJ /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133", - /* keylabel_to_alpha */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA @@ -4243,8 +4206,6 @@ public final class KeyboardTextsTable { // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE // U+00F0: "ð" LATIN SMALL LETTER ETH /* morekeys_d */ "\u010F,\u0111,\u00F0", - /* single_angle_quotes */ null, - /* double_angle_quotes */ null, // U+00FE: "þ" LATIN SMALL LETTER THORN // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON @@ -4261,6 +4222,8 @@ public final class KeyboardTextsTable { // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA /* morekeys_g */ "\u011D,\u011F,\u0121,\u0123", + /* single_angle_quotes */ null, + /* double_angle_quotes */ null, // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON @@ -4290,10 +4253,10 @@ public final class KeyboardTextsTable { private static final Object[] LOCALES_AND_TEXTS = { // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */ - "DEFAULT", TEXTS_DEFAULT, /* 179/179 DEFAULT */ + "DEFAULT", TEXTS_DEFAULT, /* 181/181 DEFAULT */ "af" , TEXTS_af, /* 7/ 13 Afrikaans */ "ar" , TEXTS_ar, /* 55/110 Arabic */ - "az" , TEXTS_az, /* 11/ 20 Azerbaijani */ + "az" , TEXTS_az, /* 11/ 18 Azerbaijani */ "be" , TEXTS_be, /* 9/ 54 Belarusian */ "bg" , TEXTS_bg, /* 2/ 9 Bulgarian */ "bn_BD" , TEXTS_bn_BD, /* 27/ 57 Bangla (Bangladesh) */ @@ -4303,7 +4266,7 @@ public final class KeyboardTextsTable { "da" , TEXTS_da, /* 19/ 58 Danish */ "de" , TEXTS_de, /* 16/ 64 German */ "de_DE" , TEXTS_de_DE, /* 16/ 64 German (Germany) */ - "el" , TEXTS_el, /* 1/ 6 Greek */ + "el" , TEXTS_el, /* 1/ 5 Greek */ "en" , TEXTS_en, /* 8/ 10 English */ "eo" , TEXTS_eo, /* 26/126 Esperanto */ "es" , TEXTS_es, /* 8/ 65 Spanish */ @@ -4315,10 +4278,10 @@ public final class KeyboardTextsTable { "gl" , TEXTS_gl, /* 7/ 8 Galician */ "hi" , TEXTS_hi, /* 27/ 57 Hindi */ "hi_ZZ" , TEXTS_hi_ZZ, /* 9/118 Hindi (Unknown Region) */ - "hr" , TEXTS_hr, /* 9/ 17 Croatian */ - "hu" , TEXTS_hu, /* 9/ 17 Hungarian */ + "hr" , TEXTS_hr, /* 9/ 20 Croatian */ + "hu" , TEXTS_hu, /* 9/ 20 Hungarian */ "hy" , TEXTS_hy, /* 9/134 Armenian */ - "is" , TEXTS_is, /* 10/ 18 Icelandic */ + "is" , TEXTS_is, /* 10/ 16 Icelandic */ "it" , TEXTS_it, /* 11/ 64 Italian */ "iw" , TEXTS_iw, /* 20/131 Hebrew */ "ka" , TEXTS_ka, /* 3/ 11 Georgian */ @@ -4326,7 +4289,6 @@ public final class KeyboardTextsTable { "km" , TEXTS_km, /* 2/130 Khmer */ "kn" , TEXTS_kn, /* 2/ 12 Kannada */ "ky" , TEXTS_ky, /* 10/ 92 Kyrgyz */ - "lb" , TEXTS_lb, /* 11/ 17 Luxembourgish */ "lo" , TEXTS_lo, /* 2/ 12 Lao */ "lt" , TEXTS_lt, /* 18/ 22 Lithuanian */ "lv" , TEXTS_lv, /* 18/ 22 Latvian */ @@ -4338,27 +4300,27 @@ public final class KeyboardTextsTable { "nb" , TEXTS_nb, /* 11/ 58 Norwegian Bokmål */ "ne" , TEXTS_ne, /* 27/ 57 Nepali */ "nl" , TEXTS_nl, /* 9/ 13 Dutch */ - "pl" , TEXTS_pl, /* 10/ 19 Polish */ + "pl" , TEXTS_pl, /* 10/ 17 Polish */ "pt" , TEXTS_pt, /* 6/ 8 Portuguese */ "rm" , TEXTS_rm, /* 1/ 2 Romansh */ - "ro" , TEXTS_ro, /* 6/ 18 Romanian */ + "ro" , TEXTS_ro, /* 6/ 16 Romanian */ "ru" , TEXTS_ru, /* 9/ 54 Russian */ "si" , TEXTS_si, /* 2/ 12 Sinhala */ "sk" , TEXTS_sk, /* 20/ 22 Slovak */ - "sl" , TEXTS_sl, /* 8/ 17 Slovenian */ + "sl" , TEXTS_sl, /* 8/ 20 Slovenian */ "sr" , TEXTS_sr, /* 11/ 97 Serbian */ "sr_ZZ" , TEXTS_sr_ZZ, /* 14/118 Serbian (Unknown Region) */ "sv" , TEXTS_sv, /* 21/ 58 Swedish */ - "sw" , TEXTS_sw, /* 9/ 20 Swahili */ + "sw" , TEXTS_sw, /* 9/ 18 Swahili */ "ta_IN" , TEXTS_ta_IN, /* 2/ 12 Tamil (India) */ "ta_LK" , TEXTS_ta_LK, /* 2/ 12 Tamil (Sri Lanka) */ - "ta_SG" , TEXTS_ta_SG, /* 1/ 6 Tamil (Singapore) */ + "ta_SG" , TEXTS_ta_SG, /* 1/ 5 Tamil (Singapore) */ "te" , TEXTS_te, /* 2/ 12 Telugu */ "th" , TEXTS_th, /* 2/ 12 Thai */ "tl" , TEXTS_tl, /* 7/ 8 Tagalog */ - "tr" , TEXTS_tr, /* 11/ 20 Turkish */ + "tr" , TEXTS_tr, /* 11/ 18 Turkish */ "uk" , TEXTS_uk, /* 11/ 91 Ukrainian */ - "uz" , TEXTS_uz, /* 11/ 20 Uzbek */ + "uz" , TEXTS_uz, /* 11/ 18 Uzbek */ "vi" , TEXTS_vi, /* 8/ 15 Vietnamese */ "zu" , TEXTS_zu, /* 8/ 10 Zulu */ "zz" , TEXTS_zz, /* 19/120 Alphabet */ diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/MoreKeySpec.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/MoreKeySpec.java index c83df3beb..733786fca 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/MoreKeySpec.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/MoreKeySpec.java @@ -294,7 +294,7 @@ public final class MoreKeySpec { // Append remained additional more keys to the tail of more keys. out = CollectionUtils.arrayAsList(moreKeys, 0, moreKeysCount); for (int i = additionalIndex; i < additionalCount; i++) { - out.add(additionalMoreKeys[additionalIndex]); + out.add(additionalMoreKeys[i]); } } if (out == null && moreKeysCount > 0) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/KeyboardWrapperView.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/KeyboardWrapperView.kt new file mode 100644 index 000000000..20780e305 --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/KeyboardWrapperView.kt @@ -0,0 +1,132 @@ +package org.dslul.openboard.inputmethod.latin + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import android.view.Gravity +import android.view.View +import android.widget.FrameLayout +import android.widget.ImageButton +import org.dslul.openboard.inputmethod.keyboard.KeyboardActionListener +import org.dslul.openboard.inputmethod.latin.common.Constants + +class KeyboardWrapperView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyle: Int = 0 +) : FrameLayout(context, attrs, defStyle), View.OnClickListener { + + var keyboardActionListener: KeyboardActionListener? = null + + private lateinit var stopOneHandedModeBtn: ImageButton + private lateinit var switchOneHandedModeBtn: ImageButton + private lateinit var keyboardView: View + private val iconStopOneHandedModeId: Int + private val iconSwitchOneHandedModeId: Int + + var oneHandedModeEnabled = false + set(enabled) { + field = enabled + updateViewsVisibility() + requestLayout() + } + + var oneHandedGravity = Gravity.NO_GRAVITY + set(value) { + field = value + updateSwitchButtonSide() + requestLayout() + } + + + override fun onFinishInflate() { + super.onFinishInflate() + stopOneHandedModeBtn = findViewById(R.id.btn_stop_one_handed_mode) + stopOneHandedModeBtn.setImageResource(iconStopOneHandedModeId) + stopOneHandedModeBtn.visibility = GONE + switchOneHandedModeBtn = findViewById(R.id.btn_switch_one_handed_mode) + switchOneHandedModeBtn.setImageResource(iconSwitchOneHandedModeId) + switchOneHandedModeBtn.visibility = GONE + keyboardView = findViewById(R.id.keyboard_view) + + stopOneHandedModeBtn.setOnClickListener(this) + switchOneHandedModeBtn.setOnClickListener(this) + } + + @SuppressLint("RtlHardcoded") + fun switchOneHandedModeSide() { + oneHandedGravity = if (oneHandedGravity == Gravity.LEFT) Gravity.RIGHT else Gravity.LEFT + } + + private fun updateViewsVisibility() { + stopOneHandedModeBtn.visibility = if (oneHandedModeEnabled) VISIBLE else GONE + switchOneHandedModeBtn.visibility = if (oneHandedModeEnabled) VISIBLE else GONE + } + + @SuppressLint("RtlHardcoded") + private fun updateSwitchButtonSide() { + switchOneHandedModeBtn.scaleX = if (oneHandedGravity == Gravity.LEFT) -1f else 1f + } + + override fun onClick(view: View) { + if (view === stopOneHandedModeBtn) { + keyboardActionListener?.onCodeInput(Constants.CODE_STOP_ONE_HANDED_MODE, + Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, + false /* isKeyRepeat */) + } else if (view === switchOneHandedModeBtn) { + keyboardActionListener?.onCodeInput(Constants.CODE_SWITCH_ONE_HANDED_MODE, + Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, + false /* isKeyRepeat */) + } + } + + @SuppressLint("RtlHardcoded") + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + if (!oneHandedModeEnabled) { + super.onLayout(changed, left, top, right, bottom) + return + } + + val isLeftGravity = oneHandedGravity == Gravity.LEFT + val width = right - left + val spareWidth = width - keyboardView.measuredWidth + + val keyboardLeft = if (isLeftGravity) 0 else spareWidth + keyboardView.layout( + keyboardLeft, + 0, + keyboardLeft + keyboardView.measuredWidth, + keyboardView.measuredHeight + ) + + val buttonsLeft = if (isLeftGravity) keyboardView.measuredWidth else 0 + stopOneHandedModeBtn.layout( + buttonsLeft + (spareWidth - stopOneHandedModeBtn.measuredWidth) / 2, + stopOneHandedModeBtn.measuredHeight / 2, + buttonsLeft + (spareWidth + stopOneHandedModeBtn.measuredWidth) / 2, + 3 * stopOneHandedModeBtn.measuredHeight / 2 + ) + switchOneHandedModeBtn.layout( + buttonsLeft + (spareWidth - switchOneHandedModeBtn.measuredWidth) / 2, + 2 * stopOneHandedModeBtn.measuredHeight, + buttonsLeft + (spareWidth + switchOneHandedModeBtn.measuredWidth) / 2, + 2 * stopOneHandedModeBtn.measuredHeight + switchOneHandedModeBtn.measuredHeight + ) + } + + init { + val keyboardAttr = context.obtainStyledAttributes(attrs, + R.styleable.Keyboard, defStyle, R.style.Keyboard) + iconStopOneHandedModeId = keyboardAttr.getResourceId(R.styleable.Keyboard_iconStopOneHandedMode, 0) + iconSwitchOneHandedModeId = keyboardAttr.getResourceId(R.styleable.Keyboard_iconSwitchOneHandedMode, 0) + keyboardAttr.recycle() + + val themeAttr = context.obtainStyledAttributes(attrs, + R.styleable.KeyboardTheme, defStyle, 0) + val keyboardViewStyleId = themeAttr.getResourceId(R.styleable.KeyboardTheme_mainKeyboardViewStyle, 0) + themeAttr.recycle() + val styleAttr = context.obtainStyledAttributes(keyboardViewStyleId, intArrayOf(android.R.attr.background)) + setBackgroundResource(styleAttr.getResourceId(0, 0)) + styleAttr.recycle() + } +} \ No newline at end of file diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index b104e64cb..87a93a8d0 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1341,11 +1341,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } } - int getCurrentAutoCapsState() { + public int getCurrentAutoCapsState() { return mInputLogic.getCurrentAutoCapsState(mSettings.getCurrent()); } - int getCurrentRecapitalizeState() { + public int getCurrentRecapitalizeState() { return mInputLogic.getCurrentRecapitalizeState(); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java index 7311d8b55..d65f5112c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java @@ -247,8 +247,11 @@ public final class Constants { public static final int CODE_SYMBOL_SHIFT = -14; public static final int CODE_ALPHA_FROM_EMOJI = -15; public static final int CODE_ALPHA_FROM_CLIPBOARD = -16; + public static final int CODE_START_ONE_HANDED_MODE = -17; + public static final int CODE_STOP_ONE_HANDED_MODE = -18; + public static final int CODE_SWITCH_ONE_HANDED_MODE = -19; // Code value representing the code is not specified. - public static final int CODE_UNSPECIFIED = -17; + public static final int CODE_UNSPECIFIED = -20; public static boolean isLetterCode(final int code) { return code >= CODE_SPACE; @@ -276,6 +279,9 @@ public final class Constants { case CODE_TAB: return "tab"; case CODE_ENTER: return "enter"; case CODE_SPACE: return "space"; + case CODE_START_ONE_HANDED_MODE: return "startOneHandedMode"; + case CODE_STOP_ONE_HANDED_MODE: return "stopOneHandedMode"; + case CODE_SWITCH_ONE_HANDED_MODE: return "switchOneHandedMode"; default: if (code < CODE_SPACE) return String.format("\\u%02X", code); if (code < 0x100) return String.format("%c", code); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java index 1f85f6622..333d0957d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java @@ -717,6 +717,15 @@ public final class InputLogic { // line, so that does affect the contents of the editor. inputTransaction.setDidAffectContents(); break; + case Constants.CODE_START_ONE_HANDED_MODE: + case Constants.CODE_STOP_ONE_HANDED_MODE: + // Note: One-handed mode activation is being + // handled in {@link KeyboardState#onEvent(Event,int)}. + break; + case Constants.CODE_SWITCH_ONE_HANDED_MODE: + // Note: Switching one-handed side is being + // handled in {@link KeyboardState#onEvent(Event,int)}. + break; default: throw new RuntimeException("Unknown key code : " + event.getMKeyCode()); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index 7400620e2..24990a334 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -16,6 +16,7 @@ package org.dslul.openboard.inputmethod.latin.settings; +import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; @@ -24,6 +25,7 @@ import android.content.res.Resources; import android.os.Build; import android.util.Log; +import android.view.Gravity; import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager; import org.dslul.openboard.inputmethod.latin.InputAttributes; import org.dslul.openboard.inputmethod.latin.R; @@ -107,6 +109,9 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang "pref_gesture_floating_preview_text"; public static final String PREF_SHOW_SETUP_WIZARD_ICON = "pref_show_setup_wizard_icon"; + public static final String PREF_ONE_HANDED_MODE = "pref_one_handed_mode_enabled"; + public static final String PREF_ONE_HANDED_GRAVITY = "pref_one_handed_mode_gravity"; + public static final String PREF_KEY_IS_INTERNAL = "pref_key_is_internal"; public static final String PREF_ENABLE_METRICS_LOGGING = "pref_enable_metrics_logging"; @@ -403,6 +408,23 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return prefs.getBoolean(PREF_SHOW_SETUP_WIZARD_ICON, false); } + public static boolean readOneHandedModeEnabled(final SharedPreferences prefs) { + return prefs.getBoolean(PREF_ONE_HANDED_MODE, false); + } + + public void writeOneHandedModeEnabled(final boolean enabled) { + mPrefs.edit().putBoolean(PREF_ONE_HANDED_MODE, enabled).apply(); + } + + @SuppressLint("RtlHardcoded") + public static int readOneHandedModeGravity(final SharedPreferences prefs) { + return prefs.getInt(PREF_ONE_HANDED_GRAVITY, Gravity.LEFT); + } + + public void writeOneHandedModeGravity(final int gravity) { + mPrefs.edit().putInt(PREF_ONE_HANDED_GRAVITY, gravity).apply(); + } + public static boolean readHasHardwareKeyboard(final Configuration conf) { // The standard way of finding out whether we have a hardware keyboard. This code is taken // from InputMethodService#onEvaluateInputShown, which canonically determines this. diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java index 76c536ca5..009018892 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java @@ -82,6 +82,8 @@ public class SettingsValues { public final boolean mDeleteSwipeEnabled; public final boolean mClipboardHistoryEnabled; public final long mClipboardHistoryRetentionTime; + public final boolean mOneHandedModeEnabled; + public final int mOneHandedModeGravity; // Use bigrams to predict the next word when there is no input for it yet public final boolean mBigramPredictionEnabled; public final boolean mGestureInputEnabled; @@ -237,6 +239,8 @@ public class SettingsValues { mDeleteSwipeEnabled = Settings.readDeleteSwipeEnabled(prefs); mClipboardHistoryEnabled = Settings.readClipboardHistoryEnabled(prefs); mClipboardHistoryRetentionTime = Settings.readClipboardHistoryRetentionTime(prefs, res); + mOneHandedModeEnabled = Settings.readOneHandedModeEnabled(prefs); + mOneHandedModeGravity = Settings.readOneHandedModeGravity(prefs); } public boolean isMetricsLoggingEnabled() { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ResourceUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ResourceUtils.java index 25fd4ea62..cfb517987 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ResourceUtils.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ResourceUtils.java @@ -182,6 +182,15 @@ public final class ResourceUtils { return matchedAll; } + public static int getKeyboardWidth(final Resources res, final SettingsValues settingsValues) { + final int defaultKeyboardWidth = getDefaultKeyboardWidth(res); + if (settingsValues.mOneHandedModeEnabled) { + return (int) res.getFraction(R.fraction.config_one_handed_mode_width, + defaultKeyboardWidth, defaultKeyboardWidth); + } + return defaultKeyboardWidth; + } + public static int getDefaultKeyboardWidth(final Resources res) { final DisplayMetrics dm = res.getDisplayMetrics(); return dm.widthPixels; diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_holo_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_holo_dark.png new file mode 100644 index 000000000..5575ae649 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_lxx_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_lxx_dark.png new file mode 100644 index 000000000..3454ccd33 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_lxx_light.png b/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_lxx_light.png new file mode 100644 index 000000000..e45c25ee2 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_start_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_holo_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_holo_dark.png new file mode 100644 index 000000000..ee2b35a7b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_lxx_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_lxx_dark.png new file mode 100644 index 000000000..2e08a09da Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_lxx_light.png b/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_lxx_light.png new file mode 100644 index 000000000..ac8a933a0 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_stop_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_holo_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_holo_dark.png new file mode 100644 index 000000000..e4081cd38 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_lxx_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_lxx_dark.png new file mode 100644 index 000000000..a1e67f662 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_lxx_light.png b/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_lxx_light.png new file mode 100644 index 000000000..ff5b88b98 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sym_keyboard_switch_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-mdpi/sym_keyboard_start_onehanded_holo_dark.png b/app/src/main/res/drawable-mdpi/sym_keyboard_start_onehanded_holo_dark.png new file mode 100644 index 000000000..69e837ff6 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/sym_keyboard_start_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-mdpi/sym_keyboard_stop_onehanded_holo_dark.png b/app/src/main/res/drawable-mdpi/sym_keyboard_stop_onehanded_holo_dark.png new file mode 100644 index 000000000..77b19dcff Binary files /dev/null and b/app/src/main/res/drawable-mdpi/sym_keyboard_stop_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-mdpi/sym_keyboard_switch_onehanded_holo_dark.png b/app/src/main/res/drawable-mdpi/sym_keyboard_switch_onehanded_holo_dark.png new file mode 100644 index 000000000..defc2e09c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/sym_keyboard_switch_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_holo_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_holo_dark.png new file mode 100644 index 000000000..4e52daf80 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_lxx_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_lxx_dark.png new file mode 100644 index 000000000..4b3089b02 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_lxx_light.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_lxx_light.png new file mode 100644 index 000000000..fa6ec548e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_start_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_holo_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_holo_dark.png new file mode 100644 index 000000000..def1f49bc Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_lxx_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_lxx_dark.png new file mode 100644 index 000000000..56d994593 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_lxx_light.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_lxx_light.png new file mode 100644 index 000000000..3b20ff012 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_stop_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_holo_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_holo_dark.png new file mode 100644 index 000000000..76975aafc Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_lxx_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_lxx_dark.png new file mode 100644 index 000000000..809c5e376 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_lxx_light.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_lxx_light.png new file mode 100644 index 000000000..760749426 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/sym_keyboard_switch_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_holo_dark.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_holo_dark.png new file mode 100644 index 000000000..197dcc5e1 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_lxx_dark.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_lxx_dark.png new file mode 100644 index 000000000..f7b9b083c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_lxx_light.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_lxx_light.png new file mode 100644 index 000000000..1f3b360ff Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_start_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_holo_dark.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_holo_dark.png new file mode 100644 index 000000000..e2e360959 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_lxx_dark.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_lxx_dark.png new file mode 100644 index 000000000..ad3ef0154 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_lxx_light.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_lxx_light.png new file mode 100644 index 000000000..fdd22dcf7 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_stop_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_holo_dark.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_holo_dark.png new file mode 100644 index 000000000..0afe49c60 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_lxx_dark.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_lxx_dark.png new file mode 100644 index 000000000..ac84f4a37 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_lxx_light.png b/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_lxx_light.png new file mode 100644 index 000000000..cb829e801 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/sym_keyboard_switch_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_holo_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_holo_dark.png new file mode 100644 index 000000000..3baac7a41 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_lxx_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_lxx_dark.png new file mode 100644 index 000000000..f779f3743 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_lxx_light.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_lxx_light.png new file mode 100644 index 000000000..26e1b6d26 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_start_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_holo_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_holo_dark.png new file mode 100644 index 000000000..55e337a91 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_lxx_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_lxx_dark.png new file mode 100644 index 000000000..37aaada86 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_lxx_light.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_lxx_light.png new file mode 100644 index 000000000..ee24cc6a8 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_stop_onehanded_lxx_light.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_holo_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_holo_dark.png new file mode 100644 index 000000000..2ba869fd5 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_holo_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_lxx_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_lxx_dark.png new file mode 100644 index 000000000..5612928f2 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_lxx_dark.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_lxx_light.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_lxx_light.png new file mode 100644 index 000000000..b1270b376 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_switch_onehanded_lxx_light.png differ diff --git a/app/src/main/res/layout/main_keyboard_frame.xml b/app/src/main/res/layout/main_keyboard_frame.xml index 4ae685f25..fe34aef42 100644 --- a/app/src/main/res/layout/main_keyboard_frame.xml +++ b/app/src/main/res/layout/main_keyboard_frame.xml @@ -37,9 +37,34 @@ - + android:layout_height="wrap_content" + android:layoutDirection="ltr" > + + + + + + + + + diff --git a/app/src/main/res/layout/suggestions_strip.xml b/app/src/main/res/layout/suggestions_strip.xml index d5a4cfbc9..76219cd29 100644 --- a/app/src/main/res/layout/suggestions_strip.xml +++ b/app/src/main/res/layout/suggestions_strip.xml @@ -56,7 +56,6 @@ diff --git a/app/src/main/res/values-sw600dp/config.xml b/app/src/main/res/values-sw600dp/config.xml index 4283ccb2a..f79ed0fa0 100644 --- a/app/src/main/res/values-sw600dp/config.xml +++ b/app/src/main/res/values-sw600dp/config.xml @@ -22,6 +22,9 @@ 40.0dp + + 76% + 302.4dp diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index db069751e..1cb096ef0 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -290,6 +290,9 @@ + + + @@ -512,6 +515,7 @@ + diff --git a/app/src/main/res/values/config-common.xml b/app/src/main/res/values/config-common.xml index e2b6020a7..0de99ccbe 100644 --- a/app/src/main/res/values/config-common.xml +++ b/app/src/main/res/values/config-common.xml @@ -24,6 +24,9 @@ look at input history to suggest a hopefully helpful suggestions for the next word? --> true + + 10 + 100 1100 diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index 240dc243e..6ab1d0e20 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -22,11 +22,11 @@ false - - 10 - 8.0dp + + 86% + 205.6dp diff --git a/app/src/main/res/values/keyboard-icons-holo.xml b/app/src/main/res/values/keyboard-icons-holo.xml index c6d956096..ce1f6ee26 100644 --- a/app/src/main/res/values/keyboard-icons-holo.xml +++ b/app/src/main/res/values/keyboard-icons-holo.xml @@ -41,5 +41,8 @@ @drawable/sym_keyboard_clipboard_holo_dark @drawable/sym_keyboard_clipboard_holo_dark @drawable/sym_keyboard_clear_clipboard_holo_dark + @drawable/sym_keyboard_start_onehanded_holo_dark + @drawable/sym_keyboard_stop_onehanded_holo_dark + @drawable/sym_keyboard_switch_onehanded_holo_dark diff --git a/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml b/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml index fdc0f8989..73ea197e7 100644 --- a/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml +++ b/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml @@ -46,5 +46,8 @@ @drawable/sym_keyboard_clipboard_lxx_dark @drawable/sym_keyboard_clipboard_lxx_dark @drawable/sym_keyboard_clear_clipboard_lxx_dark + @drawable/sym_keyboard_start_onehanded_lxx_dark + @drawable/sym_keyboard_stop_onehanded_lxx_dark + @drawable/sym_keyboard_switch_onehanded_lxx_dark diff --git a/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml b/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml index 0ad76be05..220e6b2e9 100644 --- a/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml +++ b/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml @@ -46,5 +46,8 @@ @drawable/sym_keyboard_clipboard_lxx_dark @drawable/sym_keyboard_clipboard_lxx_light @drawable/sym_keyboard_clear_clipboard_lxx_light + @drawable/sym_keyboard_start_onehanded_lxx_light + @drawable/sym_keyboard_stop_onehanded_lxx_light + @drawable/sym_keyboard_switch_onehanded_lxx_light diff --git a/app/src/main/res/xml-sw600dp/key_styles_common.xml b/app/src/main/res/xml-sw600dp/key_styles_common.xml index f7f5270d5..d20e9739e 100644 --- a/app/src/main/res/xml-sw600dp/key_styles_common.xml +++ b/app/src/main/res/xml-sw600dp/key_styles_common.xml @@ -100,7 +100,7 @@ latin:backgroundType="functional" /> diff --git a/app/src/main/res/xml/key_emoji.xml b/app/src/main/res/xml/key_emoji.xml index 6d7fc7030..2d56c90a1 100644 --- a/app/src/main/res/xml/key_emoji.xml +++ b/app/src/main/res/xml/key_emoji.xml @@ -32,7 +32,6 @@ diff --git a/app/src/main/res/xml/key_styles_common.xml b/app/src/main/res/xml/key_styles_common.xml index d2b93ed13..aea8585ea 100644 --- a/app/src/main/res/xml/key_styles_common.xml +++ b/app/src/main/res/xml/key_styles_common.xml @@ -126,7 +126,7 @@ latin:backgroundType="functional" /> diff --git a/app/src/main/res/xml/key_styles_settings.xml b/app/src/main/res/xml/key_styles_settings.xml index 32bbad3fe..2d6ec6f72 100644 --- a/app/src/main/res/xml/key_styles_settings.xml +++ b/app/src/main/res/xml/key_styles_settings.xml @@ -20,52 +20,92 @@ + > + > + latin:backgroundType="functional"/> + latin:emojiKeyEnabled="true"> + latin:styleName="settingsMoreKeysStyle" + latin:keyLabelFlags="hasPopupHint" + latin:backgroundType="functional" + latin:additionalMoreKeys="!text/keyspec_settings,!text/keyspec_clipboard_normal_key"/> + latin:emojiKeyEnabled="false"> + latin:styleName="settingsMoreKeysStyle" + latin:keyLabelFlags="hasPopupHint" + latin:backgroundType="functional" + latin:additionalMoreKeys="!text/keyspec_settings,!text/keyspec_clipboard_normal_key,!text/keyspec_emoji_normal_key"/> + latin:emojiKeyEnabled="true"> + latin:styleName="settingsMoreKeysStyle" + latin:keyLabelFlags="hasPopupHint" + latin:backgroundType="functional" + latin:additionalMoreKeys="!text/keyspec_settings,!text/keyspec_clipboard_normal_key,!text/keyspec_language_switch"/> + + + + + + + + + + + + + latin:backgroundType="functional" + latin:additionalMoreKeys="!text/keyspec_settings,!text/keyspec_clipboard_normal_key,!text/keyspec_start_onehanded_mode,!text/keyspec_language_switch,!text/keyspec_emoji_normal_key"/> diff --git a/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml index 7a9964ca1..d26383e20 100644 --- a/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml +++ b/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml @@ -262,6 +262,8 @@ !icon/emoji_normal_key|!code/key_emoji !icon/clipboard_action_key|!code/key_clipboard !icon/clipboard_normal_key|!code/key_clipboard + !icon/start_onehanded_mode_key|!code/key_start_onehanded + !icon/language_switch_key|!code/key_language_switch !string/label_go_key !string/label_send_key !string/label_next_key