am 41016aca: Back to previous keyboard layout by canceling sliding input
* commit '41016acacfa21354f59ed51db1f85ea3d99bf6a4': Back to previous keyboard layout by canceling sliding inputmain
commit
3fff5179d5
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue