Add Key.keyHintLabel and remove Key.keyHintIcon

This change also removes manualTemporaryUpperCaseCode and
manualTemporaryUpperCaseHintIcon.  Instead of these keyLabelOption now
has hasUppercaseLetter flag value.

Bug: 4436327
Change-Id: I88fdac1e888a7123735296f5ef45f5fdd565cd2e
diff --git a/java/res/drawable-hdpi/key_hint_at_holo.9.png b/java/res/drawable-hdpi/key_hint_at_holo.9.png
deleted file mode 100644
index b93c2d3..0000000
--- a/java/res/drawable-hdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index 2b92951..0000000
--- a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_colon_holo.9.png b/java/res/drawable-hdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 8fa17e5..0000000
--- a/java/res/drawable-hdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 1271341..0000000
--- a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_comma_holo.9.png b/java/res/drawable-hdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index 44220ec..0000000
--- a/java/res/drawable-hdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 444b4d0..0000000
--- a/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index d5e6884..0000000
--- a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 5dab2f6..0000000
--- a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num0.9.png b/java/res/drawable-hdpi/key_hint_num0.9.png
deleted file mode 100644
index 271264e..0000000
--- a/java/res/drawable-hdpi/key_hint_num0.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num1.9.png b/java/res/drawable-hdpi/key_hint_num1.9.png
deleted file mode 100644
index eaf3742..0000000
--- a/java/res/drawable-hdpi/key_hint_num1.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num2.9.png b/java/res/drawable-hdpi/key_hint_num2.9.png
deleted file mode 100644
index 8a16571..0000000
--- a/java/res/drawable-hdpi/key_hint_num2.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num3.9.png b/java/res/drawable-hdpi/key_hint_num3.9.png
deleted file mode 100644
index 34b5011..0000000
--- a/java/res/drawable-hdpi/key_hint_num3.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num4.9.png b/java/res/drawable-hdpi/key_hint_num4.9.png
deleted file mode 100644
index d4cc250..0000000
--- a/java/res/drawable-hdpi/key_hint_num4.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num5.9.png b/java/res/drawable-hdpi/key_hint_num5.9.png
deleted file mode 100644
index 6a054b4..0000000
--- a/java/res/drawable-hdpi/key_hint_num5.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num6.9.png b/java/res/drawable-hdpi/key_hint_num6.9.png
deleted file mode 100644
index 66e9140..0000000
--- a/java/res/drawable-hdpi/key_hint_num6.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num7.9.png b/java/res/drawable-hdpi/key_hint_num7.9.png
deleted file mode 100644
index 5eae24f..0000000
--- a/java/res/drawable-hdpi/key_hint_num7.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num8.9.png b/java/res/drawable-hdpi/key_hint_num8.9.png
deleted file mode 100644
index ea7f512..0000000
--- a/java/res/drawable-hdpi/key_hint_num8.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num9.9.png b/java/res/drawable-hdpi/key_hint_num9.9.png
deleted file mode 100644
index 0bf85de..0000000
--- a/java/res/drawable-hdpi/key_hint_num9.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_plus_holo.9.png b/java/res/drawable-hdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index a11b4ac..0000000
--- a/java/res/drawable-hdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index 3c87c1f..0000000
--- a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_question_holo.9.png b/java/res/drawable-hdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 670b4b9..0000000
--- a/java/res/drawable-hdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 692f4a6..0000000
--- a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 9cc8615..0000000
--- a/java/res/drawable-hdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index 664467b..0000000
--- a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 2cb4077..0000000
--- a/java/res/drawable-hdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index 6b9a491..0000000
--- a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png b/java/res/drawable-land-hdpi/key_hint_at_holo.9.png
deleted file mode 100644
index b93c2d3..0000000
--- a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index 2b92951..0000000
--- a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 8fa17e5..0000000
--- a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 1271341..0000000
--- a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index 44220ec..0000000
--- a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 444b4d0..0000000
--- a/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index d5e6884..0000000
--- a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 5dab2f6..0000000
--- a/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index a11b4ac..0000000
--- a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index 3c87c1f..0000000
--- a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png b/java/res/drawable-land-hdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 670b4b9..0000000
--- a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 692f4a6..0000000
--- a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 9cc8615..0000000
--- a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index 664467b..0000000
--- a/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 2cb4077..0000000
--- a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index 6b9a491..0000000
--- a/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 8c84654..0000000
--- a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index b9e095b..0000000
--- a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 3cd0e3c..0000000
--- a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 01b47b2..0000000
--- a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index b70f71b..0000000
--- a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 1ae82d4..0000000
--- a/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index 3409535..0000000
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 8dd2f27..0000000
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index 51e86ba..0000000
--- a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index bf30f92..0000000
--- a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 38b5d61..0000000
--- a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 448a027..0000000
--- a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 92fe8ea..0000000
--- a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index a777d01..0000000
--- a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 7a452c5..0000000
--- a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index f738b02..0000000
--- a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 1d257cb..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index 53de283..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 73394b5..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index a4a6acb..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index d4dbdf4..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index aea5c8e..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index 078d1d8..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index ddd6b13..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index d0ce9c9..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index 9cf20e8..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 1e886d8..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 8262287..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index fd8bbad..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index 51d5b49..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 37d2fa5..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index 4249a8e..0000000
--- a/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_at_holo.9.png b/java/res/drawable-mdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 8c84654..0000000
--- a/java/res/drawable-mdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index b9e095b..0000000
--- a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-mdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 3cd0e3c..0000000
--- a/java/res/drawable-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 01b47b2..0000000
--- a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-mdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index b70f71b..0000000
--- a/java/res/drawable-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 1ae82d4..0000000
--- a/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index 3409535..0000000
--- a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 8dd2f27..0000000
--- a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num0.9.png b/java/res/drawable-mdpi/key_hint_num0.9.png
deleted file mode 100644
index 61ad1b5..0000000
--- a/java/res/drawable-mdpi/key_hint_num0.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num1.9.png b/java/res/drawable-mdpi/key_hint_num1.9.png
deleted file mode 100644
index cd7772e..0000000
--- a/java/res/drawable-mdpi/key_hint_num1.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num2.9.png b/java/res/drawable-mdpi/key_hint_num2.9.png
deleted file mode 100644
index fa5f8b7..0000000
--- a/java/res/drawable-mdpi/key_hint_num2.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num3.9.png b/java/res/drawable-mdpi/key_hint_num3.9.png
deleted file mode 100644
index 0c7336c..0000000
--- a/java/res/drawable-mdpi/key_hint_num3.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num4.9.png b/java/res/drawable-mdpi/key_hint_num4.9.png
deleted file mode 100644
index 73ef06c..0000000
--- a/java/res/drawable-mdpi/key_hint_num4.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num5.9.png b/java/res/drawable-mdpi/key_hint_num5.9.png
deleted file mode 100644
index aea460e..0000000
--- a/java/res/drawable-mdpi/key_hint_num5.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num6.9.png b/java/res/drawable-mdpi/key_hint_num6.9.png
deleted file mode 100644
index 16a9237..0000000
--- a/java/res/drawable-mdpi/key_hint_num6.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num7.9.png b/java/res/drawable-mdpi/key_hint_num7.9.png
deleted file mode 100644
index 6747a19..0000000
--- a/java/res/drawable-mdpi/key_hint_num7.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num8.9.png b/java/res/drawable-mdpi/key_hint_num8.9.png
deleted file mode 100644
index 28be2fb..0000000
--- a/java/res/drawable-mdpi/key_hint_num8.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num9.9.png b/java/res/drawable-mdpi/key_hint_num9.9.png
deleted file mode 100644
index 731d63b..0000000
--- a/java/res/drawable-mdpi/key_hint_num9.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-mdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index 51e86ba..0000000
--- a/java/res/drawable-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index bf30f92..0000000
--- a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_question_holo.9.png b/java/res/drawable-mdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 38b5d61..0000000
--- a/java/res/drawable-mdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 448a027..0000000
--- a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 92fe8ea..0000000
--- a/java/res/drawable-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index a777d01..0000000
--- a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 7a452c5..0000000
--- a/java/res/drawable-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index f738b02..0000000
--- a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 8c84654..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index b9e095b..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 3cd0e3c..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 01b47b2..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index b70f71b..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 1ae82d4..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index 3409535..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 8dd2f27..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index 51e86ba..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index bf30f92..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 38b5d61..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 448a027..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 92fe8ea..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index a777d01..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 7a452c5..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index f738b02..0000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 5b946ff..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index 852f899..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 1d9346e..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 17e9091..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index c2a913c..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 846f213..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index ce8e8de..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 035dcf8..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index 931390b..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index e6f9f8a..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 6cbeb59..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index bfd58de..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 3b361b7..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index 2a08aa1..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 06f3efb..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index 50f99a1..0000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 8c84654..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index b9e095b..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 3cd0e3c..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index 01b47b2..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index b70f71b..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 1ae82d4..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index 3409535..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index 8dd2f27..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index 51e86ba..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index bf30f92..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 38b5d61..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 448a027..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 92fe8ea..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index a777d01..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 7a452c5..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index f738b02..0000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_at_holo.9.png b/java/res/drawable-xhdpi/key_hint_at_holo.9.png
deleted file mode 100644
index 1d257cb..0000000
--- a/java/res/drawable-xhdpi/key_hint_at_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png
deleted file mode 100644
index 53de283..0000000
--- a/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_colon_holo.9.png b/java/res/drawable-xhdpi/key_hint_colon_holo.9.png
deleted file mode 100644
index 73394b5..0000000
--- a/java/res/drawable-xhdpi/key_hint_colon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png
deleted file mode 100644
index a4a6acb..0000000
--- a/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_comma_holo.9.png b/java/res/drawable-xhdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index d4dbdf4..0000000
--- a/java/res/drawable-xhdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index aea5c8e..0000000
--- a/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png
deleted file mode 100644
index 078d1d8..0000000
--- a/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png
deleted file mode 100644
index ddd6b13..0000000
--- a/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_plus_holo.9.png b/java/res/drawable-xhdpi/key_hint_plus_holo.9.png
deleted file mode 100644
index d0ce9c9..0000000
--- a/java/res/drawable-xhdpi/key_hint_plus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png
deleted file mode 100644
index 9cf20e8..0000000
--- a/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_question_holo.9.png b/java/res/drawable-xhdpi/key_hint_question_holo.9.png
deleted file mode 100644
index 1e886d8..0000000
--- a/java/res/drawable-xhdpi/key_hint_question_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png
deleted file mode 100644
index 8262287..0000000
--- a/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_quote_holo.9.png b/java/res/drawable-xhdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index fd8bbad..0000000
--- a/java/res/drawable-xhdpi/key_hint_quote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png
deleted file mode 100644
index 51d5b49..0000000
--- a/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_underline_holo.9.png b/java/res/drawable-xhdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 37d2fa5..0000000
--- a/java/res/drawable-xhdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index 4249a8e..0000000
--- a/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 6b52ad4..7fc1571 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -30,7 +30,9 @@
     <dimen name="keyboard_bottom_padding">0.0in</dimen>
     <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
     <fraction name="key_letter_ratio">55%</fraction>
