diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index b3bd0fe..bd7c550 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -269,6 +269,10 @@
             <!-- If true, character case of code, altCode, moreKeys, keyOutputText, keyLabel,
                  or keyHintLabel will never be subject to change. -->
             <flag name="preserveCase" value="0x8000" />
+            <!-- If true, use keyTextInactivatedColor for the label -->
+            <flag name="inactivatedLabel" value="0x10000" />
+            <!-- If true, use keyUppercaseLetterInactivatedColor for the uppercase letter -->
+            <flag name="inactivatedUppercaseLetter" value="0x20000" />
         </attr>
         <!-- The icon to display on the key instead of the label. -->
         <attr name="keyIcon" format="enum">
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 9c495fd..bb90653 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -72,6 +72,8 @@
     private static final int LABEL_FLAGS_WITH_ICON_RIGHT = 0x2000;
     private static final int LABEL_FLAGS_AUTO_X_SCALE = 0x4000;
     private static final int LABEL_FLAGS_PRESERVE_CASE = 0x8000;
+    private static final int LABEL_FLAGS_INACTIVATED_LABEL = 0x10000;
+    private static final int LABEL_FLAGS_INACTIVATED_UPPERCASE_LETTER = 0x20000;
 
     /** Icon to display instead of a label. Icon takes precedence over a label */
     private final int mIconAttrId;
@@ -509,6 +511,14 @@
         return (mLabelFlags & LABEL_FLAGS_AUTO_X_SCALE) != 0;
     }
 
+    public boolean isInactivatedLabel() {
+        return (mLabelFlags & LABEL_FLAGS_INACTIVATED_LABEL) != 0;
+    }
+
+    public boolean isInactivatedUppercaseLetter() {
+        return (mLabelFlags & LABEL_FLAGS_INACTIVATED_UPPERCASE_LETTER) != 0;
+    }
+
     // TODO: Get rid of this method.
     public Drawable getIcon(KeyboardIconsSet iconSet) {
         return mEnabled ? mIcon : iconSet.getIconByAttrId(mDisabledIconAttrId);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 6f4ef25..d977327 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -571,8 +571,11 @@
                         Math.min(1.0f, (keyWidth * MAX_LABEL_RATIO) / getLabelWidth(label, paint)));
             }
 
+            // TODO: Remove this first if-clause.
             if (key.hasUppercaseLetter() && mKeyboard.isManualTemporaryUpperCase()) {
                 paint.setColor(params.mKeyTextInactivatedColor);
+            } else if (key.isInactivatedLabel()) {
+                paint.setColor(params.mKeyTextInactivatedColor);
             } else {
                 paint.setColor(params.mKeyTextColor);
             }
@@ -618,9 +621,14 @@
                 hintSize = params.mKeyHintLabelSize;
                 paint.setTypeface(Typeface.DEFAULT);
             } else if (key.hasUppercaseLetter()) {
-                hintColor = mKeyboard.isManualTemporaryUpperCase()
-                        ? params.mKeyUppercaseLetterActivatedColor
-                        : params.mKeyUppercaseLetterInactivatedColor;
+                // TODO: Remove this first if-clause.
+                if (mKeyboard.isManualTemporaryUpperCase()) {
+                    hintColor = params.mKeyUppercaseLetterActivatedColor;
+                } else if (!key.isInactivatedUppercaseLetter()) {
+                    hintColor = params.mKeyUppercaseLetterActivatedColor;
+                } else {
+                    hintColor = params.mKeyUppercaseLetterInactivatedColor;
+                }
                 hintSize = params.mKeyUppercaseLetterSize;
             } else { // key.hasHintLetter()
                 hintColor = params.mKeyHintLetterColor;
