KeyboardState keeps track of isAlphabetMode and isSymbolShifted
Bug: 5708602 Change-Id: I181cdeb90d24984ce6f6c993b278293aae7364eb
This commit is contained in:
parent
784181e29f
commit
10dcc7eb67
2 changed files with 70 additions and 71 deletions
|
@ -147,7 +147,7 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
|
|
||||||
public void saveKeyboardState() {
|
public void saveKeyboardState() {
|
||||||
if (mCurrentId != null) {
|
if (mCurrentId != null) {
|
||||||
mState.onSaveKeyboardState(isAlphabetMode(), isSymbolShifted());
|
mState.onSaveKeyboardState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,9 +278,8 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
return mCurrentId != null ? mCurrentId.mMode : KeyboardId.MODE_TEXT;
|
return mCurrentId != null ? mCurrentId.mMode : KeyboardId.MODE_TEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Delegate to KeyboardState
|
|
||||||
public boolean isAlphabetMode() {
|
public boolean isAlphabetMode() {
|
||||||
return mCurrentId != null && mCurrentId.isAlphabetKeyboard();
|
return mState.isAlphabetMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInputViewShown() {
|
public boolean isInputViewShown() {
|
||||||
|
@ -354,44 +353,44 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
* Toggle keyboard shift state triggered by user touch event.
|
* Toggle keyboard shift state triggered by user touch event.
|
||||||
*/
|
*/
|
||||||
public void toggleShift() {
|
public void toggleShift() {
|
||||||
mState.onToggleShift(isAlphabetMode(), isSymbolShifted());
|
mState.onToggleShift();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggle caps lock state triggered by user touch event.
|
* Toggle caps lock state triggered by user touch event.
|
||||||
*/
|
*/
|
||||||
public void toggleCapsLock() {
|
public void toggleCapsLock() {
|
||||||
mState.onToggleCapsLock(isAlphabetMode());
|
mState.onToggleCapsLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggle between alphabet and symbols modes triggered by user touch event.
|
* Toggle between alphabet and symbols modes triggered by user touch event.
|
||||||
*/
|
*/
|
||||||
public void toggleAlphabetAndSymbols() {
|
public void toggleAlphabetAndSymbols() {
|
||||||
mState.onToggleAlphabetAndSymbols(isAlphabetMode());
|
mState.onToggleAlphabetAndSymbols();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update keyboard shift state triggered by connected EditText status change.
|
* Update keyboard shift state triggered by connected EditText status change.
|
||||||
*/
|
*/
|
||||||
public void updateShiftState() {
|
public void updateShiftState() {
|
||||||
mState.onUpdateShiftState(isAlphabetMode(), mInputMethodService.getCurrentAutoCapsState());
|
mState.onUpdateShiftState(mInputMethodService.getCurrentAutoCapsState());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onPressShift(boolean withSliding) {
|
public void onPressShift(boolean withSliding) {
|
||||||
mState.onPressShift(isAlphabetMode(), isSymbolShifted(), withSliding);
|
mState.onPressShift(withSliding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onReleaseShift(boolean withSliding) {
|
public void onReleaseShift(boolean withSliding) {
|
||||||
mState.onReleaseShift(isAlphabetMode(), isSymbolShifted(), withSliding);
|
mState.onReleaseShift(withSliding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onPressSymbol() {
|
public void onPressSymbol() {
|
||||||
mState.onPressSymbol(isAlphabetMode());
|
mState.onPressSymbol();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onReleaseSymbol() {
|
public void onReleaseSymbol() {
|
||||||
mState.onReleaseSymbol(isAlphabetMode());
|
mState.onReleaseSymbol();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onOtherKeyPressed() {
|
public void onOtherKeyPressed() {
|
||||||
|
@ -399,7 +398,7 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onCancelInput() {
|
public void onCancelInput() {
|
||||||
mState.onCancelInput(isAlphabetMode(), isSymbolShifted(), isSinglePointer());
|
mState.onCancelInput(isSinglePointer());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements {@link KeyboardState.SwitchActions}.
|
// Implements {@link KeyboardState.SwitchActions}.
|
||||||
|
@ -414,11 +413,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
setKeyboard(getKeyboard(mMainKeyboardId));
|
setKeyboard(getKeyboard(mMainKeyboardId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove this method
|
|
||||||
private boolean isSymbolShifted() {
|
|
||||||
return mCurrentId != null && mCurrentId.equals(mSymbolsShiftedKeyboardId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Implements {@link KeyboardState.SwitchActions}.
|
// Implements {@link KeyboardState.SwitchActions}.
|
||||||
@Override
|
@Override
|
||||||
public void setSymbolsShiftedKeyboard() {
|
public void setSymbolsShiftedKeyboard() {
|
||||||
|
@ -445,7 +439,7 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
* Updates state machine to figure out when to automatically snap back to the previous mode.
|
* Updates state machine to figure out when to automatically snap back to the previous mode.
|
||||||
*/
|
*/
|
||||||
public void onCodeInput(int code) {
|
public void onCodeInput(int code) {
|
||||||
mState.onCodeInput(isAlphabetMode(), isSymbolShifted(), code, isSinglePointer());
|
mState.onCodeInput(code, isSinglePointer());
|
||||||
}
|
}
|
||||||
|
|
||||||
public LatinKeyboardView getKeyboardView() {
|
public LatinKeyboardView getKeyboardView() {
|
||||||
|
@ -495,13 +489,14 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
||||||
}
|
}
|
||||||
|
|
||||||
private void postSetInputView(final View newInputView) {
|
private void postSetInputView(final View newInputView) {
|
||||||
mInputMethodService.mHandler.post(new Runnable() {
|
final LatinIME latinIme = mInputMethodService;
|
||||||
|
latinIme.mHandler.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (newInputView != null) {
|
if (newInputView != null) {
|
||||||
mInputMethodService.setInputView(newInputView);
|
latinIme.setInputView(newInputView);
|
||||||
}
|
}
|
||||||
mInputMethodService.updateInputViewShown();
|
latinIme.updateInputViewShown();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,12 @@ import com.android.inputmethod.keyboard.Keyboard;
|
||||||
* Keyboard state machine.
|
* Keyboard state machine.
|
||||||
*
|
*
|
||||||
* This class contains all keyboard state transition logic.
|
* This class contains all keyboard state transition logic.
|
||||||
* TODO: List up input events and actions.
|
* The input events are {@link #onLoadKeyboard(String, boolean)}, {@link #onSaveKeyboardState()},
|
||||||
|
* {@link #onPressShift(boolean)}, {@link #onReleaseShift(boolean)}, {@link #onPressSymbol()},
|
||||||
|
* {@link #onReleaseSymbol()}, {@link #onOtherKeyPressed()}, {@link #onCodeInput(int, boolean)},
|
||||||
|
* {@link #onCancelInput(boolean)}, {@link #onUpdateShiftState(boolean)}, {@link #onToggleShift()},
|
||||||
|
* {@link #onToggleCapsLock()}, and {@link #onToggleAlphabetAndSymbols()}.
|
||||||
|
* The actions are {@link SwitchActions}'s methods.
|
||||||
*/
|
*/
|
||||||
public class KeyboardState {
|
public class KeyboardState {
|
||||||
private static final String TAG = KeyboardState.class.getSimpleName();
|
private static final String TAG = KeyboardState.class.getSimpleName();
|
||||||
|
@ -63,10 +68,13 @@ public class KeyboardState {
|
||||||
|
|
||||||
private final SwitchActions mSwitchActions;
|
private final SwitchActions mSwitchActions;
|
||||||
|
|
||||||
|
private boolean mIsAlphabetMode;
|
||||||
|
private boolean mIsSymbolShifted;
|
||||||
|
|
||||||
private final SavedKeyboardState mSavedKeyboardState = new SavedKeyboardState();
|
private final SavedKeyboardState mSavedKeyboardState = new SavedKeyboardState();
|
||||||
private boolean mPrevMainKeyboardWasShiftLocked;
|
private boolean mPrevMainKeyboardWasShiftLocked;
|
||||||
|
|
||||||
private static class SavedKeyboardState {
|
static class SavedKeyboardState {
|
||||||
public boolean mIsValid;
|
public boolean mIsValid;
|
||||||
public boolean mIsAlphabetMode;
|
public boolean mIsAlphabetMode;
|
||||||
public boolean mIsShiftLocked;
|
public boolean mIsShiftLocked;
|
||||||
|
@ -91,16 +99,15 @@ public class KeyboardState {
|
||||||
onRestoreKeyboardState();
|
onRestoreKeyboardState();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
public void onSaveKeyboardState() {
|
||||||
public void onSaveKeyboardState(boolean isAlphabetMode, boolean isSymbolShifted) {
|
|
||||||
final SavedKeyboardState state = mSavedKeyboardState;
|
final SavedKeyboardState state = mSavedKeyboardState;
|
||||||
state.mIsAlphabetMode = isAlphabetMode;
|
state.mIsAlphabetMode = mIsAlphabetMode;
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
state.mIsShiftLocked = isShiftLocked();
|
state.mIsShiftLocked = isShiftLocked();
|
||||||
state.mIsShifted = !state.mIsShiftLocked && isShiftedOrShiftLocked();
|
state.mIsShifted = !state.mIsShiftLocked && isShiftedOrShiftLocked();
|
||||||
} else {
|
} else {
|
||||||
state.mIsShiftLocked = false;
|
state.mIsShiftLocked = false;
|
||||||
state.mIsShifted = isSymbolShifted;
|
state.mIsShifted = mIsSymbolShifted;
|
||||||
}
|
}
|
||||||
state.mIsValid = true;
|
state.mIsValid = true;
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
|
@ -137,6 +144,10 @@ public class KeyboardState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAlphabetMode() {
|
||||||
|
return mIsAlphabetMode;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isShiftLocked() {
|
public boolean isShiftLocked() {
|
||||||
return mKeyboardShiftState.isShiftLocked();
|
return mKeyboardShiftState.isShiftLocked();
|
||||||
}
|
}
|
||||||
|
@ -190,16 +201,16 @@ public class KeyboardState {
|
||||||
mSwitchActions.setShiftLocked(shiftLocked);
|
mSwitchActions.setShiftLocked(shiftLocked);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleAlphabetAndSymbols(boolean isAlphabetMode) {
|
private void toggleAlphabetAndSymbols() {
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
setSymbolsKeyboard();
|
setSymbolsKeyboard();
|
||||||
} else {
|
} else {
|
||||||
setAlphabetKeyboard();
|
setAlphabetKeyboard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleShiftInSymbols(boolean isSymbolShifted) {
|
private void toggleShiftInSymbols() {
|
||||||
if (isSymbolShifted) {
|
if (mIsSymbolShifted) {
|
||||||
setSymbolsKeyboard();
|
setSymbolsKeyboard();
|
||||||
} else {
|
} else {
|
||||||
setSymbolsShiftedKeyboard();
|
setSymbolsShiftedKeyboard();
|
||||||
|
@ -211,6 +222,8 @@ public class KeyboardState {
|
||||||
Log.d(TAG, "setAlphabetKeyboard");
|
Log.d(TAG, "setAlphabetKeyboard");
|
||||||
}
|
}
|
||||||
mSwitchActions.setAlphabetKeyboard();
|
mSwitchActions.setAlphabetKeyboard();
|
||||||
|
mIsAlphabetMode = true;
|
||||||
|
mIsSymbolShifted = false;
|
||||||
mSwitchState = SWITCH_STATE_ALPHA;
|
mSwitchState = SWITCH_STATE_ALPHA;
|
||||||
setShiftLocked(mPrevMainKeyboardWasShiftLocked);
|
setShiftLocked(mPrevMainKeyboardWasShiftLocked);
|
||||||
mPrevMainKeyboardWasShiftLocked = false;
|
mPrevMainKeyboardWasShiftLocked = false;
|
||||||
|
@ -222,6 +235,8 @@ public class KeyboardState {
|
||||||
}
|
}
|
||||||
mPrevMainKeyboardWasShiftLocked = isShiftLocked();
|
mPrevMainKeyboardWasShiftLocked = isShiftLocked();
|
||||||
mSwitchActions.setSymbolsKeyboard();
|
mSwitchActions.setSymbolsKeyboard();
|
||||||
|
mIsAlphabetMode = false;
|
||||||
|
mIsSymbolShifted = false;
|
||||||
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
|
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,28 +245,28 @@ public class KeyboardState {
|
||||||
Log.d(TAG, "setSymbolsShiftedKeyboard");
|
Log.d(TAG, "setSymbolsShiftedKeyboard");
|
||||||
}
|
}
|
||||||
mSwitchActions.setSymbolsShiftedKeyboard();
|
mSwitchActions.setSymbolsShiftedKeyboard();
|
||||||
|
mIsAlphabetMode = false;
|
||||||
|
mIsSymbolShifted = true;
|
||||||
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
|
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode argument.
|
public void onPressSymbol() {
|
||||||
public void onPressSymbol(boolean isAlphabetMode) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onPressSymbol: " + this);
|
Log.d(TAG, "onPressSymbol: " + this);
|
||||||
}
|
}
|
||||||
toggleAlphabetAndSymbols(isAlphabetMode);
|
toggleAlphabetAndSymbols();
|
||||||
mSymbolKeyState.onPress();
|
mSymbolKeyState.onPress();
|
||||||
mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL;
|
mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode argument.
|
public void onReleaseSymbol() {
|
||||||
public void onReleaseSymbol(boolean isAlphabetMode) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onReleaseSymbol: " + this);
|
Log.d(TAG, "onReleaseSymbol: " + this);
|
||||||
}
|
}
|
||||||
// Snap back to the previous keyboard mode if the user chords the mode change key and
|
// Snap back to the previous keyboard mode if the user chords the mode change key and
|
||||||
// another key, then releases the mode change key.
|
// another key, then releases the mode change key.
|
||||||
if (mSwitchState == SWITCH_STATE_CHORDING_ALPHA) {
|
if (mSwitchState == SWITCH_STATE_CHORDING_ALPHA) {
|
||||||
toggleAlphabetAndSymbols(isAlphabetMode);
|
toggleAlphabetAndSymbols();
|
||||||
}
|
}
|
||||||
mSymbolKeyState.onRelease();
|
mSymbolKeyState.onRelease();
|
||||||
}
|
}
|
||||||
|
@ -264,12 +279,11 @@ public class KeyboardState {
|
||||||
mSymbolKeyState.onOtherKeyPressed();
|
mSymbolKeyState.onOtherKeyPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode argument.
|
public void onUpdateShiftState(boolean autoCaps) {
|
||||||
public void onUpdateShiftState(boolean isAlphabetMode, boolean autoCaps) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onUpdateShiftState: " + this + " autoCaps=" + autoCaps);
|
Log.d(TAG, "onUpdateShiftState: " + this + " autoCaps=" + autoCaps);
|
||||||
}
|
}
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
if (!isShiftLocked() && !mShiftKeyState.isIgnoring()) {
|
if (!isShiftLocked() && !mShiftKeyState.isIgnoring()) {
|
||||||
if (mShiftKeyState.isReleasing() && autoCaps) {
|
if (mShiftKeyState.isReleasing() && autoCaps) {
|
||||||
// Only when shift key is releasing, automatic temporary upper case will be set.
|
// Only when shift key is releasing, automatic temporary upper case will be set.
|
||||||
|
@ -286,12 +300,11 @@ public class KeyboardState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
public void onPressShift(boolean withSliding) {
|
||||||
public void onPressShift(boolean isAlphabetMode, boolean isSymbolShifted, boolean withSliding) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onPressShift: " + this + " sliding=" + withSliding);
|
Log.d(TAG, "onPressShift: " + this + " sliding=" + withSliding);
|
||||||
}
|
}
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
if (isShiftLocked()) {
|
if (isShiftLocked()) {
|
||||||
// Shift key is pressed while caps lock state, we will treat this state as shifted
|
// Shift key is pressed while caps lock state, we will treat this state as shifted
|
||||||
// caps lock state and mark as if shift key pressed while normal state.
|
// caps lock state and mark as if shift key pressed while normal state.
|
||||||
|
@ -313,19 +326,17 @@ public class KeyboardState {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// In symbol mode, just toggle symbol and symbol more keyboard.
|
// In symbol mode, just toggle symbol and symbol more keyboard.
|
||||||
toggleShiftInSymbols(isSymbolShifted);
|
toggleShiftInSymbols();
|
||||||
mSwitchState = SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE;
|
mSwitchState = SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE;
|
||||||
mShiftKeyState.onPress();
|
mShiftKeyState.onPress();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
public void onReleaseShift(boolean withSliding) {
|
||||||
public void onReleaseShift(boolean isAlphabetMode, boolean isSymbolShifted,
|
|
||||||
boolean withSliding) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onReleaseShift: " + this + " sliding=" + withSliding);
|
Log.d(TAG, "onReleaseShift: " + this + " sliding=" + withSliding);
|
||||||
}
|
}
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
final boolean isShiftLocked = isShiftLocked();
|
final boolean isShiftLocked = isShiftLocked();
|
||||||
if (mShiftKeyState.isMomentary()) {
|
if (mShiftKeyState.isMomentary()) {
|
||||||
// After chording input while normal state.
|
// After chording input while normal state.
|
||||||
|
@ -350,24 +361,22 @@ public class KeyboardState {
|
||||||
// In symbol mode, snap back to the previous keyboard mode if the user chords the shift
|
// In symbol mode, snap back to the previous keyboard mode if the user chords the shift
|
||||||
// key and another key, then releases the shift key.
|
// key and another key, then releases the shift key.
|
||||||
if (mSwitchState == SWITCH_STATE_CHORDING_SYMBOL) {
|
if (mSwitchState == SWITCH_STATE_CHORDING_SYMBOL) {
|
||||||
toggleShiftInSymbols(isSymbolShifted);
|
toggleShiftInSymbols();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mShiftKeyState.onRelease();
|
mShiftKeyState.onRelease();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
public void onCancelInput(boolean isSinglePointer) {
|
||||||
public void onCancelInput(boolean isAlphabetMode, boolean isSymbolShifted,
|
|
||||||
boolean isSinglePointer) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onCancelInput: isSinglePointer=" + isSinglePointer + " " + this);
|
Log.d(TAG, "onCancelInput: isSinglePointer=" + isSinglePointer + " " + this);
|
||||||
}
|
}
|
||||||
// Snap back to the previous keyboard mode if the user cancels sliding input.
|
// Snap back to the previous keyboard mode if the user cancels sliding input.
|
||||||
if (isSinglePointer) {
|
if (isSinglePointer) {
|
||||||
if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) {
|
if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) {
|
||||||
toggleAlphabetAndSymbols(isAlphabetMode);
|
toggleAlphabetAndSymbols();
|
||||||
} else if (mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE) {
|
} else if (mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE) {
|
||||||
toggleShiftInSymbols(isSymbolShifted);
|
toggleShiftInSymbols();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -387,9 +396,7 @@ public class KeyboardState {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
public void onCodeInput(int code, boolean isSinglePointer) {
|
||||||
public void onCodeInput(boolean isAlphabetMode, boolean isSymbolShifted, int code,
|
|
||||||
boolean isSinglePointer) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onCodeInput: code=" + code + " isSinglePointer=" + isSinglePointer
|
Log.d(TAG, "onCodeInput: code=" + code + " isSinglePointer=" + isSinglePointer
|
||||||
+ " " + this);
|
+ " " + this);
|
||||||
|
@ -404,7 +411,7 @@ public class KeyboardState {
|
||||||
// {@link #SWITCH_STATE_MOMENTARY}.
|
// {@link #SWITCH_STATE_MOMENTARY}.
|
||||||
if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) {
|
if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) {
|
||||||
// Detected only the mode change key has been pressed, and then released.
|
// Detected only the mode change key has been pressed, and then released.
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
mSwitchState = SWITCH_STATE_ALPHA;
|
mSwitchState = SWITCH_STATE_ALPHA;
|
||||||
} else {
|
} else {
|
||||||
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
|
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
|
||||||
|
@ -414,7 +421,7 @@ public class KeyboardState {
|
||||||
// and slid to other key, then released the finger.
|
// and slid to other key, then released the finger.
|
||||||
// If the user cancels the sliding input, snapping back to the previous keyboard
|
// If the user cancels the sliding input, snapping back to the previous keyboard
|
||||||
// mode is handled by {@link #onCancelInput}.
|
// mode is handled by {@link #onCancelInput}.
|
||||||
toggleAlphabetAndSymbols(isAlphabetMode);
|
toggleAlphabetAndSymbols();
|
||||||
} else {
|
} else {
|
||||||
// Chording input is being started. The keyboard mode will be snapped back to the
|
// Chording input is being started. The keyboard mode will be snapped back to the
|
||||||
// previous mode in {@link onReleaseSymbol} when the mode change key is released.
|
// previous mode in {@link onReleaseSymbol} when the mode change key is released.
|
||||||
|
@ -428,7 +435,7 @@ public class KeyboardState {
|
||||||
} else if (isSinglePointer) {
|
} else if (isSinglePointer) {
|
||||||
// Snap back to the previous keyboard mode if the user pressed the shift key on
|
// Snap 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.
|
// symbol mode and slid to other key, then released the finger.
|
||||||
toggleShiftInSymbols(isSymbolShifted);
|
toggleShiftInSymbols();
|
||||||
mSwitchState = SWITCH_STATE_SYMBOL;
|
mSwitchState = SWITCH_STATE_SYMBOL;
|
||||||
} else {
|
} else {
|
||||||
// Chording input is being started. The keyboard mode will be snapped back to the
|
// Chording input is being started. The keyboard mode will be snapped back to the
|
||||||
|
@ -456,25 +463,23 @@ public class KeyboardState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
public void onToggleShift() {
|
||||||
public void onToggleShift(boolean isAlphabetMode, boolean isSymbolShifted) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onToggleShift: " + this);
|
Log.d(TAG, "onToggleShift: " + this);
|
||||||
}
|
}
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
setShifted(isShiftedOrShiftLocked()
|
setShifted(isShiftedOrShiftLocked()
|
||||||
? SwitchActions.UNSHIFT : SwitchActions.MANUAL_SHIFT);
|
? SwitchActions.UNSHIFT : SwitchActions.MANUAL_SHIFT);
|
||||||
} else {
|
} else {
|
||||||
toggleShiftInSymbols(isSymbolShifted);
|
toggleShiftInSymbols();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode arguments.
|
public void onToggleCapsLock() {
|
||||||
public void onToggleCapsLock(boolean isAlphabetMode) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onToggleCapsLock: " + this);
|
Log.d(TAG, "onToggleCapsLock: " + this);
|
||||||
}
|
}
|
||||||
if (isAlphabetMode) {
|
if (mIsAlphabetMode) {
|
||||||
if (isShiftLocked()) {
|
if (isShiftLocked()) {
|
||||||
setShiftLocked(false);
|
setShiftLocked(false);
|
||||||
// Shift key is long pressed while caps lock state, we will toggle back to normal
|
// Shift key is long pressed while caps lock state, we will toggle back to normal
|
||||||
|
@ -486,12 +491,11 @@ public class KeyboardState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of isAlphabetMode arguments.
|
public void onToggleAlphabetAndSymbols() {
|
||||||
public void onToggleAlphabetAndSymbols(boolean isAlphabetMode) {
|
|
||||||
if (DEBUG_STATE) {
|
if (DEBUG_STATE) {
|
||||||
Log.d(TAG, "onToggleAlphabetAndSymbols: " + this);
|
Log.d(TAG, "onToggleAlphabetAndSymbols: " + this);
|
||||||
}
|
}
|
||||||
toggleAlphabetAndSymbols(isAlphabetMode);
|
toggleAlphabetAndSymbols();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String shiftModeToString(int shiftMode) {
|
private static String shiftModeToString(int shiftMode) {
|
||||||
|
|
Loading…
Reference in a new issue