-    <fraction name="key_label_text_ratio">35%</fraction>
+    <fraction name="key_label_ratio">35%</fraction>
+    <fraction name="key_hint_letter_ratio">28%</fraction>
+    <fraction name="key_uppercase_letter_ratio">40%</fraction>
     <dimen name="key_preview_offset">0.08in</dimen>
     <fraction name="key_preview_text_ratio">90%</fraction>
     <dimen name="candidate_strip_height">38dip</dimen>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 618b7f4..beb5263 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -31,8 +31,10 @@
     <!-- key_height x 1.0 -->
     <dimen name="key_preview_height">13.0mm</dimen>
 
-    <dimen name="key_letter_size">25dip</dimen>
-    <dimen name="key_label_text_size">18dip</dimen>
+    <fraction name="key_letter_ratio">30.7%</fraction>
+    <fraction name="key_label_ratio">21.9%</fraction>
+    <fraction name="key_hint_letter_ratio">23%</fraction>
+    <fraction name="key_uppercase_letter_ratio">25%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
     <dimen name="candidate_strip_padding">40.0mm</dimen>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 7cdf727..62ab0d2 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -40,7 +40,9 @@
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
     <fraction name="key_letter_ratio">45%</fraction>
-    <fraction name="key_label_text_ratio">29%</fraction>
+    <fraction name="key_label_ratio">29%</fraction>
+    <fraction name="key_hint_letter_ratio">23%</fraction>
+    <fraction name="key_uppercase_letter_ratio">35%</fraction>
     <fraction name="key_preview_text_ratio">82%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index ce36145..81d91ce 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -32,7 +32,9 @@
     <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
 
     <fraction name="key_letter_ratio">30.7%</fraction>
-    <fraction name="key_label_text_ratio">21.9%</fraction>
+    <fraction name="key_label_ratio">21.9%</fraction>
+    <fraction name="key_hint_letter_ratio">23%</fraction>
+    <fraction name="key_uppercase_letter_ratio">25%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
     <dimen name="key_preview_height_holo">26.5mm</dimen>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index cb380fb..74eab5f 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -39,7 +39,9 @@
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
     <fraction name="key_letter_ratio">34.4%</fraction>
-    <fraction name="key_label_text_ratio">21.2%</fraction>
+    <fraction name="key_label_ratio">21.2%</fraction>
+    <fraction name="key_hint_letter_ratio">23%</fraction>
+    <fraction name="key_uppercase_letter_ratio">28%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
     <fraction name="key_preview_text_ratio">26.3%</fraction>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 3bed880..2db529e 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -39,19 +39,27 @@
              checkable+checked+pressed. -->
         <attr name="keyBackground" format="reference" />
 
-        <!-- Size of the text for one letter character keys, in the proportion of key height.
-             -->
+        <!-- Size of the text for one letter keys, in the proportion of key height. -->
         <attr name="keyLetterRatio" format="float" />
-
-        <!-- Size of the text for custom keys with some text and no icon, in the proportion of key
-             height. -->
-        <attr name="labelTextRatio" format="float" />
+        <!-- Size of the text for keys with some text, in the proportion of key height. -->
+        <attr name="keyLabelRatio" format="float" />
+        <!-- Size of the text for hint letter, in the proportion of key height. -->
+        <attr name="keyHintLetterRatio" format="float" />
+        <!-- Size of the text for upper case letter, in the proportion of key height. -->
+        <attr name="keyUppercaseLetterRatio" format="float" />
 
         <!-- Color to use for the label in a key. -->
         <attr name="keyTextColor" format="color" />
+        <!-- Color to use for the label in a key when in inactivated state. -->
+        <attr name="keyTextInactivatedColor" format="color" />
+        <!-- Key hint letter color -->
+        <attr name="keyHintLetterColor" format="color" />
+        <!-- Upper case letter colors -->
+        <attr name="keyUppercaseLetterInactivatedColor" format="color" />
+        <attr name="keyUppercaseLetterActivatedColor" format="color" />
 
-        <!-- Color to use for the label in a key when in disabled state. -->
-        <attr name="keyTextColorDisabled" format="color" />
+        <!-- Popup hint icon "..." -->
+        <attr name="keyPopupHintIcon" format="reference" />
 
         <!-- Layout resource for key press feedback.-->
         <attr name="keyPreviewLayout" format="reference" />
@@ -75,7 +83,7 @@
         <attr name="shadowRadius" format="float" />
         <attr name="backgroundDimAmount" format="float" />
 
-        <attr name="keyLetterStyle" format="enum">
+        <attr name="keyTextStyle" format="enum">
             <!-- This should be aligned with Typeface.NORMAL etc. -->
             <enum name="normal" value="0" />
             <enum name="bold" value="1" />
@@ -131,8 +139,6 @@
         <attr name="verticalGap" format="dimension|fraction" />
         <!-- Popup keyboard layout template -->
         <attr name="popupKeyboardTemplate" format="reference" />
-        <!-- Popup hint icon -->
-        <attr name="popupHintIcon" format="reference" />
         <!-- Locale of the keyboard layout -->
         <attr name="keyboardLocale" format="string" />
     </declare-styleable>
@@ -163,24 +169,20 @@
         <attr name="keyOutputText" format="string" />
         <!-- The label to display on the key. -->
         <attr name="keyLabel" format="string" />
-        <!-- The key label option -->
+        <!-- The hint letter to display on the key in conjunction with the label. -->
+        <attr name="keyHintLetter" format="string" />
+        <!-- The key label option. -->
         <attr name="keyLabelOption" format="integer">
-            <!-- This should be aligned with KeyboardView.KEY_LABEL_OPTION_* -->
+            <!-- This should be aligned with Key.LABEL_OPTION_* -->
             <flag name="alignLeft" value="0x01" />
             <flag name="alignRight" value="0x02" />
             <flag name="alignBottom" value="0x08" />
             <flag name="fontNormal" value="0x10" />
             <flag name="popupHint" value="0x20" />
+            <flag name="hasUppercaseLetter" value="0x40" />
         </attr>
-        <!-- The unicode that this key generates in manual temporary upper case mode. -->
-        <attr name="manualTemporaryUpperCaseCode" format="integer" />
         <!-- The icon to display on the key instead of the label. -->
         <attr name="keyIcon" format="reference" />
