From 7d045829b8cd613ab43cb88b4cf0d4f492827996 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Wed, 21 Nov 2012 12:51:36 +0900 Subject: [PATCH] Request update shift state after shift-chording input Bug: 7529860 Change-Id: Iec82459348722be358ae2ded15deafac21749dcd --- .../keyboard/internal/KeyboardState.java | 5 ++++ .../KeyboardStateMultiTouchTests.java | 26 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index 5e111fb9a..631e647e8 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -487,6 +487,11 @@ public final class KeyboardState { // After chording input while normal state. setShifted(UNSHIFT); } + // After chording input, automatic shift state may have been changed depending on + // what characters were input. + mShiftKeyState.onRelease(); + mSwitchActions.requestUpdatingShiftState(); + return; } else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) { // In shift locked state, shift has been pressed and slid out to other key. setShiftLocked(true); diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java index f5ad7239e..053bcb53a 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java @@ -50,7 +50,7 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); // Press/release symbol letter key. chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Release "123?" key, switch back to alphabet shift unshifted. + // Release "123?" key, switch back to alphabet unshifted. releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); } @@ -330,7 +330,7 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { releaseKey('X', ALPHABET_MANUAL_SHIFTED); // Release 'Z' key releaseKey('Z', ALPHABET_MANUAL_SHIFTED); - // Release shift key. + // Release shift key, switch back to alphabet shifted. releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); } @@ -351,8 +351,24 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { releaseKey('X', ALPHABET_MANUAL_SHIFTED); // Release 'Z' key releaseKey('Z', ALPHABET_MANUAL_SHIFTED); - // Release shift key. + // Release shift key, updated to alphabet unshifted. releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + + // Update shift state with auto caps enabled. + pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); + + // Press shift key and hold, switch to alphabet shifted. + pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press 'X' key and hold + chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); + // Release 'X' key + releaseKey('X', ALPHABET_MANUAL_SHIFTED); + // Press key and hold, stays in alphabet shifted. + chordingPressKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_MANUAL_SHIFTED); + // Release 'Z' key + releaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_MANUAL_SHIFTED); + // Release shift key, updated to alphabet automatic shifted. + releaseKey(CODE_SHIFT, ALPHABET_AUTOMATIC_SHIFTED); } // Multi touch shift chording input in capitalize character mode. @@ -372,8 +388,8 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { releaseKey('X', ALPHABET_MANUAL_SHIFTED); // Release 'Z' key releaseKey('Z', ALPHABET_MANUAL_SHIFTED); - // Release shift key. - releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + // Release shift key, updated to alphabet automatic shifted. + releaseKey(CODE_SHIFT, ALPHABET_AUTOMATIC_SHIFTED); } public void testLongPressShiftAndChording() {