diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 7473b42..5557dde 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -70,7 +70,7 @@
         <attr name="shadowRadius" format="float" />
         <attr name="backgroundDimAmount" format="float" />
 
-        <attr name="keyLetterStyle">
+        <attr name="keyLetterStyle" format="enum">
             <!-- This should be aligned with Typeface.NORMAL etc. -->
             <enum name="normal" value="0" />
             <enum name="bold" value="1" />
@@ -78,7 +78,7 @@
             <enum name="boldItalic" value="3" />
         </attr>
 
-        <attr name="colorScheme">
+        <attr name="colorScheme" format="enum">
             <!-- This should be aligned with KeyboardView.COLOR_SCHEME_* -->
             <enum name="white" value="0" />
             <enum name="black" value="1" />
@@ -125,7 +125,7 @@
         <!-- Maximum column of popup keyboard -->
         <attr name="maxPopupKeyboardColumn" format="integer" />
         <!-- Key edge flags. -->
-        <attr name="keyEdgeFlags">
+        <attr name="keyEdgeFlags" format="integer">
             <!-- Key is anchored to the left of the keyboard. -->
             <flag name="left" value="1" />
             <!-- Key is anchored to the right of the keyboard. -->
@@ -144,7 +144,7 @@
         <!-- The label to display on the key. -->
         <attr name="keyLabel" format="string" />
         <!-- The key label option -->
-        <attr name="keyLabelOption">
+        <attr name="keyLabelOption" format="integer">
             <!-- This should be aligned with KeyboardView.KEY_LABEL_OPTION_* -->
             <flag name="alignLeft" value="1" />
             <flag name="alignRight" value="2" />
@@ -176,7 +176,7 @@
 
     <declare-styleable name="Keyboard_Row">
         <!-- Row edge flags. -->
-        <attr name="rowEdgeFlags">
+        <attr name="rowEdgeFlags" format="integer">
             <!-- Row is anchored to the top of the keyboard. -->
             <flag name="top" value="4" />
             <!-- Row is anchored to the bottom of the keyboard. -->
@@ -190,7 +190,7 @@
 
     <declare-styleable name="Keyboard_Case">
         <!-- This should be aligned with KeyboardId.MODE_* -->
-        <attr name="mode">
+        <attr name="mode" format="enum|string">
             <enum name="text" value="0" />
             <enum name="url" value="1" />
             <enum name="email" value="2" />
@@ -203,17 +203,18 @@
         <attr name="hasSettingsKey" format="string" />
         <attr name="voiceKeyEnabled" format="string" />
         <attr name="hasVoiceKey" format="string" />
-        <attr name="imeAction">
+        <attr name="imeAction" format="enum">
             <!-- This should be aligned with EditorInfo.IME_ACTION_* -->
-            <flag name="actionUnspecified" value="0" />
-            <flag name="actionNone" value="1" />
-            <flag name="actionGo" value="2" />
-            <flag name="actionSearch" value="3" />
-            <flag name="actionSend" value="4" />
-            <flag name="actionNext" value="5" />
-            <flag name="actionDone" value="6" />
-            <flag name="actionPrevious" value="7" />
+            <enum name="actionUnspecified" value="0" />
+            <enum name="actionNone" value="1" />
+            <enum name="actionGo" value="2" />
+            <enum name="actionSearch" value="3" />
+            <enum name="actionSend" value="4" />
+            <enum name="actionNext" value="5" />
+            <enum name="actionDone" value="6" />
+            <enum name="actionPrevious" value="7" />
         </attr>
+        <attr name="localeCode" format="string" />
         <attr name="languageCode" format="string" />
         <attr name="countryCode" format="string" />
     </declare-styleable>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index b24ea5e..a2e4f1f 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -40,15 +40,8 @@
                 latin:languageCode="ru"
             >
                 <switch>
-                    <!-- TODO: implement logical OR for <case> attribute -->
                     <case