-        <!-- The hint icon to display on the key in conjunction with the label -->
-        <attr name="keyHintIcon" format="reference" />
-        <!-- The hint icon to display on the key when keyboard is in manual temporary upper case
-             mode. -->
-        <attr name="manualTemporaryUpperCaseHintIcon" format="reference" />
         <!-- The key style to specify a set of key attributes defined by <key_style/> -->
         <attr name="keyStyle" format="string" />
         <!-- Shift key icon for shifted state -->
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index e26cad3..a76c78a 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -44,7 +44,9 @@
     <dimen name="keyboard_vertical_correction">-0.05in</dimen>
 
     <fraction name="key_letter_ratio">45%</fraction>
-    <fraction name="key_label_text_ratio">29%</fraction>
+    <fraction name="key_label_ratio">29%</fraction>
+    <fraction name="key_hint_letter_ratio">23%</fraction>
+    <fraction name="key_uppercase_letter_ratio">35%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">21dip</dimen>
     <dimen name="key_preview_height">80sp</dimen>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 37f1fe3..6f973d9 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -17,7 +17,6 @@
 <resources>
     <!-- Theme "Basic" -->
     <style name="Keyboard">
-        <item name="popupHintIcon">@drawable/hint_popup</item>
     </style>
     <style name="LatinKeyboard">
         <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
@@ -33,13 +32,19 @@
         <item name="android:background">@drawable/keyboard_background</item>
         <item name="keyBackground">@drawable/btn_keyboard_key</item>
         <item name="keyLetterRatio">@fraction/key_letter_ratio</item>
-        <item name="keyLetterStyle">normal</item>
+        <item name="keyLabelRatio">@fraction/key_label_ratio</item>
+        <item name="keyHintLetterRatio">@fraction/key_hint_letter_ratio</item>
+        <item name="keyUppercaseLetterRatio">@fraction/key_uppercase_letter_ratio</item>
+        <item name="keyTextStyle">normal</item>
         <item name="keyTextColor">#FFFFFFFF</item>
-        <item name="keyTextColorDisabled">#FFFFFFFF</item>
+        <item name="keyTextInactivatedColor">#FFFFFFFF</item>
+        <item name="keyHintLetterColor">#80000000</item>
+        <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
+        <item name="keyUppercaseLetterActivatedColor">#CCE0E4E5</item>
+        <item name="keyPopupHintIcon">@drawable/hint_popup</item>
         <item name="keyPreviewLayout">@layout/key_preview</item>
         <item name="keyPreviewOffset">@dimen/key_preview_offset</item>
         <item name="keyPreviewHeight">@dimen/key_preview_height</item>
-        <item name="labelTextRatio">@fraction/key_label_text_ratio</item>
         <item name="popupLayout">@layout/keyboard_popup</item>
         <item name="keyHysteresisDistance">@dimen/key_hysteresis_distance</item>
         <item name="verticalCorrection">@dimen/keyboard_vertical_correction</item>
@@ -91,7 +96,7 @@
     <style name="KeyboardView.Stone" parent="KeyboardView">
         <item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
         <item name="keyTextColor">@color/latinkeyboard_key_color_black</item>
-        <item name="keyTextColorDisabled">#FF808080</item>
+        <item name="keyTextInactivatedColor">#FF808080</item>
         <item name="shadowColor">@color/latinkeyboard_key_color_white</item>
         <item name="colorScheme">black</item>
     </style>
@@ -102,20 +107,19 @@
     </style>
     <!-- Theme "Stone bold" -->
     <style name="KeyboardView.Stone.Bold" parent="KeyboardView.Stone">
-        <item name="keyLetterStyle">bold</item>
+        <item name="keyTextStyle">bold</item>
     </style>
     <!-- Theme "Gingerbread" -->
     <style name="KeyboardView.Gingerbread" parent="KeyboardView">
         <item name="android:background">@drawable/keyboard_dark_background</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_gingerbread</item>
-        <item name="keyLetterStyle">bold</item>
+        <item name="keyTextStyle">bold</item>
     </style>
     <style name="PopupMiniKeyboardView.Gingerbread" parent="PopupMiniKeyboardView">
         <item name="android:background">@null</item>
     </style>
     <!-- Theme "Honeycomb" -->
     <style name="Keyboard.Honeycomb" parent="Keyboard" >
-        <item name="popupHintIcon">@drawable/hint_popup_holo</item>
     </style>
     <style name="LatinKeyboard.Honeycomb" parent="LatinKeyboard">
         <item name="autoCorrectionSpacebarLedIcon">@null</item>
@@ -124,10 +128,14 @@
     <style name="KeyboardView.Honeycomb" parent="KeyboardView">
         <item name="android:background">@drawable/keyboard_background_holo</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_honeycomb</item>
+        <item name="keyTextStyle">bold</item>
+        <item name="keyTextInactivatedColor">#66E0E4E5</item>
+        <item name="keyHintLetterColor">#80000000</item>
+        <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
+        <item name="keyUppercaseLetterActivatedColor">#FFFFFFFF</item>
+        <item name="keyPopupHintIcon">@drawable/hint_popup_holo</item>
         <item name="keyPreviewHeight">@dimen/key_preview_height_holo</item>
         <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
-        <item name="keyTextColorDisabled">#FF63666D</item>
-        <item name="keyLetterStyle">bold</item>
         <item name="shadowColor">#00000000</item>
         <item name="shadowRadius">0.0</item>
     </style>
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_azerty_rows.xml
index 99c56e4..269c6ef 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_azerty_rows.xml
@@ -137,15 +137,13 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:manualTemporaryUpperCaseCode="33"
-                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="!"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:manualTemporaryUpperCaseCode="63"
-                    latin:keyHintIcon="@drawable/key_hint_question_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\?"
                     latin:popupCharacters="\?" />
             </default>
         </switch>
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index b20bb24..cf0e523 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -36,13 +36,11 @@
     <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
-            latin:code="45"
-            latin:keyLabel=" - "
+            latin:keyLabel="-"
             latin:keyXPos="15.625%p"
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="43"
-            latin:keyLabel=" + "
+            latin:keyLabel="+"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
@@ -59,13 +57,11 @@
     </Row>
     <Row>
         <Key
-            latin:code="44"
-            latin:keyLabel=" , "
+            latin:keyLabel=","
             latin:keyXPos="15.625%p"
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="46"
-            latin:keyLabel=" . "
+            latin:keyLabel="."
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
@@ -88,13 +84,11 @@
         <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
              the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Key
-            latin:code="40"
-            latin:keyLabel=" ( "
+            latin:keyLabel="("
             latin:keyXPos="15.625%p"
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="41"
-            latin:keyLabel=" ) "
+            latin:keyLabel=")"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index 7f62673..3565285 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -36,13 +36,11 @@
     <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
-            latin:code="45"
-            latin:keyLabel=" - "
+            latin:keyLabel="-"
             latin:keyXPos="11.00%p"
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="43"
-            latin:keyLabel=" + "
+            latin:keyLabel="+"
             latin:keyWidth="9.25%p" />
         <Key
             latin:code="44"
@@ -63,13 +61,11 @@
     </Row>
     <Row>
         <Key
-            latin:code="44"
-            latin:keyLabel=" , "
+            latin:keyLabel=","
             latin:keyXPos="11.00%p"
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="46"
-            latin:keyLabel=" . "
+            latin:keyLabel="."
             latin:keyWidth="9.25%p" />
         <Key
             latin:code="59"
@@ -96,16 +92,13 @@
         <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
              the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Key
-            latin:code="40"
-            latin:keyLabel=" ( "
+            latin:keyLabel="("
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="41"
-            latin:keyLabel=" ) "
+            latin:keyLabel=")"
             latin:keyWidth="9.25%p" />
         <Key
-            latin:code="78"
-            latin:keyLabel=" N "
+            latin:keyLabel="N"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index 4118ee1..0dbc5cf 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -58,15 +58,13 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:manualTemporaryUpperCaseCode="33"
-                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="!"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:manualTemporaryUpperCaseCode="63"
-                    latin:keyHintIcon="@drawable/key_hint_question_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\?"
                     latin:popupCharacters="\?" />
             </default>
         </switch>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 3e5492e..49e377f 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -48,9 +48,8 @@
             <default>
                 <Key
                     latin:keyLabel="/"
-                    latin:manualTemporaryUpperCaseCode="64"
-                    latin:keyHintIcon="@drawable/key_hint_at_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\@"
                     latin:popupCharacters="\@" />
             </default>
         </switch>
@@ -75,18 +74,16 @@
                     >
                         <Key
                             latin:keyLabel="/"
-                            latin:manualTemporaryUpperCaseCode="58"
-                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter=":"
                             latin:popupCharacters=":"
                             latin:keyWidth="9.750%p" />
                     </case>
                     <default>
                         <Key
                             latin:keyLabel="\?"
