Merge "Refactor of SuggestionSpanUtils"
diff --git a/java/res/drawable-hdpi/btn_close_candidates_pane.9.png b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
new file mode 100644
index 0000000..6df00f2
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png
new file mode 100644
index 0000000..63015ec
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png
Binary files differ
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/btn_close_candidates_pane.9.png b/java/res/drawable-mdpi/btn_close_candidates_pane.9.png
new file mode 100644
index 0000000..5ea5692
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_close_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png
new file mode 100644
index 0000000..83cb653
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png
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/layout/candidates_strip.xml b/java/res/layout/candidates_strip.xml
new file mode 100644
index 0000000..88f4c38
--- /dev/null
+++ b/java/res/layout/candidates_strip.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ android:id="@+id/candidate_left"
+ layout="@layout/candidate" />
+ <include
+ layout="@layout/candidate_divider" />
+ <include
+ android:id="@+id/candidate_center"
+ layout="@layout/candidate" />
+ <include
+ layout="@layout/candidate_divider" />
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ >
+ <include
+ android:id="@+id/candidate_right"
+ layout="@layout/candidate" />
+ <!-- Image drawables are set in CandidateView constructor -->
+ <ImageButton
+ android:id="@+id/expand_candidates_pane"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle" />
+ <ImageButton
+ android:id="@+id/close_candidates_pane"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle" />
+ </LinearLayout>
+</merge>
diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml
index 5da1a48..f0a8ef9 100644
--- a/java/res/layout/input_view.xml
+++ b/java/res/layout/input_view.xml
@@ -32,32 +32,46 @@
android:id="@+id/candidates_container"
android:orientation="horizontal"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="?attr/suggestionsStripBackgroundStyle"
+ android:layout_height="@dimen/candidate_strip_minimum_height"
+ android:gravity="bottom"
>
<View
android:layout_width="@dimen/candidate_strip_padding"
android:layout_height="@dimen/candidate_strip_height"
style="?attr/suggestionsStripBackgroundStyle" />
- <HorizontalScrollView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length"
- android:scrollbars="none"
- >
- <com.android.inputmethod.latin.CandidateView
- android:id="@+id/candidates"
- android:layout_width="match_parent"
- android:layout_height="@dimen/candidate_strip_height"
- android:gravity="center_vertical" />
- </HorizontalScrollView>
+ <com.android.inputmethod.latin.CandidateView
+ android:id="@+id/candidates"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/candidate_strip_height"
+ android:gravity="center_vertical" />
<View
android:layout_width="@dimen/candidate_strip_padding"
android:layout_height="@dimen/candidate_strip_height"
style="?attr/suggestionsStripBackgroundStyle" />
</LinearLayout>
+ <LinearLayout
+ android:id="@+id/candidates_pane_container"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle"
+ >
+ <View
+ android:layout_width="@dimen/candidate_strip_padding"
+ android:layout_height="@dimen/candidate_strip_height" />
+ <FrameLayout
+ android:id="@+id/candidates_pane"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent" />
+ <View
+ android:layout_width="@dimen/candidate_strip_padding"
+ android:layout_height="@dimen/candidate_strip_height" />
+ </LinearLayout>
+
<com.android.inputmethod.keyboard.LatinKeyboardView
android:id="@+id/keyboard_view"
android:layout_alignParentBottom="true"
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..a7167af 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -21,6 +21,7 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
<dimen name="keyboardHeight">45.0mm</dimen>
+ <fraction name="minKeyboardHeight">45%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">14.5mm</dimen> -->
<dimen name="key_bottom_gap">1.3mm</dimen>
@@ -31,8 +32,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">45%</fraction>
+ <fraction name="key_label_ratio">32%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">29%</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/config.xml b/java/res/values-sw600dp/config.xml
index c3d3445..6125270 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -26,7 +26,6 @@
<bool name="config_enable_show_recorrection_option">false</bool>
<bool name="config_enable_quick_fixes_option">false</bool>
<bool name="config_enable_bigram_suggestions_option">false</bool>
- <bool name="config_candidate_highlight_font_color_enabled">false</bool>
<bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool>
<bool name="config_sliding_key_input_enabled">false</bool>
<bool name="config_digit_popup_characters_enabled">false</bool>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 7cdf727..8ecf542 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -22,7 +22,7 @@
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
<dimen name="keyboardHeight">48.0mm</dimen>
<fraction name="maxKeyboardHeight">50%p</fraction>
- <fraction name="minKeyboardHeight">-61.8%p</fraction>
+ <fraction name="minKeyboardHeight">-35.0%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">14.5mm</dimen> -->
<dimen name="key_bottom_gap">1.0mm</dimen>
@@ -39,8 +39,10 @@
<!-- popup_key_height x -1.0 -->
<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_letter_ratio">37%</fraction>
+ <fraction name="key_label_ratio">22%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">25%</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..73885c2 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -31,8 +31,10 @@
<dimen name="keyboard_bottom_padding">0.0mm</dimen>
<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_letter_ratio">38%</fraction>
+ <fraction name="key_label_ratio">26%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">24%</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/config.xml b/java/res/values-sw768dp/config.xml
index 663332f..95d5e7e 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -26,7 +26,6 @@
<bool name="config_enable_show_recorrection_option">false</bool>
<bool name="config_enable_quick_fixes_option">false</bool>
<bool name="config_enable_bigram_suggestions_option">false</bool>
- <bool name="config_candidate_highlight_font_color_enabled">false</bool>
<bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool>
<bool name="config_sliding_key_input_enabled">false</bool>
<bool name="config_digit_popup_characters_enabled">false</bool>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index cb380fb..d8d1332 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -21,6 +21,7 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=12mm -->
<dimen name="keyboardHeight">48.0mm</dimen>
+ <fraction name="maxKeyboardHeight">50%p</fraction>
<fraction name="minKeyboardHeight">-35.0%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">14.5mm</dimen> -->
@@ -38,8 +39,10 @@
<!-- popup_key_height x -1.0 -->
<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_letter_ratio">38%</fraction>
+ <fraction name="key_label_ratio">26%</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">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 5557dde..73f62c6 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -16,6 +16,10 @@
<resources>
<declare-styleable name="KeyboardTheme">
+ <!-- Keyboard style -->
+ <attr name="keyboardStyle" format="reference" />
+ <!-- LatinKeyboard style -->
+ <attr name="latinKeyboardStyle" format="reference" />
<!-- KeyboardView style -->
<attr name="keyboardViewStyle" format="reference" />
<attr name="keyPreviewStyle" format="reference" />
@@ -26,6 +30,7 @@
<attr name="suggestionsStripBackgroundStyle" format="reference" />
<attr name="suggestionBackgroundStyle" format="reference" />
<attr name="suggestionPreviewBackgroundStyle" format="reference" />
+ <attr name="candidateViewStyle" format="reference" />
</declare-styleable>
<declare-styleable name="KeyboardView">
@@ -34,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" />
@@ -70,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" />
@@ -86,6 +99,19 @@
</declare-styleable>
+ <declare-styleable name="CandidateView">
+ <attr name="autoCorrectHighlight" format="integer">
+ <flag name="autoCorrectBold" value="0x01" />
+ <flag name="autoCorrectUnderline" value="0x02" />
+ <flag name="autoCorrectInvert" value="0x04" />
+ </attr>
+ <attr name="colorTypedWord" format="color" />
+ <attr name="colorAutoCorrect" format="color" />
+ <attr name="colorSuggested" format="color" />
+ <attr name="iconExpandPane" format="reference" />
+ <attr name="iconClosePane" format="reference" />
+ </declare-styleable>
+
<declare-styleable name="Keyboard">
<!-- Default keyboard height -->
<attr name="keyboardHeight" format="dimension" />
@@ -143,23 +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_* -->
- <flag name="alignLeft" value="1" />
- <flag name="alignRight" value="2" />
- <flag name="alignBottom" value="8" />
- <flag name="fontNormal" value="16" />
+ <!-- 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 -->
@@ -198,11 +221,11 @@
<enum name="phone" value="4" />
<enum name="number" value="5" />
</attr>
- <attr name="webInput" format="boolean" />
+ <attr name="navigateAction" format="boolean" />
<attr name="passwordInput" format="boolean" />
- <attr name="hasSettingsKey" format="string" />
- <attr name="voiceKeyEnabled" format="string" />
- <attr name="hasVoiceKey" format="string" />
+ <attr name="hasSettingsKey" format="boolean" />
+ <attr name="voiceKeyEnabled" format="boolean" />
+ <attr name="hasVoiceKey" format="boolean" />
<attr name="imeAction" format="enum">
<!-- This should be aligned with EditorInfo.IME_ACTION_* -->
<enum name="actionUnspecified" value="0" />
@@ -223,4 +246,15 @@
<attr name="styleName" format="string" />
<attr name="parentStyle" format="string" />
</declare-styleable>
+
+ <declare-styleable name="LatinKeyboard">
+ <attr name="autoCorrectionSpacebarLedIcon" format="reference" />
+ <attr name="disabledShortcutIcon" format="reference" />
+ <attr name="spacebarTextColor" format="color" />
+ <attr name="spacebarTextShadowColor" format="color" />
+ <attr name="spacebarArrowLeftIcon" format="reference" />
+ <attr name="spacebarArrowRightIcon" format="reference" />
+ <attr name="spacebarArrowPreviewLeftIcon" format="reference" />
+ <attr name="spacebarArrowPreviewRightIcon" format="reference" />
+ </declare-styleable>
</resources>
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 05d137e..d786918 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -18,9 +18,6 @@
*/
-->
<resources>
- <color name="candidate_typed_word">#FFFFFFFF</color>
- <color name="candidate_auto_correct">#FFFCAE00</color>
- <color name="candidate_suggested">#FFFCAE00</color>
<color name="latinkeyboard_bar_language_shadow_white">#80000000</color>
<color name="latinkeyboard_bar_language_shadow_black">#80FFFFFF</color>
<color name="latinkeyboard_bar_language_text">#FFC0C0C0</color>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index c61a6d5..a08e2ae 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -27,7 +27,6 @@
<bool name="config_enable_quick_fixes_option">true</bool>
<bool name="config_enable_bigram_suggestions_option">true</bool>
<bool name="config_enable_usability_study_mode_option">false</bool>
- <bool name="config_candidate_highlight_font_color_enabled">true</bool>
<bool name="config_swipe_down_dismiss_keyboard_enabled">true</bool>
<bool name="config_sliding_key_input_enabled">true</bool>
<bool name="config_digit_popup_characters_enabled">true</bool>
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 7cb4593..e3ee361 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -16,17 +16,43 @@
<resources>
<!-- Theme "Basic" -->
+ <style name="Keyboard">
+ <item name="rowHeight">25%p</item>
+ <item name="keyboardHeight">@dimen/keyboardHeight</item>
+ <item name="maxKeyboardHeight">@fraction/maxKeyboardHeight</item>
+ <item name="minKeyboardHeight">@fraction/minKeyboardHeight</item>
+ <item name="popupKeyboardTemplate">@xml/kbd_popup_template</item>
+ <item name="horizontalGap">@dimen/key_horizontal_gap</item>
+ <item name="verticalGap">@dimen/key_bottom_gap</item>
+ <item name="maxPopupKeyboardColumn">@integer/config_max_popup_keyboard_column</item>
+ </style>
+ <style name="LatinKeyboard">
+ <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ <item name="spacebarTextColor">@color/latinkeyboard_bar_language_text</item>
+ <item name="spacebarTextShadowColor">@color/latinkeyboard_bar_language_shadow_white</item>
+ <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
+ <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
+ <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
+ <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
+ </style>
<style name="KeyboardView">
<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>
@@ -57,16 +83,28 @@
<style name="SuggestionPreviewBackgroundStyle">
<item name="android:background">@drawable/candidate_feedback_background</item>
</style>
+ <style name="CandidateViewStyle" parent="SuggestionsStripBackgroundStyle">
+ <item name="colorTypedWord">#FFFFFFFF</item>
+ <item name="colorAutoCorrect">#FFFCAE00</item>
+ <item name="colorSuggested">#FFFCAE00</item>
+ <item name="iconExpandPane">@drawable/btn_expand_candidates_pane</item>
+ <item name="iconClosePane">@drawable/btn_close_candidates_pane</item>"
+ </style>
<!-- Theme "Basic high contrast" -->
<style name="KeyboardView.HighContrast" parent="KeyboardView">
<item name="android:background">@android:color/black</item>
<item name="keyBackground">@drawable/btn_keyboard_key3</item>
</style>
<!-- Theme "Stone" -->
+ <style name="LatinKeyboard.Stone" patent="LatinKeyboard">
+ <item name="spacebarTextColor">#FF444444</item>
+ <item name="spacebarTextShadowColor">@color/latinkeyboard_bar_language_shadow_black</item>
+ <item name="disabledShortcutIcon">@drawable/sym_bkeyboard_voice_off</item>
+ </style>
<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>
@@ -77,25 +115,35 @@
</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" >
+ </style>
+ <style name="LatinKeyboard.Honeycomb" parent="LatinKeyboard">
+ <item name="autoCorrectionSpacebarLedIcon">@null</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ </style>
<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>
@@ -111,15 +159,23 @@
<item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding_holo</item>
<item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding_holo</item>
</style>
- <style name="SuggestionsStripBackgroundStyle.Holo">
+ <style name="SuggestionsStripBackgroundStyle.Honeycomb">
<item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
</style>
- <style name="SuggestionBackgroundStyle.Holo">
+ <style name="SuggestionBackgroundStyle.Honeycomb">
<item name="android:background">@drawable/btn_candidate_holo</item>
</style>
- <style name="SuggestionPreviewBackgroundStyle.Holo">
+ <style name="SuggestionPreviewBackgroundStyle.Honeycomb">
<item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
</style>
+ <style name="CandidateViewStyle.Honeycomb" parent="SuggestionsStripBackgroundStyle.Honeycomb">
+ <item name="autoCorrectHighlight">autoCorrectUnderline|autoCorrectInvert</item>
+ <item name="colorTypedWord">#FFFFFFFF</item>
+ <item name="colorAutoCorrect">#FFFFFFFF</item>
+ <item name="colorSuggested">#FFFFFFFF</item>
+ <item name="iconExpandPane">@drawable/btn_expand_candidates_pane</item>
+ <item name="iconClosePane">@drawable/btn_close_candidates_pane</item>"
+ </style>
<style name="PopupMiniKeyboardAnimation">
<item name="android:windowEnterAnimation">@anim/mini_keyboard_fadein</item>
<item name="android:windowExitAnimation">@anim/mini_keyboard_fadeout</item>
diff --git a/java/res/values/themes.xml b/java/res/values/themes.xml
index 5315a9a..728ce5a 100644
--- a/java/res/values/themes.xml
+++ b/java/res/values/themes.xml
@@ -16,6 +16,8 @@
<resources>
<style name="KeyboardTheme" parent="android:Theme">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
<item name="keyboardViewStyle">@style/KeyboardView</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
@@ -23,45 +25,61 @@
<item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
<item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
<item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.HighContrast" parent="android:Theme">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
<item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
<item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
<item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
<item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Stone" parent="android:Theme.Light">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
<item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
<item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
<item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
<item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Stone.Bold" parent="android:Theme.Light">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
<item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
<item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
<item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
<item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Gingerbread" parent="android:Theme.Black">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
<item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
<item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
<item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
<item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Honeycomb" parent="android:Theme.Holo">
+ <item name="keyboardStyle">@style/Keyboard.Honeycomb</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.Honeycomb</item>
<item name="keyboardViewStyle">@style/KeyboardView.Honeycomb</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle.Honeycomb</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Honeycomb</item>
<item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.Honeycomb</item>
- <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Holo</item>
- <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Holo</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Honeycomb</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Honeycomb</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle.Honeycomb</item>
</style>
</resources>
diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml
index 57823c9..57a6d2c 100644
--- a/java/res/xml-ar/kbd_qwerty.xml
+++ b/java/res/xml-ar/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="ar"
>
<include
- latin:keyboardLayout="@xml/kbd_ar_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_arabic" />
</Keyboard>
diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
index 9ead49c..9991ea2 100644
--- a/java/res/xml-cs/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="cs"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index 12ea33c..37a50fd 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="da"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index 5c51bbd..89e10b2 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="de"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-en/kbd_qwerty.xml b/java/res/xml-en/kbd_qwerty.xml
deleted file mode 100644
index 33e24d3..0000000
--- a/java/res/xml-en/kbd_qwerty.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- TODO: This is work around to avoid resource selection issue. This file must be removed when the
- issue is sorted out. -->
-<Keyboard
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
- latin:keyboardLocale="en,en_US,en_GB"
->
- <include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
-</Keyboard>
diff --git a/java/res/xml-es/kbd_qwerty.xml b/java/res/xml-es/kbd_qwerty.xml
index f986491..3973a6a 100644
--- a/java/res/xml-es/kbd_qwerty.xml
+++ b/java/res/xml-es/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="es,es_US"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml
index e35ab2b..75721e0 100644
--- a/java/res/xml-fi/kbd_qwerty.xml
+++ b/java/res/xml-fi/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="fi"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml
index 7f25848..7bdfbad 100644
--- a/java/res/xml-fr-rCA/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCA/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="fr_CA"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml
index 2baed3c..41b701d 100644
--- a/java/res/xml-fr-rCH/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCH/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="fr_CH"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 1b10655..8c730a2 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="fr"
>
<include
- latin:keyboardLayout="@xml/kbd_azerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_azerty" />
</Keyboard>
diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
index 250b455..3195d5b 100644
--- a/java/res/xml-hu/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="hu"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index e93927f..dc2c5d3 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="iw"
>
<include
- latin:keyboardLayout="@xml/kbd_iw_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_hebrew" />
</Keyboard>
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index e7a743c..1f4e86e 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="nb"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-pl/kbd_qwerty.xml b/java/res/xml-pl/kbd_qwerty.xml
index 7d9476d..44312c5 100644
--- a/java/res/xml-pl/kbd_qwerty.xml
+++ b/java/res/xml-pl/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="pl"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-pt/kbd_qwerty.xml b/java/res/xml-pt/kbd_qwerty.xml
index 1a89955..f5dcbc6 100644
--- a/java/res/xml-pt/kbd_qwerty.xml
+++ b/java/res/xml-pt/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="pt"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index 826818c..aee1b1b 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="ru"
>
<include
- latin:keyboardLayout="@xml/kbd_ru_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_russian" />
</Keyboard>
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 6116c75..58fc187 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="sr"
>
<include
- latin:keyboardLayout="@xml/kbd_sr_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_serbian" />
</Keyboard>
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 69f0b3f..e29d9ab 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="sv"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index a98ffe6..a388879 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -75,7 +75,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<switch>
@@ -87,7 +87,7 @@
latin:code="@integer/key_shortcut"
latin:keyIcon="@drawable/sym_keyboard_voice_holo"
latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</case>
@@ -137,7 +137,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<switch>
@@ -149,7 +149,7 @@
latin:code="@integer/key_shortcut"
latin:keyIcon="@drawable/sym_bkeyboard_mic"
latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</case>
@@ -192,9 +192,8 @@
<key-style
latin:styleName="comKeyStyle"
latin:keyLabel="@string/keylabel_for_popular_domain"
- latin:keyLabelOption="fontNormal"
+ latin:keyLabelOption="fontNormal|popupHint"
latin:keyOutputText="@string/keylabel_for_popular_domain"
- latin:keyHintIcon="@drawable/hint_popup_holo"
latin:popupCharacters="@string/alternates_for_popular_domain" />
<switch>
<case
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index f9096fc..0ff1da9 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -20,14 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
latin:keyWidth="16.75%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index b20bb24..20b2849 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -20,14 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
latin:keyWidth="16.75%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
@@ -36,13 +29,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 +50,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 +77,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..a5ae945 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -20,14 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
latin:keyWidth="16.75%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
@@ -36,13 +29,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 +54,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 +85,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.xml b/java/res/xml-sw600dp/kbd_qwerty.xml
deleted file mode 100644
index 9541e13..0000000
--- a/java/res/xml-sw600dp/kbd_qwerty.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<Keyboard
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
- latin:keyWidth="10%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
->
- <include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
-</Keyboard>
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="""
latin:popupCharacters="""
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_qwerty_rows_scandinavia.xml b/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml
deleted file mode 100644
index 0bdcd21..0000000
--- a/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <include
- latin:keyboardLayout="@xml/kbd_key_styles" />
- <Row
- latin:keyWidth="8.0%p"
- latin:rowEdgeFlags="top"
- >
- <Key
- latin:keyLabel="q"
- latin:popupCharacters="@string/alternates_for_q"
- latin:keyXPos="2.15%p"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="w"
- latin:popupCharacters="@string/alternates_for_w" />
- <Key
- latin:keyLabel="e"
- latin:popupCharacters="@string/alternates_for_e" />
- <Key
- latin:keyLabel="r"
- latin:popupCharacters="@string/alternates_for_r" />
- <Key
- latin:keyLabel="t"
- latin:popupCharacters="@string/alternates_for_t" />
- <Key
- latin:keyLabel="y"
- latin:popupCharacters="@string/alternates_for_y" />
- <Key
- latin:keyLabel="u"
- latin:popupCharacters="@string/alternates_for_u" />
- <Key
- latin:keyLabel="i"
- latin:popupCharacters="@string/alternates_for_i" />
- <Key
- latin:keyLabel="o"
- latin:popupCharacters="@string/alternates_for_o" />
- <Key
- latin:keyLabel="p"
- latin:popupCharacters="@string/alternates_for_p" />
- <Key
- latin:keyLabel="å" />
- <Key
- latin:keyStyle="deleteKeyStyle"
- latin:keyXPos="-10.0%p"
- latin:keyWidth="fillBoth"
- latin:keyEdgeFlags="right" />
- </Row>
- <Row
- latin:keyWidth="8.0%p"
- >
- <Key
- latin:keyLabel="a"
- latin:popupCharacters="@string/alternates_for_a"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="s"
- latin:popupCharacters="@string/alternates_for_s" />
- <Key
- latin:keyLabel="d"
- latin:popupCharacters="@string/alternates_for_d" />
- <Key
- latin:keyLabel="f" />
- <Key
- latin:keyLabel="g"
- latin:popupCharacters="@string/alternates_for_g" />
- <Key
- latin:keyLabel="h" />
- <Key
- latin:keyLabel="j" />
- <Key
- latin:keyLabel="k"
- latin:popupCharacters="@string/alternates_for_k" />
- <Key
- latin:keyLabel="l"
- latin:popupCharacters="@string/alternates_for_l" />
- <Key
- latin:keyLabel="@string/keylabel_for_scandinavia_row2_10"
- latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" />
- <Key
- latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
- latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyXPos="-14.6%p"
- latin:keyWidth="fillBoth"
- latin:keyEdgeFlags="right" />
- </Row>
- <include
- latin:keyboardLayout="@xml/kbd_qwerty_row3" />
- <include
- latin:keyboardLayout="@xml/kbd_qwerty_row4" />
-</merge>
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_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
new file mode 100644
index 0000000..bc37d5a
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- This file for Arabic layout is an alpha version. It allows to enter -->
+<!-- some right-to-left text, but it has gone through no study whatsoever, -->
+<!-- and needs to be run through UX. -->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="8.0%p"
+ >
+ <Key
+ latin:keyLabel="ض"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ص" />
+ <Key
+ latin:keyLabel="ث" />
+ <Key
+ latin:keyLabel="ق" />
+ <Key
+ latin:keyLabel="ف"
+ latin:popupCharacters="ف,ڤ" />
+ <Key
+ latin:keyLabel="غ" />
+ <Key
+ latin:keyLabel="ع" />
+ <Key
+ latin:keyLabel="ه"
+ latin:popupCharacters="ه,هـ" />
+ <Key
+ latin:keyLabel="خ" />
+ <Key
+ latin:keyLabel="ح" />
+ <Key
+ latin:keyLabel="ج"
+ latin:popupCharacters="ج,چ" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.0%p"
+ >
+ <Key
+ latin:keyLabel="ش"
+ latin:keyXPos="3.0%p" />
+ <Key
+ latin:keyLabel="س" />
+ <Key
+ latin:keyLabel="ي" />
+ <Key
+ latin:keyLabel="ب"
+ latin:popupCharacters="ب,پ" />
+ <Key
+ latin:keyLabel="ل"
+ latin:popupCharacters="ل,لا" />
+ <Key
+ latin:keyLabel="ا"
+ latin:popupCharacters="ا,أ,إ,آ" />
+ <Key
+ latin:keyLabel="ت" />
+ <Key
+ latin:keyLabel="ن" />
+ <Key
+ latin:keyLabel="م" />
+ <Key
+ latin:keyLabel="ك"
+ latin:popupCharacters="ك,گ" />
+ <Key
+ latin:keyLabel="ط" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.65%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="8.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ئ" />
+ <Key
+ latin:keyLabel="ء" />
+ <Key
+ latin:keyLabel="ؤ" />
+ <Key
+ latin:keyLabel="ر" />
+ <Key
+ latin:keyLabel="ذ" />
+ <Key
+ latin:keyLabel="ى" />
+ <Key
+ latin:keyLabel="ة" />
+ <Key
+ latin:keyLabel="و" />
+ <Key
+ latin:keyLabel="ز"
+ latin:popupCharacters="ز,ژ" />
+ <Key
+ latin:keyLabel="ظ" />
+ <Key
+ latin:keyLabel="د" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml
similarity index 88%
rename from java/res/xml-sw600dp/kbd_azerty_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_azerty.xml
index 99c56e4..4df45eb 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml
@@ -24,7 +24,7 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="9.0%p"
+ latin:keyWidth="8.5%p"
latin:rowEdgeFlags="top"
>
<Key
@@ -65,11 +65,12 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="9.0%p"
+ latin:keyWidth="8.5%p"
>
<Key
latin:keyLabel="q"
latin:popupCharacters="@string/alternates_for_q"
+ latin:keyXPos="5.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="s"
@@ -101,7 +102,7 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.9%p"
+ latin:keyWidth="8.5%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
@@ -137,15 +138,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_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
new file mode 100644
index 0000000..a147537
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="8.600%p"
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ <Key
+ latin:keyLabel="ק" />
+ <Key
+ latin:keyLabel="ר" />
+ <Key
+ latin:keyLabel="א" />
+ <Key
+ latin:keyLabel="ט" />
+ <Key
+ latin:keyLabel="ו" />
+ <Key
+ latin:keyLabel="ן" />
+ <Key
+ latin:keyLabel="ם" />
+ <Key
+ latin:keyLabel="פ" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-12.000%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.600%p"
+ >
+ <Key
+ latin:keyLabel="ש"
+ latin:keyXPos="4.000%p" />
+ <Key
+ latin:keyLabel="ד" />
+ <Key
+ latin:keyLabel="ג"
+ latin:popupCharacters="ג,ג׳" />
+ <Key
+ latin:keyLabel="כ" />
+ <Key
+ latin:keyLabel="ע" />
+ <Key
+ latin:keyLabel="י"
+ latin:popupCharacters="י,ײַ" />
+ <Key
+ latin:keyLabel="ח"
+ latin:popupCharacters="ח,ח׳" />
+ <Key
+ latin:keyLabel="ל" />
+ <Key
+ latin:keyLabel="ך" />
+ <Key
+ latin:keyLabel="ף" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-10.400%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.600%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.000%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ז"
+ latin:popupCharacters="ז,ז׳" />
+ <Key
+ latin:keyLabel="ס" />
+ <Key
+ latin:keyLabel="ב" />
+ <Key
+ latin:keyLabel="ה" />
+ <Key
+ latin:keyLabel="נ" />
+ <Key
+ latin:keyLabel="מ" />
+ <Key
+ latin:keyLabel="צ"
+ latin:popupCharacters="צ,צ׳" />
+ <Key
+ latin:keyLabel="ת"
+ latin:popupCharacters="ת,ת׳" />
+ <Key
+ latin:keyLabel="ץ"
+ latin:popupCharacters="ץ,ץ׳" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_qwerty.xml
similarity index 100%
rename from java/res/xml-sw600dp/kbd_qwerty_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_qwerty.xml
diff --git a/java/res/xml-sw600dp/kbd_qwertz_rows.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
similarity index 88%
rename from java/res/xml-sw600dp/kbd_qwertz_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_qwertz.xml
index 9e717c8..7ea9b0f 100644
--- a/java/res/xml-sw600dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_qwertz.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_ru_rows.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml
similarity index 94%
rename from java/res/xml-sw600dp/kbd_ru_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_russian.xml
index 714d1a8..43fa665 100644
--- a/java/res/xml-sw600dp/kbd_ru_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_russian.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_azerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
similarity index 84%
copy from java/res/xml-sw600dp/kbd_azerty_rows.xml
copy to java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 99c56e4..3666ead 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -24,16 +24,16 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="9.0%p"
+ latin:keyWidth="7.9%p"
latin:rowEdgeFlags="top"
>
<Key
- latin:keyLabel="a"
- latin:popupCharacters="@string/alternates_for_a"
+ latin:keyLabel="q"
+ latin:popupCharacters="@string/alternates_for_q"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="z"
- latin:popupCharacters="@string/alternates_for_z" />
+ latin:keyLabel="w"
+ latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
latin:popupCharacters="@string/alternates_for_e" />
@@ -59,17 +59,20 @@
latin:keyLabel="p"
latin:popupCharacters="@string/alternates_for_p" />
<Key
+ latin:keyLabel="å" />
+ <Key
latin:keyStyle="deleteKeyStyle"
latin:keyXPos="-10.0%p"
latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="9.0%p"
+ latin:keyWidth="7.9%p"
>
<Key
- latin:keyLabel="q"
- latin:popupCharacters="@string/alternates_for_q"
+ latin:keyLabel="a"
+ latin:keyXPos="3.5%p"
+ latin:popupCharacters="@string/alternates_for_a"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="s"
@@ -93,7 +96,11 @@
latin:keyLabel="l"
latin:popupCharacters="@string/alternates_for_l" />
<Key
- latin:keyLabel="m" />
+ latin:keyLabel="@string/keylabel_for_scandinavia_row2_10"
+ latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
+ latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyXPos="-14.6%p"
@@ -101,15 +108,17 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.9%p"
+ latin:keyWidth="7.9%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
latin:keyWidth="10.0%p"
latin:keyEdgeFlags="left" />
+ <Spacer
+ latin:keyWidth="4.35%p" />
<Key
- latin:keyLabel="w"
- latin:popupCharacters="@string/alternates_for_w" />
+ latin:keyLabel="z"
+ latin:popupCharacters="@string/alternates_for_z" />
<Key
latin:keyLabel="x" />
<Key
@@ -124,7 +133,7 @@
latin:keyLabel="n"
latin:popupCharacters="@string/alternates_for_n" />
<Key
- latin:keyLabel="\'" />
+ latin:keyLabel="m" />
<switch>
<case
latin:mode="email"
@@ -137,21 +146,21 @@
<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>
+ <Spacer
+ latin:keyWidth="4.35%p" />
<include
latin:keyboardLayout="@xml/kbd_row3_right" />
- </Row>
+ </Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-sw600dp/kbd_sr_rows.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml
similarity index 88%
rename from java/res/xml-sw600dp/kbd_sr_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_serbian.xml
index 62c3b71..80debda 100644
--- a/java/res/xml-sw600dp/kbd_sr_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_serbian.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-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 3593c77..4d3e7d3 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -20,13 +20,6 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 4cef3a7..1743c0f 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -20,13 +20,6 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 57eaccb..4388e89 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -62,7 +62,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<key-style
@@ -116,7 +116,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<key-style
@@ -161,9 +161,8 @@
<key-style
latin:styleName="comKeyStyle"
latin:keyLabel="@string/keylabel_for_popular_domain"
- latin:keyLabelOption="fontNormal"
+ latin:keyLabelOption="fontNormal|popupHint"
latin:keyOutputText="@string/keylabel_for_popular_domain"
- latin:keyHintIcon="@drawable/hint_popup_holo"
latin:popupCharacters="@string/alternates_for_popular_domain" />
<switch>
<case
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index faab38a..4f33e41 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="13.250%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 51627aa..69169ff 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="13.250%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
@@ -41,16 +33,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 +58,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 +79,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..e95579c 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="13.250%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
@@ -42,20 +34,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 +63,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 +87,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="""
latin:popupCharacters=""" />
</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_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-sw768dp/kbd_ar_rows.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_ar_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_arabic.xml
diff --git a/java/res/xml-sw768dp/kbd_azerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_azerty.xml
similarity index 88%
rename from java/res/xml-sw768dp/kbd_azerty_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_azerty.xml
index 5288ccf..3bcba00 100644
--- a/java/res/xml-sw768dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_azerty.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_iw_rows.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_iw_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_hebrew.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwerty.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_qwerty_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_qwerty.xml
diff --git a/java/res/xml-sw768dp/kbd_qwertz_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwertz.xml
similarity index 88%
rename from java/res/xml-sw768dp/kbd_qwertz_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_qwertz.xml
index 4e937ac..8d5f1e6 100644
--- a/java/res/xml-sw768dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_qwertz.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_ru_rows.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_ru_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_russian.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
rename to java/res/xml-sw768dp/kbd_rows_scandinavian.xml
diff --git a/java/res/xml-sw768dp/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_sr_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_serbian.xml
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 5b359bf..d1a83c4 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -20,14 +20,6 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml
index 94bd761..dde144f 100644
--- a/java/res/xml-sw768dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml
@@ -20,14 +20,6 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index f888b23..63c019d 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -50,7 +50,7 @@
<default>
<key-style
latin:styleName="settingsPopupStyle"
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</default>
@@ -308,7 +308,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5"
latin:parentStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml
index 23b88a5..429b818 100644
--- a/java/res/xml/kbd_number.xml
+++ b/java/res/xml/kbd_number.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="26.67%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index e1d1ee8..211f7b7 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="26.67%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 2af218c..c651363 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="26.67%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index f0c1fa7..40917b9 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
latin:keyboardLocale="en_GB,en_US"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml
index e89d02d..88dfab1 100644
--- a/java/res/xml/kbd_qwerty_f1.xml
+++ b/java/res/xml/kbd_qwerty_f1.xml
@@ -46,7 +46,7 @@
</case>
<!-- latin:hasVoiceKey="false" -->
<case
- latin:webInput="true"
+ latin:navigateAction="true"
>
<Key
latin:keyLabel="."
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_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index 21d80eb..95be66d 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -56,18 +56,18 @@
</switch>
<switch>
<case
- latin:webInput="true"
+ latin:navigateAction="true"
>
<Key
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
- latin:maxPopupKeyboardColumn="8"
- latin:keyStyle="tabKeyStyle" />
+ latin:maxPopupKeyboardColumn="8" />
</case>
<default>
<Key
latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_punctuation"
latin:maxPopupKeyboardColumn="7"
latin:keyStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_ar_rows.xml b/java/res/xml/kbd_rows_arabic.xml
similarity index 100%
rename from java/res/xml/kbd_ar_rows.xml
rename to java/res/xml/kbd_rows_arabic.xml
diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_rows_azerty.xml
similarity index 88%
rename from java/res/xml/kbd_azerty_rows.xml
rename to java/res/xml/kbd_rows_azerty.xml
index 9c81aad..9825c4a 100644
--- a/java/res/xml/kbd_azerty_rows.xml
+++ b/java/res/xml/kbd_rows_azerty.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_iw_rows.xml b/java/res/xml/kbd_rows_hebrew.xml
similarity index 100%
rename from java/res/xml/kbd_iw_rows.xml
rename to java/res/xml/kbd_rows_hebrew.xml
diff --git a/java/res/xml/kbd_qwerty_rows.xml b/java/res/xml/kbd_rows_qwerty.xml
similarity index 100%
rename from java/res/xml/kbd_qwerty_rows.xml
rename to java/res/xml/kbd_rows_qwerty.xml
diff --git a/java/res/xml/kbd_qwertz_rows.xml b/java/res/xml/kbd_rows_qwertz.xml
similarity index 84%
rename from java/res/xml/kbd_qwertz_rows.xml
rename to java/res/xml/kbd_rows_qwertz.xml
index 603cf35..0d70b26 100644
--- a/java/res/xml/kbd_qwertz_rows.xml
+++ b/java/res/xml/kbd_rows_qwertz.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_rows_russian.xml
similarity index 86%
rename from java/res/xml/kbd_ru_rows.xml
rename to java/res/xml/kbd_rows_russian.xml
index 76250a3..ff9fef4 100644
--- a/java/res/xml/kbd_ru_rows.xml
+++ b/java/res/xml/kbd_rows_russian.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_qwerty_rows_scandinavia.xml b/java/res/xml/kbd_rows_scandinavian.xml
similarity index 86%
rename from java/res/xml/kbd_qwerty_rows_scandinavia.xml
rename to java/res/xml/kbd_rows_scandinavian.xml
index 8cb0640..2d7dcde 100644
--- a/java/res/xml/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml/kbd_rows_scandinavian.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_sr_rows.xml b/java/res/xml/kbd_rows_serbian.xml
similarity index 85%
rename from java/res/xml/kbd_sr_rows.xml
rename to java/res/xml/kbd_rows_serbian.xml
index 139af80..9f4b6a2 100644
--- a/java/res/xml/kbd_sr_rows.xml
+++ b/java/res/xml/kbd_rows_serbian.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/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index a58a518..8e9124f 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="10%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 726f7c3..704402a 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -56,7 +56,7 @@
</switch>
<Key
latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_punctuation"
latin:maxPopupKeyboardColumn="7"
latin:keyStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 96e741b..f22d45a 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -20,15 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
- latin:minKeyboardHeight="@fraction/minKeyboardHeight"
- latin:rowHeight="25%p"
latin:keyWidth="10%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index 2789bcb..bcdcef7 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -27,7 +27,7 @@
private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField(
EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS");
private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField(
- EditorInfo.class, "IME_FLAG_ACTION_PREVIOUS");
+ EditorInfo.class, "IME_ACTION_PREVIOUS");
private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils
.getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT);
private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils
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 267abcc..58629ba 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -16,15 +16,15 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.R;
-
-import org.xmlpull.v1.XmlPullParserException;
-
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.util.Log;
+import com.android.inputmethod.latin.R;
+
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -171,8 +171,8 @@
mDefaultVerticalGap = 0;
mDefaultHeight = mDefaultWidth;
mId = id;
- loadKeyboard(context, xmlLayoutResId);
mProximityInfo = new ProximityInfo(GRID_WIDTH, GRID_HEIGHT);
+ loadKeyboard(context, xmlLayoutResId);
}
public int getProximityInfo() {
@@ -434,7 +434,7 @@
private void loadKeyboard(Context context, int xmlLayoutResId) {
try {
- KeyboardParser parser = new KeyboardParser(this, context.getResources());
+ KeyboardParser parser = new KeyboardParser(this, context);
parser.parseKeyboard(xmlLayoutResId);
// mMinWidth is the width of this keyboard which is maximum width of row.
mMinWidth = parser.getMaxRowWidth();
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 7c03ec7..cdaed95 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -43,7 +43,7 @@
public final int mMode;
public final int mXmlId;
public final int mColorScheme;
- public final boolean mWebInput;
+ public final boolean mNavigateAction;
public final boolean mPasswordInput;
public final boolean mHasSettingsKey;
public final boolean mVoiceKeyEnabled;
@@ -67,7 +67,9 @@
this.mMode = mode;
this.mXmlId = xmlId;
this.mColorScheme = colorScheme;
- this.mWebInput = InputTypeCompatUtils.isWebInputType(inputType);
+ this.mNavigateAction = InputTypeCompatUtils.isWebInputType(inputType)
+ || EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions)
+ || EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions);
this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType)
|| InputTypeCompatUtils.isVisiblePasswordInputType(inputType);
this.mHasSettingsKey = hasSettingsKey;
@@ -89,7 +91,7 @@
mode,
xmlId,
colorScheme,
- mWebInput,
+ mNavigateAction,
mPasswordInput,
hasSettingsKey,
voiceKeyEnabled,
@@ -143,7 +145,7 @@
&& other.mMode == this.mMode
&& other.mXmlId == this.mXmlId
&& other.mColorScheme == this.mColorScheme
- && other.mWebInput == this.mWebInput
+ && other.mNavigateAction == this.mNavigateAction
&& other.mPasswordInput == this.mPasswordInput
&& other.mHasSettingsKey == this.mHasSettingsKey
&& other.mVoiceKeyEnabled == this.mVoiceKeyEnabled
@@ -166,7 +168,7 @@
modeName(mMode),
EditorInfoCompatUtils.imeOptionsName(mImeAction),
colorSchemeName(mColorScheme),
- (mWebInput ? " webInput" : ""),
+ (mNavigateAction ? " navigateAction" : ""),
(mPasswordInput ? " passwordInput" : ""),
(mHasSettingsKey ? " hasSettingsKey" : ""),
(mVoiceKeyEnabled ? " voiceKeyEnabled" : ""),
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index c2db62a..20af12b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -16,12 +16,6 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.compat.EditorInfoCompatUtils;
-import com.android.inputmethod.latin.R;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -31,6 +25,12 @@
import android.util.Xml;
import android.view.InflateException;
+import com.android.inputmethod.compat.EditorInfoCompatUtils;
+import com.android.inputmethod.latin.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@@ -121,6 +121,7 @@
public static final String TAG_KEY_STYLE = "key-style";
private final Keyboard mKeyboard;
+ private final Context mContext;
private final Resources mResources;
private int mHorizontalEdgesPadding;
@@ -131,8 +132,10 @@
private Row mCurrentRow = null;
private final KeyStyles mKeyStyles = new KeyStyles();
- public KeyboardParser(Keyboard keyboard, Resources res) {
+ public KeyboardParser(Keyboard keyboard, Context context) {
mKeyboard = keyboard;
+ mContext = context;
+ final Resources res = context.getResources();
mResources = res;
mHorizontalEdgesPadding = (int)res.getDimension(R.dimen.keyboard_horizontal_edges_padding);
}
@@ -187,8 +190,9 @@
private void parseKeyboardAttributes(XmlResourceParser parser) {
final Keyboard keyboard = mKeyboard;
- final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
- R.styleable.Keyboard);
+ final TypedArray keyboardAttr = mContext.obtainStyledAttributes(
+ Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle,
+ R.style.Keyboard);
final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key);
try {
@@ -469,8 +473,8 @@
try {
final boolean modeMatched = matchTypedValue(a,
R.styleable.Keyboard_Case_mode, id.mMode, KeyboardId.modeName(id.mMode));
- final boolean webInputMatched = matchBoolean(a,
- R.styleable.Keyboard_Case_webInput, id.mWebInput);
+ final boolean navigateActionMatched = matchBoolean(a,
+ R.styleable.Keyboard_Case_navigateAction, id.mNavigateAction);
final boolean passwordInputMatched = matchBoolean(a,
R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput);
final boolean settingsKeyMatched = matchBoolean(a,
@@ -493,7 +497,7 @@
R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage());
final boolean countryCodeMatched = matchString(a,
R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
- final boolean selected = modeMatched && webInputMatched && passwordInputMatched
+ final boolean selected = modeMatched && navigateActionMatched && passwordInputMatched
&& settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
&& colorSchemeMatched && imeActionMatched && localeCodeMatched
&& languageCodeMatched && countryCodeMatched;
@@ -503,7 +507,7 @@
textAttr(KeyboardId.colorSchemeName(
viewAttr.getInt(
R.styleable.KeyboardView_colorScheme, -1)), "colorScheme"),
- booleanAttr(a, R.styleable.Keyboard_Case_webInput, "webInput"),
+ booleanAttr(a, R.styleable.Keyboard_Case_navigateAction, "navigateAction"),
booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
booleanAttr(a, R.styleable.Keyboard_Case_voiceKeyEnabled, "voiceKeyEnabled"),
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 7c68c93..50c61ff 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -57,6 +57,7 @@
private SubtypeSwitcher mSubtypeSwitcher;
private SharedPreferences mPrefs;
+ private View mCurrentInputView;
private LatinKeyboardView mKeyboardView;
private LatinIME mInputMethodService;
@@ -201,7 +202,9 @@
final Locale savedLocale = Utils.setSystemLocale(res,
mSubtypeSwitcher.getInputLocale());
- keyboard = new LatinKeyboard(mInputMethodService, id, id.mWidth);
+ final Context themeContext = new ContextThemeWrapper(mInputMethodService,
+ KEYBOARD_THEMES[mThemeIndex]);
+ keyboard = new LatinKeyboard(themeContext, id, id.mWidth);
if (id.mEnableShiftLock) {
keyboard.enableShiftLock();
@@ -294,7 +297,7 @@
}
public boolean isInputViewShown() {
- return mKeyboardView != null && mKeyboardView.isShown();
+ return mCurrentInputView != null && mCurrentInputView.isShown();
}
public boolean isKeyboardAvailable() {
@@ -714,9 +717,6 @@
return createInputView(mThemeIndex, true);
}
- // Instance variable only for {@link #createInputView(int, boolean)}.
- private View mCurrentInputView;
-
private View createInputView(final int newThemeIndex, final boolean forceRecreate) {
if (mCurrentInputView != null && mThemeIndex == newThemeIndex && !forceRecreate)
return mCurrentInputView;
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index f8bce40..44f2ff3 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -16,9 +16,6 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.R;
-
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
@@ -50,6 +47,9 @@
import android.widget.PopupWindow;
import android.widget.TextView;
+import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.R;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.WeakHashMap;
@@ -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,18 +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 = 1;
- private final int KEY_LABEL_OPTION_ALIGN_RIGHT = 2;
- private final int KEY_LABEL_OPTION_ALIGN_BOTTOM = 8;
- private final int KEY_LABEL_OPTION_FONT_NORMAL = 16;
+ 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();
@@ -321,18 +333,28 @@
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();
final Resources res = getResources();
@@ -347,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);
@@ -496,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);
}
@@ -683,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,
@@ -697,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)
@@ -715,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);
}
@@ -732,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) {
@@ -739,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)
@@ -761,15 +805,14 @@
0x80c00000, new Paint());
}
- // Draw hint icon.
- if (key.mHintIcon != null) {
+ // 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;
+ final Drawable hintIcon = mKeyPopupHintIcon;
drawIcon(canvas, hintIcon, drawableX, drawableY, drawableWidth, drawableHeight);
if (DEBUG_SHOW_ALIGN)
drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight,
@@ -784,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);
@@ -805,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);
@@ -935,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/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index fe27ab4..a6ac767 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -57,9 +57,9 @@
private final Drawable mSpaceIcon;
private final Drawable mSpacePreviewIcon;
private final int mSpaceKeyIndex;
- private final Drawable mSpaceAutoCorrectionIndicator;
- private final Drawable mButtonArrowLeftIcon;
- private final Drawable mButtonArrowRightIcon;
+ private final Drawable mAutoCorrectionSpacebarLedIcon;
+ private final Drawable mSpacebarArrowLeftIcon;
+ private final Drawable mSpacebarArrowRightIcon;
private final int mSpacebarTextColor;
private final int mSpacebarTextShadowColor;
private float mSpacebarTextFadeFactor = 0.0f;
@@ -90,7 +90,6 @@
public LatinKeyboard(Context context, KeyboardId id, int width) {
super(context, id.getXmlId(), id, width);
- final Resources res = context.getResources();
mContext = context;
final List<Key> keys = getKeys();
@@ -118,19 +117,20 @@
mShortcutKey = (shortcutKeyIndex >= 0) ? keys.get(shortcutKeyIndex) : null;
mEnabledShortcutIcon = (mShortcutKey != null) ? mShortcutKey.getIcon() : null;
- mSpacebarTextColor = res.getColor(R.color.latinkeyboard_bar_language_text);
- if (id.mColorScheme == KeyboardView.COLOR_SCHEME_BLACK) {
- mSpacebarTextShadowColor = res.getColor(
- R.color.latinkeyboard_bar_language_shadow_black);
- mDisabledShortcutIcon = res.getDrawable(R.drawable.sym_bkeyboard_voice_off);
- } else { // default color scheme is KeyboardView.COLOR_SCHEME_WHITE
- mSpacebarTextShadowColor = res.getColor(
- R.color.latinkeyboard_bar_language_shadow_white);
- mDisabledShortcutIcon = res.getDrawable(R.drawable.sym_keyboard_voice_off_holo);
- }
- mSpaceAutoCorrectionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
- mButtonArrowLeftIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_left);
- mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right);
+ final TypedArray a = context.obtainStyledAttributes(
+ null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard);
+ mAutoCorrectionSpacebarLedIcon = a.getDrawable(
+ R.styleable.LatinKeyboard_autoCorrectionSpacebarLedIcon);
+ mDisabledShortcutIcon = a.getDrawable(R.styleable.LatinKeyboard_disabledShortcutIcon);
+ mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0);
+ mSpacebarTextShadowColor = a.getColor(
+ R.styleable.LatinKeyboard_spacebarTextShadowColor, 0);
+ mSpacebarArrowLeftIcon = a.getDrawable(
+ R.styleable.LatinKeyboard_spacebarArrowLeftIcon);
+ mSpacebarArrowRightIcon = a.getDrawable(
+ R.styleable.LatinKeyboard_spacebarArrowRightIcon);
+ a.recycle();
+
// The threshold is "key width" x 1.25
mSpacebarLanguageSwitchThreshold = (getMostCommonKeyWidth() * 5) / 4;
}
@@ -163,6 +163,10 @@
view.invalidateKey(mShortcutKey);
}
+ public boolean needsAutoCorrectionSpacebarLed() {
+ return mAutoCorrectionSpacebarLedIcon != null;
+ }
+
/**
* @return a key which should be invalidated.
*/
@@ -282,7 +286,7 @@
}
final String language = layoutSpacebar(paint, inputLocale,
- mButtonArrowLeftIcon, mButtonArrowRightIcon, width, height,
+ mSpacebarArrowLeftIcon, mSpacebarArrowRightIcon, width, height,
getTextSizeFromTheme(mContext.getTheme(), textStyle, defaultTextSize));
// Draw language text with shadow
@@ -303,21 +307,21 @@
if (mSubtypeSwitcher.useSpacebarLanguageSwitcher()
&& mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1
&& !(isPhoneKeyboard() || isNumberKeyboard())) {
- mButtonArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
- mButtonArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
- mButtonArrowLeftIcon.draw(canvas);
- mButtonArrowRightIcon.draw(canvas);
+ mSpacebarArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
+ mSpacebarArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
+ mSpacebarArrowLeftIcon.draw(canvas);
+ mSpacebarArrowRightIcon.draw(canvas);
}
}
// Draw the spacebar icon at the bottom
if (isAutoCorrection) {
final int iconWidth = width * SPACE_LED_LENGTH_PERCENT / 100;
- final int iconHeight = mSpaceAutoCorrectionIndicator.getIntrinsicHeight();
+ final int iconHeight = mAutoCorrectionSpacebarLedIcon.getIntrinsicHeight();
int x = (width - iconWidth) / 2;
int y = height - iconHeight;
- mSpaceAutoCorrectionIndicator.setBounds(x, y, x + iconWidth, y + iconHeight);
- mSpaceAutoCorrectionIndicator.draw(canvas);
+ mAutoCorrectionSpacebarLedIcon.setBounds(x, y, x + iconWidth, y + iconHeight);
+ mAutoCorrectionSpacebarLedIcon.draw(canvas);
} else if (mSpaceIcon != null) {
final int iconWidth = mSpaceIcon.getIntrinsicWidth();
final int iconHeight = mSpaceIcon.getIntrinsicHeight();
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 6b4e946..397ac7e 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -22,6 +22,7 @@
import com.android.inputmethod.latin.SubtypeSwitcher;
import android.content.res.Resources;
+import android.os.SystemClock;
import android.util.Log;
import android.view.MotionEvent;
@@ -540,8 +541,11 @@
public void onLongPressed(PointerTrackerQueue queue) {
mKeyAlreadyProcessed = true;
- if (queue != null)
+ if (queue != null) {
+ // TODO: Support chording + long-press input.
+ queue.releaseAllPointersExcept(this, SystemClock.uptimeMillis(), true);
queue.remove(this);
+ }
}
public void onCancelEvent(int x, int y, long eventTime, PointerTrackerQueue queue) {
@@ -635,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;
@@ -663,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;
}
diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
index 60d87f7..ff64c73 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
@@ -37,7 +37,6 @@
private int mOriginX;
private int mOriginY;
- private int mTrackerId;
private long mDownTime;
public PopupMiniKeyboardView(Context context, AttributeSet attrs) {
@@ -98,30 +97,19 @@
mOriginX = x + container.getPaddingLeft() - mCoordinates[0];
mOriginY = y + container.getPaddingTop() - mCoordinates[1];
- mTrackerId = tracker.mPointerId;
mDownTime = SystemClock.uptimeMillis();
// Inject down event on the key to mini keyboard.
- final MotionEvent downEvent = translateMotionEvent(MotionEvent.ACTION_DOWN, pointX,
- pointY + parentKey.mHeight / 2, mDownTime);
+ final MotionEvent downEvent = MotionEvent.obtain(mDownTime, mDownTime,
+ MotionEvent.ACTION_DOWN, pointX - mOriginX,
+ pointY + parentKey.mHeight / 2 - mOriginY, 0);
onTouchEvent(downEvent);
downEvent.recycle();
}
- private MotionEvent translateMotionEvent(int action, float x, float y, long eventTime) {
- return MotionEvent.obtain(mDownTime, eventTime, action, x - mOriginX, y - mOriginY, 0);
- }
-
@Override
public boolean onTouchEvent(MotionEvent me) {
- final int index = me.getActionIndex();
- final int id = me.getPointerId(index);
- if (id == mTrackerId) {
- final MotionEvent translated = translateMotionEvent(me.getAction(), me.getX(index),
- me.getY(index), me.getEventTime());
- super.onTouchEvent(translated);
- translated.recycle();
- }
- return true;
+ me.offsetLocation(-mOriginX, -mOriginY);
+ return super.onTouchEvent(me);
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
index 5cf31cb..a20bf1c 100644
--- a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
+++ b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
@@ -16,22 +16,21 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.SubtypeSwitcher;
-
import android.content.Context;
-import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
-import android.graphics.PixelFormat;
import android.graphics.Paint.Align;
+import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.text.TextPaint;
import android.view.ViewConfiguration;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SubtypeSwitcher;
+
/**
* Animation to be displayed on the spacebar preview popup when switching languages by swiping the
* spacebar. It draws the current, previous and next languages and moves them by the delta of touch
@@ -39,16 +38,16 @@
*/
public class SlidingLocaleDrawable extends Drawable {
private static final int SLIDE_SPEED_MULTIPLIER_RATIO = 150;
- private final Context mContext;
- private final Resources mRes;
private final int mWidth;
private final int mHeight;
private final Drawable mBackground;
+ private final int mSpacebarTextColor;
private final TextPaint mTextPaint;
private final int mMiddleX;
private final Drawable mLeftDrawable;
private final Drawable mRightDrawable;
private final int mThreshold;
+
private int mDiff;
private boolean mHitThreshold;
private String mCurrentLanguage;
@@ -56,29 +55,31 @@
private String mPrevLanguage;
public SlidingLocaleDrawable(Context context, Drawable background, int width, int height) {
- mContext = context;
- mRes = context.getResources();
mBackground = background;
Keyboard.setDefaultBounds(mBackground);
mWidth = width;
mHeight = height;
final TextPaint textPaint = new TextPaint();
- textPaint.setTextSize(getTextSizeFromTheme(android.R.style.TextAppearance_Medium, 18));
+ textPaint.setTextSize(getTextSizeFromTheme(
+ context, android.R.style.TextAppearance_Medium, 18));
textPaint.setColor(Color.TRANSPARENT);
textPaint.setTextAlign(Align.CENTER);
textPaint.setAntiAlias(true);
mTextPaint = textPaint;
mMiddleX = (mWidth - mBackground.getIntrinsicWidth()) / 2;
- final Resources res = mRes;
- mLeftDrawable = res.getDrawable(
- R.drawable.sym_keyboard_feedback_language_arrows_left);
- mRightDrawable = res.getDrawable(
- R.drawable.sym_keyboard_feedback_language_arrows_right);
- mThreshold = ViewConfiguration.get(mContext).getScaledTouchSlop();
+
+ final TypedArray a = context.obtainStyledAttributes(
+ null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard);
+ mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0);
+ mLeftDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewLeftIcon);
+ mRightDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewRightIcon);
+ a.recycle();
+
+ mThreshold = ViewConfiguration.get(context).getScaledTouchSlop();
}
- private int getTextSizeFromTheme(int style, int defValue) {
- TypedArray array = mContext.getTheme().obtainStyledAttributes(
+ private static int getTextSizeFromTheme(Context context, int style, int defValue) {
+ TypedArray array = context.getTheme().obtainStyledAttributes(
style, new int[] { android.R.attr.textSize });
int textSize = array.getDimensionPixelSize(array.getResourceId(0, 0), defValue);
return textSize;
@@ -118,7 +119,7 @@
// Draw language text with shadow
final float baseline = mHeight * LatinKeyboard.SPACEBAR_LANGUAGE_BASELINE
- paint.descent();
- paint.setColor(mRes.getColor(R.color.latinkeyboard_feedback_language_text));
+ paint.setColor(mSpacebarTextColor);
canvas.drawText(mCurrentLanguage, width / 2 + diff, baseline, paint);
canvas.drawText(mNextLanguage, diff - width / 2, baseline, paint);
canvas.drawText(mPrevLanguage, diff + width + width / 2, baseline, paint);
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index b4f6b2c..2a29e1f 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.content.res.Resources;
+import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Handler;
@@ -38,6 +39,7 @@
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
@@ -56,16 +58,29 @@
private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD);
private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan();
- private static final int MAX_SUGGESTIONS = 16;
+ // The maximum number of suggestions available. See {@link Suggest#mPrefMaxSuggestions}.
+ private static final int MAX_SUGGESTIONS = 18;
+ private static final int UNSPECIFIED_MEASURESPEC = MeasureSpec.makeMeasureSpec(
+ 0, MeasureSpec.UNSPECIFIED);
private static final boolean DBG = LatinImeLogger.sDBG;
+ private static final int NUM_CANDIDATES_IN_STRIP = 3;
+ private final ImageView mExpandCandidatesPane;
+ private final ImageView mCloseCandidatesPane;
+ private ViewGroup mCandidatesPane;
+ private ViewGroup mCandidatesPaneContainer;
+ private View mKeyboardView;
private final ArrayList<TextView> mWords = new ArrayList<TextView>();
private final ArrayList<View> mDividers = new ArrayList<View>();
private final int mCandidatePadding;
- private final boolean mConfigCandidateHighlightFontColorEnabled;
+ private final int mCandidateStripHeight;
private final CharacterStyle mInvertedForegroundColorSpan;
private final CharacterStyle mInvertedBackgroundColorSpan;
+ private final int mAutoCorrectHighlight;
+ private static final int AUTO_CORRECT_BOLD = 0x01;
+ private static final int AUTO_CORRECT_UNDERLINE = 0x02;
+ private static final int AUTO_CORRECT_INVERT = 0x04;
private final int mColorTypedWord;
private final int mColorAutoCorrect;
private final int mColorSuggestedCandidate;
@@ -129,27 +144,44 @@
* @param attrs
*/
public CandidateView(Context context, AttributeSet attrs) {
- super(context, attrs);
+ this(context, attrs, R.attr.candidateViewStyle);
+ }
+
+ public CandidateView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
Resources res = context.getResources();
- mPreviewPopup = new PopupWindow(context);
LayoutInflater inflater = LayoutInflater.from(context);
+ inflater.inflate(R.layout.candidates_strip, this);
+
+ mPreviewPopup = new PopupWindow(context);
mPreviewText = (TextView) inflater.inflate(R.layout.candidate_preview, null);
mPreviewPopup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mPreviewPopup.setContentView(mPreviewText);
mPreviewPopup.setBackgroundDrawable(null);
- mConfigCandidateHighlightFontColorEnabled =
- res.getBoolean(R.bool.config_candidate_highlight_font_color_enabled);
- mColorTypedWord = res.getColor(R.color.candidate_typed_word);
- mColorAutoCorrect = res.getColor(R.color.candidate_auto_correct);
- mColorSuggestedCandidate = res.getColor(R.color.candidate_suggested);
- mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff);
- mInvertedBackgroundColorSpan = new BackgroundColorSpan(mColorTypedWord);
mCandidatePadding = res.getDimensionPixelOffset(R.dimen.candidate_padding);
+ mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height);
for (int i = 0; i < MAX_SUGGESTIONS; i++) {
- final TextView tv = (TextView)inflater.inflate(R.layout.candidate, null);
+ final TextView tv;
+ switch (i) {
+ case 0:
+ tv = (TextView)findViewById(R.id.candidate_left);
+ tv.setPadding(mCandidatePadding, 0, 0, 0);
+ break;
+ case 1:
+ tv = (TextView)findViewById(R.id.candidate_center);
+ break;
+ case 2:
+ tv = (TextView)findViewById(R.id.candidate_right);
+ break;
+ default:
+ tv = (TextView)inflater.inflate(R.layout.candidate, null);
+ break;
+ }
+ if (i < NUM_CANDIDATES_IN_STRIP)
+ setLayoutWeight(tv, 1.0f);
tv.setTag(i);
tv.setOnClickListener(this);
if (i == 0)
@@ -157,19 +189,53 @@
mWords.add(tv);
if (i > 0) {
final View divider = inflater.inflate(R.layout.candidate_divider, null);
+ divider.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
mDividers.add(divider);
}
}
- scrollTo(0, getScrollY());
+ final TypedArray a = context.obtainStyledAttributes(
+ attrs, R.styleable.CandidateView, defStyle, R.style.CandidateViewStyle);
+ mAutoCorrectHighlight = a.getInt(R.styleable.CandidateView_autoCorrectHighlight, 0);
+ mColorTypedWord = a.getColor(R.styleable.CandidateView_colorTypedWord, 0);
+ mColorAutoCorrect = a.getColor(R.styleable.CandidateView_colorAutoCorrect, 0);
+ mColorSuggestedCandidate = a.getColor(R.styleable.CandidateView_colorSuggested, 0);
+ mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff);
+ mInvertedBackgroundColorSpan = new BackgroundColorSpan(mColorTypedWord);
+
+ mExpandCandidatesPane = (ImageView)findViewById(R.id.expand_candidates_pane);
+ mExpandCandidatesPane.setImageDrawable(
+ a.getDrawable(R.styleable.CandidateView_iconExpandPane));
+ mExpandCandidatesPane.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ expandCandidatesPane();
+ }
+ });
+ mCloseCandidatesPane = (ImageView)findViewById(R.id.close_candidates_pane);
+ mCloseCandidatesPane.setImageDrawable(
+ a.getDrawable(R.styleable.CandidateView_iconClosePane));
+ mCloseCandidatesPane.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ closeCandidatesPane();
+ }
+ });
+
+ a.recycle();
}
/**
* A connection back to the input method.
* @param listener
*/
- public void setListener(Listener listener) {
+ public void setListener(Listener listener, View inputView) {
mListener = listener;
+ mKeyboardView = inputView.findViewById(R.id.keyboard_view);
+ mCandidatesPane = (ViewGroup)inputView.findViewById(R.id.candidates_pane);
+ mCandidatesPane.setOnClickListener(this);
+ mCandidatesPaneContainer = (ViewGroup)inputView.findViewById(
+ R.id.candidates_pane_container);
}
public void setSuggestions(SuggestedWords suggestions) {
@@ -183,22 +249,32 @@
}
}
+ private static void setLayoutWeight(View v, float weight) {
+ ViewGroup.LayoutParams lp = v.getLayoutParams();
+ if (lp instanceof LinearLayout.LayoutParams) {
+ LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams)lp;
+ llp.width = 0;
+ llp.weight = weight;
+ }
+ }
+
private CharSequence getStyledCandidateWord(CharSequence word, boolean isAutoCorrect) {
if (!isAutoCorrect)
return word;
- final CharacterStyle style = mConfigCandidateHighlightFontColorEnabled ? BOLD_SPAN
- : UNDERLINE_SPAN;
final Spannable spannedWord = new SpannableString(word);
- spannedWord.setSpan(style, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+ if ((mAutoCorrectHighlight & AUTO_CORRECT_BOLD) != 0)
+ spannedWord.setSpan(BOLD_SPAN, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+ if ((mAutoCorrectHighlight & AUTO_CORRECT_UNDERLINE) != 0)
+ spannedWord.setSpan(UNDERLINE_SPAN, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannedWord;
}
private int getCandidateTextColor(boolean isAutoCorrect, boolean isSuggestedCandidate,
SuggestedWordInfo info) {
final int color;
- if (isAutoCorrect && mConfigCandidateHighlightFontColorEnabled) {
+ if (isAutoCorrect) {
color = mColorAutoCorrect;
- } else if (isSuggestedCandidate && mConfigCandidateHighlightFontColorEnabled) {
+ } else if (isSuggestedCandidate) {
color = mColorSuggestedCandidate;
} else {
color = mColorTypedWord;
@@ -216,7 +292,14 @@
final List<SuggestedWordInfo> suggestedWordInfoList = suggestions.mSuggestedWordInfoList;
clear();
+ final int paneWidth = getWidth();
+ final int dividerWidth = mDividers.get(0).getMeasuredWidth();
+ int x = 0;
+ int y = 0;
+ int fromIndex = NUM_CANDIDATES_IN_STRIP;
final int count = Math.min(mWords.size(), suggestions.size());
+ closeCandidatesPane();
+ mExpandCandidatesPane.setEnabled(count >= NUM_CANDIDATES_IN_STRIP);
for (int i = 0; i < count; i++) {
final CharSequence word = suggestions.getWord(i);
if (word == null) continue;
@@ -233,39 +316,97 @@
final boolean isPunctuationSuggestions = (word.length() == 1 && count > 1);
final TextView tv = mWords.get(i);
+ // TODO: Reorder candidates in strip as appropriate. The center candidate should hold
+ // the word when space is typed (valid typed word or auto corrected word).
tv.setTextColor(getCandidateTextColor(isAutoCorrect,
isSuggestedCandidate || isPunctuationSuggestions, info));
tv.setText(getStyledCandidateWord(word, isAutoCorrect));
- if (i == 0) {
- tv.setPadding(mCandidatePadding, 0, 0, 0);
- } else if (i == count - 1) {
- tv.setPadding(0, 0, mCandidatePadding, 0);
- } else {
- tv.setPadding(0, 0, 0, 0);
+ // TODO: call TextView.setTextScaleX() to fit the candidate in single line.
+ if (i >= NUM_CANDIDATES_IN_STRIP) {
+ tv.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
+ final int width = tv.getMeasuredWidth();
+ // TODO: Handle overflow case.
+ if (dividerWidth + x + width >= paneWidth) {
+ centeringCandidates(fromIndex, i - 1, x, paneWidth);
+ x = 0;
+ y += mCandidateStripHeight;
+ fromIndex = i;
+ }
+ if (x != 0) {
+ final View divider = mDividers.get(i - NUM_CANDIDATES_IN_STRIP);
+ mCandidatesPane.addView(divider);
+ placeCandidateAt(divider, x, y);
+ x += dividerWidth;
+ }
+ mCandidatesPane.addView(tv);
+ placeCandidateAt(tv, x, y);
+ x += width;
}
- if (i > 0)
- addView(mDividers.get(i - 1));
- addView(tv);
if (DBG && info != null) {
final TextView dv = new TextView(getContext(), null);
dv.setTextSize(10.0f);
dv.setTextColor(0xff808080);
dv.setText(info.getDebugString());
- addView(dv);
+ // TODO: debug view for candidate strip needed.
+ mCandidatesPane.addView(dv);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)dv.getLayoutParams();
lp.gravity = Gravity.BOTTOM;
}
}
+ if (x != 0) {
+ // Centering last candidates row.
+ centeringCandidates(fromIndex, count - 1, x, paneWidth);
+ }
+ }
- scrollTo(0, getScrollY());
- requestLayout();
+ private void placeCandidateAt(View v, int x, int y) {
+ ViewGroup.LayoutParams lp = v.getLayoutParams();
+ if (lp instanceof ViewGroup.MarginLayoutParams) {
+ ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
+ mlp.width = v.getMeasuredWidth();
+ mlp.height = v.getMeasuredHeight();
+ mlp.setMargins(x, y + (mCandidateStripHeight - mlp.height) / 2, 0, 0);
+ }
+ }
+
+ private void centeringCandidates(int from, int to, int width, int paneWidth) {
+ final ViewGroup pane = mCandidatesPane;
+ final int fromIndex = pane.indexOfChild(mWords.get(from));
+ final int toIndex = pane.indexOfChild(mWords.get(to));
+ final int offset = (paneWidth - width) / 2;
+ for (int index = fromIndex; index <= toIndex; index++) {
+ offsetMargin(pane.getChildAt(index), offset, 0);
+ }
+ }
+
+ private static void offsetMargin(View v, int dx, int dy) {
+ if (v == null)
+ return;
+ ViewGroup.LayoutParams lp = v.getLayoutParams();
+ if (lp instanceof ViewGroup.MarginLayoutParams) {
+ ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
+ mlp.setMargins(mlp.leftMargin + dx, mlp.topMargin + dy, 0, 0);
+ }
+ }
+
+ private void expandCandidatesPane() {
+ mExpandCandidatesPane.setVisibility(View.GONE);
+ mCloseCandidatesPane.setVisibility(View.VISIBLE);
+ mCandidatesPaneContainer.setMinimumHeight(mKeyboardView.getMeasuredHeight());
+ mCandidatesPaneContainer.setVisibility(View.VISIBLE);
+ mKeyboardView.setVisibility(View.GONE);
+ }
+
+ private void closeCandidatesPane() {
+ mExpandCandidatesPane.setVisibility(View.VISIBLE);
+ mCloseCandidatesPane.setVisibility(View.GONE);
+ mCandidatesPaneContainer.setVisibility(View.GONE);
+ mKeyboardView.setVisibility(View.VISIBLE);
}
public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) {
- // Displaying auto corrected word as inverted is enabled only when highlighting candidate
- // with color is disabled.
- if (mConfigCandidateHighlightFontColorEnabled)
+ if ((mAutoCorrectHighlight & AUTO_CORRECT_INVERT) == 0)
return;
final TextView tv = mWords.get(1);
final Spannable word = new SpannableString(autoCorrectedWord);
@@ -278,10 +419,6 @@
mShowingAutoCorrectionInverted = true;
}
- public boolean isConfigCandidateHighlightFontColorEnabled() {
- return mConfigCandidateHighlightFontColorEnabled;
- }
-
public boolean isShowingAddToDictionaryHint() {
return mShowingAddToDictionary;
}
@@ -310,7 +447,9 @@
public void clear() {
mShowingAddToDictionary = false;
mShowingAutoCorrectionInverted = false;
- removeAllViews();
+ for (int i = 0; i < NUM_CANDIDATES_IN_STRIP; i++)
+ mWords.get(i).setText(null);
+ mCandidatesPane.removeAllViews();
}
private void hidePreview() {
@@ -349,9 +488,13 @@
@Override
public boolean onLongClick(View view) {
- final int index = (Integer) view.getTag();
+ final Object tag = view.getTag();
+ if (!(tag instanceof Integer))
+ return true;
+ final int index = (Integer) tag;
if (index >= mSuggestions.size())
return true;
+
final CharSequence word = mSuggestions.getWord(index);
if (word.length() < 2)
return false;
@@ -361,15 +504,22 @@
@Override
public void onClick(View view) {
- final int index = (Integer) view.getTag();
+ final Object tag = view.getTag();
+ if (!(tag instanceof Integer))
+ return;
+ final int index = (Integer) tag;
if (index >= mSuggestions.size())
return;
+
final CharSequence word = mSuggestions.getWord(index);
if (mShowingAddToDictionary && index == 0) {
addToDictionary(word);
} else {
mListener.pickSuggestionManually(index, word);
}
+ // Because some punctuation letters are not treated as word separator depending on locale,
+ // {@link #setSuggestions} might not be called and candidates pane left opened.
+ closeCandidatesPane();
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
index 3fcb6ed..5e7de3e 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -54,8 +54,8 @@
@Override
public boolean isValidWord(CharSequence word) {
- for (final Dictionary dict : mDictionaries)
- if (dict.isValidWord(word)) return true;
+ for (int i = mDictionaries.size() - 1; i >= 0; --i)
+ if (mDictionaries.get(i).isValidWord(word)) return true;
return false;
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 940f6b8..87912eb 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -502,7 +502,7 @@
super.setInputView(view);
mCandidateViewContainer = view.findViewById(R.id.candidates_container);
mCandidateView = (CandidateView) view.findViewById(R.id.candidates);
- mCandidateView.setListener(this);
+ mCandidateView.setListener(this, view);
mCandidateStripHeight = (int)mResources.getDimension(R.dimen.candidate_strip_height);
}
@@ -1464,7 +1464,7 @@
if (mCandidateView != null) {
mCandidateView.setSuggestions(words);
- if (mCandidateView.isConfigCandidateHighlightFontColorEnabled()) {
+ if (mKeyboardSwitcher.getLatinKeyboard().needsAutoCorrectionSpacebarLed()) {
mKeyboardSwitcher.onAutoCorrectionStateChanged(
words.hasWordAboveAutoCorrectionScoreThreshold());
}
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 33f9820..62788fb 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -84,7 +84,7 @@
private final Map<String, Dictionary> mUnigramDictionaries = new HashMap<String, Dictionary>();
private final Map<String, Dictionary> mBigramDictionaries = new HashMap<String, Dictionary>();
- private int mPrefMaxSuggestions = 12;
+ private int mPrefMaxSuggestions = 18;
private static final int PREF_MAX_BIGRAMS = 60;
diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp
index 36761b8..11e6dc2 100644
--- a/native/src/bigram_dictionary.cpp
+++ b/native/src/bigram_dictionary.cpp
@@ -111,8 +111,7 @@
mMaxBigrams = maxBigrams;
if (HAS_BIGRAM && IS_LATEST_DICT_VERSION) {
- int pos = mParentDictionary->isValidWordRec(
- DICTIONARY_HEADER_SIZE, prevWord, 0, prevWordLength);
+ int pos = mParentDictionary->getBigramPosition(prevWord, prevWordLength);
if (DEBUG_DICT) {
LOGI("Pos -> %d", pos);
}
diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp
index d9ef8f3..9e32ee8 100644
--- a/native/src/dictionary.cpp
+++ b/native/src/dictionary.cpp
@@ -53,45 +53,16 @@
return ((mDict[1] & 0xFF) == 1);
}
-// TODO: use uint32_t instead of unsigned short
bool Dictionary::isValidWord(unsigned short *word, int length) {
+ return mUnigramDictionary->isValidWord(word, length);
+}
+
+int Dictionary::getBigramPosition(unsigned short *word, int length) {
if (IS_LATEST_DICT_VERSION) {
- return (isValidWordRec(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+ return mUnigramDictionary->getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length);
} else {
- return (isValidWordRec(0, word, 0, length) != NOT_VALID_WORD);
+ return mUnigramDictionary->getBigramPosition(0, word, 0, length);
}
}
-int Dictionary::isValidWordRec(int pos, unsigned short *word, int offset, int length) {
- // returns address of bigram data of that word
- // return -99 if not found
-
- int count = Dictionary::getCount(mDict, &pos);
- unsigned short currentChar = (unsigned short) word[offset];
- for (int j = 0; j < count; j++) {
- unsigned short c = Dictionary::getChar(mDict, &pos);
- int terminal = Dictionary::getTerminal(mDict, &pos);
- int childPos = Dictionary::getAddress(mDict, &pos);
- if (c == currentChar) {
- if (offset == length - 1) {
- if (terminal) {
- return (pos+1);
- }
- } else {
- if (childPos != 0) {
- int t = isValidWordRec(childPos, word, offset + 1, length);
- if (t > 0) {
- return t;
- }
- }
- }
- }
- if (terminal) {
- Dictionary::getFreq(mDict, IS_LATEST_DICT_VERSION, &pos);
- }
- // There could be two instances of each alphabet - upper and lower case. So continue
- // looking ...
- }
- return NOT_VALID_WORD;
-}
} // namespace latinime
diff --git a/native/src/dictionary.h b/native/src/dictionary.h
index 13b2a28..1b41f69 100644
--- a/native/src/dictionary.h
+++ b/native/src/dictionary.h
@@ -43,7 +43,6 @@
}
bool isValidWord(unsigned short *word, int length);
- int isValidWordRec(int pos, unsigned short *word, int offset, int length);
void *getDict() { return (void *)mDict; }
int getDictSize() { return mDictSize; }
int getMmapFd() { return mMmapFd; }
@@ -63,6 +62,9 @@
const int pos, unsigned short *c, int *childrenPosition,
bool *terminal, int *freq);
+ // TODO: delete this
+ int getBigramPosition(unsigned short *word, int length);
+
private:
bool hasBigram();
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index e49e95b..aa159b5 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -16,8 +16,6 @@
*/
#include <assert.h>
-#include <fcntl.h>
-#include <stdio.h>
#include <string.h>
#define LOG_TAG "LatinIME: unigram_dictionary.cpp"
@@ -34,10 +32,12 @@
{ 'o', 'e' },
{ 'u', 'e' } };
-UnigramDictionary::UnigramDictionary(const unsigned char *dict, int typedLetterMultiplier,
+// TODO: check the header
+UnigramDictionary::UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultiplier,
int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
const bool isLatestDictVersion)
- : DICT(dict), MAX_WORD_LENGTH(maxWordLength), MAX_WORDS(maxWords),
+ : DICT_ROOT(streamStart),
+ MAX_WORD_LENGTH(maxWordLength), MAX_WORDS(maxWords),
MAX_PROXIMITY_CHARS(maxProximityChars), IS_LATEST_DICT_VERSION(isLatestDictVersion),
TYPED_LETTER_MULTIPLIER(typedLetterMultiplier), FULL_WORD_MULTIPLIER(fullWordMultiplier),
ROOT_POS(isLatestDictVersion ? DICTIONARY_HEADER_SIZE : 0),
@@ -265,8 +265,7 @@
mMaxEditDistance = mInputLength < 5 ? 2 : mInputLength / 2;
}
-void UnigramDictionary::registerNextLetter(
- unsigned short c, int *nextLetters, int nextLettersSize) {
+static inline void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize) {
if (c < nextLettersSize) {
nextLetters[c]++;
}
@@ -290,8 +289,8 @@
// Find the right insertion point
int insertAt = 0;
while (insertAt < MAX_WORDS) {
- if (frequency > mFrequencies[insertAt] || (mFrequencies[insertAt] == frequency
- && length < Dictionary::wideStrLen(mOutputChars + insertAt * MAX_WORD_LENGTH))) {
+ // TODO: How should we sort words with the same frequency?
+ if (frequency > mFrequencies[insertAt]) {
break;
}
insertAt++;
@@ -322,7 +321,7 @@
return false;
}
-unsigned short UnigramDictionary::toBaseLowerCase(unsigned short c) {
+static inline unsigned short toBaseLowerCase(unsigned short c) {
if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) {
c = BASE_CHARS[c];
}
@@ -363,7 +362,7 @@
}
int rootPosition = ROOT_POS;
// Get the number of child of root, then increment the position
- int childCount = Dictionary::getCount(DICT, &rootPosition);
+ int childCount = Dictionary::getCount(DICT_ROOT, &rootPosition);
int depth = 0;
mStackChildCount[0] = childCount;
@@ -372,6 +371,7 @@
mStackInputIndex[0] = 0;
mStackDiffs[0] = 0;
mStackSiblingPos[0] = rootPosition;
+ mStackOutputIndex[0] = 0;
// Depth first search
while (depth >= 0) {
@@ -382,14 +382,15 @@
int inputIndex = mStackInputIndex[depth];
int diffs = mStackDiffs[depth];
int siblingPos = mStackSiblingPos[depth];
+ int outputIndex = mStackOutputIndex[depth];
int firstChildPos;
// depth will never be greater than maxDepth because in that case,
// needsToTraverseChildrenNodes should be false
- const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth,
+ const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, outputIndex,
maxDepth, traverseAllNodes, matchWeight, inputIndex, diffs, skipPos,
excessivePos, transposedPos, nextLetters, nextLettersSize, &childCount,
&firstChildPos, &traverseAllNodes, &matchWeight, &inputIndex, &diffs,
- &siblingPos);
+ &siblingPos, &outputIndex);
// Update next sibling pos
mStackSiblingPos[depth] = siblingPos;
if (needsToTraverseChildrenNodes) {
@@ -401,6 +402,7 @@
mStackInputIndex[depth] = inputIndex;
mStackDiffs[depth] = diffs;
mStackSiblingPos[depth] = firstChildPos;
+ mStackOutputIndex[depth] = outputIndex;
}
} else {
// Goes to parent sibling node
@@ -562,7 +564,7 @@
const int excessivePos, const int transposedPos,int *nextLetters,
const int nextLettersSize) {
int initialPosition = initialPos;
- const int count = Dictionary::getCount(DICT, &initialPosition);
+ const int count = Dictionary::getCount(DICT_ROOT, &initialPosition);
getWordsRec(count, initialPosition, 0,
min(inputLength * MAX_DEPTH_MULTIPLIER, MAX_WORD_LENGTH),
mInputLength <= 0, 1, 0, 0, skipPos, excessivePos, transposedPos, nextLetters,
@@ -577,22 +579,22 @@
for (int i = 0; i < childrenCount; ++i) {
int newCount;
int newChildPosition;
- const int newDepth = depth + 1;
bool newTraverseAllNodes;
int newMatchRate;
int newInputIndex;
int newDiffs;
int newSiblingPos;
+ int newOutputIndex;
const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth, maxDepth,
traverseAllNodes, matchWeight, inputIndex, diffs,
skipPos, excessivePos, transposedPos,
nextLetters, nextLettersSize,
&newCount, &newChildPosition, &newTraverseAllNodes, &newMatchRate,
- &newInputIndex, &newDiffs, &newSiblingPos);
+ &newInputIndex, &newDiffs, &newSiblingPos, &newOutputIndex);
siblingPos = newSiblingPos;
if (needsToTraverseChildrenNodes) {
- getWordsRec(newCount, newChildPosition, newDepth, maxDepth, newTraverseAllNodes,
+ getWordsRec(newCount, newChildPosition, newOutputIndex, maxDepth, newTraverseAllNodes,
newMatchRate, newInputIndex, newDiffs, skipPos, excessivePos, transposedPos,
nextLetters, nextLettersSize);
}
@@ -754,7 +756,7 @@
const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs,
- int *nextSiblingPosition) {
+ int *nextSiblingPosition, int *nextOutputIndex) {
if (DEBUG_DICT) {
int inputCount = 0;
if (skipPos >= 0) ++inputCount;
@@ -770,8 +772,9 @@
if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex;
- *nextSiblingPosition = Dictionary::setDictionaryValues(DICT, IS_LATEST_DICT_VERSION, pos, &c,
- &childPosition, &terminal, &freq);
+ *nextSiblingPosition = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, pos,
+ &c, &childPosition, &terminal, &freq);
+ *nextOutputIndex = depth + 1;
const bool needsToTraverseChildrenNodes = childPosition != 0;
@@ -829,7 +832,7 @@
*newTraverseAllNodes = true;
}
// get the count of nodes and increment childAddress.
- *newCount = Dictionary::getCount(DICT, &childPosition);
+ *newCount = Dictionary::getCount(DICT_ROOT, &childPosition);
*newChildPosition = childPosition;
if (DEBUG_DICT) assert(needsToTraverseChildrenNodes);
return needsToTraverseChildrenNodes;
@@ -838,7 +841,7 @@
inline int UnigramDictionary::getBestWordFreq(const int startInputIndex, const int inputLength,
unsigned short *word) {
int pos = ROOT_POS;
- int count = Dictionary::getCount(DICT, &pos);
+ int count = Dictionary::getCount(DICT_ROOT, &pos);
int maxFreq = 0;
int depth = 0;
unsigned short newWord[MAX_WORD_LENGTH_INTERNAL];
@@ -894,8 +897,8 @@
const int inputIndex = startInputIndex + depth;
const int *currentChars = getInputCharsAt(inputIndex);
unsigned short c;
- *siblingPos = Dictionary::setDictionaryValues(DICT, IS_LATEST_DICT_VERSION, firstChildPos, &c,
- newChildPosition, newTerminal, newFreq);
+ *siblingPos = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, firstChildPos,
+ &c, newChildPosition, newTerminal, newFreq);
const unsigned int inputC = currentChars[0];
if (DEBUG_DICT) {
assert(inputC <= U_SHORT_MAX);
@@ -912,7 +915,7 @@
}
}
if (hasChild) {
- *newCount = Dictionary::getCount(DICT, newChildPosition);
+ *newCount = Dictionary::getCount(DICT_ROOT, newChildPosition);
return true;
} else {
return false;
@@ -924,4 +927,50 @@
return false;
}
}
+
+// TODO: use uint32_t instead of unsigned short
+bool UnigramDictionary::isValidWord(unsigned short *word, int length) {
+ if (IS_LATEST_DICT_VERSION) {
+ return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+ } else {
+ return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD);
+ }
+}
+
+
+// Require strict exact match.
+int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset,
+ int length) const {
+ // returns address of bigram data of that word
+ // return -99 if not found
+
+ int count = Dictionary::getCount(DICT_ROOT, &pos);
+ unsigned short currentChar = (unsigned short) word[offset];
+ for (int j = 0; j < count; j++) {
+ unsigned short c = Dictionary::getChar(DICT_ROOT, &pos);
+ int terminal = Dictionary::getTerminal(DICT_ROOT, &pos);
+ int childPos = Dictionary::getAddress(DICT_ROOT, &pos);
+ if (c == currentChar) {
+ if (offset == length - 1) {
+ if (terminal) {
+ return (pos+1);
+ }
+ } else {
+ if (childPos != 0) {
+ int t = getBigramPosition(childPos, word, offset + 1, length);
+ if (t > 0) {
+ return t;
+ }
+ }
+ }
+ }
+ if (terminal) {
+ Dictionary::getFreq(DICT_ROOT, IS_LATEST_DICT_VERSION, &pos);
+ }
+ // There could be two instances of each alphabet - upper and lower case. So continue
+ // looking ...
+ }
+ return NOT_VALID_WORD;
+}
+
} // namespace latinime
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index dd1b890..c47db1a 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -17,9 +17,14 @@
#ifndef LATINIME_UNIGRAM_DICTIONARY_H
#define LATINIME_UNIGRAM_DICTIONARY_H
+#include <stdint.h>
#include "defines.h"
#include "proximity_info.h"
+#ifndef NULL
+#define NULL 0
+#endif
+
namespace latinime {
class UnigramDictionary {
@@ -31,8 +36,11 @@
} ProximityType;
public:
- UnigramDictionary(const unsigned char *dict, int typedLetterMultipler, int fullWordMultiplier,
- int maxWordLength, int maxWords, int maxProximityChars, const bool isLatestDictVersion);
+ UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultipler,
+ int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
+ const bool isLatestDictVersion);
+ bool isValidWord(unsigned short *word, int length);
+ int getBigramPosition(int pos, unsigned short *word, int offset, int length) const;
int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
const int *ycoordinates, const int *codes, const int codesSize, const int flags,
unsigned short *outWords, int *frequencies);
@@ -59,7 +67,6 @@
int wideStrLen(unsigned short *str);
bool sameAsTyped(unsigned short *word, int length);
bool addWord(unsigned short *word, int length, int frequency);
- unsigned short toBaseLowerCase(unsigned short c);
void getWordsRec(const int childrenCount, const int pos, const int depth, const int maxDepth,
const bool traverseAllNodes, const int snr, const int inputIndex, const int diffs,
const int skipPos, const int excessivePos, const int transposedPos, int *nextLetters,
@@ -73,7 +80,6 @@
void getWordsOld(const int initialPos, const int inputLength, const int skipPos,
const int excessivePos, const int transposedPos, int *nextLetters,
const int nextLettersSize);
- void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize);
int calculateFinalFreq(const int inputIndex, const int depth, const int snr, const int skipPos,
const int excessivePos, const int transposedPos, const int freq,
const bool sameLength) const;
@@ -94,7 +100,7 @@
const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
bool *newTraverseAllNodes, int *newSnr, int*newInputIndex, int *newDiffs,
- int *nextSiblingPosition);
+ int *nextSiblingPosition, int *nextOutputIndex);
int getBestWordFreq(const int startInputIndex, const int inputLength, unsigned short *word);
// Process a node by considering missing space
bool processCurrentNodeForExactMatch(const int firstChildPos,
@@ -104,7 +110,8 @@
inline const int* getInputCharsAt(const int index) const {
return mInputCodes + (index * MAX_PROXIMITY_CHARS);
}
- const unsigned char *DICT;
+
+ const uint8_t* const DICT_ROOT;
const int MAX_WORD_LENGTH;
const int MAX_WORDS;
const int MAX_PROXIMITY_CHARS;
@@ -138,6 +145,7 @@
int mStackInputIndex[MAX_WORD_LENGTH_INTERNAL];
int mStackDiffs[MAX_WORD_LENGTH_INTERNAL];
int mStackSiblingPos[MAX_WORD_LENGTH_INTERNAL];
+ int mStackOutputIndex[MAX_WORD_LENGTH_INTERNAL];
int mNextLettersFrequency[NEXT_LETTERS_SIZE];
};