KeyboardStateSingleTouchTests.java revision 64e01baadeb624781d9d056b62679b25ea0fe5c0
1e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka/* 2e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project 3e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * 4e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * use this file except in compliance with the License. You may obtain a copy of 6e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * the License at 7e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * 8e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * 10e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * License for the specific language governing permissions and limitations under 14e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * the License. 15e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka */ 16e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 17e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 1964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaokapublic class KeyboardStateNonDistinctTests extends KeyboardStateTestsBase { 2064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka @Override 2187e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public boolean hasDistinctMultitouch() { 2287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka return false; 2387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 24e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 25e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Shift key in alphabet mode. 26e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testShift() { 27e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Press/release shift key, enter into shift state. 2864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 29e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Press/release shift key, back to normal state. 3064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 31e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 32e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Press/release shift key, enter into shift state. 3364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 34e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Press/release letter key, snap back to normal state. 3564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 36e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 37e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 3887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Shift key sliding input. 3987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testShiftSliding() { 4064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from shift key. 4164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 42e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 4364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release letter key, snap back to alphabet. 4464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 45e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 46e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 47e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Switching between alphabet and symbols. 48e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testAlphabetAndSymbols() { 4964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 5064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 5164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, back to alphabet. 5264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 53e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 54e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 55e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Switching between alphabet shift locked and symbols. 56e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testAlphabetShiftLockedAndSymbols() { 5764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 5864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 5964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 6064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 6164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 62e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 6387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Press/release "ABC" key, switch back to shift locked mode. 6464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 6587e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 6687e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 6787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Symbols key sliding input. 6887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testSymbolsSliding() { 6964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "123?" key. 7064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 7164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 7264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release into symbol key, snap back to alphabet. 7364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 74e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 75e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 76e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Switching between symbols and symbols shifted. 77e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testSymbolsAndSymbolsShifted() { 7864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 7964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 8064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 8164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "=\<" key, enter into symbols shifted. 8264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 8364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 8464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 8564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 8687e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 8787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 8887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Symbols shift sliding input 8987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testSymbolsShiftSliding() { 9064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 9164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 9264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 9364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "=\<" key. 9464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 9564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 9664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release symbol shifted letter key, snap back to symbols. 9764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED); 9887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 99e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 10087e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Symbols shift sliding input from symbols shifted. 10187e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testSymbolsShiftSliding2() { 10264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 10364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 10464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 10564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "=\<" key, enter into symbols shifted. 10664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 10764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 10864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "123?" key. 10964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 11064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 11164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release symbol letter key, snap back to symbols shifted. 11264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED); 113e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 114e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 115e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Automatic snap back to alphabet from symbols by space key. 116e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testSnapBackBySpace() { 11764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 11864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 119e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 120e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter a symbol letter. 12164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 12264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 123e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter space, snap back to alphabet. 12464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 125e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 126e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 12787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // TODO: Add automatic snap back to shift locked test. 12887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 129e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Automatic snap back to alphabet from symbols by registered letters. 130e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testSnapBack() { 13164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set snap back chars. 132e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka final String snapBackChars = "'"; 133e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka final int snapBackCode = snapBackChars.codePointAt(0); 13464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka loadKeyboard(snapBackChars, ALPHABET_UNSHIFTED); 135e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 13664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 13764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 138e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 139e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter a symbol letter. 14064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 14164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 142e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter snap back letter, snap back to alphabet. 14364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(snapBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 144e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 145e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 146e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Automatic upper case test 147e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testAutomaticUpperCase() { 14864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 14964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 15064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 151e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state with auto caps enabled. 15264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 15364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 15464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release shift key, back to alphabet. 15564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 156e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 157e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 15887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Sliding from shift key in automatic upper case. 15987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testAutomaticUpperCaseSliding() { 16064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 16164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 16264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 16387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Update shift state with auto caps enabled. 16464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 16564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 16664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from shift key. 16764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 16864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 16964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter and release letter key, back to alphabet. 17064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 17187e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 17287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 17387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Sliding from symbol key in automatic upper case. 17487e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testAutomaticUpperCaseSliding2() { 17564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 17664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 17764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 17887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Update shift state with auto caps enabled. 17964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 18087e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 18164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "123?" key. 18264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 183e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 18464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter and release symbol letter keys, back to alphabet. 18564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 186e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 187e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 188e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Long press shift key. 189e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Move long press recognizing timer/logic into KeyboardState. 190e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testLongPressShift() { 19164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 19264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 19364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 19464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key, remain in shift locked. 19564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 19664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 19764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key, remain in shift locked. 19864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('B', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 19964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 20064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release word separator, remain in shift locked. 20164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 20264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 20364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, back to alphabet. 20464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 205e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 206e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 207e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Leave shift lock with single tap shift key. 208e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testShiftInShiftLock() { 20964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 21064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 21164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 21264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release shift key, back to alphabet. 21364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 214e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 215e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 216e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Double tap shift key. 217e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Move double tap recognizing timer/logic into KeyboardState. 218e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testDoubleTapShift() { 219e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // First shift key tap. 22064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 22164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 222e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Second shift key tap. 223e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Double tap recognized in LatinKeyboardView.KeyTimerHandler. 22464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka secondTapShiftKey(ALPHABET_SHIFT_LOCKED); 225e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 226e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // First shift key tap. 22764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 22864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 229e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Second shift key tap. 230e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Second tap is ignored in LatinKeyboardView.KeyTimerHandler. 231e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 232e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 233e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state. 234e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testUpdateShiftState() { 23564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 23664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 23764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 238e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state. 23964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 24064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 24164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key, back to alphabet. 24264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED); 24364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 24464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key 24564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 24664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 24764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release auto caps trigger letter, back to automatic shifted. 24864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 249e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 250e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 251e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state when shift locked. 252e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testUpdateShiftStateInShiftLocked() { 25364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 25464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 25564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 25664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 25764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 25864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 259e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state when shift locked 26064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_SHIFT_LOCKED); 261e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 262e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 263e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Change focus test. 264e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 265e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Change orientation test. 266e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka} 267