-                            latin:manualTemporaryUpperCaseCode="95"
-                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter="_"
                             latin:popupCharacters="_"
                             latin:keyWidth="9.750%p" />
                     </default>
@@ -102,9 +99,8 @@
                     <default>
                         <Key
                             latin:keyLabel="!"
-                            latin:manualTemporaryUpperCaseCode="39"
-                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter="\'"
                             latin:popupCharacters="\'"
                             latin:keyWidth="9.750%p" />
                     </default>
@@ -125,18 +121,16 @@
                     >
                         <Key
                             latin:keyLabel="/"
-                            latin:manualTemporaryUpperCaseCode="58"
-                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter=":"
                             latin:popupCharacters=":"
                             latin:keyWidth="9.750%p" />
                     </case>
                     <default>
                         <Key
                             latin:keyLabel="\'"
-                            latin:manualTemporaryUpperCaseCode="34"
-                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter="&quot;"
                             latin:popupCharacters="&quot;"
                             latin:keyWidth="9.750%p" />
                     </default>
@@ -152,9 +146,8 @@
                     <default>
                         <Key
                             latin:keyLabel="-"
-                            latin:manualTemporaryUpperCaseCode="95"
-                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter="_"
                             latin:popupCharacters="_"
                             latin:keyWidth="9.750%p" />
                     </default>
diff --git a/java/res/xml-sw600dp/kbd_qwertz_rows.xml b/java/res/xml-sw600dp/kbd_qwertz_rows.xml
index 9e717c8..7ea9b0f 100644
--- a/java/res/xml-sw600dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw600dp/kbd_qwertz_rows.xml
@@ -103,15 +103,13 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:manualTemporaryUpperCaseCode="33"
-                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="!"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:manualTemporaryUpperCaseCode="63"
-                    latin:keyHintIcon="@drawable/key_hint_question_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\?"
                     latin:popupCharacters="\?" />
             </default>
         </switch>
diff --git a/java/res/xml-sw600dp/kbd_row3_right.xml b/java/res/xml-sw600dp/kbd_row3_right.xml
index 6f7d40b..a9c5eb3 100644
--- a/java/res/xml-sw600dp/kbd_row3_right.xml
+++ b/java/res/xml-sw600dp/kbd_row3_right.xml
@@ -36,9 +36,8 @@
         >
             <Key
                 latin:keyLabel="-"
-                latin:manualTemporaryUpperCaseCode="95"
-                latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLetter="_"
                 latin:popupCharacters="_"
                 latin:keyXPos="-8.9%p"
                 latin:keyWidth="fillBoth"
@@ -49,9 +48,8 @@
         >
             <Key
                 latin:keyLabel=":"
-                latin:manualTemporaryUpperCaseCode="43"
-                latin:keyHintIcon="@drawable/key_hint_plus_holo"
-                latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLetter="+"
                 latin:popupCharacters="+"
                 latin:keyXPos="-8.9%p"
                 latin:keyWidth="fillBoth"
diff --git a/java/res/xml-sw600dp/kbd_ru_rows.xml b/java/res/xml-sw600dp/kbd_ru_rows.xml
index 714d1a8..43fa665 100644
--- a/java/res/xml-sw600dp/kbd_ru_rows.xml
+++ b/java/res/xml-sw600dp/kbd_ru_rows.xml
@@ -118,9 +118,8 @@
             latin:keyLabel="ю" />
         <Key
             latin:keyLabel="."
-            latin:manualTemporaryUpperCaseCode="44"
-            latin:keyHintIcon="@drawable/key_hint_comma_holo"
-            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo"
+            latin:keyLabelOption="hasUppercaseLetter"
+            latin:keyHintLetter=","
             latin:popupCharacters="," />
         <include
             latin:keyboardLayout="@xml/kbd_row3_right" />
diff --git a/java/res/xml-sw600dp/kbd_sr_rows.xml b/java/res/xml-sw600dp/kbd_sr_rows.xml
index 62c3b71..80debda 100644
--- a/java/res/xml-sw600dp/kbd_sr_rows.xml
+++ b/java/res/xml-sw600dp/kbd_sr_rows.xml
@@ -126,15 +126,13 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:manualTemporaryUpperCaseCode="33"
-                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="!"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:manualTemporaryUpperCaseCode="63"
-                    latin:keyHintIcon="@drawable/key_hint_question_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\?"
                     latin:popupCharacters="\?" />
             </default>
         </switch>
diff --git a/java/res/xml-sw768dp/kbd_azerty_rows.xml b/java/res/xml-sw768dp/kbd_azerty_rows.xml
index 5288ccf..3bcba00 100644
--- a/java/res/xml-sw768dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw768dp/kbd_azerty_rows.xml
@@ -133,9 +133,8 @@
             latin:popupCharacters="@string/alternates_for_n" />
         <Key
             latin:keyLabel="\'"
-            latin:manualTemporaryUpperCaseCode="58"
-            latin:keyHintIcon="@drawable/key_hint_colon_holo"
-            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+            latin:keyLabelOption="hasUppercaseLetter"
+            latin:keyHintLetter=":"
             latin:popupCharacters=":" />
         <switch>
             <case
@@ -149,15 +148,13 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:manualTemporaryUpperCaseCode="33"
-                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="!"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:manualTemporaryUpperCaseCode="63"
-                    latin:keyHintIcon="@drawable/key_hint_question_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\?"
                     latin:popupCharacters="\?" />
             </default>
         </switch>
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 51627aa..0c65233 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -41,16 +41,12 @@
             latin:keyLabelOption="alignLeft"
             latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
-        <!-- To match one character label size with "Tab", I placed spaces around the char '-'
-             and '+'. -->
         <Key
-            latin:code="45"
-            latin:keyLabel=" - "
+            latin:keyLabel="-"
             latin:keyXPos="20.400%p"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="43"
-            latin:keyLabel=" + "
+            latin:keyLabel="+"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
@@ -70,16 +66,12 @@
             latin:keyStyle="moreKeyStyle"
             latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
-        <!-- To match one character label size with "More", I placed spaces around the char ','
-             and '.'. -->
         <Key
-            latin:code="44"
-            latin:keyLabel=" , "
+            latin:keyLabel=","
             latin:keyXPos="20.400%p"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="46"
-            latin:keyLabel=" . "
+            latin:keyLabel="."
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
@@ -95,18 +87,14 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
-        <!-- To match one character label size with "More", I placed spaces around the char '('
-             and ')'. -->
         <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
              the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Key
-            latin:code="40"
-            latin:keyLabel=" ( "
+            latin:keyLabel="("
             latin:keyXPos="20.400%p"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="41"
-            latin:keyLabel=" ) "
+            latin:keyLabel=")"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index b086b41..da2ac65 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -42,20 +42,16 @@
             latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:code="45"
-            latin:keyLabel=" - "
+            latin:keyLabel="-"
             latin:keyXPos="13.829%p"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="43"
-            latin:keyLabel=" + "
+            latin:keyLabel="+"
             latin:keyWidth="8.047%p" />
         <Key
             latin:code="44"
             latin:keyLabel="@string/label_pause_key"
             latin:keyWidth="8.047%p" />
-        <!-- To match one character label size with "Tab" and "Pause, I placed spaces around the
-             char '-' and '+'. -->
         <Key
             latin:keyStyle="num1KeyStyle"
             latin:keyXPos="43.125%p" />
@@ -75,20 +71,16 @@
             latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:code="44"
-            latin:keyLabel=" , "
+            latin:keyLabel=","
             latin:keyXPos="13.829%p"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="46"
-            latin:keyLabel=" . "
+            latin:keyLabel="."
             latin:keyWidth="8.047%p" />
         <Key
             latin:code="59"
             latin:keyLabel="@string/label_wait_key"
             latin:keyWidth="8.047%p" />
-        <!-- To match one character label size with "More" and "Wait", I placed spaces around the
-             char ',' and '.'. -->
         <Key
             latin:keyStyle="num4KeyStyle"
             latin:keyXPos="43.125%p" />
@@ -103,22 +95,17 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
-        <!-- To match one character label size with "More" and etc., I placed spaces around the
-             char 'N', '(' and ')'. -->
         <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
              the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Key
-            latin:code="40"
-            latin:keyLabel=" ( "
+            latin:keyLabel="("
             latin:keyXPos="13.829%p"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="41"
-            latin:keyLabel=" ) "
+            latin:keyLabel=")"
             latin:keyWidth="8.047%p" />
         <Key
-            latin:code="78"
-            latin:keyLabel=" N "
+            latin:keyLabel="N"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index 0e71cbf..fba2a65 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -58,9 +58,8 @@
                     >
                         <Key
                             latin:keyLabel=":"