-                        latin:mode="email"
-                    >
-                        <Key
-                            latin:keyStyle="comKeyStyle" />
-                    </case>
-                    <case
-                        latin:mode="url"
+                        latin:mode="email|url"
                     >
                         <Key
                             latin:keyStyle="comKeyStyle" />
diff --git a/java/res/xml/kbd_currency_key_styles.xml b/java/res/xml/kbd_currency_key_styles.xml
index b30dd64..9d3bb47 100644
--- a/java/res/xml/kbd_currency_key_styles.xml
+++ b/java/res/xml/kbd_currency_key_styles.xml
@@ -27,229 +27,59 @@
         >
             <key-style
                 latin:styleName="currencyKeyStyle"
-                latin:keyLabel="$"
-                latin:popupCharacters="@string/alternates_for_currency_dollar" />
+                latin:keyLabel="$" />
         </case>
         <!-- Countries using Euro currency, 23 countries as for January 2011. -->
-        <!-- 1. Andorra (ca_AD, ca_ES) -->
+              1. Andorra (ca_AD, ca_ES)
+              2. Austria (de_AT)
+              3. Belgium (nl_BE, fr_BE, de_BE)
+              4. Cyprus (el_CY, tr_CY)
+              5. Estonia (et_EE)
+              6. Finland (fi_FI, sv_FI)
+              7. France (fr_FR)
+              8. Germany (de_DE)
+              9. Greece (el_GR)
+             10. Ireland (ga_IE, en_IE)
+             11. Italy (it_IT)
+             12. Kosovo (??_XK) ??
+             13. Luxembourg (lb_LU, fr_LU, de_LU)
+             14. Malta (mt_MT, en_MT)
+             15. Monaco (fr_MO)
+             16. Montenegro (sla_ME)
+             17. Netherlands (nl_NL)
+             18. Portugal (pt_PT)
+             19. San Marino (it_SM)
+             20. Slovakia (sk_SK)
+             21. Slovenia (sl_SI)
+             22. Spain (es_ES, ca_ES)
+             23. Vatican City (it_VA)
+        -->
+        <!-- Note: Some locales may not have country code, and it it supposed to indicate the
+             country where the language originally/mainly spoken. -->
         <case
-            latin:languageCode="ca"
-            latin:countryCode=""
+            latin:localeCode="de|es|el|fi|fr|it|nl|sk|sl|pt_PT"
         >
             <key-style
                 latin:styleName="currencyKeyStyle"
                 latin:keyLabel="€"
                 latin:popupCharacters="@string/alternates_for_currency_euro" />
         </case>
-        <!-- 2. Austria (de_AT) -->
-<!--        <case-->
-<!--            latin:countryCode="AT"-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
-        <!-- 3. Belgium (nl_BE, fr_BE, de_BE) -->
-<!--        <case-->
-<!--            latin:countryCode="BE"-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
-        <!-- 4. Cyprus (el_CY, tr_CY) -->
         <case
-            latin:countryCode="CY"
+            latin:languageCode="ca|et|lb|mt|sla"
         >
             <key-style
                 latin:styleName="currencyKeyStyle"
                 latin:keyLabel="€"
                 latin:popupCharacters="@string/alternates_for_currency_euro" />
         </case>
-        <!-- 5. Estonia (et_EE) -->
-<!--        <case-->
-<!--            latin:languageCode="et"-->
-<!--            latin:countryCode=""-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
-        <!-- 6. Finland (fi_FI, sv_FI) -->
         <case
-            latin:languageCode="fi"
-            latin:countryCode=""
+            latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA"
         >
             <key-style
                 latin:styleName="currencyKeyStyle"
                 latin:keyLabel="€"
                 latin:popupCharacters="@string/alternates_for_currency_euro" />
         </case>
