aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values/attrs.xml2
-rw-r--r--java/res/xml-ar/keyboard_set.xml3
-rw-r--r--java/res/xml-be/keyboard_set.xml3
-rw-r--r--java/res/xml-bg/keyboard_set.xml3
-rw-r--r--java/res/xml-cs/keyboard_set.xml3
-rw-r--r--java/res/xml-da/keyboard_set.xml3
-rw-r--r--java/res/xml-de-rZZ/keyboard_set.xml3
-rw-r--r--java/res/xml-de/keyboard_set.xml3
-rw-r--r--java/res/xml-el/keyboard_set.xml3
-rw-r--r--java/res/xml-es/keyboard_set.xml3
-rw-r--r--java/res/xml-et/keyboard_set.xml3
-rw-r--r--java/res/xml-fa/keyboard_set.xml3
-rw-r--r--java/res/xml-fi/keyboard_set.xml3
-rw-r--r--java/res/xml-fr-rCA/keyboard_set.xml3
-rw-r--r--java/res/xml-fr-rCH/keyboard_set.xml3
-rw-r--r--java/res/xml-fr/keyboard_set.xml3
-rw-r--r--java/res/xml-hi/keyboard_set.xml17
-rw-r--r--java/res/xml-hr/keyboard_set.xml3
-rw-r--r--java/res/xml-hu/keyboard_set.xml3
-rw-r--r--java/res/xml-is/keyboard_set.xml3
-rw-r--r--java/res/xml-iw/keyboard_set.xml3
-rw-r--r--java/res/xml-ka/keyboard_set.xml17
-rw-r--r--java/res/xml-ky/keyboard_set.xml3
-rw-r--r--java/res/xml-mk/keyboard_set.xml3
-rw-r--r--java/res/xml-nb/keyboard_set.xml3
-rw-r--r--java/res/xml-pl/keyboard_set.xml3
-rw-r--r--java/res/xml-pt/keyboard_set.xml3
-rw-r--r--java/res/xml-ro/keyboard_set.xml3
-rw-r--r--java/res/xml-ru/keyboard_set.xml3
-rw-r--r--java/res/xml-sk/keyboard_set.xml3
-rw-r--r--java/res/xml-sl/keyboard_set.xml3
-rw-r--r--java/res/xml-sr/keyboard_set.xml3
-rw-r--r--java/res/xml-sv/keyboard_set.xml3
-rw-r--r--java/res/xml-th/keyboard_set.xml17
-rw-r--r--java/res/xml-tr/keyboard_set.xml3
-rw-r--r--java/res/xml-uk/keyboard_set.xml3
-rw-r--r--java/res/xml-vi/keyboard_set.xml3
-rw-r--r--java/res/xml/keyboard_set.xml3
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java22
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSet.java37
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java4
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java8
42 files changed, 176 insertions, 50 deletions
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 550f5acf7..3d4e776a7 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -424,5 +424,7 @@
<enum name="number" value="9" />
</attr>
<attr name="elementKeyboard" format="reference"/>
+ <!-- Enable proximity characters correction. Disabled by default. -->
+ <attr name="enableProximityCharsCorrection" format="boolean" />
</declare-styleable>
</resources>
diff --git a/java/res/xml-ar/keyboard_set.xml b/java/res/xml-ar/keyboard_set.xml
index 7b70f633c..c37d128d7 100644
--- a/java/res/xml-ar/keyboard_set.xml
+++ b/java/res/xml-ar/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="ar" >
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_arabic" />
+ latin:elementKeyboard="@xml/kbd_arabic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-be/keyboard_set.xml b/java/res/xml-be/keyboard_set.xml
index 823234698..1b865ede0 100644
--- a/java/res/xml-be/keyboard_set.xml
+++ b/java/res/xml-be/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="be">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_east_slavic" />
+ latin:elementKeyboard="@xml/kbd_east_slavic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-bg/keyboard_set.xml b/java/res/xml-bg/keyboard_set.xml
index 49914d54b..e824826b3 100644
--- a/java/res/xml-bg/keyboard_set.xml
+++ b/java/res/xml-bg/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="bg">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_bulgarian" />
+ latin:elementKeyboard="@xml/kbd_bulgarian"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-cs/keyboard_set.xml b/java/res/xml-cs/keyboard_set.xml
index b4535164b..6dea17aa5 100644
--- a/java/res/xml-cs/keyboard_set.xml
+++ b/java/res/xml-cs/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="cs">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwertz" />
+ latin:elementKeyboard="@xml/kbd_qwertz"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-da/keyboard_set.xml b/java/res/xml-da/keyboard_set.xml
index 9b512ec6c..cc1096f37 100644
--- a/java/res/xml-da/keyboard_set.xml
+++ b/java/res/xml-da/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="da">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_nordic" />
+ latin:elementKeyboard="@xml/kbd_nordic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-de-rZZ/keyboard_set.xml b/java/res/xml-de-rZZ/keyboard_set.xml
index 635884d1d..e874bda5f 100644
--- a/java/res/xml-de-rZZ/keyboard_set.xml
+++ b/java/res/xml-de-rZZ/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="de">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-de/keyboard_set.xml b/java/res/xml-de/keyboard_set.xml
index 485e63f06..3b648e521 100644
--- a/java/res/xml-de/keyboard_set.xml
+++ b/java/res/xml-de/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="de">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwertz" />
+ latin:elementKeyboard="@xml/kbd_qwertz"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-el/keyboard_set.xml b/java/res/xml-el/keyboard_set.xml
index 19ecb771b..5809e7f74 100644
--- a/java/res/xml-el/keyboard_set.xml
+++ b/java/res/xml-el/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="el">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_greek" />
+ latin:elementKeyboard="@xml/kbd_greek"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-es/keyboard_set.xml b/java/res/xml-es/keyboard_set.xml
index 9cf208b40..fd968fceb 100644
--- a/java/res/xml-es/keyboard_set.xml
+++ b/java/res/xml-es/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="es,es_US">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_spanish" />
+ latin:elementKeyboard="@xml/kbd_spanish"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_spanish_symbols" />
diff --git a/java/res/xml-et/keyboard_set.xml b/java/res/xml-et/keyboard_set.xml
index 9ccef8c81..ddddcc64f 100644
--- a/java/res/xml-et/keyboard_set.xml
+++ b/java/res/xml-et/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="et">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_nordic" />
+ latin:elementKeyboard="@xml/kbd_nordic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-fa/keyboard_set.xml b/java/res/xml-fa/keyboard_set.xml
index cb62b0dae..0d16f8d7e 100644
--- a/java/res/xml-fa/keyboard_set.xml
+++ b/java/res/xml-fa/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="fa" >
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_farsi" />
+ latin:elementKeyboard="@xml/kbd_farsi"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-fi/keyboard_set.xml b/java/res/xml-fi/keyboard_set.xml
index 45968af90..c40e828d6 100644
--- a/java/res/xml-fi/keyboard_set.xml
+++ b/java/res/xml-fi/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="fi">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_nordic" />
+ latin:elementKeyboard="@xml/kbd_nordic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-fr-rCA/keyboard_set.xml b/java/res/xml-fr-rCA/keyboard_set.xml
index ea6ac8f26..8d780f544 100644
--- a/java/res/xml-fr-rCA/keyboard_set.xml
+++ b/java/res/xml-fr-rCA/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="fr_CA">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-fr-rCH/keyboard_set.xml b/java/res/xml-fr-rCH/keyboard_set.xml
index 751900b88..601d2bc64 100644
--- a/java/res/xml-fr-rCH/keyboard_set.xml
+++ b/java/res/xml-fr-rCH/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="fr_CH">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwertz" />
+ latin:elementKeyboard="@xml/kbd_qwertz"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-fr/keyboard_set.xml b/java/res/xml-fr/keyboard_set.xml
index fa1339b47..4b827ca1b 100644
--- a/java/res/xml-fr/keyboard_set.xml
+++ b/java/res/xml-fr/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="fr">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_azerty" />
+ latin:elementKeyboard="@xml/kbd_azerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_azerty_symbols" />
diff --git a/java/res/xml-hi/keyboard_set.xml b/java/res/xml-hi/keyboard_set.xml
index 804323a31..cb4dece2d 100644
--- a/java/res/xml-hi/keyboard_set.xml
+++ b/java/res/xml-hi/keyboard_set.xml
@@ -23,6 +23,23 @@
latin:keyboardLocale="hi">
<Element
latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_hindi"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="alphabetAutomaticShifted"
+ latin:elementKeyboard="@xml/kbd_hindi"
+ latin:enableProximityCharsCorrection="true" />
+ <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+ because the letters on these layouts aren't the ones in different case of the above
+ unshifted layouts. -->
+ <Element
+ latin:elementName="alphabetManualShifted"
+ latin:elementKeyboard="@xml/kbd_hindi" />
+ <Element
+ latin:elementName="alphabetShiftLocked"
+ latin:elementKeyboard="@xml/kbd_hindi" />
+ <Element
+ latin:elementName="alphabetShiftLockShifted"
latin:elementKeyboard="@xml/kbd_hindi" />
<Element
latin:elementName="symbols"
diff --git a/java/res/xml-hr/keyboard_set.xml b/java/res/xml-hr/keyboard_set.xml
index e17aefdf6..511644077 100644
--- a/java/res/xml-hr/keyboard_set.xml
+++ b/java/res/xml-hr/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="hr">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwertz" />
+ latin:elementKeyboard="@xml/kbd_qwertz"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-hu/keyboard_set.xml b/java/res/xml-hu/keyboard_set.xml
index 0f6e5759e..2139ac746 100644
--- a/java/res/xml-hu/keyboard_set.xml
+++ b/java/res/xml-hu/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="hu">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwertz" />
+ latin:elementKeyboard="@xml/kbd_qwertz"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-is/keyboard_set.xml b/java/res/xml-is/keyboard_set.xml
index 077bc6b27..c2ac94489 100644
--- a/java/res/xml-is/keyboard_set.xml
+++ b/java/res/xml-is/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="is">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_nordic" />
+ latin:elementKeyboard="@xml/kbd_nordic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-iw/keyboard_set.xml b/java/res/xml-iw/keyboard_set.xml
index 501ba96ee..d1da41a6b 100644
--- a/java/res/xml-iw/keyboard_set.xml
+++ b/java/res/xml-iw/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="iw">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_hebrew" />
+ latin:elementKeyboard="@xml/kbd_hebrew"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-ka/keyboard_set.xml b/java/res/xml-ka/keyboard_set.xml
index 1b0bc2df6..2be94689f 100644
--- a/java/res/xml-ka/keyboard_set.xml
+++ b/java/res/xml-ka/keyboard_set.xml
@@ -23,6 +23,23 @@
latin:keyboardLocale="ka">
<Element
latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_georgian"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="alphabetAutomaticShifted"
+ latin:elementKeyboard="@xml/kbd_georgian"
+ latin:enableProximityCharsCorrection="true" />
+ <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+ because the letters on these layouts aren't the ones in different case of the above
+ unshifted layouts. -->
+ <Element
+ latin:elementName="alphabetManualShifted"
+ latin:elementKeyboard="@xml/kbd_georgian" />
+ <Element
+ latin:elementName="alphabetShiftLocked"
+ latin:elementKeyboard="@xml/kbd_georgian" />
+ <Element
+ latin:elementName="alphabetShiftLockShifted"
latin:elementKeyboard="@xml/kbd_georgian" />
<Element
latin:elementName="symbols"
diff --git a/java/res/xml-ky/keyboard_set.xml b/java/res/xml-ky/keyboard_set.xml
index 71215c5e4..0226bda5f 100644
--- a/java/res/xml-ky/keyboard_set.xml
+++ b/java/res/xml-ky/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="ky">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_east_slavic" />
+ latin:elementKeyboard="@xml/kbd_east_slavic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-mk/keyboard_set.xml b/java/res/xml-mk/keyboard_set.xml
index 5eabe8c6b..93874892e 100644
--- a/java/res/xml-mk/keyboard_set.xml
+++ b/java/res/xml-mk/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="mk">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_south_slavic" />
+ latin:elementKeyboard="@xml/kbd_south_slavic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-nb/keyboard_set.xml b/java/res/xml-nb/keyboard_set.xml
index 2d585a908..1675ed293 100644
--- a/java/res/xml-nb/keyboard_set.xml
+++ b/java/res/xml-nb/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="nb">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_nordic" />
+ latin:elementKeyboard="@xml/kbd_nordic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-pl/keyboard_set.xml b/java/res/xml-pl/keyboard_set.xml
index 6d2737929..fb0d13b98 100644
--- a/java/res/xml-pl/keyboard_set.xml
+++ b/java/res/xml-pl/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="pl">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-pt/keyboard_set.xml b/java/res/xml-pt/keyboard_set.xml
index 65f9634ce..f8140aac1 100644
--- a/java/res/xml-pt/keyboard_set.xml
+++ b/java/res/xml-pt/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="pt">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-ro/keyboard_set.xml b/java/res/xml-ro/keyboard_set.xml
index 6c34966d0..73030fdc1 100644
--- a/java/res/xml-ro/keyboard_set.xml
+++ b/java/res/xml-ro/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="ro">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-ru/keyboard_set.xml b/java/res/xml-ru/keyboard_set.xml
index 76daf32a7..393d58ef1 100644
--- a/java/res/xml-ru/keyboard_set.xml
+++ b/java/res/xml-ru/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="ru">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_east_slavic" />
+ latin:elementKeyboard="@xml/kbd_east_slavic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-sk/keyboard_set.xml b/java/res/xml-sk/keyboard_set.xml
index b283d968a..db27b6107 100644
--- a/java/res/xml-sk/keyboard_set.xml
+++ b/java/res/xml-sk/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="sk">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-sl/keyboard_set.xml b/java/res/xml-sl/keyboard_set.xml
index dbb2782f0..31f4714a9 100644
--- a/java/res/xml-sl/keyboard_set.xml
+++ b/java/res/xml-sl/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="sl">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-sr/keyboard_set.xml b/java/res/xml-sr/keyboard_set.xml
index 71dedf497..f59f3a99d 100644
--- a/java/res/xml-sr/keyboard_set.xml
+++ b/java/res/xml-sr/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="sr">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_south_slavic" />
+ latin:elementKeyboard="@xml/kbd_south_slavic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-sv/keyboard_set.xml b/java/res/xml-sv/keyboard_set.xml
index 7135fc54b..2b106e0dc 100644
--- a/java/res/xml-sv/keyboard_set.xml
+++ b/java/res/xml-sv/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="sv">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_nordic" />
+ latin:elementKeyboard="@xml/kbd_nordic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-th/keyboard_set.xml b/java/res/xml-th/keyboard_set.xml
index 99d75fe80..7362d8724 100644
--- a/java/res/xml-th/keyboard_set.xml
+++ b/java/res/xml-th/keyboard_set.xml
@@ -23,6 +23,23 @@
latin:keyboardLocale="th">
<Element
latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_thai"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="alphabetAutomaticShifted"
+ latin:elementKeyboard="@xml/kbd_thai"
+ latin:enableProximityCharsCorrection="true" />
+ <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+ because the letters on these layouts aren't the ones in different case of the above
+ unshifted layouts. -->
+ <Element
+ latin:elementName="alphabetManualShifted"
+ latin:elementKeyboard="@xml/kbd_thai" />
+ <Element
+ latin:elementName="alphabetShiftLocked"
+ latin:elementKeyboard="@xml/kbd_thai" />
+ <Element
+ latin:elementName="alphabetShiftLockShifted"
latin:elementKeyboard="@xml/kbd_thai" />
<Element
latin:elementName="symbols"
diff --git a/java/res/xml-tr/keyboard_set.xml b/java/res/xml-tr/keyboard_set.xml
index da79758ec..01822a933 100644
--- a/java/res/xml-tr/keyboard_set.xml
+++ b/java/res/xml-tr/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="tr">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-uk/keyboard_set.xml b/java/res/xml-uk/keyboard_set.xml
index a7cfad162..d782c9823 100644
--- a/java/res/xml-uk/keyboard_set.xml
+++ b/java/res/xml-uk/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="uk">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_east_slavic" />
+ latin:elementKeyboard="@xml/kbd_east_slavic"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml-vi/keyboard_set.xml b/java/res/xml-vi/keyboard_set.xml
index 6d38eb1b4..e5f744f7a 100644
--- a/java/res/xml-vi/keyboard_set.xml
+++ b/java/res/xml-vi/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="vi">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/res/xml/keyboard_set.xml b/java/res/xml/keyboard_set.xml
index 1398b137c..83f9ea01c 100644
--- a/java/res/xml/keyboard_set.xml
+++ b/java/res/xml/keyboard_set.xml
@@ -23,7 +23,8 @@
latin:keyboardLocale="en_GB,en_US">
<Element
latin:elementName="alphabet"
- latin:elementKeyboard="@xml/kbd_qwerty" />
+ latin:elementKeyboard="@xml/kbd_qwerty"
+ latin:enableProximityCharsCorrection="true" />
<Element
latin:elementName="symbols"
latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index bc48b85ef..67e4e4a96 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -130,6 +130,7 @@ public class Keyboard {
private final HashMap<Integer, Key> mKeyCache = new HashMap<Integer, Key>();
private final ProximityInfo mProximityInfo;
+ private final boolean mProximityCharsCorrectionEnabled;
public Keyboard(Params params) {
mId = params.mId;
@@ -153,6 +154,19 @@ public class Keyboard {
mProximityInfo = new ProximityInfo(params.mId.mLocale.toString(),
params.GRID_WIDTH, params.GRID_HEIGHT, mOccupiedWidth, mOccupiedHeight,
mMostCommonKeyWidth, mMostCommonKeyHeight, mKeys, params.mTouchPositionCorrection);
+ mProximityCharsCorrectionEnabled = params.mProximityCharsCorrectionEnabled;
+ }
+
+ public boolean hasProximityCharsCorrection(int code) {
+ if (!mProximityCharsCorrectionEnabled) {
+ return false;
+ }
+ // Note: The native code has the main keyboard layout only at this moment.
+ // TODO: Figure out how to handle proximity characters information of all layouts.
+ final boolean canAssumeNativeHasProximityCharsInfoOfAllKeys = (
+ mId.mElementId == KeyboardId.ELEMENT_ALPHABET
+ || mId.mElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED);
+ return canAssumeNativeHasProximityCharsInfoOfAllKeys || Character.isLetter(code);
}
public ProximityInfo getProximityInfo() {
@@ -230,6 +244,8 @@ public class Keyboard {
public int mMostCommonKeyHeight = 0;
public int mMostCommonKeyWidth = 0;
+ public boolean mProximityCharsCorrectionEnabled;
+
public final TouchPositionCorrection mTouchPositionCorrection =
new TouchPositionCorrection();
@@ -647,6 +663,10 @@ public class Keyboard {
mParams.mTouchPositionCorrection.setEnabled(enabled);
}
+ public void setProximityCharsCorrectionEnabled(boolean enabled) {
+ mParams.mProximityCharsCorrectionEnabled = enabled;
+ }
+
public Keyboard build() {
return new Keyboard(mParams);
}
@@ -753,9 +773,9 @@ public class Keyboard {
params.mMaxMoreKeysKeyboardColumn = keyAttr.getInt(
R.styleable.Keyboard_Key_maxMoreKeysColumn, 5);
+ params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
params.mIconsSet.loadIcons(keyboardAttr);
- params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
final int resourceId = keyboardAttr.getResourceId(
R.styleable.Keyboard_touchPositionCorrectionData, 0);
params.mTouchPositionCorrection.setEnabled(resourceId != 0);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardSet.java
index bb11a9b77..1bf2fc04e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSet.java
@@ -28,6 +28,7 @@ import android.view.inputmethod.EditorInfo;
import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.compat.InputTypeCompatUtils;
+import com.android.inputmethod.keyboard.KeyboardSet.Params.ElementParams;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.LocaleUtils;
@@ -53,7 +54,7 @@ public class KeyboardSet {
private static final String TAG = KeyboardSet.class.getSimpleName();
private static final boolean DEBUG_CACHE = LatinImeLogger.sDBG;
- private static final String TAG_KEYBOARD_SET = TAG;
+ private static final String TAG_KEYBOARD_SET = "KeyboardSet";
private static final String TAG_ELEMENT = "Element";
private final Context mContext;
@@ -104,10 +105,14 @@ public class KeyboardSet {
Locale mLocale;
int mOrientation;
int mWidth;
- // KeyboardSet element id to keyboard layout XML id map.
- final HashMap<Integer, Integer> mKeyboardSetElementIdToXmlIdMap =
- new HashMap<Integer, Integer>();
- Params() {}
+ // KeyboardSet element id to element's parameters map.
+ final HashMap<Integer, ElementParams> mKeyboardSetElementIdToParamsMap =
+ new HashMap<Integer, ElementParams>();
+
+ static class ElementParams {
+ int mKeyboardXmlId;
+ boolean mProximityCharsCorrectionEnabled;
+ }
}
public static void clearKeyboardCache() {
@@ -141,20 +146,21 @@ public class KeyboardSet {
break;
}
- Integer keyboardXmlId = mParams.mKeyboardSetElementIdToXmlIdMap.get(keyboardSetElementId);
- if (keyboardXmlId == null) {
- keyboardXmlId = mParams.mKeyboardSetElementIdToXmlIdMap.get(
+ ElementParams elementParams = mParams.mKeyboardSetElementIdToParamsMap.get(
+ keyboardSetElementId);
+ if (elementParams == null) {
+ elementParams = mParams.mKeyboardSetElementIdToParamsMap.get(
KeyboardId.ELEMENT_ALPHABET);
}
final KeyboardId id = getKeyboardId(keyboardSetElementId);
try {
- return getKeyboard(mContext, keyboardXmlId, id);
+ return getKeyboard(mContext, elementParams, id);
} catch (RuntimeException e) {
throw new KeyboardSetException(e, id);
}
}
- private Keyboard getKeyboard(Context context, int keyboardXmlId, KeyboardId id) {
+ private Keyboard getKeyboard(Context context, ElementParams elementParams, KeyboardId id) {
final Resources res = context.getResources();
final SoftReference<Keyboard> ref = sKeyboardCache.get(id);
Keyboard keyboard = (ref == null) ? null : ref.get();
@@ -166,8 +172,10 @@ public class KeyboardSet {
if (id.isAlphabetKeyboard()) {
builder.setAutoGenerate(sKeysCache);
}
- builder.load(keyboardXmlId, id);
+ builder.load(elementParams.mKeyboardXmlId, id);
builder.setTouchPositionCorrectionEnabled(mParams.mTouchPositionCorrectionEnabled);
+ builder.setProximityCharsCorrectionEnabled(
+ elementParams.mProximityCharsCorrectionEnabled);
keyboard = builder.build();
} finally {
LocaleUtils.setSystemLocale(res, savedLocale);
@@ -331,11 +339,14 @@ public class KeyboardSet {
TAG_ELEMENT, parser);
XmlParseUtils.checkEndTag(TAG_ELEMENT, parser);
+ final ElementParams elementParams = new ElementParams();
final int elementName = a.getInt(
R.styleable.KeyboardSet_Element_elementName, 0);
- final int elementKeyboard = a.getResourceId(
+ elementParams.mKeyboardXmlId = a.getResourceId(
R.styleable.KeyboardSet_Element_elementKeyboard, 0);
- mParams.mKeyboardSetElementIdToXmlIdMap.put(elementName, elementKeyboard);
+ elementParams.mProximityCharsCorrectionEnabled = a.getBoolean(
+ R.styleable.KeyboardSet_Element_enableProximityCharsCorrection, false);
+ mParams.mKeyboardSetElementIdToParamsMap.put(elementName, elementParams);
} finally {
a.recycle();
}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index 2495b5472..e60fc9598 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -47,7 +47,9 @@ public class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel
new KeyboardActionListener.Adapter() {
@Override
public void onCodeInput(int primaryCode, int x, int y) {
- mListener.onCodeInput(primaryCode, x, y);
+ // Because a more keys keyboard doesn't need proximity characters correction, we don't
+ // send touch event coordinates.
+ mListener.onCodeInput(primaryCode, NOT_A_TOUCH_COORDINATE, NOT_A_TOUCH_COORDINATE);
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 86c153958..9390571eb 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1318,7 +1318,13 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (mSettingsValues.isWordSeparator(primaryCode)) {
didAutoCorrect = handleSeparator(primaryCode, x, y, spaceState);
} else {
- handleCharacter(primaryCode, x, y, spaceState);
+ final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
+ if (keyboard != null && keyboard.hasProximityCharsCorrection(primaryCode)) {
+ handleCharacter(primaryCode, x, y, spaceState);
+ } else {
+ handleCharacter(primaryCode, NOT_A_TOUCH_COORDINATE, NOT_A_TOUCH_COORDINATE,
+ spaceState);
+ }
}
mExpectingUpdateSelection = true;
mShouldSwitchToLastSubtype = true;