-                            latin:manualTemporaryUpperCaseCode="43"
-                            latin:keyHintIcon="@drawable/key_hint_plus_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter="+"
                             latin:popupCharacters="+" />
                     </case>
                     <default>
@@ -78,9 +77,8 @@
                     <default>
                         <Key
                             latin:keyLabel="/"
-                            latin:manualTemporaryUpperCaseCode="64"
-                            latin:keyHintIcon="@drawable/key_hint_at_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+                            latin:keyLabelOption="hasUppercaseLetter"
+                            latin:keyHintLetter="\@"
                             latin:popupCharacters="\@" />
                     </default>
                 </switch>
@@ -102,17 +100,15 @@
             >
                 <Key
                     latin:keyLabel="/"
-                    latin:manualTemporaryUpperCaseCode="58"
-                    latin:keyHintIcon="@drawable/key_hint_colon_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter=":"
                     latin:popupCharacters=":" />
             </case>
             <default>
                 <Key
                     latin:keyLabel="\'"
-                    latin:manualTemporaryUpperCaseCode="34"
-                    latin:keyHintIcon="@drawable/key_hint_quote_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="&quot;"
                     latin:popupCharacters="&quot;" />
             </default>
         </switch>
@@ -126,9 +122,8 @@
             <default>
                 <Key
                     latin:keyLabel="-"
-                    latin:manualTemporaryUpperCaseCode="95"
-                    latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="_"
                     latin:popupCharacters="_" />
             </default>
         </switch>
diff --git a/java/res/xml-sw768dp/kbd_qwertz_rows.xml b/java/res/xml-sw768dp/kbd_qwertz_rows.xml
index 4e937ac..8d5f1e6 100644
--- a/java/res/xml-sw768dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw768dp/kbd_qwertz_rows.xml
@@ -106,15 +106,13 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:manualTemporaryUpperCaseCode="33"
-                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="!"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:manualTemporaryUpperCaseCode="63"
-                    latin:keyHintIcon="@drawable/key_hint_question_holo"
-                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLetter="\?"
                     latin:popupCharacters="\?" />
             </default>
         </switch>
diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw768dp/kbd_row3_right2.xml
index 1759ea1..e90de8e 100644
--- a/java/res/xml-sw768dp/kbd_row3_right2.xml
+++ b/java/res/xml-sw768dp/kbd_row3_right2.xml
@@ -33,15 +33,13 @@
         <default>
             <Key
                 latin:keyLabel=","
-                latin:manualTemporaryUpperCaseCode="33"
-                latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-                latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLetter="!"
                 latin:popupCharacters="!" />
             <Key
                 latin:keyLabel="."
-                latin:manualTemporaryUpperCaseCode="63"
-                latin:keyHintIcon="@drawable/key_hint_question_holo"
-                latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLetter="\?"
                 latin:popupCharacters="\?" />
         </default>
     </switch>
diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_azerty_rows.xml
index 9c81aad..9825c4a 100644
--- a/java/res/xml/kbd_azerty_rows.xml
+++ b/java/res/xml/kbd_azerty_rows.xml
@@ -29,44 +29,44 @@
     >
         <Key
             latin:keyLabel="a"
-            latin:keyHintIcon="@drawable/key_hint_num1"
+            latin:keyHintLetter="1"
             latin:popupCharacters="@string/alternates_for_a"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="z"
-            latin:keyHintIcon="@drawable/key_hint_num2"
+            latin:keyHintLetter="2"
             latin:popupCharacters="@string/alternates_for_z" />
         <Key
             latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/key_hint_num3"
+            latin:keyHintLetter="3"
             latin:popupCharacters="@string/alternates_for_e" />
         <Key
             latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/key_hint_num4"
+            latin:keyHintLetter="4"
             latin:popupCharacters="@string/alternates_for_r" />
         <Key
             latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/key_hint_num5"
+            latin:keyHintLetter="5"
             latin:popupCharacters="@string/alternates_for_t" />
         <Key
             latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/key_hint_num6"
+            latin:keyHintLetter="6"
             latin:popupCharacters="@string/alternates_for_y" />
         <Key
             latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/key_hint_num7"
+            latin:keyHintLetter="7"
             latin:popupCharacters="@string/alternates_for_u" />
         <Key
             latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/key_hint_num8"
+            latin:keyHintLetter="8"
             latin:popupCharacters="@string/alternates_for_i" />
         <Key
             latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/key_hint_num9"
+            latin:keyHintLetter="9"
             latin:popupCharacters="@string/alternates_for_o" />
         <Key
             latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/key_hint_num0"
+            latin:keyHintLetter="0"
             latin:popupCharacters="@string/alternates_for_p"
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml/kbd_qwerty_row1.xml b/java/res/xml/kbd_qwerty_row1.xml
index ba804d3..8c3669d 100644
--- a/java/res/xml/kbd_qwerty_row1.xml
+++ b/java/res/xml/kbd_qwerty_row1.xml
@@ -27,44 +27,44 @@
     >
         <Key
             latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/key_hint_num1"
+            latin:keyHintLetter="1"
             latin:popupCharacters="@string/alternates_for_q"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/key_hint_num2"
+            latin:keyHintLetter="2"
             latin:popupCharacters="@string/alternates_for_w" />
         <Key
             latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/key_hint_num3"
+            latin:keyHintLetter="3"
             latin:popupCharacters="@string/alternates_for_e" />
         <Key
             latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/key_hint_num4"
+            latin:keyHintLetter="4"
             latin:popupCharacters="@string/alternates_for_r" />
         <Key
             latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/key_hint_num5"
+            latin:keyHintLetter="5"
             latin:popupCharacters="@string/alternates_for_t" />
         <Key
             latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/key_hint_num6"
+            latin:keyHintLetter="6"
             latin:popupCharacters="@string/alternates_for_y" />
         <Key
             latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/key_hint_num7"
+            latin:keyHintLetter="7"
             latin:popupCharacters="@string/alternates_for_u" />
         <Key
             latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/key_hint_num8"
+            latin:keyHintLetter="8"
             latin:popupCharacters="@string/alternates_for_i" />
         <Key
             latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/key_hint_num9"
+            latin:keyHintLetter="9"
             latin:popupCharacters="@string/alternates_for_o" />
         <Key
             latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/key_hint_num0"
+            latin:keyHintLetter="0"
             latin:popupCharacters="@string/alternates_for_p"
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml/kbd_qwerty_rows_scandinavia.xml b/java/res/xml/kbd_qwerty_rows_scandinavia.xml
index 8cb0640..2d7dcde 100644
--- a/java/res/xml/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml/kbd_qwerty_rows_scandinavia.xml
@@ -29,45 +29,45 @@
     >
         <Key
             latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/key_hint_num1"
+            latin:keyHintLetter="1"
             latin:popupCharacters="@string/alternates_for_q"
             latin:keyWidth="8.75%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/key_hint_num2"
+            latin:keyHintLetter="2"
             latin:popupCharacters="@string/alternates_for_w" />
         <Key
             latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/key_hint_num3"
+            latin:keyHintLetter="3"
             latin:popupCharacters="@string/alternates_for_e" />
         <Key
             latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/key_hint_num4"
+            latin:keyHintLetter="4"
             latin:popupCharacters="@string/alternates_for_r" />
         <Key
             latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/key_hint_num5"
+            latin:keyHintLetter="5"
             latin:popupCharacters="@string/alternates_for_t" />
         <Key
             latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/key_hint_num6"
+            latin:keyHintLetter="6"
             latin:popupCharacters="@string/alternates_for_y" />
         <Key
             latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/key_hint_num7"
+            latin:keyHintLetter="7"
             latin:popupCharacters="@string/alternates_for_u" />
         <Key
             latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/key_hint_num8"
+            latin:keyHintLetter="8"
             latin:popupCharacters="@string/alternates_for_i" />
         <Key
             latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/key_hint_num9"
+            latin:keyHintLetter="9"
             latin:popupCharacters="@string/alternates_for_o" />
         <Key
             latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/key_hint_num0"
+            latin:keyHintLetter="0"
             latin:popupCharacters="@string/alternates_for_p" />
         <Key
             latin:keyLabel="å"
diff --git a/java/res/xml/kbd_qwertz_rows.xml b/java/res/xml/kbd_qwertz_rows.xml
index 603cf35..0d70b26 100644
--- a/java/res/xml/kbd_qwertz_rows.xml
+++ b/java/res/xml/kbd_qwertz_rows.xml
@@ -29,44 +29,44 @@
     >
         <Key
             latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/key_hint_num1"
+            latin:keyHintLetter="1"
             latin:popupCharacters="@string/alternates_for_q"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/key_hint_num2"
+            latin:keyHintLetter="2"
             latin:popupCharacters="@string/alternates_for_w" />
         <Key
             latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/key_hint_num3"
