aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java13
-rw-r--r--java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java10
2 files changed, 15 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 50fc4840d..4e8723c76 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1348,14 +1348,21 @@ public class LatinIME extends InputMethodService
}
}
if (mKeyboardSwitcher.getInputView().isShifted()) {
- // TODO: This doesn't work with [beta], need to fix it in the next release.
if (keyCodes == null || keyCodes[0] < Character.MIN_CODE_POINT
|| keyCodes[0] > Character.MAX_CODE_POINT) {
return;
}
primaryCode = keyCodes[0];
- if (mKeyboardSwitcher.isAlphabetMode()) {
- primaryCode = Character.toUpperCase(primaryCode);
+ if (mKeyboardSwitcher.isAlphabetMode() && Character.isLowerCase(primaryCode)) {
+ int upperCaseCode = Character.toUpperCase(primaryCode);
+ if (upperCaseCode != primaryCode) {
+ primaryCode = upperCaseCode;
+ } else {
+ // Some keys, such as [eszett], have upper case as multi-characters.
+ String upperCase = new String(new int[] {primaryCode}, 0, 1).toUpperCase();
+ onText(upperCase);
+ return;
+ }
}
}
if (mPredicting) {
diff --git a/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java
index 709d082be..356e62d48 100644
--- a/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java
+++ b/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java
@@ -41,19 +41,19 @@ class MiniKeyboardKeyDetector extends KeyDetector {
final Key[] keys = getKeys();
final int touchX = getTouchX(x);
final int touchY = getTouchY(y);
- int closestKey = LatinKeyboardBaseView.NOT_A_KEY;
+ int closestKeyIndex = LatinKeyboardBaseView.NOT_A_KEY;
int closestKeyDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare;
final int keyCount = keys.length;
for (int i = 0; i < keyCount; i++) {
final Key key = keys[i];
int dist = key.squaredDistanceFrom(touchX, touchY);
if (dist < closestKeyDist) {
- closestKey = i;
+ closestKeyIndex = i;
closestKeyDist = dist;
}
}
- if (allKeys != null && closestKey != LatinKeyboardBaseView.NOT_A_KEY)
- allKeys[0] = closestKey;
- return closestKey;
+ if (allKeys != null && closestKeyIndex != LatinKeyboardBaseView.NOT_A_KEY)
+ allKeys[0] = keys[closestKeyIndex].codes[0];
+ return closestKeyIndex;
}
}