am 41016aca: Back to previous keyboard layout by canceling sliding input

* commit '41016acacfa21354f59ed51db1f85ea3d99bf6a4':
  Back to previous keyboard layout by canceling sliding input
main
Tadashi G. Takaoka 2013-05-14 04:36:06 -07:00 committed by Android Git Automerger
commit 3fff5179d5
9 changed files with 349 additions and 85 deletions

View File

@ -27,8 +27,9 @@ public interface KeyboardActionListener {
* *
* @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key, * @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key,
* the value will be zero. * the value will be zero.
* @param isSinglePointer true if pressing has occurred while no other key is being pressed.
*/ */
public void onPressKey(int primaryCode); public void onPressKey(int primaryCode, boolean isSinglePointer);
/** /**
* Called when the user releases a key. This is sent after the {@link #onCodeInput} is called. * Called when the user releases a key. This is sent after the {@link #onCodeInput} is called.
@ -87,6 +88,11 @@ public interface KeyboardActionListener {
*/ */
public void onCancelInput(); public void onCancelInput();
/**
* Called when user finished sliding key input.
*/
public void onFinishSlidingInput();
/** /**
* Send a non-"code input" custom request to the listener. * Send a non-"code input" custom request to the listener.
* @return true if the request has been consumed, false otherwise. * @return true if the request has been consumed, false otherwise.
@ -97,7 +103,7 @@ public interface KeyboardActionListener {
public static final Adapter EMPTY_LISTENER = new Adapter(); public static final Adapter EMPTY_LISTENER = new Adapter();
@Override @Override
public void onPressKey(int primaryCode) {} public void onPressKey(int primaryCode, boolean isSinglePointer) {}
@Override @Override
public void onReleaseKey(int primaryCode, boolean withSliding) {} public void onReleaseKey(int primaryCode, boolean withSliding) {}
@Override @Override
@ -115,6 +121,8 @@ public interface KeyboardActionListener {
@Override @Override
public void onCancelInput() {} public void onCancelInput() {}
@Override @Override
public void onFinishSlidingInput() {}
@Override
public boolean onCustomRequest(int requestCode) { public boolean onCustomRequest(int requestCode) {
return false; return false;
} }

View File

@ -216,19 +216,19 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mState.onResetKeyboardStateToAlphabet(); mState.onResetKeyboardStateToAlphabet();
} }
public void onPressKey(final int code) { public void onPressKey(final int code, final boolean isSinglePointer) {
if (isVibrateAndSoundFeedbackRequired()) { if (isVibrateAndSoundFeedbackRequired()) {
mFeedbackManager.hapticAndAudioFeedback(code, mKeyboardView); mFeedbackManager.hapticAndAudioFeedback(code, mKeyboardView);
} }
mState.onPressKey(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState()); mState.onPressKey(code, isSinglePointer, mLatinIME.getCurrentAutoCapsState());
} }
public void onReleaseKey(final int code, final boolean withSliding) { public void onReleaseKey(final int code, final boolean withSliding) {
mState.onReleaseKey(code, withSliding); mState.onReleaseKey(code, withSliding);
} }
public void onCancelInput() { public void onFinishSlidingInput() {
mState.onCancelInput(isSinglePointer()); mState.onFinishSlidingInput();
} }
// Implements {@link KeyboardState.SwitchActions}. // Implements {@link KeyboardState.SwitchActions}.
@ -346,15 +346,11 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
return mKeyboardView != null && !mKeyboardView.isInSlidingKeyInput(); return mKeyboardView != null && !mKeyboardView.isInSlidingKeyInput();
} }
private boolean isSinglePointer() {
return mKeyboardView != null && mKeyboardView.getPointerCount() == 1;
}
/** /**
* Updates state machine to figure out when to automatically switch back to the previous mode. * Updates state machine to figure out when to automatically switch back to the previous mode.
*/ */
public void onCodeInput(final int code) { public void onCodeInput(final int code) {
mState.onCodeInput(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState()); mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState());
} }
public MainKeyboardView getMainKeyboardView() { public MainKeyboardView getMainKeyboardView() {

View File

@ -1100,10 +1100,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
return false; return false;
} }
public int getPointerCount() {
return mOldPointerCount;
}
@Override @Override
public boolean dispatchTouchEvent(MotionEvent event) { public boolean dispatchTouchEvent(MotionEvent event) {
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {

View File

@ -459,7 +459,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
return false; return false;
} }
if (key.isEnabled()) { if (key.isEnabled()) {
mListener.onPressKey(key.mCode); mListener.onPressKey(key.mCode, getActivePointerTrackerCount() == 1);
final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged; final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged;
mKeyboardLayoutHasBeenChanged = false; mKeyboardLayoutHasBeenChanged = false;
mTimerProxy.startTypingStateTimer(key); mTimerProxy.startTypingStateTimer(key);
@ -527,6 +527,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
} }
} }
private void callListenerOnFinishSlidingInput() {
if (DEBUG_LISTENER) {
Log.d(TAG, String.format("[%d] onFinishSlidingInput", mPointerId));
}
mListener.onFinishSlidingInput();
}
private void callListenerOnCancelInput() { private void callListenerOnCancelInput() {
if (DEBUG_LISTENER) { if (DEBUG_LISTENER) {
Log.d(TAG, String.format("[%d] onCancelInput", mPointerId)); Log.d(TAG, String.format("[%d] onCancelInput", mPointerId));
@ -1036,7 +1043,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
private void processSildeOutFromOldKey(final Key oldKey) { private void processSildeOutFromOldKey(final Key oldKey) {
setReleasedKeyGraphics(oldKey); setReleasedKeyGraphics(oldKey);
callListenerOnRelease(oldKey, oldKey.mCode, true); callListenerOnRelease(oldKey, oldKey.mCode, true /* withSliding */);
startSlidingKeyInput(oldKey); startSlidingKeyInput(oldKey);
mTimerProxy.cancelKeyTimers(); mTimerProxy.cancelKeyTimers();
} }
@ -1169,6 +1176,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
private void onUpEventInternal(final int x, final int y, final long eventTime) { private void onUpEventInternal(final int x, final int y, final long eventTime) {
mTimerProxy.cancelKeyTimers(); mTimerProxy.cancelKeyTimers();
final boolean isInSlidingKeyInput = mIsInSlidingKeyInput; final boolean isInSlidingKeyInput = mIsInSlidingKeyInput;
final boolean isInSlidingKeyInputFromModifier = mIsInSlidingKeyInputFromModifier;
resetSlidingKeyInput(); resetSlidingKeyInput();
mIsDetectingGesture = false; mIsDetectingGesture = false;
final Key currentKey = mCurrentKey; final Key currentKey = mCurrentKey;
@ -1189,7 +1197,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
if (sInGesture) { if (sInGesture) {
if (currentKey != null) { if (currentKey != null) {
callListenerOnRelease(currentKey, currentKey.mCode, true); callListenerOnRelease(currentKey, currentKey.mCode, true /* withSliding */);
} }
mayEndBatchInput(eventTime); mayEndBatchInput(eventTime);
return; return;
@ -1203,6 +1211,9 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
return; return;
} }
detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime); detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime);
if (isInSlidingKeyInputFromModifier) {
callListenerOnFinishSlidingInput();
}
} }
public void onShowMoreKeysPanel(final int translatedX, final int translatedY, public void onShowMoreKeysPanel(final int translatedX, final int translatedY,
@ -1328,7 +1339,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
final int code = key.mCode; final int code = key.mCode;
callListenerOnCodeInput(key, code, x, y, eventTime); callListenerOnCodeInput(key, code, x, y, eventTime);
callListenerOnRelease(key, code, false); callListenerOnRelease(key, code, false /* withSliding */);
} }
private void printTouchEvent(final String title, final int x, final int y, private void printTouchEvent(final String title, final int x, final int y,

View File

@ -28,9 +28,9 @@ import com.android.inputmethod.latin.RecapitalizeStatus;
* This class contains all keyboard state transition logic. * This class contains all keyboard state transition logic.
* *
* The input events are {@link #onLoadKeyboard()}, {@link #onSaveKeyboardState()}, * The input events are {@link #onLoadKeyboard()}, {@link #onSaveKeyboardState()},
* {@link #onPressKey(int, boolean, int)}, {@link #onReleaseKey(int, boolean)}, * {@link #onPressKey(int,boolean,int)}, {@link #onReleaseKey(int,boolean)},
* {@link #onCodeInput(int, boolean, int)}, {@link #onCancelInput(boolean)}, * {@link #onCodeInput(int,int)}, {@link #onFinishSlidingInput()}, {@link #onCancelInput()},
* {@link #onUpdateShiftState(int, int)}, {@link #onLongPressTimeout(int)}. * {@link #onUpdateShiftState(int,int)}, {@link #onLongPressTimeout(int)}.
* *
* The actions are {@link SwitchActions}'s methods. * The actions are {@link SwitchActions}'s methods.
*/ */
@ -74,6 +74,7 @@ public final class KeyboardState {
private static final int SWITCH_STATE_SYMBOL = 2; private static final int SWITCH_STATE_SYMBOL = 2;
private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 3; 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_MOMENTARY_SYMBOL_AND_MORE = 4;
private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 5;
private int mSwitchState = SWITCH_STATE_ALPHA; private int mSwitchState = SWITCH_STATE_ALPHA;
private boolean mIsAlphabetMode; private boolean mIsAlphabetMode;
@ -525,6 +526,9 @@ public final class KeyboardState {
} else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) { } else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) {
// In shift locked state, shift has been pressed and slid out to other key. // In shift locked state, shift has been pressed and slid out to other key.
setShiftLocked(true); setShiftLocked(true);
} else if (mAlphabetShiftState.isManualShifted() && withSliding) {
// Shift has been pressed and slid out to other key.
mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_SHIFT;
} else if (isShiftLocked && !mAlphabetShiftState.isShiftLockShifted() } else if (isShiftLocked && !mAlphabetShiftState.isShiftLockShifted()
&& (mShiftKeyState.isPressing() || mShiftKeyState.isPressingOnShifted()) && (mShiftKeyState.isPressing() || mShiftKeyState.isPressingOnShifted())
&& !withSliding) { && !withSliding) {
@ -554,17 +558,21 @@ public final class KeyboardState {
mShiftKeyState.onRelease(); mShiftKeyState.onRelease();
} }
public void onCancelInput(final boolean isSinglePointer) { public void onFinishSlidingInput() {
if (DEBUG_EVENT) { if (DEBUG_EVENT) {
Log.d(TAG, "onCancelInput: single=" + isSinglePointer + " " + this); Log.d(TAG, "onFinishSlidingInput: " + this);
} }
// Switch back to the previous keyboard mode if the user cancels sliding input. // Switch back to the previous keyboard mode if the user cancels sliding input.
if (isSinglePointer) { switch (mSwitchState) {
if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) { case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL:
toggleAlphabetAndSymbols(); toggleAlphabetAndSymbols();
} else if (mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE) { break;
toggleShiftInSymbols(); case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE:
} toggleShiftInSymbols();
break;
case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT:
setAlphabetKeyboard();
break;
} }
} }
@ -577,10 +585,9 @@ public final class KeyboardState {
return c == Constants.CODE_SPACE || c == Constants.CODE_ENTER; return c == Constants.CODE_SPACE || c == Constants.CODE_ENTER;
} }
public void onCodeInput(final int code, final boolean isSinglePointer, final int autoCaps) { public void onCodeInput(final int code, final int autoCaps) {
if (DEBUG_EVENT) { if (DEBUG_EVENT) {
Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code) Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code)
+ " single=" + isSinglePointer
+ " autoCaps=" + autoCaps + " " + this); + " autoCaps=" + autoCaps + " " + this);
} }
@ -593,23 +600,12 @@ public final class KeyboardState {
} else { } else {
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
} }
} else if (isSinglePointer) {
// Switch back to the previous keyboard mode if the user pressed the mode change key
// and slid to other key, then released the finger.
// If the user cancels the sliding input, switching back to the previous keyboard
// mode is handled by {@link #onCancelInput}.
toggleAlphabetAndSymbols();
} }
break; break;
case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE:
if (code == Constants.CODE_SHIFT) { if (code == Constants.CODE_SHIFT) {
// Detected only the shift key has been pressed on symbol layout, and then released. // Detected only the shift key has been pressed on symbol layout, and then released.
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
} else if (isSinglePointer) {
// Switch back to the previous keyboard mode if the user pressed the shift key on
// symbol mode and slid to other key, then released the finger.
toggleShiftInSymbols();
mSwitchState = SWITCH_STATE_SYMBOL;
} }
break; break;
case SWITCH_STATE_SYMBOL_BEGIN: case SWITCH_STATE_SYMBOL_BEGIN:
@ -650,6 +646,7 @@ public final class KeyboardState {
case SWITCH_STATE_SYMBOL: return "SYMBOL"; case SWITCH_STATE_SYMBOL: return "SYMBOL";
case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: return "MOMENTARY-ALPHA-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_MOMENTARY_SYMBOL_AND_MORE: return "MOMENTARY-SYMBOL-MORE";
case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT: return "MOMENTARY-ALPHA_SHIFT";
default: return null; default: return null;
} }
} }