+            latin:keyHintLetter="3"
             latin:popupCharacters="@string/alternates_for_e" />
         <Key
             latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/key_hint_num4"
+            latin:keyHintLetter="4"
             latin:popupCharacters="@string/alternates_for_r" />
         <Key
             latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/key_hint_num5"
+            latin:keyHintLetter="5"
             latin:popupCharacters="@string/alternates_for_t" />
         <Key
             latin:keyLabel="z"
-            latin:keyHintIcon="@drawable/key_hint_num6"
+            latin:keyHintLetter="6"
             latin:popupCharacters="@string/alternates_for_z" />
         <Key
             latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/key_hint_num7"
+            latin:keyHintLetter="7"
             latin:popupCharacters="@string/alternates_for_u" />
         <Key
             latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/key_hint_num8"
+            latin:keyHintLetter="8"
             latin:popupCharacters="@string/alternates_for_i" />
         <Key
             latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/key_hint_num9"
+            latin:keyHintLetter="9"
             latin:popupCharacters="@string/alternates_for_o" />
         <Key
             latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/key_hint_num0"
+            latin:keyHintLetter="0"
             latin:popupCharacters="@string/alternates_for_p"
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml/kbd_ru_rows.xml b/java/res/xml/kbd_ru_rows.xml
index 76250a3..ff9fef4 100644
--- a/java/res/xml/kbd_ru_rows.xml
+++ b/java/res/xml/kbd_ru_rows.xml
@@ -29,45 +29,45 @@
     >
         <Key
             latin:keyLabel="й"
-            latin:keyHintIcon="@drawable/key_hint_num1"
+            latin:keyHintLetter="1"
             latin:popupCharacters="1"
             latin:keyWidth="8.75%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="ц"
-            latin:keyHintIcon="@drawable/key_hint_num2"
+            latin:keyHintLetter="2"
             latin:popupCharacters="2" />
         <Key
             latin:keyLabel="у"
-            latin:keyHintIcon="@drawable/key_hint_num3"
+            latin:keyHintLetter="3"
             latin:popupCharacters="3" />
         <Key
             latin:keyLabel="к"
-            latin:keyHintIcon="@drawable/key_hint_num4"
+            latin:keyHintLetter="4"
             latin:popupCharacters="4" />
         <Key
             latin:keyLabel="е"
-            latin:keyHintIcon="@drawable/key_hint_num5"
+            latin:keyHintLetter="5"
             latin:popupCharacters="@string/alternates_for_cyrillic_e" />
         <Key
             latin:keyLabel="н"
-            latin:keyHintIcon="@drawable/key_hint_num6"
+            latin:keyHintLetter="6"
             latin:popupCharacters="6" />
         <Key
             latin:keyLabel="г"
-            latin:keyHintIcon="@drawable/key_hint_num7"
+            latin:keyHintLetter="7"
             latin:popupCharacters="7" />
         <Key
             latin:keyLabel="ш"
-            latin:keyHintIcon="@drawable/key_hint_num8"
+            latin:keyHintLetter="8"
             latin:popupCharacters="8" />
         <Key
             latin:keyLabel="щ"
-            latin:keyHintIcon="@drawable/key_hint_num9"
+            latin:keyHintLetter="9"
             latin:popupCharacters="9" />
         <Key
             latin:keyLabel="з"
-            latin:keyHintIcon="@drawable/key_hint_num0"
+            latin:keyHintLetter="0"
             latin:popupCharacters="0" />
         <Key
             latin:keyLabel="х"
diff --git a/java/res/xml/kbd_sr_rows.xml b/java/res/xml/kbd_sr_rows.xml
index 139af80..9f4b6a2 100644
--- a/java/res/xml/kbd_sr_rows.xml
+++ b/java/res/xml/kbd_sr_rows.xml
@@ -29,44 +29,44 @@
     >
         <Key
             latin:keyLabel="љ"
-            latin:keyHintIcon="@drawable/key_hint_num1"
+            latin:keyHintLetter="1"
             latin:popupCharacters="1"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="њ"
-            latin:keyHintIcon="@drawable/key_hint_num2"
+            latin:keyHintLetter="2"
             latin:popupCharacters="2" />
         <Key
             latin:keyLabel="е"
-            latin:keyHintIcon="@drawable/key_hint_num3"
+            latin:keyHintLetter="3"
             latin:popupCharacters="3" />
         <Key
             latin:keyLabel="р"
-            latin:keyHintIcon="@drawable/key_hint_num4"
+            latin:keyHintLetter="4"
             latin:popupCharacters="4" />
         <Key
             latin:keyLabel="т"
-            latin:keyHintIcon="@drawable/key_hint_num5"
+            latin:keyHintLetter="5"
             latin:popupCharacters="5" />
         <Key
             latin:keyLabel="з"
-            latin:keyHintIcon="@drawable/key_hint_num6"
+            latin:keyHintLetter="6"
             latin:popupCharacters="6" />
         <Key
             latin:keyLabel="у"
-            latin:keyHintIcon="@drawable/key_hint_num7"
+            latin:keyHintLetter="7"
             latin:popupCharacters="7" />
         <Key
             latin:keyLabel="и"
-            latin:keyHintIcon="@drawable/key_hint_num8"
+            latin:keyHintLetter="8"
             latin:popupCharacters="8" />
         <Key
             latin:keyLabel="о"
-            latin:keyHintIcon="@drawable/key_hint_num9"
+            latin:keyHintLetter="9"
             latin:popupCharacters="9" />
         <Key
             latin:keyLabel="п"
-            latin:keyHintIcon="@drawable/key_hint_num0"
+            latin:keyHintLetter="0"
             latin:popupCharacters="0" />
         <Key
             latin:keyLabel="ш"
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index cb52946..e5ee272 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -37,25 +37,24 @@
      * The key code (unicode or custom code) that this key generates.
      */
     public final int mCode;
-    /** The unicode that this key generates in manual temporary upper case mode. */
-    public final int mManualTemporaryUpperCaseCode;
 
     /** Label to display */
     public final CharSequence mLabel;
+    /** Hint letter to display on the key in conjunction with the label */
+    public final CharSequence mHintLetter;
     /** Option of the label */
     public final int mLabelOption;
+    public static final int LABEL_OPTION_ALIGN_LEFT = 0x01;
+    public static final int LABEL_OPTION_ALIGN_RIGHT = 0x02;
+    public static final int LABEL_OPTION_ALIGN_BOTTOM = 0x08;
+    public static final int LABEL_OPTION_FONT_NORMAL = 0x10;
+    private static final int LABEL_OPTION_POPUP_HINT = 0x20;
+    private static final int LABEL_OPTION_HAS_UPPERCASE_LETTER = 0x40;
 
     /** Icon to display instead of a label. Icon takes precedence over a label */
     private Drawable mIcon;
     /** Preview version of the icon, for the preview popup */
     private Drawable mPreviewIcon;
-    /** Hint icon to display on the key in conjunction with the label */
-    public final Drawable mHintIcon;
-    /**
-     * The hint icon to display on the key when keyboard is in manual temporary upper case
-     * mode.
-     */
-    public final Drawable mManualTemporaryUpperCaseHintIcon;
 
     /** Width of the key, not including the gap */
     public final int mWidth;
@@ -154,9 +153,7 @@
         mVisualInsetsLeft = mVisualInsetsRight = 0;
         mWidth = width - mGap;
         mEdgeFlags = edgeFlags;
-        mHintIcon = null;
-        mManualTemporaryUpperCaseHintIcon = null;
-        mManualTemporaryUpperCaseCode = Keyboard.CODE_DUMMY;
+        mHintLetter = null;
         mLabelOption = 0;
         mFunctional = false;
         mSticky = false;
@@ -273,16 +270,10 @@
             Keyboard.setDefaultBounds(mPreviewIcon);
             mIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_keyIcon);
             Keyboard.setDefaultBounds(mIcon);
-            mHintIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_keyHintIcon);
-            Keyboard.setDefaultBounds(mHintIcon);
-            mManualTemporaryUpperCaseHintIcon = style.getDrawable(keyAttr,
-                    R.styleable.Keyboard_Key_manualTemporaryUpperCaseHintIcon);
-            Keyboard.setDefaultBounds(mManualTemporaryUpperCaseHintIcon);
+            mHintLetter = style.getText(keyAttr, R.styleable.Keyboard_Key_keyHintLetter);
 
             mLabel = style.getText(keyAttr, R.styleable.Keyboard_Key_keyLabel);
             mLabelOption = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelOption, 0);
