diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 550f5acf727735c0bde7e59dd14a3e9e8c4f3734..3d4e776a79b96987e840bedd829fa885a5c63ccc 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 7b70f633caceb9ce4c6b21af1cd6a425c3f4c10c..c37d128d7ec24d8cc3dc46f2cc2ef2d3ab41a1bd 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 823234698dd2bf9e877bc45512ab9ecc16818388..1b865ede012db39cd0e5af24cac1d7f1fccf5710 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 49914d54b6fbc2070b988592932d6d48ac7605dc..e824826b3920f12292d390efd3f3ed69170b5b9e 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 b4535164b0e2866e6c8840c56f63ebf39bba66d4..6dea17aa5d78abacb1d84273cb9fc7434dee9e33 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 9b512ec6cef4a7871fbdfe6cd1763343360566b2..cc1096f3741aeccbbb9505cada547246d08a27e2 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 635884d1db741596c812dc9a46860c6820d60753..e874bda5f10d3ceee6b53cf648d7770dd49ba1aa 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 485e63f061f3eb4ae37bb986b41db63ba3059a6d..3b648e521000cbfbc2225659c4b1177b015580a2 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 19ecb771b3a5ee5b055241bd67ef374d474240a1..5809e7f746bea2188c8c9e6f63bb708f5d6bb20f 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 9cf208b402ee9594ca86cd4a7e2c90e389ce11ba..fd968fceb5c255685e961870030026b0b5dd52e7 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 9ccef8c817bbdf013914ccbe56efdeda473b0972..ddddcc64f1cef69e77b15c6716ddc33cdc05e783 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 cb62b0dae39a0b2fe949206970037bf92d11d20a..0d16f8d7e4577e03127ddcbcd2b5eaf8b060b49b 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 45968af909caf4776f83cbccb7c63fda1744fd39..c40e828d69da516385196c6c4cee7833f827dc01 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 ea6ac8f261325ef6a88aa4cea686d90286fb0a4e..8d780f5442da73cec33f8a5228e01da6c91f90dc 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 751900b88a17f25b73d45f5f4a8e009063e0480a..601d2bc6464b374a796967b0b76da4216fece5b9 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 fa1339b478691d9e5d464b3ed00729b5a884c1a6..4b827ca1bc973a68bb80155ea8092897d53aa9ee 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 804323a318a48fe5c0fccce3ef760cac897ff951..cb4dece2de94ef2bf683c2ad0d23204cab094965 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 e17aefdf6aa8f498c572e4a97fd4b1f481f92108..511644077f1cf88f96e9762e8278c72a7627502a 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 0f6e5759e35efdbdda778d1f9e205632151f2345..2139ac74670600c89e0ac3cdbd96a0b31abe8e2e 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 077bc6b277616cd566ffc03767a81835e0e9a55d..c2ac944897318ce067a989b1cb409616a8654093 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 501ba96ee20f9516fa6d1236f388097b8b7b3cc5..d1da41a6b57cf4c958d1a15f91c3a091ed8b4789 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 1b0bc2df63f1c5d64f892bad5b75fd46ced2d92f..2be94689fc0f3863a38cf61f9e58dd8d074841b4 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 71215c5e4e63bca893cff2d51c222cd97952b66a..0226bda5fc05088aa0ca73a29f49b1de0063ff20 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 5eabe8c6b6d40388035619bd1477dd2cb081716e..93874892e575cfbb62c51dd62d1c5ec92f0aa1f5 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 2d585a90878c98961268c4ee90cee641131a3bda..1675ed293f6a560f5123f795493bcfd6aeb850d2 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 6d2737929868ddddd516866f5c0789690e8b728d..fb0d13b9825711dccb7f83f7567c964fa1cdd816 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 65f9634ceb59cf4000683ca22400216b70f941df..f8140aac1e099a71949e38119ad48379170b260e 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 6c34966d0e6e3040ca60281bcbbd78dec3292ecc..73030fdc1553f727c337a2a3899d12babc5ab759 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 76daf32a7ee4c6bb9e8c2a0a1a07686d08eeeaf5..393d58ef1b06bc72b3ad124c6ffb633feeb5fef7 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 b283d968ab350d44550fc193fd756ba6641ce8cf..db27b6107cebdbc3ee9519f18ca2c4b40f392d83 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 dbb2782f081bfd142103a8243187096febdaa651..31f4714a92b4e77bd8ddfce95c174e601a115523 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 71dedf49710fc622a450317a36ac331c3eb528f0..f59f3a99df914d562bbfb818fe061a3953e8d324 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 7135fc54b5ad95a35818c4847486347a877738d7..2b106e0dc8b2cd9d0a73aab703c8a3eabf445c0d 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 99d75fe805234e3a3897ecd063ff961858fc551d..7362d8724da05a8859ab2d87462f58b1a33dac2c 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 da79758ecf78531f3a0e92e8ece447155303ff4b..01822a933108d13ddf419a31459cc2c67ecff842 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 a7cfad162002e6fe2b7c888d63dee06d746163ff..d782c98235540499b9ba5b8cdff811f15cb10cc6 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 6d38eb1b4f323f3d590d2ec4a1ddca096959ec66..e5f744f7a7978a77454a7248124c9fde70127303 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 1398b137c3bbb12f5b7348b53350c2857bdda4ac..83f9ea01ce62a64d6e9e8b9716edb91a3559df7a 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 bc48b85ef7fab0bdfd03ceacc50a2f65fa5d7914..67e4e4a960b25d3d06f47315d08d6528833de8e8 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 bb11a9b77a7fde8fef78efd12c875660ecf3aa47..1bf2fc04eadb28f50d115e5fa2527b437aacf87c 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 2495b547271609f86001191d30728a2affd5ee50..e60fc9598f70bbf4c24ad31d449682741cb43d96 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 86c15395848f778e0c72c7913fb3332a69317b71..9390571ebb27ec50461a1e788657a69b3a27c539 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;