View File

@ -1750,11 +1750,18 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
} }
} }
// Called from PointerTracker through the KeyboardActionListener interface
@Override
public void onFinishSlidingInput() {
// User finished sliding input.
mKeyboardSwitcher.onFinishSlidingInput();
}
// Called from PointerTracker through the KeyboardActionListener interface // Called from PointerTracker through the KeyboardActionListener interface
@Override @Override
public void onCancelInput() { public void onCancelInput() {
// User released a finger outside any key // User released a finger outside any key
mKeyboardSwitcher.onCancelInput(); // Nothing to do so far.
} }
@Override @Override
@ -2621,8 +2628,8 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
// Callback called by PointerTracker through the KeyboardActionListener. This is called when a // Callback called by PointerTracker through the KeyboardActionListener. This is called when a
// key is depressed; release matching call is onReleaseKey below. // key is depressed; release matching call is onReleaseKey below.
@Override @Override
public void onPressKey(final int primaryCode) { public void onPressKey(final int primaryCode, final boolean isSinglePointer) {
mKeyboardSwitcher.onPressKey(primaryCode); mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer);
} }
// Callback by PointerTracker through the KeyboardActionListener. This is called when a key // Callback by PointerTracker through the KeyboardActionListener. This is called when a key

View File

@ -352,30 +352,34 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
// Alphabet -> shift key + letter -> alphabet. // Alphabet -> shift key + letter -> alphabet.
// Press and slide from shift key, enter alphabet shifted. // Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Enter/release letter key, switch back to alphabet. // Enter/release letter keys, switch back to alphabet.
pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
// Alphabet -> "?123" key + letter -> alphabet. // Alphabet -> "?123" key + letter -> alphabet.
// Press and slide from "123?" key, enter symbols. // Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release into symbol letter key, switch back to alphabet. // Enter/release into symbol letter keys, switch back to alphabet.
pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shifted -> shift key + letter -> alphabet. // Alphabet shifted -> shift key + letter -> alphabet.
// Press/release shift key, enter alphabet shifted. // Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from shift key, remain alphabet shifted. // Press and slide from shift key, remain alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Enter/release letter key, switch back to alphabet (not alphabet shifted). // Enter/release letter keys, switch back to alphabet (not alphabet shifted).
pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shifted -> "?123" key + letter -> alphabet. // Alphabet shifted -> "?123" key + letter -> alphabet.
// Press/release shift key, enter alphabet shifted. // Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from "123?" key, enter symbols. // Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted). // Enter/release into symbol letter keys, switch back to alphabet (not alphabet shifted).
pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shift locked -> shift key + letter -> alphabet shift locked. // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
// Long press shift key, enter alphabet shift locked. // Long press shift key, enter alphabet shift locked.
@ -383,14 +387,76 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
ALPHABET_SHIFT_LOCKED); ALPHABET_SHIFT_LOCKED);
// Press and slide from "123?" key, enter symbols. // Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release into symbol letter key, switch back to alphabet shift locked. // Enter/release into symbol letter keys, switch back to alphabet shift locked.
pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED); pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
// Alphabet shift locked -> "?123" key + letter -> alphabet shift locked. // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
// Press and slide from shift key, enter alphabet shifted. // Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED); pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter keys, switch back to shift locked.
pressAndSlideFromKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
stopSlidingOnKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
}
// Cancel sliding input in alphabet.
public void testSlidingAlphabetCancel() {
// Alphabet -> shift key + letter -> cancel -> alphabet.
// Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Enter/release letter key, remains in alphabet shifted.
pressAndSlideFromKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Cancel sliding, switch back to alphabet.
stopSlidingAndCancel(ALPHABET_UNSHIFTED);
// Alphabet -> "?123" key + letter -> cancel -> alphabet.
// Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release into symbol letter key, remains in symbols.
pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Cancel sliding, switch back to alphabet.
stopSlidingAndCancel(ALPHABET_UNSHIFTED);
// Alphabet shifted -> shift key + letter -> cancel -> alphabet.
// Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from shift key, remain alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Enter/release letter key, remains in alphabet shifted.
pressAndSlideFromKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Cancel sliding, switch back to alphabet (not alphabet shifted).
stopSlidingAndCancel(ALPHABET_UNSHIFTED);
// Alphabet shifted -> "?123" key + letter -> cancel -> alphabet.
// Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release into symbol letter key, remains in symbols.
pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Cancel sliding, switch back to alphabet (not alphabet shifted).
stopSlidingAndCancel(ALPHABET_UNSHIFTED);
// Alphabet shift locked -> shift key + letter -> cancel -> alphabet shift locked.
// Long press shift key, enter alphabet shift locked.
longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
ALPHABET_SHIFT_LOCKED);
// Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release into symbol letter key, remains in symbols.
pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Cancel sliding, switch back to alphabet shift locked.
stopSlidingAndCancel( ALPHABET_SHIFT_LOCKED);
// Alphabet shift locked -> "?123" key + letter -> cancel -> alphabet shift locked.
// Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, remains in alphabet shift locked.
pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, switch back to shift locked. // Enter/release letter key, switch back to shift locked.
pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); stopSlidingAndCancel(ALPHABET_SHIFT_LOCKED);
} }
// Sliding input in symbols. // Sliding input in symbols.
@ -398,16 +464,18 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
// Symbols -> "=\<" key + letter -> symbols. // Symbols -> "=\<" key + letter -> symbols.
// Press/release "?123" key, enter into symbols. // Press/release "?123" key, enter into symbols.
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from shift key, enter symols shifted. // Press and slide from shift key, enter symbols shifted.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Enter/release symbol shifted letter key, switch back to symbols. // Enter/release symbol shifted letter keys, switch back to symbols.
pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
stopSlidingOnKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
// Symbols -> "ABC" key + letter -> Symbols. // Symbols -> "ABC" key + letter -> Symbols.
// Press and slide from "ABC" key, enter alphabet. // Press and slide from "ABC" key, enter alphabet.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, switch back to symbols. // Enter/release letter keys, switch back to symbols.
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet. // Press/release "ABC" key, switch to alphabet.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@ -421,8 +489,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "ABC" key. // Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, switch back to symbols. // Enter/release letter keys, switch back to symbols.
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet (not alphabet shifted). // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@ -437,8 +506,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "ABC" key, enter alphabet shift locked. // Press and slide from "ABC" key, enter alphabet shift locked.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, switch back to symbols. // Enter/release letter keys, switch back to symbols.
pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked. // Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
@ -453,8 +523,85 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "=\<" key, enter symbols shifted. // Press and slide from "=\<" key, enter symbols shifted.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Enter/release symbols shift letter key, switch back to symbols. // Enter/release symbols shift letter keys, switch back to symbols.
pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
stopSlidingOnKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
}
// Cancel sliding input in symbols.
public void testSlidingSymbolsCancel() {
// Symbols -> "=\<" key + letter -> cancel -> symbols.
// Press/release "?123" key, enter into symbols.
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from shift key, enter symbols shifted.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Enter/release symbol shifted letter key, remains in symbols shifted.
pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Cancel sliding, switch back to symbols.
stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Symbols -> "ABC" key + letter -> Symbols.
// Press and slide from "ABC" key, enter alphabet.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter keys, remains in alphabet.
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Cancel sliding, switch back to symbols.
stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
// alphabet.
// Load keyboard
loadKeyboard(ALPHABET_UNSHIFTED);
// Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press/release "?123" key, enter into symbols.
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, remains in alphabet.
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Cancel sliding, switch back to symbols.
stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet (not alphabet shifted).
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
// alphabet shift locked.
// Load keyboard
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);
// Press and slide from "ABC" key, enter alphabet shift locked.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, remains in alphabet shifted.
pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Cancel sliding, switch back to symbols.
stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
// alphabet shift locked.
// Load keyboard
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);
// Press and slide from "=\<" key, enter symbols shifted.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Enter/release symbols shift letter key, remains in symbols shifted.
pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Cancel sliding, switch back to symbols.
stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked. // Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
} }
@ -468,14 +615,16 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from shift key, enter symbols. // Press and slide from shift key, enter symbols.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release symbol letter key, switch back to symbols shifted. // Enter/release symbol letter keys, switch back to symbols shifted.
pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED); pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
// Symbols shifted -> "ABC" key + letter -> symbols shifted. // Symbols shifted -> "ABC" key + letter -> symbols shifted.
// Press and slide from "ABC" key, enter alphabet. // Press and slide from "ABC" key, enter alphabet.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, switch back to symbols shifted. // Enter/release letter keys, switch back to symbols shifted.
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED); pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet. // Press/release "ABC" key, switch to alphabet.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@ -491,8 +640,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "ABC" key. // Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, switch back to symbols shifted. // Enter/release letter keys, switch back to symbols shifted.
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED); pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet (not alphabet shifted). // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@ -509,8 +659,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "ABC" key. // Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, switch back to symbols shifted. // Enter/release letter keys, switch back to symbols shifted.
pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED); pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked. // Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
@ -527,8 +678,93 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "?123" key. // Press and slide from "?123" key.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release symbol letter key, switch back to symbols shifted. // Enter/release symbol letter keys, switch back to symbols shifted.
pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED); pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
}
// Cancel sliding input in symbols shifted.
public void testSlidingSymbolsShiftedCancel() {
// Symbols shifted -> "?123" + letter -> symbols shifted.
// 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);
// Press and slide from shift key, enter symbols.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release symbol letter key, remains in symbols.
pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Cancel sliding, switch back to symbols shifted.
stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Symbols shifted -> "ABC" key + letter -> symbols shifted.
// Press and slide from "ABC" key, enter alphabet.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, remains in alphabet.
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Cancel sliding, switch back to symbols shifted.
stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
// alphabet.
// Load keyboard
loadKeyboard(ALPHABET_UNSHIFTED);
// Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// 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);
// Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Enter/release letter key, remains in alphabet.
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Cancel sliding, switch back to symbols shifted.
stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet (not alphabet shifted).
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
// alphabet shift locked.
// Load keyboard
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);
// Press/release "=\<" key, enter into symbols shifted.
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, remains in alphabet shift locked.
pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Cancel sliding, switch back to symbols shifted.
stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
// alphabet shift locked.
// Load keyboard
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);
// Press/release "=\<" key, enter into symbols shifted.
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "?123" key.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Enter/release symbol letter key, remains in symbols.
pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Cancel sliding, switch back to symbols shifted.
stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked. // Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
} }