-            mManualTemporaryUpperCaseCode = style.getInt(keyAttr,
-                    R.styleable.Keyboard_Key_manualTemporaryUpperCaseCode, Keyboard.CODE_DUMMY);
             mOutputText = style.getText(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
             // Choose the first letter of the label as primary code if not
             // specified.
@@ -305,6 +296,14 @@
         }
     }
 
+    public boolean hasPopupHint() {
+        return (mLabelOption & LABEL_OPTION_POPUP_HINT) != 0;
+    }
+
+    public boolean hasUppercaseLetter() {
+        return (mLabelOption & LABEL_OPTION_HAS_UPPERCASE_LETTER) != 0;
+    }
+
     private static boolean isDigitPopupCharacter(CharSequence label) {
         return label != null && label.length() == 1 && Character.isDigit(label.charAt(0));
     }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/KeyStyles.java
index d53df78..ce5ee54 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyStyles.java
@@ -183,7 +183,7 @@
             readText(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
             readDrawable(keyAttr, R.styleable.Keyboard_Key_keyIcon);
             readDrawable(keyAttr, R.styleable.Keyboard_Key_iconPreview);
-            readDrawable(keyAttr, R.styleable.Keyboard_Key_keyHintIcon);
+            readText(keyAttr, R.styleable.Keyboard_Key_keyHintLetter);
             readDrawable(keyAttr, R.styleable.Keyboard_Key_shiftedIcon);
             readBoolean(keyAttr, R.styleable.Keyboard_Key_isFunctional);
             readBoolean(keyAttr, R.styleable.Keyboard_Key_isSticky);
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 77a4cde..3db214e 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -147,8 +147,6 @@
 
     private final ProximityInfo mProximityInfo;
 
-    public final Drawable mPopupHintIcon;
-
     /**
      * Creates a keyboard from the given xml key layout file.
      * @param context the application or service context
@@ -178,7 +176,6 @@
 
         final TypedArray attrs = context.obtainStyledAttributes(
                 null, R.styleable.Keyboard, R.attr.keyboardStyle, R.style.Keyboard);
-        mPopupHintIcon = attrs.getDrawable(R.styleable.Keyboard_popupHintIcon);
         attrs.recycle();
 
         loadKeyboard(context, xmlLayoutResId);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 7182634..44f2ff3 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -63,13 +63,18 @@
  * @attr ref R.styleable#KeyboardView_keyBackground
  * @attr ref R.styleable#KeyboardView_keyHysteresisDistance
  * @attr ref R.styleable#KeyboardView_keyLetterRatio
- * @attr ref R.styleable#KeyboardView_keyLetterStyle
+ * @attr ref R.styleable#KeyboardView_keyLabelRatio
+ * @attr ref R.styleable#KeyboardView_keyHintLetterRatio
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterRatio
+ * @attr ref R.styleable#KeyboardView_keyTextStyle
  * @attr ref R.styleable#KeyboardView_keyPreviewLayout
  * @attr ref R.styleable#KeyboardView_keyPreviewOffset
  * @attr ref R.styleable#KeyboardView_keyPreviewHeight
  * @attr ref R.styleable#KeyboardView_keyTextColor
  * @attr ref R.styleable#KeyboardView_keyTextColorDisabled
- * @attr ref R.styleable#KeyboardView_labelTextRatio
+ * @attr ref R.styleable#KeyboardView_keyHintLetterColor
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterInactivatedColor
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterActivatedColor
  * @attr ref R.styleable#KeyboardView_verticalCorrection
  * @attr ref R.styleable#KeyboardView_popupLayout
  * @attr ref R.styleable#KeyboardView_shadowColor
@@ -96,9 +101,11 @@
     // XML attribute
     private final float mKeyLetterRatio;
     private final int mKeyTextColor;
-    private final int mKeyTextColorDisabled;
-    private final Typeface mKeyLetterStyle;
-    private final float mLabelTextRatio;
+    private final int mKeyTextInactivatedColor;
+    private final Typeface mKeyTextStyle;
+    private final float mKeyLabelRatio;
+    private final float mKeyHintLetterRatio;
+    private final float mKeyUppercaseLetterRatio;
     private final int mColorScheme;
     private final int mShadowColor;
     private final float mShadowRadius;
@@ -109,11 +116,17 @@
     private final int mPreviewOffset;
     private final int mPreviewHeight;
     private final int mPopupLayout;
+    private final Drawable mKeyPopupHintIcon;
+    private final int mKeyHintLetterColor;
+    private final int mKeyUppercaseLetterInactivatedColor;
+    private final int mKeyUppercaseLetterActivatedColor;
 
     // Main keyboard
     private Keyboard mKeyboard;
     private int mKeyLetterSize;
-    private int mLabelTextSize;
+    private int mKeyLabelSize;
+    private int mKeyHintLetterSize;
+    private int mKeyUppercaseLetterSize;
 
     // Key preview
     private boolean mInForeground;
@@ -168,19 +181,17 @@
     private Bitmap mBuffer;
     /** The canvas for the above mutable keyboard bitmap */
     private Canvas mCanvas;
-    private final Paint mPaint;
-    private final Rect mPadding;
+    private final Paint mPaint = new Paint();
+    private final Rect mPadding = new Rect();
+    private final Rect mTextBounds = new Rect();
     // This map caches key label text height in pixel as value and key label text size as map key.
     private final HashMap<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>();
+    // This map caches key label text width in pixel as value and key label text size as map key.
+    private final HashMap<Integer, Integer> mTextWidthCache = new HashMap<Integer, Integer>();
     // Distance from horizontal center of the key, proportional to key label text height and width.
-    private final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f;
-    private final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f;
-    private final String KEY_LABEL_REFERENCE_CHAR = "H";
-    private final int KEY_LABEL_OPTION_ALIGN_LEFT = 0x01;
-    private final int KEY_LABEL_OPTION_ALIGN_RIGHT = 0x02;
-    private final int KEY_LABEL_OPTION_ALIGN_BOTTOM = 0x08;
-    private final int KEY_LABEL_OPTION_FONT_NORMAL = 0x10;
-    private final int KEY_LABEL_OPTION_POPUP_HINT = 0x20;
+    private static final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f;
+    private static final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f;
+    private static final String KEY_LABEL_REFERENCE_CHAR = "M";
     private final int mKeyLabelHorizontalPadding;
 
     private final UIHandler mHandler = new UIHandler();
@@ -322,17 +333,26 @@
         mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0);
         mPreviewHeight = a.getDimensionPixelSize(R.styleable.KeyboardView_keyPreviewHeight, 80);
         mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio);
+        mKeyLabelRatio = getRatio(a, R.styleable.KeyboardView_keyLabelRatio);
+        mKeyHintLetterRatio = getRatio(a, R.styleable.KeyboardView_keyHintLetterRatio);
+        mKeyUppercaseLetterRatio = getRatio(a,
+                R.styleable.KeyboardView_keyUppercaseLetterRatio);
         mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000);
-        mKeyTextColorDisabled = a.getColor(
-                R.styleable.KeyboardView_keyTextColorDisabled, 0xFF000000);
-        mLabelTextRatio = getRatio(a, R.styleable.KeyboardView_labelTextRatio);
+        mKeyTextInactivatedColor = a.getColor(
+                R.styleable.KeyboardView_keyTextInactivatedColor, 0xFF000000);
+        mKeyPopupHintIcon = a.getDrawable(R.styleable.KeyboardView_keyPopupHintIcon);
+        mKeyHintLetterColor = a.getColor(R.styleable.KeyboardView_keyHintLetterColor, 0);
+        mKeyUppercaseLetterInactivatedColor = a.getColor(
+                R.styleable.KeyboardView_keyUppercaseLetterInactivatedColor, 0);
+        mKeyUppercaseLetterActivatedColor = a.getColor(
+                R.styleable.KeyboardView_keyUppercaseLetterActivatedColor, 0);
+        mKeyTextStyle = Typeface.defaultFromStyle(
+                a.getInt(R.styleable.KeyboardView_keyTextStyle, Typeface.NORMAL));
         mPopupLayout = a.getResourceId(R.styleable.KeyboardView_popupLayout, 0);
         mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, 0);
         mShadowRadius = a.getFloat(R.styleable.KeyboardView_shadowRadius, 0f);
         // TODO: Use Theme (android.R.styleable.Theme_backgroundDimAmount)
         mBackgroundDimAmount = a.getFloat(R.styleable.KeyboardView_backgroundDimAmount, 0.5f);
-        mKeyLetterStyle = Typeface.defaultFromStyle(
-                a.getInt(R.styleable.KeyboardView_keyLetterStyle, Typeface.NORMAL));
         mColorScheme = a.getInt(R.styleable.KeyboardView_colorScheme, COLOR_SCHEME_WHITE);
         a.recycle();
 
@@ -349,12 +369,10 @@
         mKeyLabelHorizontalPadding = (int)res.getDimension(
                 R.dimen.key_label_horizontal_alignment_padding);
 