-        <!-- 7. France (fr_FR) -->
-        <case
-            latin:languageCode="fr"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 8. Germany (de_DE) -->
-        <case
-            latin:languageCode="de"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 9. Greece (el_GR) -->
-        <case
-            latin:languageCode="el"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 10. Ireland (ga_IE, en_IE) -->
-        <case
-            latin:countryCode="IE"
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 11. Italy (it_IT) -->
-        <case
-            latin:languageCode="it"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 12. Kosovo -->
-<!--        <case-->
-<!--            latin:countryCode="XK"-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
-        <!-- 13. Luxembourg (lb_LU, fr_LU, de_LU) -->
-        <case
-            latin:countryCode="LU"
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 14. Malta (mt_MT, en_MT) -->
-        <case
-            latin:countryCode="MT"
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 15. Monaco (fr_MO) -->
-<!--        <case-->
-<!--            latin:countryCode="MO"-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
-        <!-- 16. Montenegro (sla_ME) -->
-        <case
-            latin:countryCode="ME"
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 17. Netherlands (nl_NL) -->
-        <case
-            latin:languageCode="nl"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 18. Portugal (pt_PT) -->
-        <case
-            latin:languageCode="pt"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 19. San Marino (it_SM) -->
-<!--        <case-->
-<!--            latin:countryCode="SM"-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
-        <!-- 20. Slovakia (sk_SK) -->
-        <case
-            latin:languageCode="sk"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 21. Slovenia (sl_SI) -->
-        <case
-            latin:languageCode="sl"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 22. Spain (es_ES, ca_ES) -->
-        <case
-            latin:languageCode="es"
-            latin:countryCode=""
-        >
-            <key-style
-                latin:styleName="currencyKeyStyle"
-                latin:keyLabel="€"
-                latin:popupCharacters="@string/alternates_for_currency_euro" />
-        </case>
-        <!-- 23. Vatican City (it_VA) -->
-<!--        <case-->
-<!--            latin:countryCode="VA"-->
-<!--        >-->
-<!--            <key-style-->
-<!--                latin:styleName="currencyKeyStyle"-->
-<!--                latin:keyLabel="€"-->
-<!--                latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!--        </case>-->
         <!-- United Kingdom -->
         <case
             latin:countryCode="GB"
@@ -266,4 +96,4 @@
                 latin:popupCharacters="@string/alternates_for_currency_dollar" />
         </default>
     </switch>
-</merge>
\ No newline at end of file
+</merge>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index 4ae0113..6408f3e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -467,8 +467,8 @@
         final TypedArray viewAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                 R.styleable.KeyboardView);
         try {
-            final boolean modeMatched = matchInteger(a,
-                    R.styleable.Keyboard_Case_mode, id.mMode);
+            final boolean modeMatched = matchTypedValue(a,
+                    R.styleable.Keyboard_Case_mode, id.mMode, KeyboardId.modeName(id.mMode));
             final boolean webInputMatched = matchBoolean(a,
                     R.styleable.Keyboard_Case_webInput, id.mWebInput);
             final boolean passwordInputMatched = matchBoolean(a,
@@ -487,21 +487,22 @@
             // this attribute with id.mImeOptions as integer value is enough for our purpose.
             final boolean imeActionMatched = matchInteger(a,
                     R.styleable.Keyboard_Case_imeAction, id.mImeAction);
+            final boolean localeCodeMatched = matchString(a,
+                    R.styleable.Keyboard_Case_localeCode, id.mLocale.toString());
             final boolean languageCodeMatched = matchString(a,
                     R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage());
             final boolean countryCodeMatched = matchString(a,
                     R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
             final boolean selected = modeMatched && webInputMatched && passwordInputMatched
                     && settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
-                    && colorSchemeMatched && imeActionMatched && languageCodeMatched
-                    && countryCodeMatched;
+                    && colorSchemeMatched && imeActionMatched && localeCodeMatched
+                    && languageCodeMatched && countryCodeMatched;
 
-            if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
-                    textAttr(KeyboardId.modeName(
-                            a.getInt(R.styleable.Keyboard_Case_mode, -1)), "mode"),
+            if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
+                    textAttr(a.getString(R.styleable.Keyboard_Case_mode), "mode"),
                     textAttr(KeyboardId.colorSchemeName(
                             viewAttr.getInt(
-                                    R.styleable.KeyboardView_colorScheme, -1)), "colorSchemeName"),
+                                    R.styleable.KeyboardView_colorScheme, -1)), "colorScheme"),
                     booleanAttr(a, R.styleable.Keyboard_Case_webInput, "webInput"),
                     booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
                     booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
