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
|
||||
* keys in symbol layouts.
|
||||
* 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) {
|
||||
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>> {
|
||||
val id = params.mId
|
||||
val layoutName = params.mId.mSubtype.keyboardLayoutSetName
|
||||
val layoutName = params.mId.mSubtype.keyboardLayoutSetName.substringBefore("+")
|
||||
val layoutFileNames = context.assets.list("layouts")!!
|
||||
return when {
|
||||
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_SYMBOLS -> JsonKeyboardParser(params, context).parseLayoutFromAssets("phone_symbols")
|
||||
layoutFileNames.contains("$layoutName.json") -> JsonKeyboardParser(params, context).parseLayoutFromAssets(layoutName)
|
||||
layoutFileNames.contains("${getSimpleLayoutName(layoutName, params)}.txt")
|
||||
layoutFileNames.contains("$layoutName.txt")
|
||||
-> SimpleKeyboardParser(params, context).parseLayoutFromAssets(layoutName)
|
||||
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)
|
||||
// or somewhere else... some replacement for keyboard_layout_set xml maybe
|
||||
// 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.toTextKey
|
||||
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.
|
||||
|
@ -14,12 +15,10 @@ import org.dslul.openboard.inputmethod.latin.common.splitOnWhitespace
|
|||
* merged with defaults.
|
||||
*/
|
||||
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
|
||||
params.mId.isAlphabetKeyboard && params.mId.locale.language != "eo"
|
||||
&& params.mId.mSubtype.keyboardLayoutSetName in listOf("nordic", "spanish", "german", "swiss", "serbian_qwertz")
|
||||
private val addExtraKeys = params.mId.mSubtype.keyboardLayoutSetName.endsWith("+")
|
||||
|
||||
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>> {
|
||||
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";
|
||||
|
||||
// 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 {
|
||||
/**
|
||||
* 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 */
|
||||
fun removeEnabledSubtype(prefs: SharedPreferences, subtype: InputMethodSubtype) {
|
||||
require(initialized)
|
||||
val subtypeString = 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)
|
||||
}
|
||||
removeEnabledSubtype(prefs, subtype.prefString())
|
||||
enabledSubtypes.remove(subtype)
|
||||
RichInputMethodManager.getInstance().refreshSubtypeCaches()
|
||||
}
|
||||
|
@ -246,6 +233,8 @@ private fun loadEnabledSubtypes(context: Context) {
|
|||
if (subtype == null) {
|
||||
if (DebugFlags.DEBUG_ENABLED)
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
private set
|
||||
private val enabledSubtypes = mutableListOf<InputMethodSubtype>()
|
||||
|
|
|
@ -92,33 +92,23 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
|
|||
return mRecommendedThreshold;
|
||||
}
|
||||
|
||||
// todo: this needs to be adjusted!
|
||||
private static String getKeyboardLayoutNameForLocale(final Locale locale) {
|
||||
// See b/19963288.
|
||||
if (locale.getLanguage().equals("sr") || locale.getLanguage().equals("mk")) {
|
||||
return "south_slavic";
|
||||
return locale.getLanguage();
|
||||
}
|
||||
final int script = ScriptUtils.getScriptFromSpellCheckerLocale(locale);
|
||||
switch (script) {
|
||||
case ScriptUtils.SCRIPT_LATIN:
|
||||
return "qwerty";
|
||||
case ScriptUtils.SCRIPT_ARMENIAN:
|
||||
return "armenian_phonetic";
|
||||
case ScriptUtils.SCRIPT_CYRILLIC:
|
||||
return "east_slavic";
|
||||
case ScriptUtils.SCRIPT_GREEK:
|
||||
return "greek";
|
||||
case ScriptUtils.SCRIPT_HEBREW:
|
||||
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);
|
||||
}
|
||||
return switch (script) {
|
||||
case ScriptUtils.SCRIPT_LATIN -> "qwerty";
|
||||
case ScriptUtils.SCRIPT_ARMENIAN -> "armenian_phonetic";
|
||||
case ScriptUtils.SCRIPT_CYRILLIC -> "ru";
|
||||
case ScriptUtils.SCRIPT_GREEK -> "greek";
|
||||
case ScriptUtils.SCRIPT_HEBREW -> "hebrew";
|
||||
case ScriptUtils.SCRIPT_BULGARIAN -> "bulgarian";
|
||||
case ScriptUtils.SCRIPT_GEORGIAN -> "georgian";
|
||||
case ScriptUtils.SCRIPT_BENGALI -> "bengali_unijoy";
|
||||
default -> throw new RuntimeException("Wrong script supplied: " + script);
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,7 +8,6 @@ package org.dslul.openboard.inputmethod.latin.utils;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.Log;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import org.dslul.openboard.inputmethod.latin.R;
|
||||
|
@ -51,27 +50,16 @@ public final class SubtypeLocaleUtils {
|
|||
// Keyboard layout to subtype name resource id map.
|
||||
private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap = new HashMap<>();
|
||||
// Exceptional locale whose name should be displayed in Locale.ROOT.
|
||||
private static final HashMap<String, Integer> sExceptionalLocaleDisplayedInRootLocale =
|
||||
new HashMap<>();
|
||||
private static final HashMap<String, Integer> sExceptionalLocaleDisplayedInRootLocale = new HashMap<>();
|
||||
// Exceptional locale to subtype name resource id map.
|
||||
private static final HashMap<String, Integer> sExceptionalLocaleToNameIdsMap = new HashMap<>();
|
||||
// Exceptional locale to subtype name with layout resource id map.
|
||||
private static final HashMap<String, Integer> sExceptionalLocaleToWithLayoutNameIdsMap =
|
||||
new HashMap<>();
|
||||
private static final String SUBTYPE_NAME_RESOURCE_PREFIX =
|
||||
"string/subtype_";
|
||||
private static final String SUBTYPE_NAME_RESOURCE_GENERIC_PREFIX =
|
||||
"string/subtype_generic_";
|
||||
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 static final HashMap<String, Integer> sExceptionalLocaleToWithLayoutNameIdsMap = new HashMap<>();
|
||||
private static final String SUBTYPE_NAME_RESOURCE_PREFIX = "string/subtype_";
|
||||
private static final String SUBTYPE_NAME_RESOURCE_GENERIC_PREFIX = "string/subtype_generic_";
|
||||
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_";
|
||||
|
||||
private SubtypeLocaleUtils() {
|
||||
// Intentional empty constructor for utility class.
|
||||
|
@ -80,7 +68,7 @@ public final class SubtypeLocaleUtils {
|
|||
// Note that this initialization method can be called multiple times.
|
||||
public static void init(final Context context) {
|
||||
synchronized (sInitializeLock) {
|
||||
if (sInitialized == false) {
|
||||
if (!sInitialized) {
|
||||
initLocked(context);
|
||||
sInitialized = true;
|
||||
}
|
||||
|
@ -93,8 +81,7 @@ public final class SubtypeLocaleUtils {
|
|||
sResources = res;
|
||||
|
||||
final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts);
|
||||
final String[] layoutDisplayNames = res.getStringArray(
|
||||
R.array.predefined_layout_display_names);
|
||||
final String[] layoutDisplayNames = res.getStringArray(R.array.predefined_layout_display_names);
|
||||
for (int i = 0; i < predefinedLayoutSet.length; i++) {
|
||||
final String layoutName = predefinedLayoutSet[i];
|
||||
sKeyboardLayoutToDisplayNameMap.put(layoutName, layoutDisplayNames[i]);
|
||||
|
@ -103,42 +90,27 @@ public final class SubtypeLocaleUtils {
|
|||
sKeyboardLayoutToNameIdsMap.put(layoutName, resId);
|
||||
// Register subtype name resource id of "No language" with key "zz_<layout>"
|
||||
final String noLanguageResName = SUBTYPE_NAME_RESOURCE_NO_LANGUAGE_PREFIX + layoutName;
|
||||
final int noLanguageResId = res.getIdentifier(
|
||||
noLanguageResName, null, RESOURCE_PACKAGE_NAME);
|
||||
final int noLanguageResId = res.getIdentifier(noLanguageResName, null, RESOURCE_PACKAGE_NAME);
|
||||
final String key = getNoLanguageLayoutKey(layoutName);
|
||||
sKeyboardLayoutToNameIdsMap.put(key, noLanguageResId);
|
||||
}
|
||||
|
||||
final String[] exceptionalLocaleInRootLocale = res.getStringArray(
|
||||
R.array.subtype_locale_displayed_in_root_locale);
|
||||
for (int i = 0; i < exceptionalLocaleInRootLocale.length; i++) {
|
||||
final String localeString = exceptionalLocaleInRootLocale[i];
|
||||
final String[] exceptionalLocaleInRootLocale = res.getStringArray(R.array.subtype_locale_displayed_in_root_locale);
|
||||
for (final String localeString : exceptionalLocaleInRootLocale) {
|
||||
final String resourceName = SUBTYPE_NAME_RESOURCE_IN_ROOT_LOCALE_PREFIX + localeString;
|
||||
final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME);
|
||||
sExceptionalLocaleDisplayedInRootLocale.put(localeString, resId);
|
||||
}
|
||||
|
||||
final String[] exceptionalLocales = res.getStringArray(
|
||||
R.array.subtype_locale_exception_keys);
|
||||
for (int i = 0; i < exceptionalLocales.length; i++) {
|
||||
final String localeString = exceptionalLocales[i];
|
||||
final String[] exceptionalLocales = res.getStringArray(R.array.subtype_locale_exception_keys);
|
||||
for (final String localeString : exceptionalLocales) {
|
||||
final String resourceName = SUBTYPE_NAME_RESOURCE_PREFIX + localeString;
|
||||
final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME);
|
||||
sExceptionalLocaleToNameIdsMap.put(localeString, resId);
|
||||
final String resourceNameWithLayout =
|
||||
SUBTYPE_NAME_RESOURCE_WITH_LAYOUT_PREFIX + localeString;
|
||||
final int resIdWithLayout = res.getIdentifier(
|
||||
resourceNameWithLayout, null, RESOURCE_PACKAGE_NAME);
|
||||
final String resourceNameWithLayout = SUBTYPE_NAME_RESOURCE_WITH_LAYOUT_PREFIX + localeString;
|
||||
final int resIdWithLayout = res.getIdentifier(resourceNameWithLayout, null, RESOURCE_PACKAGE_NAME);
|
||||
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) {
|
||||
|
@ -304,8 +276,7 @@ public final class SubtypeLocaleUtils {
|
|||
}
|
||||
|
||||
@Nullable
|
||||
public static String getKeyboardLayoutSetDisplayName(
|
||||
@NonNull final InputMethodSubtype subtype) {
|
||||
public static String getKeyboardLayoutSetDisplayName(@NonNull final InputMethodSubtype subtype) {
|
||||
final String layoutName = getKeyboardLayoutSetName(subtype);
|
||||
return getKeyboardLayoutSetDisplayName(layoutName);
|
||||
}
|
||||
|
@ -318,17 +289,12 @@ public final class SubtypeLocaleUtils {
|
|||
@NonNull
|
||||
public static String getKeyboardLayoutSetName(final InputMethodSubtype subtype) {
|
||||
String keyboardLayoutSet = subtype.getExtraValueOf(KEYBOARD_LAYOUT_SET);
|
||||
if (keyboardLayoutSet == null) {
|
||||
// This subtype doesn't have a keyboardLayoutSet extra value, so lookup its keyboard
|
||||
// layout set in sLocaleAndExtraValueToKeyboardLayoutSetMap to keep it compatible with
|
||||
// pre-JellyBean.
|
||||
final String key = subtype.getLocale() + ":" + subtype.getExtraValue();
|
||||
keyboardLayoutSet = sLocaleAndExtraValueToKeyboardLayoutSetMap.get(key);
|
||||
if (keyboardLayoutSet == null && subtype.isAsciiCapable()) {
|
||||
keyboardLayoutSet = QWERTY;
|
||||
}
|
||||
// TODO: Remove this null check when InputMethodManager.getCurrentInputMethodSubtype is
|
||||
// fixed.
|
||||
// TODO: Remove this null check when InputMethodManager.getCurrentInputMethodSubtype is fixed.
|
||||
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());
|
||||
return QWERTY;
|
||||
}
|
||||
|
|
|
@ -82,51 +82,6 @@
|
|||
<!-- Description for Arabic (PC) subtype. -->
|
||||
<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 -->
|
||||
<string name="hide_soft_input_permission">org.dslul.openboard.inputmethod.latin.HIDE_SOFT_INPUT</string>
|
||||
<!-- App slogan-->
|
||||
|
|
|
@ -14,36 +14,36 @@
|
|||
ar: Arabic/arabic
|
||||
ar: Arabic/arabic_pc
|
||||
az_AZ: Azerbaijani (Azerbaijan)/qwerty
|
||||
be_BY: Belarusian (Belarus)/east_slavic
|
||||
be_BY: Belarusian (Belarus)/be
|
||||
bg: Bulgarian/bulgarian
|
||||
bg: Bulgarian/bulgarian_bds
|
||||
bg: Bulgarian/bulgarian_bekl
|
||||
bn_BD: Bengali (Bangladesh)/bengali_unijoy
|
||||
bn_BD: Bengali (Bangladesh) (Akkhor)/bengali_akkhor
|
||||
bn_IN: Bengali (India)/bengali
|
||||
ca: Catalan/spanish
|
||||
ca: Catalan/qwerty+
|
||||
cs: Czech/qwertz
|
||||
da: Danish/nordic
|
||||
da: Danish/qwerty+
|
||||
de: German/qwertz
|
||||
de_DE: German (Germany)/german
|
||||
de_CH: German (Switzerland)/swiss
|
||||
de_DE: German (Germany)/qwertz+
|
||||
de_CH: German (Switzerland)/qwertz+
|
||||
el: Greek/greek
|
||||
en_AU: English (Australia)/qwerty
|
||||
en_IN: English (India)/qwerty
|
||||
en_US: English (United States)/qwerty
|
||||
en_GB: English (Great Britain)/qwerty
|
||||
eo: Esperanto/spanish
|
||||
es: Spanish/spanish
|
||||
es_US: Spanish (United States)/spanish
|
||||
es_419: Spanish (Latin America)/spanish
|
||||
et_EE: Estonian (Estonia)/nordic
|
||||
eu_ES: Basque (Spain)/spanish
|
||||
eo: Esperanto/qwerty+
|
||||
es: Spanish/qwerty+
|
||||
es_US: Spanish (United States)/qwerty+
|
||||
es_419: Spanish (Latin America)/qwerty+
|
||||
et_EE: Estonian (Estonia)/qwerty+
|
||||
eu_ES: Basque (Spain)/qwerty+
|
||||
fa: Persian/farsi
|
||||
fi: Finnish/nordic
|
||||
fi: Finnish/qwerty+
|
||||
fr: French/azerty
|
||||
fr_CA: French (Canada)/qwerty
|
||||
fr_CH: French (Switzerland)/swiss
|
||||
gl_ES: Galician (Spain)/spanish
|
||||
fr_CH: French (Switzerland)/qwertz+
|
||||
gl_ES: Galician (Spain)/qwerty+
|
||||
hi: Hindi/hindi
|
||||
hi: Hindi/hindi_compact
|
||||
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.
|
||||
is: Icelandic/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.
|
||||
ka_GE: Georgian (Georgia)/georgian
|
||||
kk: Kazakh/east_slavic
|
||||
kk: Kazakh/kk
|
||||
km_KH: Khmer (Cambodia)/khmer
|
||||
kn_IN: Kannada (India)/kannada
|
||||
ky: Kyrgyz/east_slavic
|
||||
ky: Kyrgyz/ky
|
||||
lo_LA: Lao (Laos)/lao
|
||||
lt: Lithuanian/qwerty
|
||||
lv: Latvian/qwerty
|
||||
mk: Macedonian/south_slavic
|
||||
mk: Macedonian/mk
|
||||
ml_IN: Malayalam (India)/malayalam
|
||||
mn_MN: Mongolian (Mongolia)/mongolian
|
||||
mr_IN: Marathi (India)/marathi
|
||||
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) Traditional/nepali_traditional
|
||||
nl: Dutch/qwerty
|
||||
|
@ -78,23 +78,23 @@
|
|||
pt_BR: Portuguese (Brazil)/qwerty
|
||||
pt_PT: Portuguese (Portugal)/qwerty
|
||||
ro: Romanian/qwerty
|
||||
ru: Russian/east_slavic
|
||||
ru: Russian/ru
|
||||
si_LK: Sinhala (Sri Lanka)/sinhala # This is a preliminary keyboard layout.
|
||||
sk: Slovak/qwerty
|
||||
sl: Slovenian/qwerty
|
||||
sr: Serbian/south_slavic
|
||||
sr: Serbian/sr
|
||||
sr_ZZ: Serbian (Latin)/serbian_qwertz # This is a preliminary keyboard layout.
|
||||
sv: Swedish/nordic
|
||||
sv: Swedish/qwerty+
|
||||
sw: Swahili/qwerty
|
||||
ta_IN: Tamil (India)/tamil
|
||||
ta_LK: Tamil (Sri Lanka)/tamil # Disabled in conjunction with si_LK.
|
||||
ta_SG: Tamil (Singapore)/tamil
|
||||
te_IN: Telugu (India)/telugu
|
||||
th: Thai/thai
|
||||
tl: Tagalog/spanish
|
||||
tl: Tagalog/qwerty+
|
||||
tr: Turkish/qwerty
|
||||
ur_PK: Urdu Pakistan
|
||||
uk: Ukrainian/east_slavic
|
||||
uk: Ukrainian/uk
|
||||
uz_UZ: Uzbek (Uzbekistan)/uzbek # This is a preliminary keyboard layout.
|
||||
vi: Vietnamese/qwerty
|
||||
zu: Zulu/qwerty
|
||||
|
@ -144,7 +144,7 @@
|
|||
android:imeSubtypeLocale="af"
|
||||
android:languageTag="af"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -153,7 +153,7 @@
|
|||
android:imeSubtypeLocale="ar"
|
||||
android:languageTag="ar"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=arabic,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -171,7 +171,7 @@
|
|||
android:imeSubtypeLocale="az_AZ"
|
||||
android:languageTag="az-AZ"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -180,7 +180,7 @@
|
|||
android:imeSubtypeLocale="be_BY"
|
||||
android:languageTag="be-BY"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=be,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -243,7 +243,7 @@
|
|||
android:imeSubtypeLocale="ca"
|
||||
android:languageTag="ca"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -252,7 +252,7 @@
|
|||
android:imeSubtypeLocale="cs"
|
||||
android:languageTag="cs"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -261,7 +261,7 @@
|
|||
android:imeSubtypeLocale="da"
|
||||
android:languageTag="da"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -270,7 +270,7 @@
|
|||
android:imeSubtypeLocale="de"
|
||||
android:languageTag="de"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -279,7 +279,7 @@
|
|||
android:imeSubtypeLocale="de_CH"
|
||||
android:languageTag="de-CH"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -288,7 +288,7 @@
|
|||
android:imeSubtypeLocale="de_DE"
|
||||
android:languageTag="de-DE"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=german,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -306,7 +306,7 @@
|
|||
android:imeSubtypeLocale="en_IN"
|
||||
android:languageTag="en-IN"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -315,8 +315,8 @@
|
|||
android:imeSubtypeLocale="eo"
|
||||
android:languageTag="eo"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=eo,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
android:label="@string/subtype_generic"
|
||||
|
@ -324,7 +324,7 @@
|
|||
android:imeSubtypeLocale="es"
|
||||
android:languageTag="es"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -333,7 +333,7 @@
|
|||
android:imeSubtypeLocale="es_US"
|
||||
android:languageTag="es-US"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -342,7 +342,7 @@
|
|||
android:imeSubtypeLocale="es_419"
|
||||
android:languageTag="es-419"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -351,7 +351,7 @@
|
|||
android:imeSubtypeLocale="et_EE"
|
||||
android:languageTag="et-EE"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=nordic,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -360,7 +360,7 @@
|
|||
android:imeSubtypeLocale="eu_ES"
|
||||
android:languageTag="eu-ES"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -378,7 +378,7 @@
|
|||
android:imeSubtypeLocale="fi"
|
||||
android:languageTag="fi"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -387,7 +387,7 @@
|
|||
android:imeSubtypeLocale="fr"
|
||||
android:languageTag="fr"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=azerty,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -405,7 +405,7 @@
|
|||
android:imeSubtypeLocale="fr_CH"
|
||||
android:languageTag="fr-CH"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -414,7 +414,7 @@
|
|||
android:imeSubtypeLocale="gl_ES"
|
||||
android:languageTag="gl-ES"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -444,7 +444,7 @@
|
|||
android:imeSubtypeLocale="hi_ZZ"
|
||||
android:languageTag="hi-ZZ"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,KeyboardLayoutSet=qwerty,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -453,7 +453,7 @@
|
|||
android:imeSubtypeLocale="hr"
|
||||
android:languageTag="hr"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -462,7 +462,7 @@
|
|||
android:imeSubtypeLocale="hu"
|
||||
android:languageTag="hu"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -481,7 +481,7 @@
|
|||
android:imeSubtypeLocale="in"
|
||||
android:languageTag="id"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -490,7 +490,7 @@
|
|||
android:imeSubtypeLocale="is"
|
||||
android:languageTag="is"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -508,7 +508,7 @@
|
|||
android:imeSubtypeLocale="it_CH"
|
||||
android:languageTag="it-CH"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<!-- Java uses the deprecated "iw" code instead of the standard "he" code for Hebrew. -->
|
||||
|
@ -518,7 +518,7 @@
|
|||
android:imeSubtypeLocale="iw"
|
||||
android:languageTag="he"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=hebrew,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -536,7 +536,7 @@
|
|||
android:imeSubtypeLocale="kk"
|
||||
android:languageTag="kk"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=kk,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -590,7 +590,7 @@
|
|||
android:imeSubtypeLocale="ky"
|
||||
android:languageTag="ky"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=ky,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -616,7 +616,7 @@
|
|||
android:imeSubtypeLocale="lt"
|
||||
android:languageTag="lt"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -625,7 +625,7 @@
|
|||
android:imeSubtypeLocale="lv"
|
||||
android:languageTag="lv"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -634,7 +634,7 @@
|
|||
android:imeSubtypeLocale="mk"
|
||||
android:languageTag="mk"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=south_slavic,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=mk,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -670,7 +670,7 @@
|
|||
android:imeSubtypeLocale="ms_MY"
|
||||
android:languageTag="ms-MY"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -679,7 +679,7 @@
|
|||
android:imeSubtypeLocale="nb"
|
||||
android:languageTag="nb"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -733,7 +733,7 @@
|
|||
android:imeSubtypeLocale="pt_BR"
|
||||
android:languageTag="pt-BR"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -742,7 +742,7 @@
|
|||
android:imeSubtypeLocale="pt_PT"
|
||||
android:languageTag="pt-PT"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -751,7 +751,7 @@
|
|||
android:imeSubtypeLocale="ro"
|
||||
android:languageTag="ro"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -760,13 +760,13 @@
|
|||
android:imeSubtypeLocale="ru"
|
||||
android:languageTag="ru"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="SKeyboardLayoutSet=ru,upportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<!-- TODO: This Sinhala keyboard is a preliminary layout.
|
||||
This isn't based on the final specification. -->
|
||||
<!-- si_LK is currently disabled due to lack of combination rules.
|
||||
<subtype android:icon="@drawable/ic_ime_switcher_dark"
|
||||
<!-- si_LK is currently disabled due to lack of combination rules. -->
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
android:label="@string/subtype_generic"
|
||||
android:subtypeId="0x5c6b3bde"
|
||||
android:imeSubtypeLocale="si_LK"
|
||||
|
@ -775,14 +775,13 @@
|
|||
android:imeSubtypeExtraValue="KeyboardLayoutSet=sinhala,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
-->
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
android:label="@string/subtype_generic"
|
||||
android:subtypeId="0x8e94d413"
|
||||
android:imeSubtypeLocale="sk"
|
||||
android:languageTag="sk"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -791,7 +790,7 @@
|
|||
android:imeSubtypeLocale="sl"
|
||||
android:languageTag="sl"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -800,7 +799,7 @@
|
|||
android:imeSubtypeLocale="sr"
|
||||
android:languageTag="sr"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=sr,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<!-- TODO: This Serbian Latin keyboard is a preliminary layout.
|
||||
|
@ -811,7 +810,7 @@
|
|||
android:imeSubtypeLocale="sr_ZZ"
|
||||
android:languageTag="sr-Latn"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=serbian_qwertz,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -820,7 +819,7 @@
|
|||
android:imeSubtypeLocale="sv"
|
||||
android:languageTag="sv"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -829,7 +828,7 @@
|
|||
android:imeSubtypeLocale="sw"
|
||||
android:languageTag="sw"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -886,7 +885,7 @@
|
|||
android:imeSubtypeLocale="tl"
|
||||
android:languageTag="fil"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -895,7 +894,7 @@
|
|||
android:imeSubtypeLocale="tr"
|
||||
android:languageTag="tr"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty+,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -904,7 +903,7 @@
|
|||
android:imeSubtypeLocale="uk"
|
||||
android:languageTag="uk"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=uk,EmojiCapable"
|
||||
android:isAsciiCapable="false"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -933,7 +932,7 @@
|
|||
android:imeSubtypeLocale="vi"
|
||||
android:languageTag="vi"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -942,7 +941,7 @@
|
|||
android:imeSubtypeLocale="zu"
|
||||
android:languageTag="zu"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_ime_switcher"
|
||||
|
@ -951,7 +950,7 @@
|
|||
android:imeSubtypeLocale="zz"
|
||||
android:languageTag="zz"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable,EmojiCapable"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable,EmojiCapable"
|
||||
android:isAsciiCapable="true"
|
||||
/>
|
||||
<!-- Emoji subtype has to be an addtional subtype added at boot time because ICS doesn't
|
||||
|
|
Loading…
Add table
Reference in a new issue