View File

@ -71,7 +71,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
} }
public void releaseKey(final int code, final int afterRelease) { public void releaseKey(final int code, final int afterRelease) {
mSwitcher.onCodeInput(code, SINGLE); mSwitcher.onCodeInput(code);
mSwitcher.onReleaseKey(code, NOT_SLIDING); mSwitcher.onReleaseKey(code, NOT_SLIDING);
assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId()); assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
} }
@ -87,7 +87,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
} }
public void chordingReleaseKey(final int code, final int afterRelease) { public void chordingReleaseKey(final int code, final int afterRelease) {
mSwitcher.onCodeInput(code, MULTI); mSwitcher.onCodeInput(code);
mSwitcher.onReleaseKey(code, NOT_SLIDING); mSwitcher.onReleaseKey(code, NOT_SLIDING);
assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId()); assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
} }
@ -104,6 +104,19 @@ public class KeyboardStateTestsBase extends AndroidTestCase
assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId()); assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId());
} }
public void stopSlidingOnKey(final int code, final int afterPress, final int afterSlide) {
pressKey(code, afterPress);
mSwitcher.onCodeInput(code);
mSwitcher.onReleaseKey(code, NOT_SLIDING);
mSwitcher.onFinishSlidingInput();
assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId());
}
public void stopSlidingAndCancel(final int afterCancelSliding) {
mSwitcher.onFinishSlidingInput();
assertLayout("afterCancelSliding", afterCancelSliding, mSwitcher.getLayoutId());
}
public void longPressKey(final int code, final int afterPress, final int afterLongPress) { public void longPressKey(final int code, final int afterPress, final int afterLongPress) {
pressKey(code, afterPress); pressKey(code, afterPress);
mSwitcher.onLongPressTimeout(code); mSwitcher.onLongPressTimeout(code);

View File

@ -185,7 +185,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
} }
} }
public void onCodeInput(final int code, final boolean isSinglePointer) { public void onCodeInput(final int code) {
if (mAutoCapsMode == MockConstants.CAP_MODE_WORDS) { if (mAutoCapsMode == MockConstants.CAP_MODE_WORDS) {
if (Constants.isLetterCode(code)) { if (Constants.isLetterCode(code)) {
mAutoCapsState = (code == MockConstants.CODE_AUTO_CAPS_TRIGGER) mAutoCapsState = (code == MockConstants.CODE_AUTO_CAPS_TRIGGER)
@ -194,10 +194,10 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
} else { } else {
mAutoCapsState = mAutoCapsMode; mAutoCapsState = mAutoCapsMode;
} }
mState.onCodeInput(code, isSinglePointer, mAutoCapsState); mState.onCodeInput(code, mAutoCapsState);
} }
public void onCancelInput(final boolean isSinglePointer) { public void onFinishSlidingInput() {
mState.onCancelInput(isSinglePointer); mState.onFinishSlidingInput();
} }
} }