diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index d574b9edb..573ec68b7 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -300,6 +300,7 @@ + @@ -319,11 +320,13 @@ + + diff --git a/java/res/values/donottranslate-more-keys.xml b/java/res/values/donottranslate-more-keys.xml index 5e97edc1e..14c278af9 100644 --- a/java/res/values/donottranslate-more-keys.xml +++ b/java/res/values/donottranslate-more-keys.xml @@ -120,7 +120,7 @@ U+2205: "∅" EMPTY SET --> ⁿ,∅ !fixedColumnOrder!2,!hasLabels!,\@string/label_time_am,\@string/label_time_pm - \@icon/settingsKey|!code/key_settings + !icon/settingsKey|!code/key_settings , !hasLabels!,\@string/label_next_key|!code/key_action_next diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml index 3cec9aab7..b0f610912 100644 --- a/java/res/xml-sw600dp/key_styles_common.xml +++ b/java/res/xml-sw600dp/key_styles_common.xml @@ -84,7 +84,7 @@ latin:styleName="zwnjKeyStyle" latin:code="0x200C" latin:keyIcon="iconZwnjKey" - latin:moreKeys="\@icon/zwjKey|‍" + latin:moreKeys="!icon/zwjKey|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index 84965bfe7..288fb4556 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -32,10 +32,11 @@ import java.util.Arrays; * - String resource can be embedded into specification @string/name. This is done before parsing * comma. * Each "more key" specification is one of the following: - * - A single letter (Letter) * - Label optionally followed by keyOutputText or code (keyLabel|keyOutputText). - * - Icon followed by keyOutputText or a string representation of codes - * (@icon/icon_name|!code/key_code) + * - Icon followed by keyOutputText or code (!icon/icon_name|!code/code_name) + * - Icon should be a string representation of icon (!icon/icon_name). + * - Code should be a code point presented by hexadecimal string prefixed with "0x". + * Or a string representation of code (!code/code_name). * Special character, comma ',' backslash '\', and bar '|' can be escaped by '\' character. * Note that the character '@' and '\' are also parsed by XML parser and CSV parser as well. * See {@link KeyboardIconsSet} about icon_name. @@ -52,7 +53,7 @@ public class KeySpecParser { private static final char SUFFIX_SLASH = '/'; private static final String PREFIX_STRING = PREFIX_AT + "string" + SUFFIX_SLASH; private static final char LABEL_END = '|'; - private static final String PREFIX_ICON = PREFIX_AT + "icon" + SUFFIX_SLASH; + private static final String PREFIX_ICON = "!icon/"; private static final String PREFIX_CODE = "!code/"; private static final String PREFIX_HEX = "0x"; private static final String ADDITIONAL_MORE_KEY_MARKER = "%"; diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java index 856bc105a..58b43d46c 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java @@ -33,9 +33,9 @@ public class KeySpecParserTests extends AndroidTestCase { private static final String ICON_SETTINGS_NAME = "settingsKey"; private static final String CODE_SETTINGS = "!code/" + CODE_SETTINGS_NAME; - private static final String ICON_SETTINGS = "@icon/" + ICON_SETTINGS_NAME; + private static final String ICON_SETTINGS = "!icon/" + ICON_SETTINGS_NAME; private static final String CODE_NON_EXISTING = "!code/non_existing"; - private static final String ICON_NON_EXISTING = "@icon/non_existing"; + private static final String ICON_NON_EXISTING = "!icon/non_existing"; private int mCodeSettings; private int mSettingsIconId;