KeyboardStateSingleTouchTests.java revision 60c4594ee6415b266b3418e46d09e6a5b3ed23e1
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 1960c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaokapublic class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { 20e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Shift key in alphabet mode. 21e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testShift() { 22e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Press/release shift key, enter into shift state. 2364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 24e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Press/release shift key, back to normal state. 2564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 26e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 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 letter key, snap back to normal state. 3064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 31e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 32e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 3387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Shift key sliding input. 3487e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testShiftSliding() { 3564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from shift key. 3664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 37e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 3864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release letter key, snap back to alphabet. 3964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 40e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 41e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 42e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Switching between alphabet and symbols. 43e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testAlphabetAndSymbols() { 4464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 4564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 4664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, back to alphabet. 4764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 48e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 49e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 50e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Switching between alphabet shift locked and symbols. 51e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testAlphabetShiftLockedAndSymbols() { 5264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 5364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 5464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 5564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 5664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 57e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 5887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Press/release "ABC" key, switch back to shift locked mode. 5964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 6087e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 6187e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 6287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Symbols key sliding input. 6387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testSymbolsSliding() { 6464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "123?" key. 6564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 6664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 6764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release into symbol key, snap back to alphabet. 6864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 69e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 70e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 71e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Switching between symbols and symbols shifted. 72e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testSymbolsAndSymbolsShifted() { 7364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 7464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 7564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 7664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "=\<" key, enter into symbols shifted. 7764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 7864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 7964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 8064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 8187e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 8287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 8387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Symbols shift sliding input 8487e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testSymbolsShiftSliding() { 8564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 8664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 8764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 8864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "=\<" key. 8964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 9064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 9164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release symbol shifted letter key, snap back to symbols. 9264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED); 9387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 94e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 9587e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Symbols shift sliding input from symbols shifted. 9687e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testSymbolsShiftSliding2() { 9764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 9864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 9964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 10064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "=\<" key, enter into symbols shifted. 10164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 10264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 10364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "123?" key. 10464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 10564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 10664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter/release symbol letter key, snap back to symbols shifted. 10764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED); 108e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 109e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 110e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Automatic snap back to alphabet from symbols by space key. 111e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testSnapBackBySpace() { 11264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 11364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 114e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 115e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter a symbol letter. 11664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 11764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 118e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter space, snap back to alphabet. 11964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 120e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 121e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 12287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // TODO: Add automatic snap back to shift locked test. 12387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 124e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Automatic snap back to alphabet from symbols by registered letters. 125e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testSnapBack() { 12664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set snap back chars. 127e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka final String snapBackChars = "'"; 128e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka final int snapBackCode = snapBackChars.codePointAt(0); 12964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka loadKeyboard(snapBackChars, ALPHABET_UNSHIFTED); 130e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 13164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 13264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 133e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 134e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter a symbol letter. 13564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 13664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 137e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Enter snap back letter, snap back to alphabet. 13864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(snapBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 139e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 140e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 141e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Automatic upper case test 142e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testAutomaticUpperCase() { 14364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 14464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 14564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 146e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state with auto caps enabled. 14764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 14864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 14964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release shift key, back to alphabet. 15064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 151e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 152e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 15387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Sliding from shift key in automatic upper case. 15487e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testAutomaticUpperCaseSliding() { 15564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 15664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 15764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 15887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Update shift state with auto caps enabled. 15964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 16064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 16164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from shift key. 16264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 16364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 16464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter and release letter key, back to alphabet. 16564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 16687e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka } 16787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 16887e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Sliding from symbol key in automatic upper case. 16987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka public void testAutomaticUpperCaseSliding2() { 17064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 17164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 17264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 17387e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka // Update shift state with auto caps enabled. 17464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 17587e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka 17664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press and slide from "123?" key. 17764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 178e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 17964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Enter and release symbol letter keys, back to alphabet. 18064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 181e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 182e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 183e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Long press shift key. 184e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Move long press recognizing timer/logic into KeyboardState. 185e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testLongPressShift() { 18664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 18764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 18864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 18964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key, remain in shift locked. 19064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 19164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 19264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key, remain in shift locked. 19364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('B', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 19464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 19564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release word separator, remain in shift locked. 19664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 19764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 19864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, back to alphabet. 19964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 200e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 201e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 202e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Leave shift lock with single tap shift key. 203e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testShiftInShiftLock() { 20464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 20564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 20664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 20764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release shift key, back to alphabet. 20864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 209e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 210e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 211e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Double tap shift key. 212e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Move double tap recognizing timer/logic into KeyboardState. 213e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testDoubleTapShift() { 214e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // First shift key tap. 21564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 21664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 217e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Second shift key tap. 218e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Double tap recognized in LatinKeyboardView.KeyTimerHandler. 21964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka secondTapShiftKey(ALPHABET_SHIFT_LOCKED); 220e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 221e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // First shift key tap. 22264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 22364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 224e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Second shift key tap. 225e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Second tap is ignored in LatinKeyboardView.KeyTimerHandler. 226e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 227e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 228e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state. 229e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testUpdateShiftState() { 23064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 23164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 23264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 233e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state. 23464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 23564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 23664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key, back to alphabet. 23764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED); 23864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 23964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release letter key 24064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 24164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 24264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Press/release auto caps trigger letter, back to automatic shifted. 24364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 244e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 245e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 246e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state when shift locked. 247e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka public void testUpdateShiftStateInShiftLocked() { 24864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 24964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 25064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 25164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 25264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 25364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 254e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // Update shift state when shift locked 25564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_SHIFT_LOCKED); 256e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka } 257e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 258e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Change focus test. 259e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka 260e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka // TODO: Change orientation test. 261e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka} 262