@@ -509,6 +510,7 @@
                     booleanAttr(a, R.styleable.Keyboard_Case_hasVoiceKey, "hasVoiceKey"),
                     textAttr(EditorInfoCompatUtils.imeOptionsName(
                             a.getInt(R.styleable.Keyboard_Case_imeAction, -1)), "imeAction"),
+                    textAttr(a.getString(R.styleable.Keyboard_Case_localeCode), "localeCode"),
                     textAttr(a.getString(R.styleable.Keyboard_Case_languageCode), "languageCode"),
                     textAttr(a.getString(R.styleable.Keyboard_Case_countryCode), "countryCode"),
                     Boolean.toString(selected)));
@@ -535,7 +537,30 @@
     private static boolean matchString(TypedArray a, int index, String value) {
         // If <case> does not have "index" attribute, that means this <case> is wild-card for the
         // attribute.
-        return !a.hasValue(index) || a.getString(index).equals(value);
+        return !a.hasValue(index) || stringArrayContains(a.getString(index).split("\\|"), value);
+    }
+
+    private static boolean matchTypedValue(TypedArray a, int index, int intValue, String strValue) {
+        // If <case> does not have "index" attribute, that means this <case> is wild-card for the
+        // attribute.
+        final TypedValue v = a.peekValue(index);
+        if (v == null)
+            return true;
+
+        if (isIntegerValue(v)) {
+            return intValue == a.getInt(index, 0);
+        } else if (isStringValue(v)) {
+            return stringArrayContains(a.getString(index).split("\\|"), strValue);
+        }
+        return false;
+    }
+
+    private static boolean stringArrayContains(String[] array, String value) {
+        for (final String elem : array) {
+            if (elem.equals(value))
+                return true;
+        }
+        return false;
     }
 
     private boolean parseDefault(XmlResourceParser parser, Row row, List<Key> keys)
@@ -610,19 +635,34 @@
         final TypedValue value = a.peekValue(index);
         if (value == null)
             return defValue;
-        if (value.type == TypedValue.TYPE_FRACTION) {
+        if (isFractionValue(value)) {
             // Round it to avoid values like 47.9999 from getting truncated
             return Math.round(a.getFraction(index, base, base, defValue));
-        } else if (value.type == TypedValue.TYPE_DIMENSION) {
+        } else if (isDimensionValue(value)) {
             return a.getDimensionPixelOffset(index, defValue);
-        } else if (value.type >= TypedValue.TYPE_FIRST_INT
-                && value.type <= TypedValue.TYPE_LAST_INT) {
+        } else if (isIntegerValue(value)) {
             // For enum value.
             return a.getInt(index, defValue);
         }
         return defValue;
     }
 
+    private static boolean isFractionValue(TypedValue v) {
+        return v.type == TypedValue.TYPE_FRACTION;
+    }
+
+    private static boolean isDimensionValue(TypedValue v) {
+        return v.type == TypedValue.TYPE_DIMENSION;
+    }
+
+    private static boolean isIntegerValue(TypedValue v) {
+        return v.type >= TypedValue.TYPE_FIRST_INT && v.type <= TypedValue.TYPE_LAST_INT;
+    }
+
+    private static boolean isStringValue(TypedValue v) {
+        return v.type == TypedValue.TYPE_STRING;
+    }
+
     @SuppressWarnings("serial")
     public static class ParseException extends InflateException {
         public ParseException(String msg, XmlResourceParser parser) {
