aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/LatinIME.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-06-21 16:00:58 +0900
committerTadashi G. Takaoka <takaoka@google.com>2011-06-21 17:50:17 +0900
commit35f20916e5348d7fa485ba8eb0a5cf2e67f4f354 (patch)
tree12f1edcb3be10a8a8b668ec205ce3e3cc0626cdd /java/src/com/android/inputmethod/latin/LatinIME.java
parent05c0fc6136a27eb12a078514f730c277e9a8739e (diff)
downloadlatinime-35f20916e5348d7fa485ba8eb0a5cf2e67f4f354.tar.gz
latinime-35f20916e5348d7fa485ba8eb0a5cf2e67f4f354.tar.xz
latinime-35f20916e5348d7fa485ba8eb0a5cf2e67f4f354.zip
Support Turkish keyboard
I left TODOs in Suggest.java because we must pay attention to locale when changing character's case. Filed another Bug: 4769095 to track that. Bug: 4768050 Change-Id: I1ae2c4ffd2208403a8c2a25dd3a56b71dcefc826
Diffstat (limited to 'java/src/com/android/inputmethod/latin/LatinIME.java')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dd97db34e..1645b1678 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1274,7 +1274,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
clearSuggestions();
}
}
- KeyboardSwitcher switcher = mKeyboardSwitcher;
+ final KeyboardSwitcher switcher = mKeyboardSwitcher;
if (switcher.isShiftedOrShiftLocked()) {
if (keyCodes == null || keyCodes[0] < Character.MIN_CODE_POINT
|| keyCodes[0] > Character.MAX_CODE_POINT) {
@@ -1282,13 +1282,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
code = keyCodes[0];
if (switcher.isAlphabetMode() && Character.isLowerCase(code)) {
- int upperCaseCode = Character.toUpperCase(code);
- if (upperCaseCode != code) {
- code = upperCaseCode;
+ // In some locales, such as Turkish, Character.toUpperCase() may return a wrong
+ // character because it doesn't take care of locale.
+ final String upperCaseString = new String(new int[] {code}, 0, 1)
+ .toUpperCase(mSubtypeSwitcher.getInputLocale());
+ if (upperCaseString.codePointCount(0, upperCaseString.length()) == 1) {
+ code = upperCaseString.codePointAt(0);
} else {
// Some keys, such as [eszett], have upper case as multi-characters.
- String upperCase = new String(new int[] {code}, 0, 1).toUpperCase();
- onTextInput(upperCase);
+ onTextInput(upperCaseString);
return;
}
}