1549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka/* 2549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project 3549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka * 4ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 5ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * you may not use this file except in compliance with the License. 6ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * You may obtain a copy of the License at 7549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka * 8ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka * 10549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 12ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * See the License for the specific language governing permissions and 14ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * limitations under the License. 15549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka */ 16549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 17549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 19553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaokaimport android.text.TextUtils; 20553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka 21e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalardimport com.android.inputmethod.event.Event; 229342484e8d573a40f470b6a593df31c602fa4076Ken Wakasaimport com.android.inputmethod.latin.common.Constants; 23e28eba5074664d5716b8e58b8d0a235746b261ebKen Wakasaimport com.android.inputmethod.latin.utils.RecapitalizeStatus; 24549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 25549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaokapublic class MockKeyboardSwitcher implements KeyboardState.SwitchActions { 26240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka public interface MockConstants { 2764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Argument for {@link KeyboardState#onPressKey} and {@link KeyboardState#onReleaseKey}. 282a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka public static final boolean NOT_SLIDING = false; 292a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka public static final boolean SLIDING = true; 30e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalard // Argument for {@link KeyboardState#onEvent}. 312a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka public static final boolean SINGLE = true; 322a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka public static final boolean MULTI = false; 33240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka public static final int CAP_MODE_OFF = Constants.TextUtils.CAP_MODE_OFF; 34553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka public static final int CAP_MODE_WORDS = TextUtils.CAP_MODE_WORDS; 35553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka public static final int CAP_MODE_CHARACTERS = TextUtils.CAP_MODE_CHARACTERS; 362a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka 37240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka public static final int CODE_SHIFT = Constants.CODE_SHIFT; 38240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka public static final int CODE_SYMBOL = Constants.CODE_SWITCH_ALPHA_SYMBOL; 39240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka public static final int CODE_SPACE = Constants.CODE_SPACE; 40240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka public static final int CODE_AUTO_CAPS_TRIGGER = Constants.CODE_SPACE; 418ece45bb32a350a4c73c9708eedc18389970f07dTadashi G. Takaoka 4264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka public static final int ALPHABET_UNSHIFTED = 0; 4364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka public static final int ALPHABET_MANUAL_SHIFTED = 1; 4464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka public static final int ALPHABET_AUTOMATIC_SHIFTED = 2; 4564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka public static final int ALPHABET_SHIFT_LOCKED = 3; 46757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka public static final int ALPHABET_SHIFT_LOCK_SHIFTED = 4; 47e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka public static final int SYMBOLS_UNSHIFTED = 5; 48e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka public static final int SYMBOLS_SHIFTED = 6; 4964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka } 50549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 51240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka private int mLayout = MockConstants.ALPHABET_UNSHIFTED; 52549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 53240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka private int mAutoCapsMode = MockConstants.CAP_MODE_OFF; 548ece45bb32a350a4c73c9708eedc18389970f07dTadashi G. Takaoka // Following InputConnection's behavior. Simulating InputType.TYPE_TEXT_FLAG_CAP_WORDS. 55240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka private int mAutoCapsState = MockConstants.CAP_MODE_OFF; 56549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 572a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka private boolean mIsInDoubleTapShiftKeyTimeout; 58a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka private int mLongPressTimeoutCode; 590ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka 60549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka private final KeyboardState mState = new KeyboardState(this); 61549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 6264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka public int getLayoutId() { 6364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka return mLayout; 64549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 65549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 66cc2636b4e1b2d340351324f178f7ee990d7538cbTadashi G. Takaoka public static String getLayoutName(final int layoutId) { 67373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka switch (layoutId) { 68240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka case MockConstants.ALPHABET_UNSHIFTED: return "ALPHABET_UNSHIFTED"; 69240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka case MockConstants.ALPHABET_MANUAL_SHIFTED: return "ALPHABET_MANUAL_SHIFTED"; 70240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka case MockConstants.ALPHABET_AUTOMATIC_SHIFTED: return "ALPHABET_AUTOMATIC_SHIFTED"; 71240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka case MockConstants.ALPHABET_SHIFT_LOCKED: return "ALPHABET_SHIFT_LOCKED"; 72240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka case MockConstants.ALPHABET_SHIFT_LOCK_SHIFTED: return "ALPHABET_SHIFT_LOCK_SHIFTED"; 73e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka case MockConstants.SYMBOLS_UNSHIFTED: return "SYMBOLS_UNSHIFTED"; 74e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka case MockConstants.SYMBOLS_SHIFTED: return "SYMBOLS_SHIFTED"; 75373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka default: return "UNKNOWN<" + layoutId + ">"; 76373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka } 77373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka } 78373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka 79cc2636b4e1b2d340351324f178f7ee990d7538cbTadashi G. Takaoka public void setAutoCapsMode(final int autoCaps) { 808ece45bb32a350a4c73c9708eedc18389970f07dTadashi G. Takaoka mAutoCapsMode = autoCaps; 81553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka mAutoCapsState = autoCaps; 82549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 83549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 840ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka public void expireDoubleTapTimeout() { 852a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka mIsInDoubleTapShiftKeyTimeout = false; 860ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka } 870ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka 88549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka @Override 89549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka public void setAlphabetKeyboard() { 90240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka mLayout = MockConstants.ALPHABET_UNSHIFTED; 91549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 92549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 93549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka @Override 940f05076990f1308c34c2f12ed793e1e1c41f8ac1Tadashi G. Takaoka public void setAlphabetManualShiftedKeyboard() { 95240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka mLayout = MockConstants.ALPHABET_MANUAL_SHIFTED; 96549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 97549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 98549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka @Override 990f05076990f1308c34c2f12ed793e1e1c41f8ac1Tadashi G. Takaoka public void setAlphabetAutomaticShiftedKeyboard() { 100240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka mLayout = MockConstants.ALPHABET_AUTOMATIC_SHIFTED; 1010f05076990f1308c34c2f12ed793e1e1c41f8ac1Tadashi G. Takaoka } 1020f05076990f1308c34c2f12ed793e1e1c41f8ac1Tadashi G. Takaoka 1030f05076990f1308c34c2f12ed793e1e1c41f8ac1Tadashi G. Takaoka @Override 1040f05076990f1308c34c2f12ed793e1e1c41f8ac1Tadashi G. Takaoka public void setAlphabetShiftLockedKeyboard() { 105240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka mLayout = MockConstants.ALPHABET_SHIFT_LOCKED; 106549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 107549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 108549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka @Override 109757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka public void setAlphabetShiftLockShiftedKeyboard() { 110240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka mLayout = MockConstants.ALPHABET_SHIFT_LOCK_SHIFTED; 111757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka } 112757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka 113757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka @Override 114549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka public void setSymbolsKeyboard() { 115e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka mLayout = MockConstants.SYMBOLS_UNSHIFTED; 116e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka } 117e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 118e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka @Override 119e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka public void setSymbolsShiftedKeyboard() { 120e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka mLayout = MockConstants.SYMBOLS_SHIFTED; 121549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 122549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 123549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka @Override 1245169937dd48d69e52e647662cb6fc3def5bf90d4Satoshi Kataoka public void setEmojiKeyboard() { 1255169937dd48d69e52e647662cb6fc3def5bf90d4Satoshi Kataoka // Just ignore. 1265169937dd48d69e52e647662cb6fc3def5bf90d4Satoshi Kataoka } 1275169937dd48d69e52e647662cb6fc3def5bf90d4Satoshi Kataoka 1285169937dd48d69e52e647662cb6fc3def5bf90d4Satoshi Kataoka @Override 129ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard public void requestUpdatingShiftState(final int currentAutoCapsState, 130ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard final int currentRecapitalizeState) { 131ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard mState.onUpdateShiftState(currentAutoCapsState, currentRecapitalizeState); 132ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard } 133ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard 134ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard @Override 1352a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka public void startDoubleTapShiftKeyTimer() { 1362a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka mIsInDoubleTapShiftKeyTimeout = true; 1370ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka } 1380ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka 1390ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka @Override 1402a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka public void cancelDoubleTapShiftKeyTimer() { 1412a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka mIsInDoubleTapShiftKeyTimeout = false; 142beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka } 143beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka 144beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka @Override 1452a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka public boolean isInDoubleTapShiftKeyTimeout() { 1462a9882a433e2372ac32fbc0def578d4d9a97a676Tadashi G. Takaoka return mIsInDoubleTapShiftKeyTimeout; 1470ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka } 1480ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka 149549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka public void updateShiftState() { 1508094bf45d73a5f7257076afc97d91d6708ee03c4Jean Chalard mState.onUpdateShiftState(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE); 151549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 152549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 153cc2636b4e1b2d340351324f178f7ee990d7538cbTadashi G. Takaoka public void loadKeyboard() { 154f091c491ea8259ea696186ea6d97e6ce0c4c3597Jean Chalard mState.onLoadKeyboard(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE); 155549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 156549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 15706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka public void saveKeyboardState() { 15806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka mState.onSaveKeyboardState(); 15906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka } 16006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 161cc2636b4e1b2d340351324f178f7ee990d7538cbTadashi G. Takaoka public void onPressKey(final int code, final boolean isSinglePointer) { 162f091c491ea8259ea696186ea6d97e6ce0c4c3597Jean Chalard mState.onPressKey(code, isSinglePointer, mAutoCapsState, 163f091c491ea8259ea696186ea6d97e6ce0c4c3597Jean Chalard RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE); 164549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 165549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 166cc2636b4e1b2d340351324f178f7ee990d7538cbTadashi G. Takaoka public void onReleaseKey(final int code, final boolean withSliding) { 167ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard onReleaseKey(code, withSliding, mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE); 168ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard } 169ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard 170ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard public void onReleaseKey(final int code, final boolean withSliding, 171ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard final int currentAutoCapsState, final int currentRecapitalizeState) { 172ddc163988a7e2e910ff3cac26ed580bac123fda0Jean Chalard mState.onReleaseKey(code, withSliding, currentAutoCapsState, currentRecapitalizeState); 173a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka if (mLongPressTimeoutCode == code) { 174a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka mLongPressTimeoutCode = 0; 175a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka } 176549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 177549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 17841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka public void onCodeInput(final int code) { 179240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka if (mAutoCapsMode == MockConstants.CAP_MODE_WORDS) { 180240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka if (Constants.isLetterCode(code)) { 181240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka mAutoCapsState = (code == MockConstants.CODE_AUTO_CAPS_TRIGGER) 182240871ecafde7834ebb4270cd7758fc904a5f3a7Tadashi G. Takaoka ? mAutoCapsMode : MockConstants.CAP_MODE_OFF; 183553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka } 184553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka } else { 185553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka mAutoCapsState = mAutoCapsMode; 18664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka } 187e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalard final Event event = 188e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalard Event.createSoftwareKeypressEvent(code /* codePoint */, code /* keyCode */, 189e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalard Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, 190e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalard false /* isKeyRepeat */); 191e38043849e01adfb2f6eb33cf6133c1d39d2466aJean Chalard mState.onEvent(event, mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE); 192549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 193549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka 19441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka public void onFinishSlidingInput() { 195f091c491ea8259ea696186ea6d97e6ce0c4c3597Jean Chalard mState.onFinishSlidingInput(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE); 196549571cf5c7c5132bcf8073bac0554ae0ee1dcefTadashi G. Takaoka } 19741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka} 198