-        mPaint = new Paint();
         mPaint.setAntiAlias(true);
         mPaint.setTextAlign(Align.CENTER);
         mPaint.setAlpha(255);
 
-        mPadding = new Rect(0, 0, 0, 0);
         mKeyBackground.getPadding(mPadding);
 
         mSwipeThreshold = (int) (500 * res.getDisplayMetrics().density);
@@ -498,7 +516,10 @@
         mPopupPanelCache.clear();
         final int keyHeight = keyboard.getRowHeight() - keyboard.getVerticalGap();
         mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
-        mLabelTextSize = (int)(keyHeight * mLabelTextRatio);
+        mKeyLabelSize = (int)(keyHeight * mKeyLabelRatio);
+        mKeyHintLetterSize = (int)(keyHeight * mKeyHintLetterRatio);
+        mKeyUppercaseLetterSize = (int)(
+                keyHeight * mKeyUppercaseLetterRatio);
         mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio);
     }
 
@@ -685,7 +706,7 @@
 
             // Vertical label text alignment.
             final float baseline;
-            if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_BOTTOM) != 0) {
+            if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_BOTTOM) != 0) {
                 baseline = key.mHeight - labelCharHeight * KEY_LABEL_VERTICAL_PADDING_FACTOR;
                 if (DEBUG_SHOW_ALIGN)
                     drawHorizontalLine(canvas, (int)baseline, keyDrawWidth, 0xc0008000,
@@ -699,12 +720,12 @@
             }
             // Horizontal label text alignment
             final int positionX;
-            if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) {
+            if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
                 positionX = mKeyLabelHorizontalPadding + padding.left;
                 paint.setTextAlign(Align.LEFT);
                 if (DEBUG_SHOW_ALIGN)
                     drawVerticalLine(canvas, positionX, rowHeight, 0xc0800080, new Paint());
-            } else if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) {
+            } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
                 positionX = keyDrawWidth - mKeyLabelHorizontalPadding - padding.right;
                 paint.setTextAlign(Align.RIGHT);
                 if (DEBUG_SHOW_ALIGN)
@@ -717,8 +738,8 @@
                         drawVerticalLine(canvas, positionX, rowHeight, 0xc0008080, new Paint());
                 }
             }
-            if (key.mManualTemporaryUpperCaseHintIcon != null && isManualTemporaryUpperCase) {
-                paint.setColor(mKeyTextColorDisabled);
+            if (key.hasUppercaseLetter() && isManualTemporaryUpperCase) {
+                paint.setColor(mKeyTextInactivatedColor);
             } else {
                 paint.setColor(mKeyTextColor);
             }
@@ -734,6 +755,27 @@
             paint.setShadowLayer(0, 0, 0, 0);
         }
 
+        // Draw hint letter.
+        if (key.mHintLetter != null) {
+            final String label = key.mHintLetter.toString();
+            final int textColor;
+            final int textSize;
+            if (key.hasUppercaseLetter()) {
+                textColor = isManualTemporaryUpperCase ? mKeyUppercaseLetterActivatedColor
+                        : mKeyUppercaseLetterInactivatedColor;
+                textSize = mKeyUppercaseLetterSize;
+            } else {
+                textColor = mKeyHintLetterColor;
+                textSize = mKeyHintLetterSize;
+            }
+            paint.setColor(textColor);
+            paint.setTextSize(textSize);
+            // Note: padding.right for drawX?
+            final float drawX = keyDrawWidth - getLabelCharWidth(textSize, paint);
+            final float drawY = -paint.ascent() + padding.top;
+            canvas.drawText(label, drawX, drawY, paint);
+        }
+
         // Draw key icon.
         final Drawable icon = key.getIcon();
         if (key.mLabel == null && icon != null) {
@@ -741,11 +783,11 @@
             final int drawableHeight = icon.getIntrinsicHeight();
             final int drawableX;
             final int drawableY = (key.mHeight + padding.top - padding.bottom - drawableHeight) / 2;
-            if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) {
+            if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
                 drawableX = padding.left + mKeyLabelHorizontalPadding;
                 if (DEBUG_SHOW_ALIGN)
                     drawVerticalLine(canvas, drawableX, rowHeight, 0xc0800080, new Paint());
-            } else if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) {
+            } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
                 drawableX = keyDrawWidth - padding.right - mKeyLabelHorizontalPadding
                         - drawableWidth;
                 if (DEBUG_SHOW_ALIGN)
@@ -763,16 +805,14 @@
                         0x80c00000, new Paint());
         }
 
-        // Draw hint icon.
-        if (key.mHintIcon != null || (key.mLabelOption & KEY_LABEL_OPTION_POPUP_HINT) != 0) {
+        // Draw popup hint icon "...".
+        // TODO: Draw "..." by text.
+        if (key.hasPopupHint()) {
             final int drawableWidth = keyDrawWidth;
             final int drawableHeight = key.mHeight;
             final int drawableX = 0;
             final int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL;
-            Drawable hintIcon = (isManualTemporaryUpperCase
-                    && key.mManualTemporaryUpperCaseHintIcon != null)
-                    ? key.mManualTemporaryUpperCaseHintIcon
-                    : (key.mHintIcon != null ? key.mHintIcon : mKeyboard.mPopupHintIcon);
+            final Drawable hintIcon = mKeyPopupHintIcon;
             drawIcon(canvas, hintIcon, drawableX, drawableY, drawableWidth, drawableHeight);
             if (DEBUG_SHOW_ALIGN)
                 drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight,
@@ -787,15 +827,15 @@
         final int labelSize;
         final Typeface labelStyle;
         if (label.length() > 1) {
-            labelSize = mLabelTextSize;
-            if ((keyLabelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) {
+            labelSize = mKeyLabelSize;
+            if ((keyLabelOption & Key.LABEL_OPTION_FONT_NORMAL) != 0) {
                 labelStyle = Typeface.DEFAULT;
             } else {
                 labelStyle = Typeface.DEFAULT_BOLD;
             }
         } else {
             labelSize = mKeyLetterSize;
-            labelStyle = mKeyLetterStyle;
+            labelStyle = mKeyTextStyle;
         }
         paint.setTextSize(labelSize);
         paint.setTypeface(labelStyle);
@@ -808,14 +848,26 @@
         if (labelHeightValue != null) {
             labelCharHeight = labelHeightValue;
         } else {
-            Rect textBounds = new Rect();
-            paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds);
-            labelCharHeight = textBounds.height();
+            paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds);
+            labelCharHeight = mTextBounds.height();
             mTextHeightCache.put(labelSize, labelCharHeight);
         }
         return labelCharHeight;
     }
 
+    private int getLabelCharWidth(int labelSize, Paint paint) {
+        Integer labelWidthValue = mTextWidthCache.get(labelSize);
+        final int labelCharWidth;
+        if (labelWidthValue != null) {
+            labelCharWidth = labelWidthValue;
+        } else {
+            paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds);
+            labelCharWidth = mTextBounds.width();
+            mTextWidthCache.put(labelSize, labelCharWidth);
+        }
+        return labelCharWidth;
+    }
+
     private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
             int height) {
         canvas.translate(x, y);
@@ -938,7 +990,7 @@
                 previewText.setTypeface(Typeface.DEFAULT_BOLD);
             } else {
                 previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize);
-                previewText.setTypeface(mKeyLetterStyle);
+                previewText.setTypeface(mKeyTextStyle);
             }
         } else {
             final Drawable previewIcon = key.getPreviewIcon();
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index cf84589..397ac7e 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -639,8 +639,7 @@
         Key key = getKey(keyIndex);
         if (key.mCode == Keyboard.CODE_SHIFT) {
             mHandler.startLongPressShiftTimer(mLongPressShiftKeyTimeout, keyIndex, this);
-        } else if (key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY
-                && mKeyboard.isManualTemporaryUpperCase()) {
+        } else if (key.hasUppercaseLetter() && mKeyboard.isManualTemporaryUpperCase()) {
             // We need not start long press timer on the key which has manual temporary upper case
             // code defined and the keyboard is in manual temporary upper case mode.
             return;
@@ -667,10 +666,9 @@
             mKeyDetector.getKeyIndexAndNearbyCodes(x, y, codes);
 
             // If keyboard is in manual temporary upper case state and key has manual temporary
-            // shift code, alternate character code should be sent.
-            if (mKeyboard.isManualTemporaryUpperCase()
-                    && key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY) {
-                code = key.mManualTemporaryUpperCaseCode;
+            // uppercase letter as key hint letter, alternate character code should be sent.
+            if (mKeyboard.isManualTemporaryUpperCase() && key.hasUppercaseLetter()) {
+                code = key.mHintLetter.charAt(0);
                 codes[0] = code;
             }