am 7ae6721f
: Remove RTL aware !code and add corresponding !text
* commit '7ae6721ffad1e79ee446de87d13f18a27619830b': Remove RTL aware !code and add corresponding !text
This commit is contained in:
commit
8950f96b84
19 changed files with 507 additions and 516 deletions
|
@ -22,7 +22,7 @@
|
|||
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
|
||||
>
|
||||
<Key
|
||||
latin:keySpec="{|!code/key_left_curly_bracket" />
|
||||
latin:keySpec="!text/keyspec_left_curly_bracket" />
|
||||
<Key
|
||||
latin:keySpec="}|!code/key_right_curly_bracket" />
|
||||
latin:keySpec="!text/keyspec_right_curly_bracket" />
|
||||
</merge>
|
||||
|
|
|
@ -25,25 +25,22 @@
|
|||
<case
|
||||
latin:languageCode="fa"
|
||||
>
|
||||
<!-- TODO: Introduce !code/key_{left,right}_angle_quotation. -->
|
||||
<!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
|
||||
<Key
|
||||
latin:keySpec="«|»"
|
||||
latin:keySpec="!text/keyspec_left_double_angle_quote"
|
||||
latin:backgroundType="functional"
|
||||
latin:moreKeys="!text/more_keys_for_less_than" />
|
||||
<Key
|
||||
latin:keySpec="»|«"
|
||||
latin:keySpec="!text/keyspec_right_double_angle_quote"
|
||||
latin:backgroundType="functional"
|
||||
latin:moreKeys="!text/more_keys_for_greater_than" />
|
||||
</case>
|
||||
<default>
|
||||
<Key
|
||||
latin:keySpec="<|!code/key_less_than"
|
||||
latin:keySpec="!text/keyspec_less_than"
|
||||
latin:backgroundType="functional"
|
||||
latin:moreKeys="!text/more_keys_for_less_than" />
|
||||
<Key
|
||||
latin:keySpec=">|!code/key_greater_than"
|
||||
latin:keySpec="!text/keyspec_greater_than"
|
||||
latin:backgroundType="functional"
|
||||
latin:moreKeys="!text/more_keys_for_greater_than" />
|
||||
</default>
|
||||
|
|
|
@ -22,9 +22,9 @@
|
|||
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
|
||||
>
|
||||
<Key
|
||||
latin:keySpec="(|!code/key_left_parenthesis"
|
||||
latin:keySpec="!text/keyspec_left_parenthesis"
|
||||
latin:moreKeys="!text/more_keys_for_left_parenthesis" />
|
||||
<Key
|
||||
latin:keySpec=")|!code/key_right_parenthesis"
|
||||
latin:keySpec="!text/keyspec_right_parenthesis"
|
||||
latin:moreKeys="!text/more_keys_for_right_parenthesis" />
|
||||
</merge>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
|
||||
>
|
||||
<Key
|
||||
latin:keySpec="[|!code/key_left_square_bracket" />
|
||||
latin:keySpec="!text/keyspec_left_square_bracket" />
|
||||
<Key
|
||||
latin:keySpec="]|!code/key_right_square_bracket" />
|
||||
latin:keySpec="!text/keyspec_right_square_bracket" />
|
||||
</merge>
|
||||
|
|
|
@ -28,14 +28,11 @@
|
|||
<case
|
||||
latin:languageCode="fa"
|
||||
>
|
||||
<!-- TODO: Introduce !code/key_{left,right}_angle_quotation. -->
|
||||
<!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
|
||||
<Key
|
||||
latin:keySpec="«|»"
|
||||
latin:keySpec="!text/keyspec_left_double_angle_quote"
|
||||
latin:moreKeys="!text/more_keys_for_double_quote" />
|
||||
<Key
|
||||
latin:keySpec="»|«"
|
||||
latin:keySpec="!text/keyspec_right_double_angle_quote"
|
||||
latin:moreKeys="!text/more_keys_for_single_quote" />
|
||||
</case>
|
||||
<default>
|
||||
|
|
|
@ -292,8 +292,7 @@ public class Key implements Comparable<Key> {
|
|||
actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS;
|
||||
mMoreKeys = new MoreKeySpec[moreKeys.length];
|
||||
for (int i = 0; i < moreKeys.length; i++) {
|
||||
mMoreKeys[i] = new MoreKeySpec(
|
||||
moreKeys[i], needsToUpperCase, locale, params.mCodesSet);
|
||||
mMoreKeys[i] = new MoreKeySpec(moreKeys[i], needsToUpperCase, locale);
|
||||
}
|
||||
} else {
|
||||
mMoreKeys = null;
|
||||
|
@ -306,7 +305,7 @@ public class Key implements Comparable<Key> {
|
|||
final int previewIconId = KeySpecParser.getIconId(style.getString(keyAttr,
|
||||
R.styleable.Keyboard_Key_keyIconPreview));
|
||||
|
||||
final int code = KeySpecParser.getCode(keySpec, params.mCodesSet);
|
||||
final int code = KeySpecParser.getCode(keySpec);
|
||||
if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) {
|
||||
mLabel = params.mId.mCustomActionLabel;
|
||||
} else if (code >= Character.MIN_SUPPLEMENTARY_CODE_POINT) {
|
||||
|
@ -353,8 +352,8 @@ public class Key implements Comparable<Key> {
|
|||
} else {
|
||||
mCode = StringUtils.toUpperCaseOfCodeForLocale(code, needsToUpperCase, locale);
|
||||
}
|
||||
final int altCodeInAttr = KeySpecParser.parseCode(style.getString(keyAttr,
|
||||
R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED);
|
||||
final int altCodeInAttr = KeySpecParser.parseCode(
|
||||
style.getString(keyAttr, R.styleable.Keyboard_Key_altCode), CODE_UNSPECIFIED);
|
||||
final int altCode = StringUtils.toUpperCaseOfCodeForLocale(
|
||||
altCodeInAttr, needsToUpperCase, locale);
|
||||
mOptionalAttributes = OptionalAttributes.newInstance(outputText, altCode,
|
||||
|
|
|
@ -184,7 +184,7 @@ public final class KeySpecParser {
|
|||
return (StringUtils.codePointCount(label) == 1) ? null : label;
|
||||
}
|
||||
|
||||
public static int getCode(final String keySpec, final KeyboardCodesSet codesSet) {
|
||||
public static int getCode(final String keySpec) {
|
||||
if (keySpec == null) {
|
||||
// TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory.
|
||||
return CODE_UNSPECIFIED;
|
||||
|
@ -192,7 +192,7 @@ public final class KeySpecParser {
|
|||
final int labelEnd = indexOfLabelEnd(keySpec);
|
||||
if (hasCode(keySpec, labelEnd)) {
|
||||
checkDoubleLabelEnd(keySpec, labelEnd);
|
||||
return parseCode(getAfterLabelEnd(keySpec, labelEnd), codesSet, CODE_UNSPECIFIED);
|
||||
return parseCode(getAfterLabelEnd(keySpec, labelEnd), CODE_UNSPECIFIED);
|
||||
}
|
||||
final String outputText = getOutputTextInternal(keySpec, labelEnd);
|
||||
if (outputText != null) {
|
||||
|
@ -211,13 +211,12 @@ public final class KeySpecParser {
|
|||
return (StringUtils.codePointCount(label) == 1) ? label.codePointAt(0) : CODE_OUTPUT_TEXT;
|
||||
}
|
||||
|
||||
public static int parseCode(final String text, final KeyboardCodesSet codesSet,
|
||||
final int defaultCode) {
|
||||
public static int parseCode(final String text, final int defaultCode) {
|
||||
if (text == null) {
|
||||
return defaultCode;
|
||||
}
|
||||
if (text.startsWith(KeyboardCodesSet.PREFIX_CODE)) {
|
||||
return codesSet.getCode(text.substring(KeyboardCodesSet.PREFIX_CODE.length()));
|
||||
return KeyboardCodesSet.getCode(text.substring(KeyboardCodesSet.PREFIX_CODE.length()));
|
||||
}
|
||||
// This is a workaround to have a key that has a supplementary code point. We can't put a
|
||||
// string in resource as a XML entity of a supplementary code point or a surrogate pair.
|
||||
|
|
|
@ -279,7 +279,6 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
|||
params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
|
||||
params.mIconsSet.loadIcons(keyboardAttr);
|
||||
final Locale locale = params.mId.mLocale;
|
||||
params.mCodesSet.setLocale(locale);
|
||||
params.mTextsSet.setLocale(locale);
|
||||
final RunInLocale<Void> job = new RunInLocale<Void>() {
|
||||
@Override
|
||||
|
|
|
@ -18,26 +18,22 @@ package com.android.inputmethod.keyboard.internal;
|
|||
|
||||
import com.android.inputmethod.latin.Constants;
|
||||
import com.android.inputmethod.latin.utils.CollectionUtils;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
||||
public final class KeyboardCodesSet {
|
||||
public static final String PREFIX_CODE = "!code/";
|
||||
|
||||
private static final HashMap<String, Integer> sNameToIdMap = CollectionUtils.newHashMap();
|
||||
|
||||
private int[] mCodes = DEFAULT;
|
||||
|
||||
public void setLocale(final Locale locale) {
|
||||
mCodes = SubtypeLocaleUtils.isRtlLanguage(locale) ? RTL : DEFAULT;
|
||||
private KeyboardCodesSet() {
|
||||
// This utility class is not publicly instantiable.
|
||||
}
|
||||
|
||||
public int getCode(final String name) {
|
||||
public static int getCode(final String name) {
|
||||
Integer id = sNameToIdMap.get(name);
|
||||
if (id == null) throw new RuntimeException("Unknown key code: " + name);
|
||||
return mCodes[id];
|
||||
return DEFAULT[id];
|
||||
}
|
||||
|
||||
private static final String[] ID_TO_NAME = {
|
||||
|
@ -58,26 +54,8 @@ public final class KeyboardCodesSet {
|
|||
"key_emoji",
|
||||
"key_alpha_from_emoji",
|
||||
"key_unspecified",
|
||||
"key_left_parenthesis",
|
||||
"key_right_parenthesis",
|
||||
"key_less_than",
|
||||
"key_greater_than",
|
||||
"key_left_square_bracket",
|
||||
"key_right_square_bracket",
|
||||
"key_left_curly_bracket",
|
||||
"key_right_curly_bracket",
|
||||
};
|
||||
|
||||
private static final int CODE_LEFT_PARENTHESIS = '(';
|
||||
private static final int CODE_RIGHT_PARENTHESIS = ')';
|
||||
private static final int CODE_LESS_THAN_SIGN = '<';
|
||||
private static final int CODE_GREATER_THAN_SIGN = '>';
|
||||
private static final int CODE_LEFT_SQUARE_BRACKET = '[';
|
||||
private static final int CODE_RIGHT_SQUARE_BRACKET = ']';
|
||||
private static final int CODE_LEFT_CURLY_BRACKET = '{';
|
||||
private static final int CODE_RIGHT_CURLY_BRACKET = '}';
|
||||
|
||||
// This array should be aligned with the array RTL below.
|
||||
private static final int[] DEFAULT = {
|
||||
Constants.CODE_TAB,
|
||||
Constants.CODE_ENTER,
|
||||
|
@ -96,48 +74,9 @@ public final class KeyboardCodesSet {
|
|||
Constants.CODE_EMOJI,
|
||||
Constants.CODE_ALPHA_FROM_EMOJI,
|
||||
Constants.CODE_UNSPECIFIED,
|
||||
CODE_LEFT_PARENTHESIS,
|
||||
CODE_RIGHT_PARENTHESIS,
|
||||
CODE_LESS_THAN_SIGN,
|
||||
CODE_GREATER_THAN_SIGN,
|
||||
CODE_LEFT_SQUARE_BRACKET,
|
||||
CODE_RIGHT_SQUARE_BRACKET,
|
||||
CODE_LEFT_CURLY_BRACKET,
|
||||
CODE_RIGHT_CURLY_BRACKET,
|
||||
};
|
||||
|
||||
private static final int[] RTL = {
|
||||
DEFAULT[0],
|
||||
DEFAULT[1],
|
||||
DEFAULT[2],
|
||||
DEFAULT[3],
|
||||
DEFAULT[4],
|
||||
DEFAULT[5],
|
||||
DEFAULT[6],
|
||||
DEFAULT[7],
|
||||
DEFAULT[8],
|
||||
DEFAULT[9],
|
||||
DEFAULT[10],
|
||||
DEFAULT[11],
|
||||
DEFAULT[12],
|
||||
DEFAULT[13],
|
||||
DEFAULT[14],
|
||||
DEFAULT[15],
|
||||
DEFAULT[16],
|
||||
CODE_RIGHT_PARENTHESIS,
|
||||
CODE_LEFT_PARENTHESIS,
|
||||
CODE_GREATER_THAN_SIGN,
|
||||
CODE_LESS_THAN_SIGN,
|
||||
CODE_RIGHT_SQUARE_BRACKET,
|
||||
CODE_LEFT_SQUARE_BRACKET,
|
||||
CODE_RIGHT_CURLY_BRACKET,
|
||||
CODE_LEFT_CURLY_BRACKET,
|
||||
};
|
||||
|
||||
static {
|
||||
if (DEFAULT.length != RTL.length || DEFAULT.length != ID_TO_NAME.length) {
|
||||
throw new RuntimeException("Internal inconsistency");
|
||||
}
|
||||
for (int i = 0; i < ID_TO_NAME.length; i++) {
|
||||
sNameToIdMap.put(ID_TO_NAME[i], i);
|
||||
}
|
||||
|
|
|
@ -62,7 +62,6 @@ public class KeyboardParams {
|
|||
public final ArrayList<Key> mShiftKeys = CollectionUtils.newArrayList();
|
||||
public final ArrayList<Key> mAltCodeKeysWhileTyping = CollectionUtils.newArrayList();
|
||||
public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
|
||||
public final KeyboardCodesSet mCodesSet = new KeyboardCodesSet();
|
||||
public final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
|
||||
public final KeyStylesSet mKeyStyles = new KeyStylesSet(mTextsSet);
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -46,15 +46,14 @@ public final class MoreKeySpec {
|
|||
public final String mOutputText;
|
||||
public final int mIconId;
|
||||
|
||||
public MoreKeySpec(final String moreKeySpec, boolean needsToUpperCase, final Locale locale,
|
||||
final KeyboardCodesSet codesSet) {
|
||||
public MoreKeySpec(final String moreKeySpec, boolean needsToUpperCase, final Locale locale) {
|
||||
if (TextUtils.isEmpty(moreKeySpec)) {
|
||||
throw new KeySpecParser.KeySpecParserError("Empty more key spec");
|
||||
}
|
||||
mLabel = StringUtils.toUpperCaseOfStringForLocale(
|
||||
KeySpecParser.getLabel(moreKeySpec), needsToUpperCase, locale);
|
||||
final int code = StringUtils.toUpperCaseOfCodeForLocale(
|
||||
KeySpecParser.getCode(moreKeySpec, codesSet), needsToUpperCase, locale);
|
||||
KeySpecParser.getCode(moreKeySpec), needsToUpperCase, locale);
|
||||
if (code == Constants.CODE_UNSPECIFIED) {
|
||||
// Some letter, for example German Eszett (U+00DF: "ß"), has multiple characters
|
||||
// upper case representation ("SS").
|
||||
|
|
|
@ -33,7 +33,7 @@ public final class KeySpecParserTests extends KeySpecParserTestsBase {
|
|||
final String actualLabel = KeySpecParser.getLabel(keySpecResolved);
|
||||
final String actualOutputText = KeySpecParser.getOutputText(keySpecResolved);
|
||||
final int actualIcon = KeySpecParser.getIconId(keySpecResolved);
|
||||
final int actualCode = KeySpecParser.getCode(keySpecResolved, mCodesSet);
|
||||
final int actualCode = KeySpecParser.getCode(keySpecResolved);
|
||||
assertEquals(message + " [label]", expectedLabel, actualLabel);
|
||||
assertEquals(message + " [ouptputText]", expectedOutputText, actualOutputText);
|
||||
assertEquals(message + " [icon]",
|
||||
|
|
|
@ -32,7 +32,6 @@ import java.util.Locale;
|
|||
|
||||
abstract class KeySpecParserTestsBase extends AndroidTestCase {
|
||||
private final static Locale TEST_LOCALE = Locale.ENGLISH;
|
||||
protected final KeyboardCodesSet mCodesSet = new KeyboardCodesSet();
|
||||
protected final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
|
||||
|
||||
private static final String CODE_SETTINGS_NAME = "key_settings";
|
||||
|
@ -52,7 +51,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
|
|||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
mCodesSet.setLocale(TEST_LOCALE);
|
||||
mTextsSet.setLocale(TEST_LOCALE);
|
||||
final Context context = getContext();
|
||||
new RunInLocale<Void>() {
|
||||
|
@ -63,8 +61,8 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
|
|||
}
|
||||
}.runInLocale(context.getResources(), TEST_LOCALE);
|
||||
|
||||
mCodeSettings = mCodesSet.getCode(CODE_SETTINGS_NAME);
|
||||
mCodeActionNext = mCodesSet.getCode("key_action_next");
|
||||
mCodeSettings = KeyboardCodesSet.getCode(CODE_SETTINGS_NAME);
|
||||
mCodeActionNext = KeyboardCodesSet.getCode("key_action_next");
|
||||
mSettingsIconId = KeyboardIconsSet.getIconId(ICON_SETTINGS_NAME);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@ public final class MoreKeySpecTests extends KeySpecParserTestsBase {
|
|||
final String expectedLabel, final String expectedOutputText, final int expectedIconId,
|
||||
final int expectedCode) {
|
||||
final String labelResolved = mTextsSet.resolveTextReference(moreKeySpec);
|
||||
final MoreKeySpec spec = new MoreKeySpec(labelResolved, false /* needsToUpperCase */,
|
||||
Locale.US, mCodesSet);
|
||||
final MoreKeySpec spec = new MoreKeySpec(
|
||||
labelResolved, false /* needsToUpperCase */, Locale.US);
|
||||
assertEquals(message + " [label]", expectedLabel, spec.mLabel);
|
||||
assertEquals(message + " [ouptputText]", expectedOutputText, spec.mOutputText);
|
||||
assertEquals(message + " [icon]",
|
||||
|
|
|
@ -95,18 +95,28 @@
|
|||
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
|
||||
<!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
|
||||
U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,﴾|﴿,<|>,{|},[|]</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,﴿|﴾,>|<,}|{,]|[</string>
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,﴾|﴿,!text/keyspecs_for_left_parenthesis_more_keys</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,﴿|﴾,!text/keyspecs_for_right_parenthesis_more_keys</string>
|
||||
<!-- U+2264: "≤" LESS-THAN OR EQUAL TO
|
||||
U+2265: "≥" GREATER-THAN EQUAL TO
|
||||
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
|
||||
<string name="more_keys_for_less_than">!fixedColumnOrder!3,‹|›,≤|≥,«|»</string>
|
||||
<string name="more_keys_for_greater_than">!fixedColumnOrder!3,›|‹,≥|≤,»|«</string>
|
||||
<string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
|
||||
<string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
|
||||
<string name="keyspec_left_parenthesis">(|)</string>
|
||||
<string name="keyspec_right_parenthesis">)|(</string>
|
||||
<string name="keyspec_left_square_bracket">[|]</string>
|
||||
<string name="keyspec_right_square_bracket">]|[</string>
|
||||
<string name="keyspec_left_curly_bracket">{|}</string>
|
||||
<string name="keyspec_right_curly_bracket">}|{</string>
|
||||
<string name="keyspec_less_than"><|></string>
|
||||
<string name="keyspec_greater_than">>|<</string>
|
||||
<string name="keyspec_less_than_equal">≤|≥</string>
|
||||
<string name="keyspec_greater_than_equal">≥|≤</string>
|
||||
<string name="keyspec_left_double_angle_quote">«|»</string>
|
||||
<string name="keyspec_right_double_angle_quote">»|«</string>
|
||||
<string name="keyspec_left_single_angle_quote">‹|›</string>
|
||||
<string name="keyspec_right_single_angle_quote">›|‹</string>
|
||||
<!-- U+0655: "ٕ" ARABIC HAMZA BELOW
|
||||
U+0654: "ٔ" ARABIC HAMZA ABOVE
|
||||
U+0652: "ْ" ARABIC SUKUN
|
||||
|
|
|
@ -86,13 +86,13 @@
|
|||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
|
||||
<string name="keylabel_for_tablet_comma">"،"</string>
|
||||
<string name="keyhintlabel_for_tablet_comma">"؟"</string>
|
||||
<string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,؟,؛,-,/,«|»,»|«"</string>
|
||||
<string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,؟,؛,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote"</string>
|
||||
<!-- U+FDFC: "﷼" RIAL SIGN -->
|
||||
<string name="keylabel_for_currency">﷼</string>
|
||||
<!-- U+061F: "؟" ARABIC QUESTION MARK
|
||||
U+060C: "،" ARABIC COMMA
|
||||
U+061B: "؛" ARABIC SEMICOLON -->
|
||||
<string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,،,؟,\@,&,\\%,+,؛,/,(|),)|("</string>
|
||||
<string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,،,؟,\@,&,\\%,+,؛,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis"</string>
|
||||
<!-- U+266A: "♪" EIGHTH NOTE -->
|
||||
<string name="more_keys_for_bullet">♪</string>
|
||||
<!-- U+2605: "★" BLACK STAR
|
||||
|
@ -102,18 +102,30 @@
|
|||
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
|
||||
<!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
|
||||
U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,﴾|﴿,<|>,{|},[|]</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,﴿|﴾,>|<,}|{,]|[</string>
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,﴾|﴿,!text/keyspecs_for_left_parenthesis_more_keys</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,﴿|﴾,!text/keyspecs_for_right_parenthesis_more_keys</string>
|
||||
<!-- U+2264: "≤" LESS-THAN OR EQUAL TO
|
||||
U+2265: "≥" GREATER-THAN EQUAL TO
|
||||
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
|
||||
<string name="more_keys_for_less_than">!fixedColumnOrder!3,‹|›,≤|≥,<|></string>
|
||||
<string name="more_keys_for_greater_than">!fixedColumnOrder!3,›|‹,≥|≤,>|<</string>
|
||||
<string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
|
||||
<string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
|
||||
<string name="more_keys_for_less_than">!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote;,!text/keyspec_less_than_equal;,!text/keyspec_less_than</string>
|
||||
<string name="more_keys_for_greater_than">!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote;,!text/keyspec_greater_than_equal;,!text/keyspec_greater_than</string>
|
||||
<string name="keyspec_left_parenthesis">(|)</string>
|
||||
<string name="keyspec_right_parenthesis">)|(</string>
|
||||
<string name="keyspec_left_square_bracket">[|]</string>
|
||||
<string name="keyspec_right_square_bracket">]|[</string>
|
||||
<string name="keyspec_left_curly_bracket">{|}</string>
|
||||
<string name="keyspec_right_curly_bracket">}|{</string>
|
||||
<string name="keyspec_less_than"><|></string>
|
||||
<string name="keyspec_greater_than">>|<</string>
|
||||
<string name="keyspec_less_than_equal">≤|≥</string>
|
||||
<string name="keyspec_greater_than_equal">≥|≤</string>
|
||||
<string name="keyspec_left_double_angle_quote">«|»</string>
|
||||
<string name="keyspec_right_double_angle_quote">»|«</string>
|
||||
<string name="keyspec_left_single_angle_quote">‹|›</string>
|
||||
<string name="keyspec_right_single_angle_quote">›|‹</string>
|
||||
<!-- U+0655: "ٕ" ARABIC HAMZA BELOW
|
||||
U+0652: "ْ" ARABIC SUKUN
|
||||
U+0651: "ّ" ARABIC SHADDA
|
||||
|
|
|
@ -28,31 +28,30 @@
|
|||
<!-- U+00B1: "±" PLUS-MINUS SIGN
|
||||
U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
|
||||
<string name="more_keys_for_plus">±,﬩</string>
|
||||
<string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,\?,&,\\%,+,\",-,:,',\@"</string>
|
||||
<string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,(|),)|(,#,',\\,,&,\\%,+,\",-,:,\@"</string>
|
||||
<!-- The all letters need to be mirrored are found at
|
||||
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,<|>,{|},[|]</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,>|<,}|{,]|[</string>
|
||||
<!-- U+2264: "≤" LESS-THAN OR EQUAL TO
|
||||
U+2265: "≥" GREATER-THAN EQUAL TO
|
||||
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
|
||||
<string name="more_keys_for_less_than">!fixedColumnOrder!3,‹|›,≤|≥,«|»</string>
|
||||
<string name="more_keys_for_greater_than">!fixedColumnOrder!3,›|‹,≥|≤,»|«</string>
|
||||
<!-- The following characters don't need BIDI mirroring.
|
||||
U+2018: "‘" LEFT SINGLE QUOTATION MARK
|
||||
U+2019: "’" RIGHT SINGLE QUOTATION MARK
|
||||
U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
|
||||
U+201C: "“" LEFT DOUBLE QUOTATION MARK
|
||||
U+201D: "”" RIGHT DOUBLE QUOTATION MARK
|
||||
U+201E: "„" DOUBLE LOW-9 QUOTATION MARK -->
|
||||
<string name="single_quotes">‘,’,‚</string>
|
||||
<string name="double_quotes">“,”,„</string>
|
||||
<string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
|
||||
<string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
|
||||
<string name="keyspec_left_parenthesis">(|)</string>
|
||||
<string name="keyspec_right_parenthesis">)|(</string>
|
||||
<string name="keyspec_left_square_bracket">[|]</string>
|
||||
<string name="keyspec_right_square_bracket">]|[</string>
|
||||
<string name="keyspec_left_curly_bracket">{|}</string>
|
||||
<string name="keyspec_right_curly_bracket">}|{</string>
|
||||
<string name="keyspec_less_than"><|></string>
|
||||
<string name="keyspec_greater_than">>|<</string>
|
||||
<string name="keyspec_less_than_equal">≤|≥</string>
|
||||
<string name="keyspec_greater_than_equal">≥|≤</string>
|
||||
<string name="keyspec_left_double_angle_quote">«|»</string>
|
||||
<string name="keyspec_right_double_angle_quote">»|«</string>
|
||||
<string name="keyspec_left_single_angle_quote">‹|›</string>
|
||||
<string name="keyspec_right_single_angle_quote">›|‹</string>
|
||||
<string name="single_quotes">!text/single_rqm_9qm</string>
|
||||
<string name="double_quotes">!text/double_rqm_9qm</string>
|
||||
<!-- U+20AA: "₪" NEW SHEQEL SIGN -->
|
||||
<string name="keylabel_for_currency">₪</string>
|
||||
</resources>
|
||||
|
|
|
@ -83,8 +83,8 @@
|
|||
<string name="more_keys_for_currency_dollar">¢,£,€,¥,₱</string>
|
||||
<string name="keylabel_for_currency">$</string>
|
||||
<string name="more_keys_for_currency">$,¢,€,£,¥,₱</string>
|
||||
<string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(,),#,!,\\,,\?,&,\\%,+,\",-,:,',\@"</string>
|
||||
<string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,(,),#,',\\,,&,\\%,+,\",-,:,\@"</string>
|
||||
<string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,!,\\,,\?,&,\\%,+,\",-,:,',\@"</string>
|
||||
<string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,',\\,,&,\\%,+,\",-,:,\@"</string>
|
||||
<!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
|
||||
<string name="keylabel_for_spanish_row2_10">ñ</string>
|
||||
<!-- U+2020: "†" DAGGER
|
||||
|
@ -99,18 +99,10 @@
|
|||
<string name="more_keys_for_bullet">♪,♥,♠,♦,♣</string>
|
||||
<!-- U+00B1: "±" PLUS-MINUS SIGN -->
|
||||
<string name="more_keys_for_plus">±</string>
|
||||
<!-- The all letters need to be mirrored are found at
|
||||
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,<,{,[</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,>,},]</string>
|
||||
<!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
U+2264: "≤" LESS-THAN OR EQUAL TO
|
||||
U+2265: "≥" GREATER-THAN EQUAL TO
|
||||
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
|
||||
<string name="more_keys_for_less_than">!fixedColumnOrder!3,‹,≤,«</string>
|
||||
<string name="more_keys_for_greater_than">!fixedColumnOrder!3,›,≥,»</string>
|
||||
<string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,!text/keyspecs_for_left_parenthesis_more_keys</string>
|
||||
<string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,!text/keyspecs_for_right_parenthesis_more_keys</string>
|
||||
<string name="more_keys_for_less_than">!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote</string>
|
||||
<string name="more_keys_for_greater_than">!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote</string>
|
||||
<string name="more_keys_for_arabic_diacritics"></string>
|
||||
<string name="keylabel_for_symbols_1">1</string>
|
||||
<string name="keylabel_for_symbols_2">2</string>
|
||||
|
@ -162,6 +154,28 @@
|
|||
<!-- U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
|
||||
U+2205: "∅" EMPTY SET -->
|
||||
<string name="more_keys_for_symbols_0">ⁿ,∅</string>
|
||||
<!-- The all letters need to be mirrored are found at
|
||||
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
|
||||
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
U+2264: "≤" LESS-THAN OR EQUAL TO
|
||||
U+2265: "≥" GREATER-THAN EQUAL TO
|
||||
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
|
||||
<string name="keyspec_left_parenthesis">(</string>
|
||||
<string name="keyspec_right_parenthesis">)</string>
|
||||
<string name="keyspec_left_square_bracket">[</string>
|
||||
<string name="keyspec_right_square_bracket">]</string>
|
||||
<string name="keyspec_left_curly_bracket">{</string>
|
||||
<string name="keyspec_right_curly_bracket">}</string>
|
||||
<string name="keyspec_less_than"><</string>
|
||||
<string name="keyspec_greater_than">></string>
|
||||
<string name="keyspec_less_than_equal">≤</string>
|
||||
<string name="keyspec_greater_than_equal">≥</string>
|
||||
<string name="keyspec_left_double_angle_quote">«</string>
|
||||
<string name="keyspec_right_double_angle_quote">»</string>
|
||||
<string name="keyspec_left_single_angle_quote">‹</string>
|
||||
<string name="keyspec_right_single_angle_quote">›</string>
|
||||
<!-- Comma key -->
|
||||
<string name="keylabel_for_comma">,</string>
|
||||
<string name="more_keys_for_comma"></string>
|
||||
|
@ -215,11 +229,9 @@
|
|||
<string name="keylabel_for_popular_domain">".com"</string>
|
||||
<!-- popular web domains for the locale - most popular, displayed on the keyboard -->
|
||||
<string name="more_keys_for_popular_domain">"!hasLabels!,.net,.org,.gov,.edu"</string>
|
||||
<!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
The following characters don't need BIDI mirroring.
|
||||
<string name="keyspecs_for_left_parenthesis_more_keys">!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket</string>
|
||||
<string name="keyspecs_for_right_parenthesis_more_keys">!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket</string>
|
||||
<!-- The following characters don't need BIDI mirroring.
|
||||
U+2018: "‘" LEFT SINGLE QUOTATION MARK
|
||||
U+2019: "’" RIGHT SINGLE QUOTATION MARK
|
||||
U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
|
||||
|
@ -229,28 +241,27 @@
|
|||
<!-- Abbreviations are:
|
||||
laqm: LEFT-POINTING ANGLE QUOTATION MARK
|
||||
raqm: RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
rtl: Right-To-Left script order
|
||||
lqm: LEFT QUOTATION MARK
|
||||
rqm: RIGHT QUOTATION MARK
|
||||
9qm: LOW-9 QUOTATION MARK -->
|
||||
<!-- The following each quotation mark pair consist of
|
||||
<opening quotation mark>, <closing quotation mark>
|
||||
and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. -->
|
||||
<string name="single_laqm_raqm">‹,›</string>
|
||||
<string name="single_laqm_raqm_rtl">‹|›,›|‹</string>
|
||||
<string name="single_raqm_laqm">›,‹</string>
|
||||
<string name="double_laqm_raqm">«,»</string>
|
||||
<string name="double_laqm_raqm_rtl">«|»,»|«</string>
|
||||
<string name="double_raqm_laqm">»,«</string>
|
||||
<string name="single_laqm_raqm">!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote</string>
|
||||
<string name="single_raqm_laqm">!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote</string>
|
||||
<string name="double_laqm_raqm">!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote</string>
|
||||
<string name="double_raqm_laqm">!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote</string>
|
||||
<!-- The following each quotation mark triplet consists of
|
||||
<another quotation mark>, <opening quotation mark>, <closing quotation mark>
|
||||
and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. -->
|
||||
<string name="single_lqm_rqm">‚,‘,’</string>
|
||||
<string name="single_9qm_lqm">’,‚,‘</string>
|
||||
<string name="single_9qm_rqm">‘,‚,’</string>
|
||||
<string name="single_rqm_9qm">‘,’,‚</string>
|
||||
<string name="double_lqm_rqm">„,“,”</string>
|
||||
<string name="double_9qm_lqm">”,„,“</string>
|
||||
<string name="double_9qm_rqm">“,„,”</string>
|
||||
<string name="double_rqm_9qm">“,”,„</string>
|
||||
<string name="more_keys_for_single_quote">!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes</string>
|
||||
<string name="more_keys_for_double_quote">!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes</string>
|
||||
<string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes</string>
|
||||
|
|
Loading…
Reference in a new issue