mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-22 15:19:10 +00:00
rename some keyboard layouts, simplify layout names, enable "hidden" layouts
This commit is contained in:
parent
c943082f98
commit
461eb2a551
8 changed files with 142 additions and 232 deletions
|
@ -35,7 +35,7 @@ import java.util.Locale
|
||||||
* Functional keys are pre-defined and can't be changed, with exception of comma, period and similar
|
* Functional keys are pre-defined and can't be changed, with exception of comma, period and similar
|
||||||
* keys in symbol layouts.
|
* keys in symbol layouts.
|
||||||
* By default, all normal keys have the same width and flags, which may cause issues with the
|
* By default, all normal keys have the same width and flags, which may cause issues with the
|
||||||
* requirements of certain non-latin languages. todo: add labelFlags to Json parser, or determine automatically?
|
* requirements of certain non-latin languages.
|
||||||
*/
|
*/
|
||||||
abstract class KeyboardParser(private val params: KeyboardParams, private val context: Context) {
|
abstract class KeyboardParser(private val params: KeyboardParams, private val context: Context) {
|
||||||
private val infos = layoutInfos(params)
|
private val infos = layoutInfos(params)
|
||||||
|
@ -754,7 +754,7 @@ abstract class KeyboardParser(private val params: KeyboardParams, private val co
|
||||||
|
|
||||||
fun parseFromAssets(params: KeyboardParams, context: Context): ArrayList<ArrayList<KeyParams>> {
|
fun parseFromAssets(params: KeyboardParams, context: Context): ArrayList<ArrayList<KeyParams>> {
|
||||||
val id = params.mId
|
val id = params.mId
|
||||||
val layoutName = params.mId.mSubtype.keyboardLayoutSetName
|
val layoutName = params.mId.mSubtype.keyboardLayoutSetName.substringBefore("+")
|
||||||
val layoutFileNames = context.assets.list("layouts")!!
|
val layoutFileNames = context.assets.list("layouts")!!
|
||||||
return when {
|
return when {
|
||||||
id.mElementId == KeyboardId.ELEMENT_SYMBOLS && ScriptUtils.getScriptFromSpellCheckerLocale(params.mId.locale) == ScriptUtils.SCRIPT_ARABIC
|
id.mElementId == KeyboardId.ELEMENT_SYMBOLS && ScriptUtils.getScriptFromSpellCheckerLocale(params.mId.locale) == ScriptUtils.SCRIPT_ARABIC
|
||||||
|
@ -769,22 +769,12 @@ abstract class KeyboardParser(private val params: KeyboardParams, private val co
|
||||||
id.mElementId == KeyboardId.ELEMENT_PHONE -> JsonKeyboardParser(params, context).parseLayoutFromAssets("phone")
|
id.mElementId == KeyboardId.ELEMENT_PHONE -> JsonKeyboardParser(params, context).parseLayoutFromAssets("phone")
|
||||||
id.mElementId == KeyboardId.ELEMENT_PHONE_SYMBOLS -> JsonKeyboardParser(params, context).parseLayoutFromAssets("phone_symbols")
|
id.mElementId == KeyboardId.ELEMENT_PHONE_SYMBOLS -> JsonKeyboardParser(params, context).parseLayoutFromAssets("phone_symbols")
|
||||||
layoutFileNames.contains("$layoutName.json") -> JsonKeyboardParser(params, context).parseLayoutFromAssets(layoutName)
|
layoutFileNames.contains("$layoutName.json") -> JsonKeyboardParser(params, context).parseLayoutFromAssets(layoutName)
|
||||||
layoutFileNames.contains("${getSimpleLayoutName(layoutName, params)}.txt")
|
layoutFileNames.contains("$layoutName.txt")
|
||||||
-> SimpleKeyboardParser(params, context).parseLayoutFromAssets(layoutName)
|
-> SimpleKeyboardParser(params, context).parseLayoutFromAssets(layoutName)
|
||||||
else -> throw IllegalStateException("can't parse layout $layoutName with id $id and elementId ${id.mElementId}")
|
else -> throw IllegalStateException("can't parse layout $layoutName with id $id and elementId ${id.mElementId}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic // unsupported without JvmStatic
|
|
||||||
// todo: should be removed in the end (after removing old parser), and the internal layout names changed for easier finding
|
|
||||||
// currently it's spread out everywhere... method.xml, locale_and_extra_value_to_keyboard_layout_set_map, getKeyboardLayoutNameForLocale, ...
|
|
||||||
protected fun getSimpleLayoutName(layoutName: String, params: KeyboardParams): String = when (layoutName) {
|
|
||||||
"swiss", "german", "serbian_qwertz" -> "qwertz"
|
|
||||||
"nordic", "spanish" -> if (params.mId.locale.language == "eo") "eo" else "qwerty"
|
|
||||||
"south_slavic", "east_slavic" -> params.mId.locale.language // layouts are split per language now, much less convoluted
|
|
||||||
else -> layoutName
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo: layoutInfos should be stored in method.xml (imeSubtypeExtraValue)
|
// todo: layoutInfos should be stored in method.xml (imeSubtypeExtraValue)
|
||||||
// or somewhere else... some replacement for keyboard_layout_set xml maybe
|
// or somewhere else... some replacement for keyboard_layout_set xml maybe
|
||||||
// move it after old parser is removed
|
// move it after old parser is removed
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardParams
|
||||||
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.KeyData
|
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.KeyData
|
||||||
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.toTextKey
|
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.toTextKey
|
||||||
import org.dslul.openboard.inputmethod.latin.common.splitOnWhitespace
|
import org.dslul.openboard.inputmethod.latin.common.splitOnWhitespace
|
||||||
|
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parser for simple layouts, defined only as rows of (normal) keys with moreKeys.
|
* Parser for simple layouts, defined only as rows of (normal) keys with moreKeys.
|
||||||
|
@ -14,12 +15,10 @@ import org.dslul.openboard.inputmethod.latin.common.splitOnWhitespace
|
||||||
* merged with defaults.
|
* merged with defaults.
|
||||||
*/
|
*/
|
||||||
class SimpleKeyboardParser(private val params: KeyboardParams, private val context: Context) : KeyboardParser(params, context) {
|
class SimpleKeyboardParser(private val params: KeyboardParams, private val context: Context) : KeyboardParser(params, context) {
|
||||||
private val addExtraKeys = // todo (after removing old parser): add turkish layout that maps to qwerty, but enables extra keys
|
private val addExtraKeys = params.mId.mSubtype.keyboardLayoutSetName.endsWith("+")
|
||||||
params.mId.isAlphabetKeyboard && params.mId.locale.language != "eo"
|
|
||||||
&& params.mId.mSubtype.keyboardLayoutSetName in listOf("nordic", "spanish", "german", "swiss", "serbian_qwertz")
|
|
||||||
|
|
||||||
override fun getLayoutFromAssets(layoutName: String) =
|
override fun getLayoutFromAssets(layoutName: String) =
|
||||||
context.assets.open("layouts/${getSimpleLayoutName(layoutName, params)}.txt").reader().readText()
|
context.assets.open("layouts/$layoutName.txt").reader().readText()
|
||||||
|
|
||||||
override fun parseCoreLayout(layoutContent: String): MutableList<List<KeyData>> {
|
override fun parseCoreLayout(layoutContent: String): MutableList<List<KeyData>> {
|
||||||
val rowStrings = layoutContent.replace("\r\n", "\n").split("\n\n")
|
val rowStrings = layoutContent.replace("\r\n", "\n").split("\n\n")
|
||||||
|
|
|
@ -65,6 +65,12 @@ public final class Constants {
|
||||||
*/
|
*/
|
||||||
public static final String KEYBOARD_MODE = "keyboard";
|
public static final String KEYBOARD_MODE = "keyboard";
|
||||||
|
|
||||||
|
// some extra values:
|
||||||
|
// TrySuppressingImeSwitcher: not documented, but used in Android source
|
||||||
|
// AsciiCapable: not used, but recommended for Android 9- because of known issues
|
||||||
|
// SupportTouchPositionCorrection: never read, never used outside AOSP keyboard -> can be removed?
|
||||||
|
// EmojiCapable: there is some description in Constants, but actually it's never read
|
||||||
|
// KeyboardLayoutSet: obvious
|
||||||
public static final class ExtraValue {
|
public static final class ExtraValue {
|
||||||
/**
|
/**
|
||||||
* The subtype extra value used to indicate that this subtype is capable of
|
* The subtype extra value used to indicate that this subtype is capable of
|
||||||
|
|
|
@ -56,20 +56,7 @@ fun addEnabledSubtype(prefs: SharedPreferences, subtype: InputMethodSubtype) {
|
||||||
/** returns whether subtype was actually removed, does not remove last subtype */
|
/** returns whether subtype was actually removed, does not remove last subtype */
|
||||||
fun removeEnabledSubtype(prefs: SharedPreferences, subtype: InputMethodSubtype) {
|
fun removeEnabledSubtype(prefs: SharedPreferences, subtype: InputMethodSubtype) {
|
||||||
require(initialized)
|
require(initialized)
|
||||||
val subtypeString = subtype.prefString()
|
removeEnabledSubtype(prefs, subtype.prefString())
|
||||||
val oldSubtypeString = prefs.getString(Settings.PREF_ENABLED_INPUT_STYLES, "")!!
|
|
||||||
val newString = (oldSubtypeString.split(SUBTYPE_SEPARATOR) - subtypeString).joinToString(SUBTYPE_SEPARATOR)
|
|
||||||
if (newString == oldSubtypeString)
|
|
||||||
return // already removed
|
|
||||||
prefs.edit { putString(Settings.PREF_ENABLED_INPUT_STYLES, newString) }
|
|
||||||
if (subtypeString == prefs.getString(Settings.PREF_SELECTED_INPUT_STYLE, "")) {
|
|
||||||
// switch subtype if the currently used one has been disabled
|
|
||||||
val nextSubtype = RichInputMethodManager.getInstance().getNextSubtypeInThisIme(true)
|
|
||||||
if (subtypeString == nextSubtype?.prefString())
|
|
||||||
KeyboardSwitcher.getInstance().switchToSubtype(getDefaultEnabledSubtypes().first())
|
|
||||||
else
|
|
||||||
KeyboardSwitcher.getInstance().switchToSubtype(nextSubtype)
|
|
||||||
}
|
|
||||||
enabledSubtypes.remove(subtype)
|
enabledSubtypes.remove(subtype)
|
||||||
RichInputMethodManager.getInstance().refreshSubtypeCaches()
|
RichInputMethodManager.getInstance().refreshSubtypeCaches()
|
||||||
}
|
}
|
||||||
|
@ -246,6 +233,8 @@ private fun loadEnabledSubtypes(context: Context) {
|
||||||
if (subtype == null) {
|
if (subtype == null) {
|
||||||
if (DebugFlags.DEBUG_ENABLED)
|
if (DebugFlags.DEBUG_ENABLED)
|
||||||
Toast.makeText(context, "subtype $localeAndLayout could not be loaded", Toast.LENGTH_LONG).show()
|
Toast.makeText(context, "subtype $localeAndLayout could not be loaded", Toast.LENGTH_LONG).show()
|
||||||
|
else // don't remove in debug mode
|
||||||
|
removeEnabledSubtype(prefs, localeAndLayout.joinToString(LOCALE_LAYOUT_SEPARATOR))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,6 +242,22 @@ private fun loadEnabledSubtypes(context: Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun removeEnabledSubtype(prefs: SharedPreferences, subtypeString: String) {
|
||||||
|
val oldSubtypeString = prefs.getString(Settings.PREF_ENABLED_INPUT_STYLES, "")!!
|
||||||
|
val newString = (oldSubtypeString.split(SUBTYPE_SEPARATOR) - subtypeString).joinToString(SUBTYPE_SEPARATOR)
|
||||||
|
if (newString == oldSubtypeString)
|
||||||
|
return // already removed
|
||||||
|
prefs.edit { putString(Settings.PREF_ENABLED_INPUT_STYLES, newString) }
|
||||||
|
if (subtypeString == prefs.getString(Settings.PREF_SELECTED_INPUT_STYLE, "")) {
|
||||||
|
// switch subtype if the currently used one has been disabled
|
||||||
|
val nextSubtype = RichInputMethodManager.getInstance().getNextSubtypeInThisIme(true)
|
||||||
|
if (subtypeString == nextSubtype?.prefString())
|
||||||
|
KeyboardSwitcher.getInstance().switchToSubtype(getDefaultEnabledSubtypes().first())
|
||||||
|
else
|
||||||
|
KeyboardSwitcher.getInstance().switchToSubtype(nextSubtype)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var initialized = false
|
var initialized = false
|
||||||
private set
|
private set
|
||||||
private val enabledSubtypes = mutableListOf<InputMethodSubtype>()
|
private val enabledSubtypes = mutableListOf<InputMethodSubtype>()
|
||||||
|
|
|
@ -92,33 +92,23 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
|
||||||
return mRecommendedThreshold;
|
return mRecommendedThreshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: this needs to be adjusted!
|
|
||||||
private static String getKeyboardLayoutNameForLocale(final Locale locale) {
|
private static String getKeyboardLayoutNameForLocale(final Locale locale) {
|
||||||
// See b/19963288.
|
// See b/19963288.
|
||||||
if (locale.getLanguage().equals("sr") || locale.getLanguage().equals("mk")) {
|
if (locale.getLanguage().equals("sr") || locale.getLanguage().equals("mk")) {
|
||||||
return "south_slavic";
|
return locale.getLanguage();
|
||||||
}
|
}
|
||||||
final int script = ScriptUtils.getScriptFromSpellCheckerLocale(locale);
|
final int script = ScriptUtils.getScriptFromSpellCheckerLocale(locale);
|
||||||
switch (script) {
|
return switch (script) {
|
||||||
case ScriptUtils.SCRIPT_LATIN:
|
case ScriptUtils.SCRIPT_LATIN -> "qwerty";
|
||||||
return "qwerty";
|
case ScriptUtils.SCRIPT_ARMENIAN -> "armenian_phonetic";
|
||||||
case ScriptUtils.SCRIPT_ARMENIAN:
|
case ScriptUtils.SCRIPT_CYRILLIC -> "ru";
|
||||||
return "armenian_phonetic";
|
case ScriptUtils.SCRIPT_GREEK -> "greek";
|
||||||
case ScriptUtils.SCRIPT_CYRILLIC:
|
case ScriptUtils.SCRIPT_HEBREW -> "hebrew";
|
||||||
return "east_slavic";
|
case ScriptUtils.SCRIPT_BULGARIAN -> "bulgarian";
|
||||||
case ScriptUtils.SCRIPT_GREEK:
|
case ScriptUtils.SCRIPT_GEORGIAN -> "georgian";
|
||||||
return "greek";
|
case ScriptUtils.SCRIPT_BENGALI -> "bengali_unijoy";
|
||||||
case ScriptUtils.SCRIPT_HEBREW:
|
default -> throw new RuntimeException("Wrong script supplied: " + script);
|
||||||
return "hebrew";
|
};
|
||||||
case ScriptUtils.SCRIPT_BULGARIAN:
|
|
||||||
return "bulgarian";
|
|
||||||
case ScriptUtils.SCRIPT_GEORGIAN:
|
|
||||||
return "georgian";
|
|
||||||
case ScriptUtils.SCRIPT_BENGALI:
|
|
||||||
return "bengali_unijoy";
|
|
||||||
default:
|
|
||||||
throw new RuntimeException("Wrong script supplied: " + script);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -8,7 +8,6 @@ package org.dslul.openboard.inputmethod.latin.utils;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.Log;
|
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
import android.view.inputmethod.InputMethodSubtype;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.latin.R;
|
import org.dslul.openboard.inputmethod.latin.R;
|
||||||
|
@ -51,27 +50,16 @@ public final class SubtypeLocaleUtils {
|
||||||
// Keyboard layout to subtype name resource id map.
|
// Keyboard layout to subtype name resource id map.
|
||||||
private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap = new HashMap<>();
|
private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap = new HashMap<>();
|
||||||
// Exceptional locale whose name should be displayed in Locale.ROOT.
|
// Exceptional locale whose name should be displayed in Locale.ROOT.
|
||||||
private static final HashMap<String, Integer> sExceptionalLocaleDisplayedInRootLocale =
|
private static final HashMap<String, Integer> sExceptionalLocaleDisplayedInRootLocale = new HashMap<>();
|
||||||
new HashMap<>();
|
|
||||||
// Exceptional locale to subtype name resource id map.
|
// Exceptional locale to subtype name resource id map.
|
||||||
private static final HashMap<String, Integer> sExceptionalLocaleToNameIdsMap = new HashMap<>();
|
private static final HashMap<String, Integer> sExceptionalLocaleToNameIdsMap = new HashMap<>();
|
||||||
// Exceptional locale to subtype name with layout resource id map.
|
// Exceptional locale to subtype name with layout resource id map.
|
||||||
private static final HashMap<String, Integer> sExceptionalLocaleToWithLayoutNameIdsMap =
|
private static final HashMap<String, Integer> sExceptionalLocaleToWithLayoutNameIdsMap = new HashMap<>();
|
||||||
new HashMap<>();
|
private static final String SUBTYPE_NAME_RESOURCE_PREFIX = "string/subtype_";
|
||||||
private static final String SUBTYPE_NAME_RESOURCE_PREFIX =
|
private static final String SUBTYPE_NAME_RESOURCE_GENERIC_PREFIX = "string/subtype_generic_";
|
||||||
"string/subtype_";
|
private static final String SUBTYPE_NAME_RESOURCE_WITH_LAYOUT_PREFIX = "string/subtype_with_layout_";
|
||||||
private static final String SUBTYPE_NAME_RESOURCE_GENERIC_PREFIX =
|
private static final String SUBTYPE_NAME_RESOURCE_NO_LANGUAGE_PREFIX = "string/subtype_no_language_";
|
||||||
"string/subtype_generic_";
|
private static final String SUBTYPE_NAME_RESOURCE_IN_ROOT_LOCALE_PREFIX = "string/subtype_in_root_locale_";
|
||||||
private static final String SUBTYPE_NAME_RESOURCE_WITH_LAYOUT_PREFIX =
|
|
||||||
"string/subtype_with_layout_";
|
|
||||||
private static final String SUBTYPE_NAME_RESOURCE_NO_LANGUAGE_PREFIX =
|
|
||||||
"string/subtype_no_language_";
|
|
||||||
private static final String SUBTYPE_NAME_RESOURCE_IN_ROOT_LOCALE_PREFIX =
|
|
||||||
"string/subtype_in_root_locale_";
|
|
||||||
// Keyboard layout set name for the subtypes that don't have a keyboardLayoutSet extra value.
|
|
||||||
// This is for compatibility to keep the same subtype ids as pre-JellyBean.
|
|
||||||
private static final HashMap<String, String> sLocaleAndExtraValueToKeyboardLayoutSetMap =
|
|
||||||
new HashMap<>();
|
|
||||||
|
|
||||||
private SubtypeLocaleUtils() {
|
private SubtypeLocaleUtils() {
|
||||||
// Intentional empty constructor for utility class.
|
// Intentional empty constructor for utility class.
|
||||||
|
@ -80,7 +68,7 @@ public final class SubtypeLocaleUtils {
|
||||||
// Note that this initialization method can be called multiple times.
|
// Note that this initialization method can be called multiple times.
|
||||||
public static void init(final Context context) {
|
public static void init(final Context context) {
|
||||||
synchronized (sInitializeLock) {
|
synchronized (sInitializeLock) {
|
||||||
if (sInitialized == false) {
|
if (!sInitialized) {
|
||||||
initLocked(context);
|
initLocked(context);
|
||||||
sInitialized = true;
|
sInitialized = true;
|
||||||
}
|
}
|
||||||
|
@ -93,8 +81,7 @@ public final class SubtypeLocaleUtils {
|
||||||
sResources = res;
|
sResources = res;
|
||||||
|
|
||||||
final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts);
|
final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts);
|
||||||
final String[] layoutDisplayNames = res.getStringArray(
|
final String[] layoutDisplayNames = res.getStringArray(R.array.predefined_layout_display_names);
|
||||||
R.array.predefined_layout_display_names);
|
|
||||||
for (int i = 0; i < predefinedLayoutSet.length; i++) {
|
for (int i = 0; i < predefinedLayoutSet.length; i++) {
|
||||||
final String layoutName = predefinedLayoutSet[i];
|
final String layoutName = predefinedLayoutSet[i];
|
||||||
sKeyboardLayoutToDisplayNameMap.put(layoutName, layoutDisplayNames[i]);
|
sKeyboardLayoutToDisplayNameMap.put(layoutName, layoutDisplayNames[i]);
|
||||||
|
@ -103,42 +90,27 @@ public final class SubtypeLocaleUtils {
|
||||||
sKeyboardLayoutToNameIdsMap.put(layoutName, resId);
|
sKeyboardLayoutToNameIdsMap.put(layoutName, resId);
|
||||||
// Register subtype name resource id of "No language" with key "zz_<layout>"
|
// Register subtype name resource id of "No language" with key "zz_<layout>"
|
||||||
final String noLanguageResName = SUBTYPE_NAME_RESOURCE_NO_LANGUAGE_PREFIX + layoutName;
|
final String noLanguageResName = SUBTYPE_NAME_RESOURCE_NO_LANGUAGE_PREFIX + layoutName;
|
||||||
final int noLanguageResId = res.getIdentifier(
|
final int noLanguageResId = res.getIdentifier(noLanguageResName, null, RESOURCE_PACKAGE_NAME);
|
||||||
noLanguageResName, null, RESOURCE_PACKAGE_NAME);
|
|
||||||
final String key = getNoLanguageLayoutKey(layoutName);
|
final String key = getNoLanguageLayoutKey(layoutName);
|
||||||
sKeyboardLayoutToNameIdsMap.put(key, noLanguageResId);
|
sKeyboardLayoutToNameIdsMap.put(key, noLanguageResId);
|
||||||
}
|
}
|
||||||
|
|
||||||
final String[] exceptionalLocaleInRootLocale = res.getStringArray(
|
final String[] exceptionalLocaleInRootLocale = res.getStringArray(R.array.subtype_locale_displayed_in_root_locale);
|
||||||
R.array.subtype_locale_displayed_in_root_locale);
|
for (final String localeString : exceptionalLocaleInRootLocale) {
|
||||||
for (int i = 0; i < exceptionalLocaleInRootLocale.length; i++) {
|
|
||||||
final String localeString = exceptionalLocaleInRootLocale[i];
|
|
||||||
final String resourceName = SUBTYPE_NAME_RESOURCE_IN_ROOT_LOCALE_PREFIX + localeString;
|
final String resourceName = SUBTYPE_NAME_RESOURCE_IN_ROOT_LOCALE_PREFIX + localeString;
|
||||||
final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME);
|
final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME);
|
||||||
sExceptionalLocaleDisplayedInRootLocale.put(localeString, resId);
|
sExceptionalLocaleDisplayedInRootLocale.put(localeString, resId);
|
||||||
}
|
}
|
||||||
|
|
||||||
final String[] exceptionalLocales = res.getStringArray(
|
final String[] exceptionalLocales = res.getStringArray(R.array.subtype_locale_exception_keys);
|
||||||
R.array.subtype_locale_exception_keys);
|
for (final String localeString : exceptionalLocales) {
|
||||||
for (int i = 0; i < exceptionalLocales.length; i++) {
|
|
||||||
final String localeString = exceptionalLocales[i];
|
|
||||||
final String resourceName = SUBTYPE_NAME_RESOURCE_PREFIX + localeString;
|
final String resourceName = SUBTYPE_NAME_RESOURCE_PREFIX + localeString;
|
||||||
final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME);
|
final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME);
|
||||||
sExceptionalLocaleToNameIdsMap.put(localeString, resId);
|
sExceptionalLocaleToNameIdsMap.put(localeString, resId);
|
||||||
final String resourceNameWithLayout =
|
final String resourceNameWithLayout = SUBTYPE_NAME_RESOURCE_WITH_LAYOUT_PREFIX + localeString;
|
||||||
SUBTYPE_NAME_RESOURCE_WITH_LAYOUT_PREFIX + localeString;
|
final int resIdWithLayout = res.getIdentifier(resourceNameWithLayout, null, RESOURCE_PACKAGE_NAME);
|
||||||
final int resIdWithLayout = res.getIdentifier(
|
|
||||||
resourceNameWithLayout, null, RESOURCE_PACKAGE_NAME);
|
|
||||||
sExceptionalLocaleToWithLayoutNameIdsMap.put(localeString, resIdWithLayout);
|
sExceptionalLocaleToWithLayoutNameIdsMap.put(localeString, resIdWithLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
final String[] keyboardLayoutSetMap = res.getStringArray(
|
|
||||||
R.array.locale_and_extra_value_to_keyboard_layout_set_map);
|
|
||||||
for (int i = 0; i + 1 < keyboardLayoutSetMap.length; i += 2) {
|
|
||||||
final String key = keyboardLayoutSetMap[i];
|
|
||||||
final String keyboardLayoutSet = keyboardLayoutSetMap[i + 1];
|
|
||||||
sLocaleAndExtraValueToKeyboardLayoutSetMap.put(key, keyboardLayoutSet);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isExceptionalLocale(final String localeString) {
|
public static boolean isExceptionalLocale(final String localeString) {
|
||||||
|
@ -304,8 +276,7 @@ public final class SubtypeLocaleUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static String getKeyboardLayoutSetDisplayName(
|
public static String getKeyboardLayoutSetDisplayName(@NonNull final InputMethodSubtype subtype) {
|
||||||
@NonNull final InputMethodSubtype subtype) {
|
|
||||||
final String layoutName = getKeyboardLayoutSetName(subtype);
|
final String layoutName = getKeyboardLayoutSetName(subtype);
|
||||||
return getKeyboardLayoutSetDisplayName(layoutName);
|
return getKeyboardLayoutSetDisplayName(layoutName);
|
||||||
}
|
}
|
||||||
|
@ -318,17 +289,12 @@ public final class SubtypeLocaleUtils {
|
||||||
@NonNull
|
@NonNull
|
||||||
public static String getKeyboardLayoutSetName(final InputMethodSubtype subtype) {
|
public static String getKeyboardLayoutSetName(final InputMethodSubtype subtype) {
|
||||||
String keyboardLayoutSet = subtype.getExtraValueOf(KEYBOARD_LAYOUT_SET);
|
String keyboardLayoutSet = subtype.getExtraValueOf(KEYBOARD_LAYOUT_SET);
|
||||||
if (keyboardLayoutSet == null) {
|
if (keyboardLayoutSet == null && subtype.isAsciiCapable()) {
|
||||||
// This subtype doesn't have a keyboardLayoutSet extra value, so lookup its keyboard
|
keyboardLayoutSet = QWERTY;
|
||||||
// layout set in sLocaleAndExtraValueToKeyboardLayoutSetMap to keep it compatible with
|
|
||||||
// pre-JellyBean.
|
|
||||||
final String key = subtype.getLocale() + ":" + subtype.getExtraValue();
|
|
||||||
keyboardLayoutSet = sLocaleAndExtraValueToKeyboardLayoutSetMap.get(key);
|
|
||||||
}
|
}
|
||||||
// TODO: Remove this null check when InputMethodManager.getCurrentInputMethodSubtype is
|
// TODO: Remove this null check when InputMethodManager.getCurrentInputMethodSubtype is fixed.
|
||||||
// fixed.
|
|
||||||
if (keyboardLayoutSet == null) {
|
if (keyboardLayoutSet == null) {
|
||||||
android.util.Log.w(TAG, "KeyboardLayoutSet not found, use QWERTY: " +
|
Log.w(TAG, "KeyboardLayoutSet not found, use QWERTY: " +
|
||||||
"locale=" + subtype.getLocale() + " extraValue=" + subtype.getExtraValue());
|
"locale=" + subtype.getLocale() + " extraValue=" + subtype.getExtraValue());
|
||||||
return QWERTY;
|
return QWERTY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,51 +82,6 @@
|
||||||
<!-- Description for Arabic (PC) subtype. -->
|
<!-- Description for Arabic (PC) subtype. -->
|
||||||
<string name="subtype_arabic_pc" translatable="false">%s (PC)</string>
|
<string name="subtype_arabic_pc" translatable="false">%s (PC)</string>
|
||||||
|
|
||||||
<!-- Compatibility map from subtypeLocale:subtypeExtraValue to keyboardLayoutSet -->
|
|
||||||
<string-array name="locale_and_extra_value_to_keyboard_layout_set_map">
|
|
||||||
<item>en_US:TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
<item>en_GB:TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
<item>ar:SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>arabic</item>
|
|
||||||
<item>cs:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwertz</item>
|
|
||||||
<item>da:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>nordic</item>
|
|
||||||
<item>de:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwertz</item>
|
|
||||||
<item>es:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>spanish</item>
|
|
||||||
<item>fi:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>nordic</item>
|
|
||||||
<item>fr:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>azerty</item>
|
|
||||||
<item>fr_CA:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
<item>hr:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwertz</item>
|
|
||||||
<item>hu:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwertz</item>
|
|
||||||
<item>it:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
<item>iw:SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>hebrew</item>
|
|
||||||
<item>nb:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>nordic</item>
|
|
||||||
<item>nl:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
<item>pl:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
<item>ru:SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>east_slavic</item>
|
|
||||||
<item>sr:SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>south_slavic</item>
|
|
||||||
<item>sv:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>nordic</item>
|
|
||||||
<item>tr:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
|
|
||||||
<item>qwerty</item>
|
|
||||||
</string-array>
|
|
||||||
<!-- permission name as string to avoid issues with debug build -->
|
<!-- permission name as string to avoid issues with debug build -->
|
||||||
<string name="hide_soft_input_permission">org.dslul.openboard.inputmethod.latin.HIDE_SOFT_INPUT</string>
|
<string name="hide_soft_input_permission">org.dslul.openboard.inputmethod.latin.HIDE_SOFT_INPUT</string>
|
||||||
<!-- App slogan-->
|
<!-- App slogan-->
|
||||||
|
|
|
@ -14,36 +14,36 @@
|
||||||
ar: Arabic/arabic
|
ar: Arabic/arabic
|
||||||
ar: Arabic/arabic_pc
|
ar: Arabic/arabic_pc
|
||||||
az_AZ: Azerbaijani (Azerbaijan)/qwerty
|
az_AZ: Azerbaijani (Azerbaijan)/qwerty
|
||||||
be_BY: Belarusian (Belarus)/east_slavic
|
be_BY: Belarusian (Belarus)/be
|
||||||
bg: Bulgarian/bulgarian
|
bg: Bulgarian/bulgarian
|
||||||
bg: Bulgarian/bulgarian_bds
|
bg: Bulgarian/bulgarian_bds
|
||||||
bg: Bulgarian/bulgarian_bekl
|
bg: Bulgarian/bulgarian_bekl
|
||||||
bn_BD: Bengali (Bangladesh)/bengali_unijoy
|
bn_BD: Bengali (Bangladesh)/bengali_unijoy
|
||||||
bn_BD: Bengali (Bangladesh) (Akkhor)/bengali_akkhor
|
bn_BD: Bengali (Bangladesh) (Akkhor)/bengali_akkhor
|
||||||
bn_IN: Bengali (India)/bengali
|
bn_IN: Bengali (India)/bengali
|
||||||
ca: Catalan/spanish
|
ca: Catalan/qwerty+
|
||||||
cs: Czech/qwertz
|
cs: Czech/qwertz
|
||||||
da: Danish/nordic
|
da: Danish/qwerty+
|
||||||
de: German/qwertz
|
de: German/qwertz
|
||||||
de_DE: German (Germany)/german
|
de_DE: German (Germany)/qwertz+
|
||||||
de_CH: German (Switzerland)/swiss
|
de_CH: German (Switzerland)/qwertz+
|
||||||
el: Greek/greek
|
el: Greek/greek
|
||||||
en_AU: English (Australia)/qwerty
|
en_AU: English (Australia)/qwerty
|
||||||
en_IN: English (India)/qwerty
|
en_IN: English (India)/qwerty
|
||||||
en_US: English (United States)/qwerty
|
en_US: English (United States)/qwerty
|
||||||
en_GB: English (Great Britain)/qwerty
|
en_GB: English (Great Britain)/qwerty
|
||||||
eo: Esperanto/spanish
|
eo: Esperanto/qwerty+
|
||||||
es: Spanish/spanish
|
es: Spanish/qwerty+
|
||||||
es_US: Spanish (United States)/spanish
|
es_US: Spanish (United States)/qwerty+
|
||||||
es_419: Spanish (Latin America)/spanish
|
es_419: Spanish (Latin America)/qwerty+
|
||||||
et_EE: Estonian (Estonia)/nordic
|
et_EE: Estonian (Estonia)/qwerty+
|
||||||
eu_ES: Basque (Spain)/spanish
|
eu_ES: Basque (Spain)/qwerty+
|
||||||
fa: Persian/farsi
|
fa: Persian/farsi
|
||||||
fi: Finnish/nordic
|
fi: Finnish/qwerty+
|
||||||
fr: French/azerty
|
fr: French/azerty
|
||||||
fr_CA: French (Canada)/qwerty
|
fr_CA: French (Canada)/qwerty
|
||||||
fr_CH: French (Switzerland)/swiss
|
fr_CH: French (Switzerland)/qwertz+
|
||||||
gl_ES: Galician (Spain)/spanish
|
gl_ES: Galician (Spain)/qwerty+
|
||||||
hi: Hindi/hindi
|
hi: Hindi/hindi
|
||||||
hi: Hindi/hindi_compact
|
hi: Hindi/hindi_compact
|
||||||
hi_ZZ: Hinglish/qwerty # This is a preliminary keyboard layout.
|
hi_ZZ: Hinglish/qwerty # This is a preliminary keyboard layout.
|
||||||
|
@ -54,22 +54,22 @@
|
||||||
in: Indonesian/qwerty # "id" is the official language code of Indonesian.
|
in: Indonesian/qwerty # "id" is the official language code of Indonesian.
|
||||||
is: Icelandic/qwerty
|
is: Icelandic/qwerty
|
||||||
it: Italian/qwerty
|
it: Italian/qwerty
|
||||||
it_CH: Italian (Switzerland)/swiss
|
it_CH: Italian (Switzerland)/qwertz+
|
||||||
iw: Hebrew/hebrew # "he" is the official language code of Hebrew.
|
iw: Hebrew/hebrew # "he" is the official language code of Hebrew.
|
||||||
ka_GE: Georgian (Georgia)/georgian
|
ka_GE: Georgian (Georgia)/georgian
|
||||||
kk: Kazakh/east_slavic
|
kk: Kazakh/kk
|
||||||
km_KH: Khmer (Cambodia)/khmer
|
km_KH: Khmer (Cambodia)/khmer
|
||||||
kn_IN: Kannada (India)/kannada
|
kn_IN: Kannada (India)/kannada
|
||||||
ky: Kyrgyz/east_slavic
|
ky: Kyrgyz/ky
|
||||||
lo_LA: Lao (Laos)/lao
|
lo_LA: Lao (Laos)/lao
|
||||||
lt: Lithuanian/qwerty
|
lt: Lithuanian/qwerty
|
||||||
lv: Latvian/qwerty
|
lv: Latvian/qwerty
|
||||||
mk: Macedonian/south_slavic
|
mk: Macedonian/mk
|
||||||
ml_IN: Malayalam (India)/malayalam
|
ml_IN: Malayalam (India)/malayalam
|
||||||
mn_MN: Mongolian (Mongolia)/mongolian
|
mn_MN: Mongolian (Mongolia)/mongolian
|
||||||
mr_IN: Marathi (India)/marathi
|
mr_IN: Marathi (India)/marathi
|
||||||
ms_MY: Malay (Malaysia)/qwerty
|
ms_MY: Malay (Malaysia)/qwerty
|
||||||
nb: Norwegian Bokmål/nordic
|
nb: Norwegian Bokmål/qwerty+
|
||||||
ne_NP: Nepali (Nepal) Romanized/nepali_romanized
|
ne_NP: Nepali (Nepal) Romanized/nepali_romanized
|
||||||
ne_NP: Nepali (Nepal) Traditional/nepali_traditional
|
ne_NP: Nepali (Nepal) Traditional/nepali_traditional
|
||||||
nl: Dutch/qwerty
|
nl: Dutch/qwerty
|
||||||
|
@ -78,23 +78,23 @@
|
||||||
pt_BR: Portuguese (Brazil)/qwerty
|
pt_BR: Portuguese (Brazil)/qwerty
|
||||||
pt_PT: Portuguese (Portugal)/qwerty
|
pt_PT: Portuguese (Portugal)/qwerty
|
||||||
ro: Romanian/qwerty
|
ro: Romanian/qwerty
|
||||||
ru: Russian/east_slavic
|
ru: Russian/ru
|
||||||
si_LK: Sinhala (Sri Lanka)/sinhala # This is a preliminary keyboard layout.
|
si_LK: Sinhala (Sri Lanka)/sinhala # This is a preliminary keyboard layout.
|
||||||
sk: Slovak/qwerty
|
sk: Slovak/qwerty
|
||||||
sl: Slovenian/qwerty
|
sl: Slovenian/qwerty
|
||||||
sr: Serbian/south_slavic
|
sr: Serbian/sr
|
||||||
sr_ZZ: Serbian (Latin)/serbian_qwertz # This is a preliminary keyboard layout.
|
sr_ZZ: Serbian (Latin)/serbian_qwertz # This is a preliminary keyboard layout.
|
||||||
sv: Swedish/nordic
|
sv: Swedish/qwerty+
|
||||||
sw: Swahili/qwerty
|
sw: Swahili/qwerty
|
||||||
ta_IN: Tamil (India)/tamil
|
ta_IN: Tamil (India)/tamil
|
||||||
ta_LK: Tamil (Sri Lanka)/tamil # Disabled in conjunction with si_LK.
|
ta_LK: Tamil (Sri Lanka)/tamil # Disabled in conjunction with si_LK.
|
||||||
ta_SG: Tamil (Singapore)/tamil
|
ta_SG: Tamil (Singapore)/tamil
|
||||||
te_IN: Telugu (India)/telugu
|
te_IN: Telugu (India)/telugu
|
||||||
th: Thai/thai
|
th: Thai/thai
|
||||||
tl: Tagalog/spanish
|
tl: Tagalog/qwerty+
|
||||||
tr: Turkish/qwerty
|
tr: Turkish/qwerty
|
||||||
ur_PK: Urdu Pakistan
|
ur_PK: Urdu Pakistan
|
||||||
uk: Ukrainian/east_slavic
|
uk: Ukrainian/uk
|
||||||
uz_UZ: Uzbek (Uzbekistan)/uzbek # This is a preliminary keyboard layout.
|
uz_UZ: Uzbek (Uzbekistan)/uzbek # This is a preliminary keyboard layout.
|
||||||
vi: Vietnamese/qwerty
|
vi: Vietnamese/qwerty
|
||||||
zu: Zulu/qwerty
|
zu: Zulu/qwerty
|
||||||
|
@ -144,7 +144,7 @@
|
||||||
android:imeSubtypeLocale="af"
|
android:imeSubtypeLocale="af"
|
||||||
android:languageTag="af"
|
android:languageTag="af"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -153,7 +153,7 @@
|
||||||
android:imeSubtypeLocale="ar"
|
android:imeSubtypeLocale="ar"
|
||||||
android:languageTag="ar"
|
android:languageTag="ar"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=arabic,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
android:imeSubtypeLocale="az_AZ"
|
android:imeSubtypeLocale="az_AZ"
|
||||||
android:languageTag="az-AZ"
|
android:languageTag="az-AZ"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -180,7 +180,7 @@
|
||||||
android:imeSubtypeLocale="be_BY"
|
android:imeSubtypeLocale="be_BY"
|
||||||
android:languageTag="be-BY"
|
android:languageTag="be-BY"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=be,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -243,7 +243,7 @@
|
||||||
android:imeSubtypeLocale="ca"
|
android:imeSubtypeLocale="ca"
|
||||||
android:languageTag="ca"
|
android:languageTag="ca"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -252,7 +252,7 @@
|
||||||
android:imeSubtypeLocale="cs"
|
android:imeSubtypeLocale="cs"
|
||||||
android:languageTag="cs"
|
android:languageTag="cs"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -261,7 +261,7 @@
|
||||||
android:imeSubtypeLocale="da"
|
android:imeSubtypeLocale="da"
|
||||||
android:languageTag="da"
|
android:languageTag="da"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -270,7 +270,7 @@
|
||||||
android:imeSubtypeLocale="de"
|
android:imeSubtypeLocale="de"
|
||||||
android:languageTag="de"
|
android:languageTag="de"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -279,7 +279,7 @@
|
||||||
android:imeSubtypeLocale="de_CH"
|
android:imeSubtypeLocale="de_CH"
|
||||||
android:languageTag="de-CH"
|
android:languageTag="de-CH"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -288,7 +288,7 @@
|
||||||
android:imeSubtypeLocale="de_DE"
|
android:imeSubtypeLocale="de_DE"
|
||||||
android:languageTag="de-DE"
|
android:languageTag="de-DE"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=german,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -306,7 +306,7 @@
|
||||||
android:imeSubtypeLocale="en_IN"
|
android:imeSubtypeLocale="en_IN"
|
||||||
android:languageTag="en-IN"
|
android:languageTag="en-IN"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -315,8 +315,8 @@
|
||||||
android:imeSubtypeLocale="eo"
|
android:imeSubtypeLocale="eo"
|
||||||
android:languageTag="eo"
|
android:languageTag="eo"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=eo,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
android:label="@string/subtype_generic"
|
android:label="@string/subtype_generic"
|
||||||
|
@ -324,7 +324,7 @@
|
||||||
android:imeSubtypeLocale="es"
|
android:imeSubtypeLocale="es"
|
||||||
android:languageTag="es"
|
android:languageTag="es"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -333,7 +333,7 @@
|
||||||
android:imeSubtypeLocale="es_US"
|
android:imeSubtypeLocale="es_US"
|
||||||
android:languageTag="es-US"
|
android:languageTag="es-US"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -342,7 +342,7 @@
|
||||||
android:imeSubtypeLocale="es_419"
|
android:imeSubtypeLocale="es_419"
|
||||||
android:languageTag="es-419"
|
android:languageTag="es-419"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -351,7 +351,7 @@
|
||||||
android:imeSubtypeLocale="et_EE"
|
android:imeSubtypeLocale="et_EE"
|
||||||
android:languageTag="et-EE"
|
android:languageTag="et-EE"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=nordic,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -360,7 +360,7 @@
|
||||||
android:imeSubtypeLocale="eu_ES"
|
android:imeSubtypeLocale="eu_ES"
|
||||||
android:languageTag="eu-ES"
|
android:languageTag="eu-ES"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -378,7 +378,7 @@
|
||||||
android:imeSubtypeLocale="fi"
|
android:imeSubtypeLocale="fi"
|
||||||
android:languageTag="fi"
|
android:languageTag="fi"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -387,7 +387,7 @@
|
||||||
android:imeSubtypeLocale="fr"
|
android:imeSubtypeLocale="fr"
|
||||||
android:languageTag="fr"
|
android:languageTag="fr"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=azerty,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -405,7 +405,7 @@
|
||||||
android:imeSubtypeLocale="fr_CH"
|
android:imeSubtypeLocale="fr_CH"
|
||||||
android:languageTag="fr-CH"
|
android:languageTag="fr-CH"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -414,7 +414,7 @@
|
||||||
android:imeSubtypeLocale="gl_ES"
|
android:imeSubtypeLocale="gl_ES"
|
||||||
android:languageTag="gl-ES"
|
android:languageTag="gl-ES"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -444,7 +444,7 @@
|
||||||
android:imeSubtypeLocale="hi_ZZ"
|
android:imeSubtypeLocale="hi_ZZ"
|
||||||
android:languageTag="hi-ZZ"
|
android:languageTag="hi-ZZ"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,KeyboardLayoutSet=qwerty,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -453,7 +453,7 @@
|
||||||
android:imeSubtypeLocale="hr"
|
android:imeSubtypeLocale="hr"
|
||||||
android:languageTag="hr"
|
android:languageTag="hr"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -462,7 +462,7 @@
|
||||||
android:imeSubtypeLocale="hu"
|
android:imeSubtypeLocale="hu"
|
||||||
android:languageTag="hu"
|
android:languageTag="hu"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -481,7 +481,7 @@
|
||||||
android:imeSubtypeLocale="in"
|
android:imeSubtypeLocale="in"
|
||||||
android:languageTag="id"
|
android:languageTag="id"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -490,7 +490,7 @@
|
||||||
android:imeSubtypeLocale="is"
|
android:imeSubtypeLocale="is"
|
||||||
android:languageTag="is"
|
android:languageTag="is"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -508,7 +508,7 @@
|
||||||
android:imeSubtypeLocale="it_CH"
|
android:imeSubtypeLocale="it_CH"
|
||||||
android:languageTag="it-CH"
|
android:languageTag="it-CH"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<!-- Java uses the deprecated "iw" code instead of the standard "he" code for Hebrew. -->
|
<!-- Java uses the deprecated "iw" code instead of the standard "he" code for Hebrew. -->
|
||||||
|
@ -518,7 +518,7 @@
|
||||||
android:imeSubtypeLocale="iw"
|
android:imeSubtypeLocale="iw"
|
||||||
android:languageTag="he"
|
android:languageTag="he"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=hebrew,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -536,7 +536,7 @@
|
||||||
android:imeSubtypeLocale="kk"
|
android:imeSubtypeLocale="kk"
|
||||||
android:languageTag="kk"
|
android:languageTag="kk"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=kk,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -590,7 +590,7 @@
|
||||||
android:imeSubtypeLocale="ky"
|
android:imeSubtypeLocale="ky"
|
||||||
android:languageTag="ky"
|
android:languageTag="ky"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=ky,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -616,7 +616,7 @@
|
||||||
android:imeSubtypeLocale="lt"
|
android:imeSubtypeLocale="lt"
|
||||||
android:languageTag="lt"
|
android:languageTag="lt"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -625,7 +625,7 @@
|
||||||
android:imeSubtypeLocale="lv"
|
android:imeSubtypeLocale="lv"
|
||||||
android:languageTag="lv"
|
android:languageTag="lv"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -634,7 +634,7 @@
|
||||||
android:imeSubtypeLocale="mk"
|
android:imeSubtypeLocale="mk"
|
||||||
android:languageTag="mk"
|
android:languageTag="mk"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=south_slavic,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=mk,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -670,7 +670,7 @@
|
||||||
android:imeSubtypeLocale="ms_MY"
|
android:imeSubtypeLocale="ms_MY"
|
||||||
android:languageTag="ms-MY"
|
android:languageTag="ms-MY"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -679,7 +679,7 @@
|
||||||
android:imeSubtypeLocale="nb"
|
android:imeSubtypeLocale="nb"
|
||||||
android:languageTag="nb"
|
android:languageTag="nb"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -733,7 +733,7 @@
|
||||||
android:imeSubtypeLocale="pt_BR"
|
android:imeSubtypeLocale="pt_BR"
|
||||||
android:languageTag="pt-BR"
|
android:languageTag="pt-BR"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -742,7 +742,7 @@
|
||||||
android:imeSubtypeLocale="pt_PT"
|
android:imeSubtypeLocale="pt_PT"
|
||||||
android:languageTag="pt-PT"
|
android:languageTag="pt-PT"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -751,7 +751,7 @@
|
||||||
android:imeSubtypeLocale="ro"
|
android:imeSubtypeLocale="ro"
|
||||||
android:languageTag="ro"
|
android:languageTag="ro"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -760,13 +760,13 @@
|
||||||
android:imeSubtypeLocale="ru"
|
android:imeSubtypeLocale="ru"
|
||||||
android:languageTag="ru"
|
android:languageTag="ru"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="SKeyboardLayoutSet=ru,upportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<!-- TODO: This Sinhala keyboard is a preliminary layout.
|
<!-- TODO: This Sinhala keyboard is a preliminary layout.
|
||||||
This isn't based on the final specification. -->
|
This isn't based on the final specification. -->
|
||||||
<!-- si_LK is currently disabled due to lack of combination rules.
|
<!-- si_LK is currently disabled due to lack of combination rules. -->
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher_dark"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
android:label="@string/subtype_generic"
|
android:label="@string/subtype_generic"
|
||||||
android:subtypeId="0x5c6b3bde"
|
android:subtypeId="0x5c6b3bde"
|
||||||
android:imeSubtypeLocale="si_LK"
|
android:imeSubtypeLocale="si_LK"
|
||||||
|
@ -775,14 +775,13 @@
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=sinhala,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=sinhala,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
-->
|
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
android:label="@string/subtype_generic"
|
android:label="@string/subtype_generic"
|
||||||
android:subtypeId="0x8e94d413"
|
android:subtypeId="0x8e94d413"
|
||||||
android:imeSubtypeLocale="sk"
|
android:imeSubtypeLocale="sk"
|
||||||
android:languageTag="sk"
|
android:languageTag="sk"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -791,7 +790,7 @@
|
||||||
android:imeSubtypeLocale="sl"
|
android:imeSubtypeLocale="sl"
|
||||||
android:languageTag="sl"
|
android:languageTag="sl"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -800,7 +799,7 @@
|
||||||
android:imeSubtypeLocale="sr"
|
android:imeSubtypeLocale="sr"
|
||||||
android:languageTag="sr"
|
android:languageTag="sr"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=sr,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<!-- TODO: This Serbian Latin keyboard is a preliminary layout.
|
<!-- TODO: This Serbian Latin keyboard is a preliminary layout.
|
||||||
|
@ -811,7 +810,7 @@
|
||||||
android:imeSubtypeLocale="sr_ZZ"
|
android:imeSubtypeLocale="sr_ZZ"
|
||||||
android:languageTag="sr-Latn"
|
android:languageTag="sr-Latn"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=serbian_qwertz,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -820,7 +819,7 @@
|
||||||
android:imeSubtypeLocale="sv"
|
android:imeSubtypeLocale="sv"
|
||||||
android:languageTag="sv"
|
android:languageTag="sv"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -829,7 +828,7 @@
|
||||||
android:imeSubtypeLocale="sw"
|
android:imeSubtypeLocale="sw"
|
||||||
android:languageTag="sw"
|
android:languageTag="sw"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -886,7 +885,7 @@
|
||||||
android:imeSubtypeLocale="tl"
|
android:imeSubtypeLocale="tl"
|
||||||
android:languageTag="fil"
|
android:languageTag="fil"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -895,7 +894,7 @@
|
||||||
android:imeSubtypeLocale="tr"
|
android:imeSubtypeLocale="tr"
|
||||||
android:languageTag="tr"
|
android:languageTag="tr"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -904,7 +903,7 @@
|
||||||
android:imeSubtypeLocale="uk"
|
android:imeSubtypeLocale="uk"
|
||||||
android:languageTag="uk"
|
android:languageTag="uk"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
android:imeSubtypeExtraValue="KeyboardLayoutSet=uk,EmojiCapable"
|
||||||
android:isAsciiCapable="false"
|
android:isAsciiCapable="false"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -933,7 +932,7 @@
|
||||||
android:imeSubtypeLocale="vi"
|
android:imeSubtypeLocale="vi"
|
||||||
android:languageTag="vi"
|
android:languageTag="vi"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -942,7 +941,7 @@
|
||||||
android:imeSubtypeLocale="zu"
|
android:imeSubtypeLocale="zu"
|
||||||
android:languageTag="zu"
|
android:languageTag="zu"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||||
|
@ -951,7 +950,7 @@
|
||||||
android:imeSubtypeLocale="zz"
|
android:imeSubtypeLocale="zz"
|
||||||
android:languageTag="zz"
|
android:languageTag="zz"
|
||||||
android:imeSubtypeMode="keyboard"
|
android:imeSubtypeMode="keyboard"
|
||||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable,EmojiCapable"
|
android:imeSubtypeExtraValue="AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable,EmojiCapable"
|
||||||
android:isAsciiCapable="true"
|
android:isAsciiCapable="true"
|
||||||
/>
|
/>
|
||||||
<!-- Emoji subtype has to be an addtional subtype added at boot time because ICS doesn't
|
<!-- Emoji subtype has to be an addtional subtype added at boot time because ICS doesn't
|
||||||
|
|
Loading…
Add table
Reference in a new issue