From cc2636b4e1b2d340351324f178f7ee990d7538cb Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 18 Jan 2013 18:04:24 +0900 Subject: [PATCH] Remove automatic switch back to alphabet feature Change-Id: I4600c808f2ec31c18d3698a43afa7f4be9407e3e --- java/res/values/donottranslate.xml | 13 ----- .../keyboard/KeyboardSwitcher.java | 2 +- .../keyboard/internal/KeyboardState.java | 52 +++++++----------- .../KeyboardStateSingleTouchTests.java | 53 ------------------- .../internal/KeyboardStateTestsBase.java | 44 +++++++-------- .../internal/MockKeyboardSwitcher.java | 22 ++++---- 6 files changed, 51 insertions(+), 135 deletions(-) diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 70ace776f..36412b48f 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -29,19 +29,6 @@ " \n"()[]{}*&<>+=|.,;:!?/_\" \'- - - - - 0 diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index bc9dbc049..bad9a8aed 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -149,7 +149,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { settingsValues.isLanguageSwitchKeyEnabled()); mKeyboardLayoutSet = builder.build(); try { - mState.onLoadKeyboard(mResources.getString(R.string.layout_switch_back_symbols)); + mState.onLoadKeyboard(); mFeedbackManager.onSettingsChanged(settingsValues); } catch (KeyboardLayoutSetException e) { Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause()); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index 25a1c6a00..5a77044b5 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -26,7 +26,7 @@ import com.android.inputmethod.latin.Constants; * * This class contains all keyboard state transition logic. * - * The input events are {@link #onLoadKeyboard(String)}, {@link #onSaveKeyboardState()}, + * The input events are {@link #onLoadKeyboard()}, {@link #onSaveKeyboardState()}, * {@link #onPressKey(int, boolean, int)}, {@link #onReleaseKey(int, boolean)}, * {@link #onCodeInput(int, boolean, int)}, {@link #onCancelInput(boolean)}, * {@link #onUpdateShiftState(int)}, {@link #onLongPressTimeout(int)}. @@ -74,7 +74,6 @@ public final class KeyboardState { private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 3; private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 4; private int mSwitchState = SWITCH_STATE_ALPHA; - private String mLayoutSwitchBackSymbols; private boolean mIsAlphabetMode; private AlphabetShiftState mAlphabetShiftState = new AlphabetShiftState(); @@ -109,15 +108,14 @@ public final class KeyboardState { } } - public KeyboardState(SwitchActions switchActions) { + public KeyboardState(final SwitchActions switchActions) { mSwitchActions = switchActions; } - public void onLoadKeyboard(String layoutSwitchBackSymbols) { + public void onLoadKeyboard() { if (DEBUG_EVENT) { Log.d(TAG, "onLoadKeyboard: " + this); } - mLayoutSwitchBackSymbols = layoutSwitchBackSymbols; // Reset alphabet shift state. mAlphabetShiftState.setShiftLocked(false); mPrevMainKeyboardWasShiftLocked = false; @@ -177,7 +175,7 @@ public final class KeyboardState { private static final int AUTOMATIC_SHIFT = 2; private static final int SHIFT_LOCK_SHIFTED = 3; - private void setShifted(int shiftMode) { + private void setShifted(final int shiftMode) { if (DEBUG_ACTION) { Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode) + " " + this); } @@ -216,7 +214,7 @@ public final class KeyboardState { } } - private void setShiftLocked(boolean shiftLocked) { + private void setShiftLocked(final boolean shiftLocked) { if (DEBUG_ACTION) { Log.d(TAG, "setShiftLocked: shiftLocked=" + shiftLocked + " " + this); } @@ -313,7 +311,7 @@ public final class KeyboardState { mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; } - public void onPressKey(int code, boolean isSinglePointer, int autoCaps) { + public void onPressKey(final int code, final boolean isSinglePointer, final int autoCaps) { if (DEBUG_EVENT) { Log.d(TAG, "onPressKey: code=" + Constants.printableCode(code) + " single=" + isSinglePointer + " autoCaps=" + autoCaps + " " + this); @@ -346,7 +344,7 @@ public final class KeyboardState { } } - public void onReleaseKey(int code, boolean withSliding) { + public void onReleaseKey(final int code, final boolean withSliding) { if (DEBUG_EVENT) { Log.d(TAG, "onReleaseKey: code=" + Constants.printableCode(code) + " sliding=" + withSliding + " " + this); @@ -364,7 +362,7 @@ public final class KeyboardState { mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL; } - private void onReleaseSymbol(boolean withSliding) { + private void onReleaseSymbol(final boolean withSliding) { if (mSymbolKeyState.isChording()) { // Switch back to the previous keyboard mode if the user chords the mode change key and // another key, then releases the mode change key. @@ -378,7 +376,7 @@ public final class KeyboardState { mSymbolKeyState.onRelease(); } - public void onLongPressTimeout(int code) { + public void onLongPressTimeout(final int code) { if (DEBUG_EVENT) { Log.d(TAG, "onLongPressTimeout: code=" + Constants.printableCode(code) + " " + this); } @@ -388,7 +386,7 @@ public final class KeyboardState { } } - public void onUpdateShiftState(int autoCaps) { + public void onUpdateShiftState(final int autoCaps) { if (DEBUG_EVENT) { Log.d(TAG, "onUpdateShiftState: autoCaps=" + autoCaps + " " + this); } @@ -404,7 +402,7 @@ public final class KeyboardState { resetKeyboardStateToAlphabet(); } - private void updateAlphabetShiftState(int autoCaps) { + private void updateAlphabetShiftState(final int autoCaps) { if (!mIsAlphabetMode) return; if (!mShiftKeyState.isReleasing()) { // Ignore update shift state event while the shift key is being pressed (including @@ -468,7 +466,7 @@ public final class KeyboardState { } } - private void onReleaseShift(boolean withSliding) { + private void onReleaseShift(final boolean withSliding) { if (mIsAlphabetMode) { final boolean isShiftLocked = mAlphabetShiftState.isShiftLocked(); mIsInAlphabetUnshiftedFromShifted = false; @@ -523,7 +521,7 @@ public final class KeyboardState { mShiftKeyState.onRelease(); } - public void onCancelInput(boolean isSinglePointer) { + public void onCancelInput(final boolean isSinglePointer) { if (DEBUG_EVENT) { Log.d(TAG, "onCancelInput: single=" + isSinglePointer + " " + this); } @@ -542,17 +540,11 @@ public final class KeyboardState { || mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE; } - private static boolean isSpaceCharacter(int c) { + private static boolean isSpaceCharacter(final int c) { return c == Constants.CODE_SPACE || c == Constants.CODE_ENTER; } - private boolean isLayoutSwitchBackCharacter(int c) { - if (TextUtils.isEmpty(mLayoutSwitchBackSymbols)) return false; - if (mLayoutSwitchBackSymbols.indexOf(c) >= 0) return true; - return false; - } - - public void onCodeInput(int code, boolean isSinglePointer, int autoCaps) { + public void onCodeInput(final int code, final boolean isSinglePointer, final int autoCaps) { if (DEBUG_EVENT) { Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code) + " single=" + isSinglePointer @@ -592,17 +584,11 @@ public final class KeyboardState { || code == Constants.CODE_OUTPUT_TEXT)) { mSwitchState = SWITCH_STATE_SYMBOL; } - // Switch back to alpha keyboard mode immediately if user types one of the switch back - // characters. - if (isLayoutSwitchBackCharacter(code)) { - toggleAlphabetAndSymbols(); - mPrevSymbolsKeyboardWasShifted = false; - } break; case SWITCH_STATE_SYMBOL: // Switch back to alpha keyboard mode if user types one or more non-space/enter - // characters followed by a space/enter or one of the switch back characters. - if (isSpaceCharacter(code) || isLayoutSwitchBackCharacter(code)) { + // characters followed by a space/enter. + if (isSpaceCharacter(code)) { toggleAlphabetAndSymbols(); mPrevSymbolsKeyboardWasShifted = false; } @@ -615,7 +601,7 @@ public final class KeyboardState { } } - private static String shiftModeToString(int shiftMode) { + private static String shiftModeToString(final int shiftMode) { switch (shiftMode) { case UNSHIFT: return "UNSHIFT"; case MANUAL_SHIFT: return "MANUAL"; @@ -624,7 +610,7 @@ public final class KeyboardState { } } - private static String switchStateToString(int switchState) { + private static String switchStateToString(final int switchState) { switch (switchState) { case SWITCH_STATE_ALPHA: return "ALPHA"; case SWITCH_STATE_SYMBOL_BEGIN: return "SYMBOL-BEGIN"; diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java index a1ceb8e2e..74ff87977 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java @@ -150,59 +150,6 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED); } - // Automatic switch back to alphabet by registered letters. - public void testSwitchBackChar() { - // Set switch back chars. - final String switchBackSymbols = "'"; - final int switchBackCode = switchBackSymbols.codePointAt(0); - setLayoutSwitchBackSymbols(switchBackSymbols); - loadKeyboard(ALPHABET_UNSHIFTED); - - // Press/release "?123" key, enter into symbols. - pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Enter symbol letter. - pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Enter switch back letter, switch back to alphabet. - pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); - - // Press/release "?123" key, enter into symbols. - pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Press/release "=\<" key, enter into symbols shifted. - pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); - // Enter symbol shift letter. - pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); - // Enter switch abck letter, switch back to alphabet. - pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED); - } - - // Automatic switch back to alphabet shift locked by registered letters. - public void testSwitchBackCharShiftLocked() { - // Set switch back chars. - final String switchBackSymbols = "'"; - final int switchBackCode = switchBackSymbols.codePointAt(0); - setLayoutSwitchBackSymbols(switchBackSymbols); - loadKeyboard(ALPHABET_UNSHIFTED); - // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, - ALPHABET_SHIFT_LOCKED); - - // Press/release "?123" key, enter into symbols. - pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Enter symbol letter. - pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Enter switch back letter, switch back to alphabet shift locked. - pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED); - - // Press/release "?123" key, enter into symbols. - pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); - // Press/release "=\<" key, enter into symbols shifted. - pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); - // Enter symbol shift letter. - pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); - // Enter switch back letter, switch back to alphabet shift locked. - pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED); - } - // Automatic upper case test public void testAutomaticUpperCase() { // Set capitalize the first character of all words mode. diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java index c75f8269a..08199a074 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java @@ -22,8 +22,6 @@ public class KeyboardStateTestsBase extends AndroidTestCase implements MockKeyboardSwitcher.MockConstants { protected MockKeyboardSwitcher mSwitcher; - private String mLayoutSwitchBackSymbols = ""; - @Override protected void setUp() throws Exception { super.setUp(); @@ -34,88 +32,86 @@ public class KeyboardStateTestsBase extends AndroidTestCase loadKeyboard(ALPHABET_UNSHIFTED); } - public void setAutoCapsMode(int autoCaps) { + public void setAutoCapsMode(final int autoCaps) { mSwitcher.setAutoCapsMode(autoCaps); } - public void setLayoutSwitchBackSymbols(String switchBackSymbols) { - mLayoutSwitchBackSymbols = switchBackSymbols; - } - - private static void assertLayout(String message, int expected, int actual) { + private static void assertLayout(final String message, final int expected, final int actual) { assertTrue(message + ": expected=" + MockKeyboardSwitcher.getLayoutName(expected) + " actual=" + MockKeyboardSwitcher.getLayoutName(actual), expected == actual); } - public void updateShiftState(int afterUpdate) { + public void updateShiftState(final int afterUpdate) { mSwitcher.updateShiftState(); assertLayout("afterUpdate", afterUpdate, mSwitcher.getLayoutId()); } - public void loadKeyboard(int afterLoad) { - mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols); + public void loadKeyboard(final int afterLoad) { + mSwitcher.loadKeyboard(); mSwitcher.updateShiftState(); assertLayout("afterLoad", afterLoad, mSwitcher.getLayoutId()); } - public void rotateDevice(int afterRotate) { + public void rotateDevice(final int afterRotate) { mSwitcher.saveKeyboardState(); - mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols); + mSwitcher.loadKeyboard(); assertLayout("afterRotate", afterRotate, mSwitcher.getLayoutId()); } - private void pressKeyWithoutTimerExpire(int code, boolean isSinglePointer, int afterPress) { + private void pressKeyWithoutTimerExpire(final int code, final boolean isSinglePointer, + final int afterPress) { mSwitcher.onPressKey(code, isSinglePointer); assertLayout("afterPress", afterPress, mSwitcher.getLayoutId()); } - public void pressKey(int code, int afterPress) { + public void pressKey(final int code, final int afterPress) { mSwitcher.expireDoubleTapTimeout(); pressKeyWithoutTimerExpire(code, true, afterPress); } - public void releaseKey(int code, int afterRelease) { + public void releaseKey(final int code, final int afterRelease) { mSwitcher.onCodeInput(code, SINGLE); mSwitcher.onReleaseKey(code, NOT_SLIDING); assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId()); } - public void pressAndReleaseKey(int code, int afterPress, int afterRelease) { + public void pressAndReleaseKey(final int code, final int afterPress, final int afterRelease) { pressKey(code, afterPress); releaseKey(code, afterRelease); } - public void chordingPressKey(int code, int afterPress) { + public void chordingPressKey(final int code, final int afterPress) { mSwitcher.expireDoubleTapTimeout(); pressKeyWithoutTimerExpire(code, false, afterPress); } - public void chordingReleaseKey(int code, int afterRelease) { + public void chordingReleaseKey(final int code, final int afterRelease) { mSwitcher.onCodeInput(code, MULTI); mSwitcher.onReleaseKey(code, NOT_SLIDING); assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId()); } - public void chordingPressAndReleaseKey(int code, int afterPress, int afterRelease) { + public void chordingPressAndReleaseKey(final int code, final int afterPress, + final int afterRelease) { chordingPressKey(code, afterPress); chordingReleaseKey(code, afterRelease); } - public void pressAndSlideFromKey(int code, int afterPress, int afterSlide) { + public void pressAndSlideFromKey(final int code, final int afterPress, final int afterSlide) { pressKey(code, afterPress); mSwitcher.onReleaseKey(code, SLIDING); assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId()); } - public void longPressKey(int code, int afterPress, int afterLongPress) { + public void longPressKey(final int code, final int afterPress, final int afterLongPress) { pressKey(code, afterPress); mSwitcher.onLongPressTimeout(code); assertLayout("afterLongPress", afterLongPress, mSwitcher.getLayoutId()); } - public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress, - int afterRelease) { + public void longPressAndReleaseKey(final int code, final int afterPress, + final int afterLongPress, final int afterRelease) { longPressKey(code, afterPress, afterLongPress); releaseKey(code, afterRelease); } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java index 0213744fb..ac3558521 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java @@ -61,7 +61,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { return mLayout; } - public static String getLayoutName(int layoutId) { + public static String getLayoutName(final int layoutId) { switch (layoutId) { case MockConstants.ALPHABET_UNSHIFTED: return "ALPHABET_UNSHIFTED"; case MockConstants.ALPHABET_MANUAL_SHIFTED: return "ALPHABET_MANUAL_SHIFTED"; @@ -74,7 +74,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { } } - public void setAutoCapsMode(int autoCaps) { + public void setAutoCapsMode(final int autoCaps) { mAutoCapsMode = autoCaps; mAutoCapsState = autoCaps; } @@ -139,7 +139,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { } @Override - public void startLongPressTimer(int code) { + public void startLongPressTimer(final int code) { mLongPressTimeoutCode = code; } @@ -149,11 +149,11 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { } @Override - public void hapticAndAudioFeedback(int code) { + public void hapticAndAudioFeedback(final int code) { // Nothing to do. } - public void onLongPressTimeout(int code) { + public void onLongPressTimeout(final int code) { // TODO: Handle simultaneous long presses. if (mLongPressTimeoutCode == code) { mLongPressTimeoutCode = 0; @@ -165,26 +165,26 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { mState.onUpdateShiftState(mAutoCapsState); } - public void loadKeyboard(String layoutSwitchBackSymbols) { - mState.onLoadKeyboard(layoutSwitchBackSymbols); + public void loadKeyboard() { + mState.onLoadKeyboard(); } public void saveKeyboardState() { mState.onSaveKeyboardState(); } - public void onPressKey(int code, boolean isSinglePointer) { + public void onPressKey(final int code, final boolean isSinglePointer) { mState.onPressKey(code, isSinglePointer, mAutoCapsState); } - public void onReleaseKey(int code, boolean withSliding) { + public void onReleaseKey(final int code, final boolean withSliding) { mState.onReleaseKey(code, withSliding); if (mLongPressTimeoutCode == code) { mLongPressTimeoutCode = 0; } } - public void onCodeInput(int code, boolean isSinglePointer) { + public void onCodeInput(final int code, final boolean isSinglePointer) { if (mAutoCapsMode == MockConstants.CAP_MODE_WORDS) { if (Constants.isLetterCode(code)) { mAutoCapsState = (code == MockConstants.CODE_AUTO_CAPS_TRIGGER) @@ -196,7 +196,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { mState.onCodeInput(code, isSinglePointer, mAutoCapsState); } - public void onCancelInput(boolean isSinglePointer) { + public void onCancelInput(final boolean isSinglePointer) { mState.onCancelInput(isSinglePointer); } } \ No newline at end of file