MockKeyboardSwitcher.java revision 757f8d96eea3dfb5951243d2ebb4b763db868471
1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17package com.android.inputmethod.keyboard.internal; 18 19import com.android.inputmethod.keyboard.Keyboard; 20import com.android.inputmethod.keyboard.internal.KeyboardState.SwitchActions; 21 22public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { 23 public interface Constants { 24 // Argument for {@link KeyboardState#onPressKey} and {@link KeyboardState#onReleaseKey}. 25 public static final boolean NOT_SLIDING = false; 26 public static final boolean SLIDING = true; 27 // Argument for {@link KeyboardState#onCodeInput}. 28 public static final boolean SINGLE = true; 29 public static final boolean MULTI = false; 30 public static final boolean NO_AUTO_CAPS = false; 31 public static final boolean AUTO_CAPS = true; 32 33 public static final int CODE_SHIFT = Keyboard.CODE_SHIFT; 34 public static final int CODE_SYMBOL = Keyboard.CODE_SWITCH_ALPHA_SYMBOL; 35 public static final int CODE_CAPSLOCK = Keyboard.CODE_CAPSLOCK; 36 public static final int CODE_SPACE = Keyboard.CODE_SPACE; 37 public static final int CODE_AUTO_CAPS_TRIGGER = Keyboard.CODE_SPACE; 38 39 public static final int ALPHABET_UNSHIFTED = 0; 40 public static final int ALPHABET_MANUAL_SHIFTED = 1; 41 public static final int ALPHABET_AUTOMATIC_SHIFTED = 2; 42 public static final int ALPHABET_SHIFT_LOCKED = 3; 43 public static final int ALPHABET_SHIFT_LOCK_SHIFTED = 4; 44 public static final int SYMBOLS_UNSHIFTED = 5; 45 public static final int SYMBOLS_SHIFTED = 6; 46 } 47 48 private int mLayout = Constants.ALPHABET_UNSHIFTED; 49 50 private boolean mAutoCapsMode = Constants.NO_AUTO_CAPS; 51 // Following InputConnection's behavior. Simulating InputType.TYPE_TEXT_FLAG_CAP_WORDS. 52 private boolean mAutoCapsState = true; 53 54 private final KeyboardState mState = new KeyboardState(this); 55 56 public int getLayoutId() { 57 return mLayout; 58 } 59 60 public static String getLayoutName(int layoutId) { 61 switch (layoutId) { 62 case Constants.ALPHABET_UNSHIFTED: return "ALPHABET_UNSHIFTED"; 63 case Constants.ALPHABET_MANUAL_SHIFTED: return "ALPHABET_MANUAL_SHIFTED"; 64 case Constants.ALPHABET_AUTOMATIC_SHIFTED: return "ALPHABET_AUTOMATIC_SHIFTED"; 65 case Constants.ALPHABET_SHIFT_LOCKED: return "ALPHABET_SHIFT_LOCKED"; 66 case Constants.ALPHABET_SHIFT_LOCK_SHIFTED: return "ALPHABET_SHIFT_LOCK_SHIFTED"; 67 case Constants.SYMBOLS_UNSHIFTED: return "SYMBOLS_UNSHIFTED"; 68 case Constants.SYMBOLS_SHIFTED: return "SYMBOLS_SHIFTED"; 69 default: return "UNKNOWN<" + layoutId + ">"; 70 } 71 } 72 73 public void setAutoCapsMode(boolean autoCaps) { 74 mAutoCapsMode = autoCaps; 75 } 76 77 @Override 78 public void setAlphabetKeyboard() { 79 mLayout = Constants.ALPHABET_UNSHIFTED; 80 } 81 82 @Override 83 public void setAlphabetManualShiftedKeyboard() { 84 mLayout = Constants.ALPHABET_MANUAL_SHIFTED; 85 } 86 87 @Override 88 public void setAlphabetAutomaticShiftedKeyboard() { 89 mLayout = Constants.ALPHABET_AUTOMATIC_SHIFTED; 90 } 91 92 @Override 93 public void setAlphabetShiftLockedKeyboard() { 94 mLayout = Constants.ALPHABET_SHIFT_LOCKED; 95 } 96 97 @Override 98 public void setAlphabetShiftLockShiftedKeyboard() { 99 mLayout = Constants.ALPHABET_SHIFT_LOCK_SHIFTED; 100 } 101 102 @Override 103 public void setSymbolsKeyboard() { 104 mLayout = Constants.SYMBOLS_UNSHIFTED; 105 } 106 107 @Override 108 public void setSymbolsShiftedKeyboard() { 109 mLayout = Constants.SYMBOLS_SHIFTED; 110 } 111 112 @Override 113 public void requestUpdatingShiftState() { 114 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 115 } 116 117 public void updateShiftState() { 118 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 119 } 120 121 public void loadKeyboard(String layoutSwitchBackSymbols) { 122 mState.onLoadKeyboard(layoutSwitchBackSymbols); 123 } 124 125 public void saveKeyboardState() { 126 mState.onSaveKeyboardState(); 127 } 128 129 public void onPressKey(int code) { 130 mState.onPressKey(code); 131 } 132 133 public void onReleaseKey(int code, boolean withSliding) { 134 mState.onReleaseKey(code, withSliding); 135 } 136 137 public void onCodeInput(int code, boolean isSinglePointer) { 138 if (Keyboard.isLetterCode(code)) { 139 mAutoCapsState = (code == Constants.CODE_AUTO_CAPS_TRIGGER); 140 } 141 mState.onCodeInput(code, isSinglePointer, mAutoCapsMode && mAutoCapsState); 142 } 143 144 public void onCancelInput(boolean isSinglePointer) { 145 mState.onCancelInput(isSinglePointer); 146 } 147}