From 8dcad2ed4776b849ddacb623a94b4301afcf055a Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" <takaoka@google.com> Date: Wed, 28 Mar 2012 17:33:25 +0900 Subject: [PATCH] Don't send touch coordinates if proximity characters correction is disabled Bug: 6225317 Change-Id: I4fa65e020d838f53066d4a071f58fb6f40583e0b --- java/res/values/attrs.xml | 2 + java/res/xml-ar/keyboard_set.xml | 3 +- java/res/xml-be/keyboard_set.xml | 3 +- java/res/xml-bg/keyboard_set.xml | 3 +- java/res/xml-cs/keyboard_set.xml | 3 +- java/res/xml-da/keyboard_set.xml | 3 +- java/res/xml-de-rZZ/keyboard_set.xml | 3 +- java/res/xml-de/keyboard_set.xml | 3 +- java/res/xml-el/keyboard_set.xml | 3 +- java/res/xml-es/keyboard_set.xml | 3 +- java/res/xml-et/keyboard_set.xml | 3 +- java/res/xml-fa/keyboard_set.xml | 3 +- java/res/xml-fi/keyboard_set.xml | 3 +- java/res/xml-fr-rCA/keyboard_set.xml | 3 +- java/res/xml-fr-rCH/keyboard_set.xml | 3 +- java/res/xml-fr/keyboard_set.xml | 3 +- java/res/xml-hi/keyboard_set.xml | 17 +++++++++ java/res/xml-hr/keyboard_set.xml | 3 +- java/res/xml-hu/keyboard_set.xml | 3 +- java/res/xml-is/keyboard_set.xml | 3 +- java/res/xml-iw/keyboard_set.xml | 3 +- java/res/xml-ka/keyboard_set.xml | 17 +++++++++ java/res/xml-ky/keyboard_set.xml | 3 +- java/res/xml-mk/keyboard_set.xml | 3 +- java/res/xml-nb/keyboard_set.xml | 3 +- java/res/xml-pl/keyboard_set.xml | 3 +- java/res/xml-pt/keyboard_set.xml | 3 +- java/res/xml-ro/keyboard_set.xml | 3 +- java/res/xml-ru/keyboard_set.xml | 3 +- java/res/xml-sk/keyboard_set.xml | 3 +- java/res/xml-sl/keyboard_set.xml | 3 +- java/res/xml-sr/keyboard_set.xml | 3 +- java/res/xml-sv/keyboard_set.xml | 3 +- java/res/xml-th/keyboard_set.xml | 17 +++++++++ java/res/xml-tr/keyboard_set.xml | 3 +- java/res/xml-uk/keyboard_set.xml | 3 +- java/res/xml-vi/keyboard_set.xml | 3 +- java/res/xml/keyboard_set.xml | 3 +- .../inputmethod/keyboard/Keyboard.java | 22 ++++++++++- .../inputmethod/keyboard/KeyboardSet.java | 37 ++++++++++++------- .../keyboard/MoreKeysKeyboardView.java | 4 +- .../android/inputmethod/latin/LatinIME.java | 8 +++- 42 files changed, 176 insertions(+), 50 deletions(-) diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 550f5acf72..3d4e776a79 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 7b70f633ca..c37d128d7e 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 823234698d..1b865ede01 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 49914d54b6..e824826b39 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 b4535164b0..6dea17aa5d 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 9b512ec6ce..cc1096f374 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 635884d1db..e874bda5f1 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 485e63f061..3b648e5210 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 19ecb771b3..5809e7f746 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 9cf208b402..fd968fceb5 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 9ccef8c817..ddddcc64f1 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 cb62b0dae3..0d16f8d7e4 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 45968af909..c40e828d69 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 ea6ac8f261..8d780f5442 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 751900b88a..601d2bc646 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 fa1339b478..4b827ca1bc 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 804323a318..cb4dece2de 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 e17aefdf6a..511644077f 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 0f6e5759e3..2139ac7467 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 077bc6b277..c2ac944897 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 501ba96ee2..d1da41a6b5 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 1b0bc2df63..2be94689fc 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 71215c5e4e..0226bda5fc 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 5eabe8c6b6..93874892e5 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 2d585a9087..1675ed293f 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 6d27379298..fb0d13b982 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 65f9634ceb..f8140aac1e 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 6c34966d0e..73030fdc15 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 76daf32a7e..393d58ef1b 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 b283d968ab..db27b6107c 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 dbb2782f08..31f4714a92 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 71dedf4971..f59f3a99df 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 7135fc54b5..2b106e0dc8 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 99d75fe805..7362d8724d 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 da79758ecf..01822a9331 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 a7cfad1620..d782c98235 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 6d38eb1b4f..e5f744f7a7 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 1398b137c3..83f9ea01ce 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 bc48b85ef7..67e4e4a960 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 bb11a9b77a..1bf2fc04ea 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 2495b54727..e60fc9598f 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 86c1539584..9390571ebb 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; -- GitLab