Loading java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +13 −38 Original line number Diff line number Diff line Loading @@ -63,11 +63,8 @@ public class KeyboardState { private static final int SWITCH_STATE_ALPHA = 0; private static final int SWITCH_STATE_SYMBOL_BEGIN = 1; private static final int SWITCH_STATE_SYMBOL = 2; // The following states are used only on the distinct multi-touch panel devices. private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 3; private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 4; private static final int SWITCH_STATE_CHORDING_ALPHA = 5; private static final int SWITCH_STATE_CHORDING_SYMBOL = 6; private int mSwitchState = SWITCH_STATE_ALPHA; private String mLayoutSwitchBackSymbols; Loading Loading @@ -313,7 +310,7 @@ public class KeyboardState { } private void onReleaseSymbol(boolean withSliding) { if (mSwitchState == SWITCH_STATE_CHORDING_ALPHA) { 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. toggleAlphabetAndSymbols(); Loading @@ -330,24 +327,19 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onUpdateShiftState: autoCaps=" + autoCaps + " " + this); } onUpdateShiftStateInternal(autoCaps); updateAlphabetShiftState(autoCaps); } private void onUpdateShiftStateInternal(boolean autoCaps) { if (mIsAlphabetMode) { private void updateAlphabetShiftState(boolean autoCaps) { if (!mIsAlphabetMode) return; if (!mAlphabetShiftState.isShiftLocked() && !mShiftKeyState.isIgnoring()) { if (mShiftKeyState.isReleasing() && autoCaps) { // Only when shift key is releasing, automatic temporary upper case will be set. setShifted(AUTOMATIC_SHIFT); } else { setShifted(mShiftKeyState.isMomentary() ? MANUAL_SHIFT : UNSHIFT); setShifted(mShiftKeyState.isChording() ? MANUAL_SHIFT : UNSHIFT); } } } else { // In symbol keyboard mode, we should clear shift key state because only alphabet // keyboard has shift key. mSymbolKeyState.onRelease(); } } private void onPressShift() { Loading Loading @@ -382,7 +374,7 @@ public class KeyboardState { private void onReleaseShift(boolean withSliding) { if (mIsAlphabetMode) { final boolean isShiftLocked = mAlphabetShiftState.isShiftLocked(); if (mShiftKeyState.isMomentary()) { if (mShiftKeyState.isChording()) { if (mAlphabetShiftState.isShiftLockShifted()) { // After chording input while caps lock state. setShiftLocked(true); Loading Loading @@ -413,7 +405,7 @@ public class KeyboardState { } else { // In symbol mode, switch back to the previous keyboard mode if the user chords the // shift key and another key, then releases the shift key. if (mSwitchState == SWITCH_STATE_CHORDING_SYMBOL) { if (mShiftKeyState.isChording()) { toggleShiftInSymbols(); } } Loading Loading @@ -469,12 +461,6 @@ public class KeyboardState { switch (mSwitchState) { case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: // Only distinct multi touch devices can be in this state. // On non-distinct multi touch devices, mode change key is handled by // {@link LatinIME#onCodeInput}, not by {@link LatinIME#onPress} and // {@link LatinIME#onRelease}. So, on such devices, {@link #mSwitchState} starts // from {@link #SWITCH_STATE_SYMBOL_BEGIN}, or {@link #SWITCH_STATE_ALPHA}, not from // {@link #SWITCH_STATE_MOMENTARY}. if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) { // Detected only the mode change key has been pressed, and then released. if (mIsAlphabetMode) { Loading @@ -488,10 +474,6 @@ public class KeyboardState { // If the user cancels the sliding input, switching back to the previous keyboard // mode is handled by {@link #onCancelInput}. toggleAlphabetAndSymbols(); } else { // Chording input is being started. The keyboard mode will be switched back to the // previous mode in {@link onReleaseSymbol} when the mode change key is released. mSwitchState = SWITCH_STATE_CHORDING_ALPHA; } break; case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: Loading @@ -503,10 +485,6 @@ public class KeyboardState { // symbol mode and slid to other key, then released the finger. toggleShiftInSymbols(); mSwitchState = SWITCH_STATE_SYMBOL; } else { // Chording input is being started. The keyboard mode will be switched back to the // previous mode in {@link onReleaseShift} when the shift key is released. mSwitchState = SWITCH_STATE_CHORDING_SYMBOL; } break; case SWITCH_STATE_SYMBOL_BEGIN: Loading @@ -520,7 +498,6 @@ public class KeyboardState { } break; case SWITCH_STATE_SYMBOL: case SWITCH_STATE_CHORDING_SYMBOL: // Switch back to alpha keyboard mode if user types one or more non-space/enter // characters followed by a space/enter or a quote character. if (isSpaceCharacter(code) || isLayoutSwitchBackCharacter(code)) { Loading @@ -531,7 +508,7 @@ public class KeyboardState { // If the code is a letter, update keyboard shift state. if (Keyboard.isLetterCode(code)) { onUpdateShiftStateInternal(autoCaps); updateAlphabetShiftState(autoCaps); } } Loading @@ -551,8 +528,6 @@ public class KeyboardState { case SWITCH_STATE_SYMBOL: return "SYMBOL"; case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: return "MOMENTARY-ALPHA-SYMBOL"; case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: return "MOMENTARY-SYMBOL-MORE"; case SWITCH_STATE_CHORDING_ALPHA: return "CHORDING-ALPHA"; case SWITCH_STATE_CHORDING_SYMBOL: return "CHORDING-SYMBOL"; default: return null; } } Loading java/src/com/android/inputmethod/keyboard/internal/ModifierKeyState.java +6 −6 Original line number Diff line number Diff line Loading @@ -19,12 +19,12 @@ package com.android.inputmethod.keyboard.internal; import android.util.Log; /* package */ class ModifierKeyState { protected static final String TAG = "ModifierKeyState"; protected static final String TAG = ModifierKeyState.class.getSimpleName(); protected static final boolean DEBUG = false; protected static final int RELEASING = 0; protected static final int PRESSING = 1; protected static final int MOMENTARY = 2; protected static final int CHORDING = 2; protected final String mName; protected int mState = RELEASING; Loading @@ -50,7 +50,7 @@ import android.util.Log; public void onOtherKeyPressed() { final int oldState = mState; if (oldState == PRESSING) mState = MOMENTARY; mState = CHORDING; if (DEBUG) Log.d(TAG, mName + ".onOtherKeyPressed: " + toString(oldState) + " > " + this); } Loading @@ -63,8 +63,8 @@ import android.util.Log; return mState == RELEASING; } public boolean isMomentary() { return mState == MOMENTARY; public boolean isChording() { return mState == CHORDING; } @Override Loading @@ -76,7 +76,7 @@ import android.util.Log; switch (state) { case RELEASING: return "RELEASING"; case PRESSING: return "PRESSING"; case MOMENTARY: return "MOMENTARY"; case CHORDING: return "CHORDING"; default: return "UNKNOWN"; } } Loading java/src/com/android/inputmethod/keyboard/internal/ShiftKeyState.java +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import android.util.Log; public void onOtherKeyPressed() { int oldState = mState; if (oldState == PRESSING) { mState = MOMENTARY; mState = CHORDING; } else if (oldState == PRESSING_ON_SHIFTED) { mState = IGNORING; } Loading Loading
java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +13 −38 Original line number Diff line number Diff line Loading @@ -63,11 +63,8 @@ public class KeyboardState { private static final int SWITCH_STATE_ALPHA = 0; private static final int SWITCH_STATE_SYMBOL_BEGIN = 1; private static final int SWITCH_STATE_SYMBOL = 2; // The following states are used only on the distinct multi-touch panel devices. private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 3; private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 4; private static final int SWITCH_STATE_CHORDING_ALPHA = 5; private static final int SWITCH_STATE_CHORDING_SYMBOL = 6; private int mSwitchState = SWITCH_STATE_ALPHA; private String mLayoutSwitchBackSymbols; Loading Loading @@ -313,7 +310,7 @@ public class KeyboardState { } private void onReleaseSymbol(boolean withSliding) { if (mSwitchState == SWITCH_STATE_CHORDING_ALPHA) { 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. toggleAlphabetAndSymbols(); Loading @@ -330,24 +327,19 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onUpdateShiftState: autoCaps=" + autoCaps + " " + this); } onUpdateShiftStateInternal(autoCaps); updateAlphabetShiftState(autoCaps); } private void onUpdateShiftStateInternal(boolean autoCaps) { if (mIsAlphabetMode) { private void updateAlphabetShiftState(boolean autoCaps) { if (!mIsAlphabetMode) return; if (!mAlphabetShiftState.isShiftLocked() && !mShiftKeyState.isIgnoring()) { if (mShiftKeyState.isReleasing() && autoCaps) { // Only when shift key is releasing, automatic temporary upper case will be set. setShifted(AUTOMATIC_SHIFT); } else { setShifted(mShiftKeyState.isMomentary() ? MANUAL_SHIFT : UNSHIFT); setShifted(mShiftKeyState.isChording() ? MANUAL_SHIFT : UNSHIFT); } } } else { // In symbol keyboard mode, we should clear shift key state because only alphabet // keyboard has shift key. mSymbolKeyState.onRelease(); } } private void onPressShift() { Loading Loading @@ -382,7 +374,7 @@ public class KeyboardState { private void onReleaseShift(boolean withSliding) { if (mIsAlphabetMode) { final boolean isShiftLocked = mAlphabetShiftState.isShiftLocked(); if (mShiftKeyState.isMomentary()) { if (mShiftKeyState.isChording()) { if (mAlphabetShiftState.isShiftLockShifted()) { // After chording input while caps lock state. setShiftLocked(true); Loading Loading @@ -413,7 +405,7 @@ public class KeyboardState { } else { // In symbol mode, switch back to the previous keyboard mode if the user chords the // shift key and another key, then releases the shift key. if (mSwitchState == SWITCH_STATE_CHORDING_SYMBOL) { if (mShiftKeyState.isChording()) { toggleShiftInSymbols(); } } Loading Loading @@ -469,12 +461,6 @@ public class KeyboardState { switch (mSwitchState) { case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: // Only distinct multi touch devices can be in this state. // On non-distinct multi touch devices, mode change key is handled by // {@link LatinIME#onCodeInput}, not by {@link LatinIME#onPress} and // {@link LatinIME#onRelease}. So, on such devices, {@link #mSwitchState} starts // from {@link #SWITCH_STATE_SYMBOL_BEGIN}, or {@link #SWITCH_STATE_ALPHA}, not from // {@link #SWITCH_STATE_MOMENTARY}. if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) { // Detected only the mode change key has been pressed, and then released. if (mIsAlphabetMode) { Loading @@ -488,10 +474,6 @@ public class KeyboardState { // If the user cancels the sliding input, switching back to the previous keyboard // mode is handled by {@link #onCancelInput}. toggleAlphabetAndSymbols(); } else { // Chording input is being started. The keyboard mode will be switched back to the // previous mode in {@link onReleaseSymbol} when the mode change key is released. mSwitchState = SWITCH_STATE_CHORDING_ALPHA; } break; case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: Loading @@ -503,10 +485,6 @@ public class KeyboardState { // symbol mode and slid to other key, then released the finger. toggleShiftInSymbols(); mSwitchState = SWITCH_STATE_SYMBOL; } else { // Chording input is being started. The keyboard mode will be switched back to the // previous mode in {@link onReleaseShift} when the shift key is released. mSwitchState = SWITCH_STATE_CHORDING_SYMBOL; } break; case SWITCH_STATE_SYMBOL_BEGIN: Loading @@ -520,7 +498,6 @@ public class KeyboardState { } break; case SWITCH_STATE_SYMBOL: case SWITCH_STATE_CHORDING_SYMBOL: // Switch back to alpha keyboard mode if user types one or more non-space/enter // characters followed by a space/enter or a quote character. if (isSpaceCharacter(code) || isLayoutSwitchBackCharacter(code)) { Loading @@ -531,7 +508,7 @@ public class KeyboardState { // If the code is a letter, update keyboard shift state. if (Keyboard.isLetterCode(code)) { onUpdateShiftStateInternal(autoCaps); updateAlphabetShiftState(autoCaps); } } Loading @@ -551,8 +528,6 @@ public class KeyboardState { case SWITCH_STATE_SYMBOL: return "SYMBOL"; case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: return "MOMENTARY-ALPHA-SYMBOL"; case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: return "MOMENTARY-SYMBOL-MORE"; case SWITCH_STATE_CHORDING_ALPHA: return "CHORDING-ALPHA"; case SWITCH_STATE_CHORDING_SYMBOL: return "CHORDING-SYMBOL"; default: return null; } } Loading
java/src/com/android/inputmethod/keyboard/internal/ModifierKeyState.java +6 −6 Original line number Diff line number Diff line Loading @@ -19,12 +19,12 @@ package com.android.inputmethod.keyboard.internal; import android.util.Log; /* package */ class ModifierKeyState { protected static final String TAG = "ModifierKeyState"; protected static final String TAG = ModifierKeyState.class.getSimpleName(); protected static final boolean DEBUG = false; protected static final int RELEASING = 0; protected static final int PRESSING = 1; protected static final int MOMENTARY = 2; protected static final int CHORDING = 2; protected final String mName; protected int mState = RELEASING; Loading @@ -50,7 +50,7 @@ import android.util.Log; public void onOtherKeyPressed() { final int oldState = mState; if (oldState == PRESSING) mState = MOMENTARY; mState = CHORDING; if (DEBUG) Log.d(TAG, mName + ".onOtherKeyPressed: " + toString(oldState) + " > " + this); } Loading @@ -63,8 +63,8 @@ import android.util.Log; return mState == RELEASING; } public boolean isMomentary() { return mState == MOMENTARY; public boolean isChording() { return mState == CHORDING; } @Override Loading @@ -76,7 +76,7 @@ import android.util.Log; switch (state) { case RELEASING: return "RELEASING"; case PRESSING: return "PRESSING"; case MOMENTARY: return "MOMENTARY"; case CHORDING: return "CHORDING"; default: return "UNKNOWN"; } } Loading
java/src/com/android/inputmethod/keyboard/internal/ShiftKeyState.java +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import android.util.Log; public void onOtherKeyPressed() { int oldState = mState; if (oldState == PRESSING) { mState = MOMENTARY; mState = CHORDING; } else if (oldState == PRESSING_ON_SHIFTED) { mState = IGNORING; } Loading