* commit '3fff5179d5020123c5bae7a1c83591afd45ace58': Back to previous keyboard layout by canceling sliding input
This commit is contained in:
commit
8e7b173936
9 changed files with 349 additions and 85 deletions
|
@ -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,
|
||||
* 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.
|
||||
|
@ -87,6 +88,11 @@ public interface KeyboardActionListener {
|
|||
*/
|
||||
public void onCancelInput();
|
||||
|
||||
/**
|
||||
* Called when user finished sliding key input.
|
||||
*/
|
||||
public void onFinishSlidingInput();
|
||||
|
||||
/**
|
||||
* Send a non-"code input" custom request to the listener.
|
||||
* @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();
|
||||
|
||||
@Override
|
||||
public void onPressKey(int primaryCode) {}
|
||||
public void onPressKey(int primaryCode, boolean isSinglePointer) {}
|
||||
@Override
|
||||
public void onReleaseKey(int primaryCode, boolean withSliding) {}
|
||||
@Override
|
||||
|
@ -115,6 +121,8 @@ public interface KeyboardActionListener {
|
|||
@Override
|
||||
public void onCancelInput() {}
|
||||
@Override
|
||||
public void onFinishSlidingInput() {}
|
||||
@Override
|
||||
public boolean onCustomRequest(int requestCode) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -216,19 +216,19 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mState.onResetKeyboardStateToAlphabet();
|
||||
}
|
||||
|
||||
public void onPressKey(final int code) {
|
||||
public void onPressKey(final int code, final boolean isSinglePointer) {
|
||||
if (isVibrateAndSoundFeedbackRequired()) {
|
||||
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) {
|
||||
mState.onReleaseKey(code, withSliding);
|
||||
}
|
||||
|
||||
public void onCancelInput() {
|
||||
mState.onCancelInput(isSinglePointer());
|
||||
public void onFinishSlidingInput() {
|
||||
mState.onFinishSlidingInput();
|
||||
}
|
||||
|
||||
// Implements {@link KeyboardState.SwitchActions}.
|
||||
|
@ -346,15 +346,11 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
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.
|
||||
*/
|
||||
public void onCodeInput(final int code) {
|
||||
mState.onCodeInput(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState());
|
||||
mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState());
|
||||
}
|
||||
|
||||
public MainKeyboardView getMainKeyboardView() {
|
||||
|
|
|
@ -1100,10 +1100,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
return false;
|
||||
}
|
||||
|
||||
public int getPointerCount() {
|
||||
return mOldPointerCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent event) {
|
||||
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
|
||||
|
|
|
@ -459,7 +459,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
return false;
|
||||
}
|
||||
if (key.isEnabled()) {
|
||||
mListener.onPressKey(key.mCode);
|
||||
mListener.onPressKey(key.mCode, getActivePointerTrackerCount() == 1);
|
||||
final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged;
|
||||
mKeyboardLayoutHasBeenChanged = false;
|
||||
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() {
|
||||
if (DEBUG_LISTENER) {
|
||||
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) {
|
||||
setReleasedKeyGraphics(oldKey);
|
||||
callListenerOnRelease(oldKey, oldKey.mCode, true);
|
||||
callListenerOnRelease(oldKey, oldKey.mCode, true /* withSliding */);
|
||||
startSlidingKeyInput(oldKey);
|
||||
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) {
|
||||
mTimerProxy.cancelKeyTimers();
|
||||
final boolean isInSlidingKeyInput = mIsInSlidingKeyInput;
|
||||
final boolean isInSlidingKeyInputFromModifier = mIsInSlidingKeyInputFromModifier;
|
||||
resetSlidingKeyInput();
|
||||
mIsDetectingGesture = false;
|
||||
final Key currentKey = mCurrentKey;
|
||||
|
@ -1189,7 +1197,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
|
||||
if (sInGesture) {
|
||||
if (currentKey != null) {
|
||||
callListenerOnRelease(currentKey, currentKey.mCode, true);
|
||||
callListenerOnRelease(currentKey, currentKey.mCode, true /* withSliding */);
|
||||
}
|
||||
mayEndBatchInput(eventTime);
|
||||
return;
|
||||
|
@ -1203,6 +1211,9 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
return;
|
||||
}
|
||||
detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime);
|
||||
if (isInSlidingKeyInputFromModifier) {
|
||||
callListenerOnFinishSlidingInput();
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
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,
|
||||
|
|
|
@ -28,9 +28,9 @@ import com.android.inputmethod.latin.RecapitalizeStatus;
|
|||
* This class contains all keyboard state transition logic.
|
||||
*
|
||||
* 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, int)}, {@link #onLongPressTimeout(int)}.
|
||||
* {@link #onPressKey(int,boolean,int)}, {@link #onReleaseKey(int,boolean)},
|
||||
* {@link #onCodeInput(int,int)}, {@link #onFinishSlidingInput()}, {@link #onCancelInput()},
|
||||
* {@link #onUpdateShiftState(int,int)}, {@link #onLongPressTimeout(int)}.
|
||||
*
|
||||
* 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_MOMENTARY_ALPHA_AND_SYMBOL = 3;
|
||||
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 boolean mIsAlphabetMode;
|
||||
|
@ -525,6 +526,9 @@ public final class KeyboardState {
|
|||
} else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) {
|
||||
// In shift locked state, shift has been pressed and slid out to other key.
|
||||
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()
|
||||
&& (mShiftKeyState.isPressing() || mShiftKeyState.isPressingOnShifted())
|
||||
&& !withSliding) {
|
||||
|
@ -554,17 +558,21 @@ public final class KeyboardState {
|
|||
mShiftKeyState.onRelease();
|
||||
}
|
||||
|
||||
public void onCancelInput(final boolean isSinglePointer) {
|
||||
public void onFinishSlidingInput() {
|
||||
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.
|
||||
if (isSinglePointer) {
|
||||
if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) {
|
||||
toggleAlphabetAndSymbols();
|
||||
} else if (mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE) {
|
||||
toggleShiftInSymbols();
|
||||
}
|
||||
switch (mSwitchState) {
|
||||
case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL:
|
||||
toggleAlphabetAndSymbols();
|
||||
break;
|
||||
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;
|
||||
}
|
||||
|
||||
public void onCodeInput(final int code, final boolean isSinglePointer, final int autoCaps) {
|
||||
public void onCodeInput(final int code, final int autoCaps) {
|
||||
if (DEBUG_EVENT) {
|
||||
Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code)
|
||||
+ " single=" + isSinglePointer
|
||||
+ " autoCaps=" + autoCaps + " " + this);
|
||||
}
|
||||
|
||||
|
@ -593,23 +600,12 @@ public final class KeyboardState {
|
|||
} else {
|
||||
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;
|
||||
case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE:
|
||||
if (code == Constants.CODE_SHIFT) {
|
||||
// Detected only the shift key has been pressed on symbol layout, and then released.
|
||||
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;
|
||||
case SWITCH_STATE_SYMBOL_BEGIN:
|
||||
|
@ -650,6 +646,7 @@ public final 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_MOMENTARY_ALPHA_SHIFT: return "MOMENTARY-ALPHA_SHIFT";
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
@Override
|
||||
public void onCancelInput() {
|
||||
// User released a finger outside any key
|
||||
mKeyboardSwitcher.onCancelInput();
|
||||
// Nothing to do so far.
|
||||
}
|
||||
|
||||
@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
|
||||
// key is depressed; release matching call is onReleaseKey below.
|
||||
@Override
|
||||
public void onPressKey(final int primaryCode) {
|
||||
mKeyboardSwitcher.onPressKey(primaryCode);
|
||||
public void onPressKey(final int primaryCode, final boolean isSinglePointer) {
|
||||
mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer);
|
||||
}
|
||||
|
||||
// Callback by PointerTracker through the KeyboardActionListener. This is called when a key
|
||||
|
|
|
@ -352,30 +352,34 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
// Alphabet -> shift key + letter -> alphabet.
|
||||
// Press and slide from shift key, enter alphabet shifted.
|
||||
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
|
||||
// Enter/release letter key, switch back to alphabet.
|
||||
pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
|
||||
// Enter/release letter keys, switch back to alphabet.
|
||||
pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
|
||||
stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
// Alphabet -> "?123" key + letter -> alphabet.
|
||||
// Press and slide from "123?" key, enter symbols.
|
||||
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release into symbol letter key, switch back to alphabet.
|
||||
pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
// Enter/release into symbol letter keys, switch back to alphabet.
|
||||
pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
// Alphabet shifted -> shift key + letter -> 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, switch back to alphabet (not alphabet shifted).
|
||||
pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
|
||||
// Enter/release letter keys, switch back to alphabet (not alphabet shifted).
|
||||
pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
|
||||
stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
// Alphabet shifted -> "?123" key + letter -> 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, switch back to alphabet (not alphabet shifted).
|
||||
pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
// Enter/release into symbol letter keys, switch back to alphabet (not alphabet shifted).
|
||||
pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
// Alphabet shift locked -> shift key + letter -> alphabet shift locked.
|
||||
// Long press shift key, enter alphabet shift locked.
|
||||
|
@ -383,14 +387,76 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
ALPHABET_SHIFT_LOCKED);
|
||||
// Press and slide from "123?" key, enter symbols.
|
||||
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release into symbol letter key, switch back to alphabet shift locked.
|
||||
pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
|
||||
// Enter/release into symbol letter keys, switch back to alphabet shift locked.
|
||||
pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
|
||||
|
||||
// Alphabet shift locked -> "?123" key + letter -> 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 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.
|
||||
pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
|
||||
stopSlidingAndCancel(ALPHABET_SHIFT_LOCKED);
|
||||
}
|
||||
|
||||
// Sliding input in symbols.
|
||||
|
@ -398,16 +464,18 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
// Symbols -> "=\<" key + letter -> symbols.
|
||||
// Press/release "?123" key, enter into symbols.
|
||||
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);
|
||||
// Enter/release symbol shifted letter key, switch back to symbols.
|
||||
pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release symbol shifted letter keys, switch back to symbols.
|
||||
pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
|
||||
stopSlidingOnKey('~', SYMBOLS_SHIFTED, 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 key, switch back to symbols.
|
||||
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release letter keys, switch back to symbols.
|
||||
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Press/release "ABC" key, switch to alphabet.
|
||||
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
|
@ -421,8 +489,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Press and slide from "ABC" key.
|
||||
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
// Enter/release letter key, switch back to symbols.
|
||||
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release letter keys, switch back to symbols.
|
||||
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Press/release "ABC" key, switch to alphabet (not alphabet shifted).
|
||||
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
|
@ -437,8 +506,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
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, switch back to symbols.
|
||||
pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release letter keys, switch back to symbols.
|
||||
pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
|
||||
stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
|
||||
// Press/release "ABC" key, switch to 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);
|
||||
// Press and slide from "=\<" key, enter symbols shifted.
|
||||
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
|
||||
// Enter/release symbols shift letter key, switch back to symbols.
|
||||
pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release symbols shift letter keys, switch back to symbols.
|
||||
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.
|
||||
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);
|
||||
// Press and slide from shift key, enter symbols.
|
||||
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release symbol letter key, switch back to symbols shifted.
|
||||
pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
|
||||
// Enter/release symbol letter keys, switch back to symbols shifted.
|
||||
pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, 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, switch back to symbols shifted.
|
||||
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
|
||||
// Enter/release letter keys, switch back to symbols shifted.
|
||||
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
|
||||
// Press/release "ABC" key, switch to alphabet.
|
||||
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
|
@ -491,8 +640,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
|
||||
// Press and slide from "ABC" key.
|
||||
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
// Enter/release letter key, switch back to symbols shifted.
|
||||
pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
|
||||
// Enter/release letter keys, switch back to symbols shifted.
|
||||
pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
|
||||
// Press/release "ABC" key, switch to alphabet (not alphabet shifted).
|
||||
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
|
||||
|
||||
|
@ -509,8 +659,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
|
|||
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, switch back to symbols shifted.
|
||||
pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
|
||||
// Enter/release letter keys, switch back to 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.
|
||||
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);
|
||||
// Press and slide from "?123" key.
|
||||
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
|
||||
// Enter/release symbol letter key, switch back to symbols shifted.
|
||||
pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
|
||||
// Enter/release symbol letter keys, switch back to 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.
|
||||
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
|
|||
}
|
||||
|
||||
public void releaseKey(final int code, final int afterRelease) {
|
||||
mSwitcher.onCodeInput(code, SINGLE);
|
||||
mSwitcher.onCodeInput(code);
|
||||
mSwitcher.onReleaseKey(code, NOT_SLIDING);
|
||||
assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
|
|||
}
|
||||
|
||||
public void chordingReleaseKey(final int code, final int afterRelease) {
|
||||
mSwitcher.onCodeInput(code, MULTI);
|
||||
mSwitcher.onCodeInput(code);
|
||||
mSwitcher.onReleaseKey(code, NOT_SLIDING);
|
||||
assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
|
||||
}
|
||||
|
@ -104,6 +104,19 @@ public class KeyboardStateTestsBase extends AndroidTestCase
|
|||
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) {
|
||||
pressKey(code, afterPress);
|
||||
mSwitcher.onLongPressTimeout(code);
|
||||
|
|
|
@ -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 (Constants.isLetterCode(code)) {
|
||||
mAutoCapsState = (code == MockConstants.CODE_AUTO_CAPS_TRIGGER)
|
||||
|
@ -194,10 +194,10 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
} else {
|
||||
mAutoCapsState = mAutoCapsMode;
|
||||
}
|
||||
mState.onCodeInput(code, isSinglePointer, mAutoCapsState);
|
||||
mState.onCodeInput(code, mAutoCapsState);
|
||||
}
|
||||
|
||||
public void onCancelInput(final boolean isSinglePointer) {
|
||||
mState.onCancelInput(isSinglePointer);
|
||||
public void onFinishSlidingInput() {
|
||||
mState.onFinishSlidingInput();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue