KeyboardStateMultiTouchTests.java revision beb08b398fa73a26f2d42d6feec87e34a96ca2d9
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 19public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { 20 // Chording input in alphabet. 21 public void testChordingAlphabet() { 22 // Press shift key and hold, enter into choring shift state. 23 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 24 // Press/release letter key. 25 chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 26 // Release shift key, switch back to alphabet. 27 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 28 29 // Press "?123" key and hold, enter into choring symbols state. 30 pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 31 // Press/release symbol letter key. 32 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 33 // Release "ABC" key, switch back to alphabet. 34 releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 35 } 36 37 // Chording input in shift locked. 38 public void testChordingShiftLocked() { 39 // Long press shift key, enter alphabet shift locked. 40 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 41 42 // Press shift key and hold, enter into choring shift state. 43 pressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED); 44 // Press/release letter key. 45 chordingPressAndReleaseKey('Z', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 46 // Release shift key, switch back to alphabet shift locked. 47 releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 48 49 // Press "?123" key and hold, enter into choring symbols state. 50 pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 51 // Press/release symbol letter key. 52 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 53 // Release "123?" key, switch back to alphabet shift locked. 54 releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 55 } 56 57 // Chording input in symbols. 58 public void testChordingSymbols() { 59 // Press/release "?123" key, enter symbols. 60 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 61 62 // Press "=\<" key and hold, enter into choring symbols shifted state. 63 pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 64 // Press/release symbol letter key. 65 chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 66 // Release "=\<" key, switch back to symbols. 67 releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 68 69 // Press "ABC" key and hold, enter into choring alphabet state. 70 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 71 // Press/release letter key. 72 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 73 // Release "ABC" key, switch back to symbols. 74 releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 75 76 // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols 77 // -> alphabet. 78 // Load keyboard 79 loadKeyboard(ALPHABET_UNSHIFTED); 80 // Press/release shift key, enter alphabet shifted. 81 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 82 // Press/release "?123" key, enter into symbols. 83 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 84 // Press "ABC" key, enter into chording alphabet state. 85 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 86 // Enter/release letter key. 87 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 88 // Release "ABC" key, switch back to symbols. 89 releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 90 // Press/release "ABC" key, switch to alphabet (not alphabet shifted). 91 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 92 93 // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols -> 94 // alphabet shift locked. 95 // Load keyboard 96 loadKeyboard(ALPHABET_UNSHIFTED); 97 // Long press shift key, enter alphabet shift locked. 98 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 99 // Press/release "?123" key, enter into symbols. 100 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 101 // Press "ABC" key, enter into chording alphabet shift locked. 102 pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 103 // Enter/release letter key. 104 chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 105 // Release "ABC" key, switch back to symbols. 106 releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 107 // Press/release "ABC" key, switch to alphabet shift locked. 108 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 109 110 // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols -> 111 // alphabet shift locked. 112 // Load keyboard 113 loadKeyboard(ALPHABET_UNSHIFTED); 114 // Long press shift key, enter alphabet shift locked. 115 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 116 // Press/release "?123" key, enter into symbols. 117 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 118 // Press "=\<" key, enter into symbols shifted chording state. 119 pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 120 // Enter/release symbols shift letter key. 121 chordingPressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 122 // Release "=\<" key, switch back to symbols. 123 releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 124 // Press/release "ABC" key, switch to alphabet shift locked. 125 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 126 } 127 128 // Chording input in symbol shifted. 129 public void testChordingSymbolsShifted() { 130 // Press/release "?123" key, enter symbols. 131 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 132 // Press/release "=\<" key, enter symbols shifted. 133 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 134 135 // Press "?123" key and hold, enter into chording symbols state. 136 pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 137 // Press/release symbol letter key. 138 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 139 // Release "=\<" key, switch back to symbols shifted state. 140 releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 141 142 // Press "ABC" key and hold, enter into choring alphabet state. 143 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 144 // Press/release letter key. 145 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 146 // Release "ABC" key, switch back to symbols. 147 releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 148 149 // Alphabet shifted -> symbols shifted -> "ABC" key + letter -> symbols shifted -> 150 // alphabet. 151 // Load keyboard 152 loadKeyboard(ALPHABET_UNSHIFTED); 153 // Press/release shift key, enter alphabet shifted. 154 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 155 // Press/release "?123" key, enter into symbols. 156 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 157 // Press/release "=\<" key, enter symbols shifted. 158 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 159 // Press "ABC" key, enter into chording alphabet state. 160 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 161 // Enter/release letter key. 162 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 163 // Release "ABC" key, switch back to symbols shifted. 164 releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 165 // Press/release "ABC" key, switch to alphabet (not alphabet shifted). 166 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 167 168 // Alphabet shift locked -> symbols shifted -> "ABC" key + letter -> symbols shifted 169 // -> alphabet shift locked. 170 // Load keyboard 171 loadKeyboard(ALPHABET_UNSHIFTED); 172 // Long press shift key, enter alphabet shift locked. 173 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 174 // Press/release "?123" key, enter into symbols. 175 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 176 // Press/release "=\<" key, enter symbols shifted. 177 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 178 // Press "ABC" key, enter into chording alphabet shift locked. 179 pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 180 // Enter/release letter key. 181 chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 182 // Release "ABC" key, switch back to symbols shifted. 183 releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 184 // Press/release "ABC" key, switch to alphabet shift locked. 185 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 186 187 // Alphabet shift locked -> symbols shifted -> "=\<" key + letter -> symbols shifted 188 // -> alphabet shift locked. 189 // Load keyboard 190 loadKeyboard(ALPHABET_UNSHIFTED); 191 // Long press shift key, enter alphabet shift locked. 192 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 193 // Press/release "?123" key, enter into symbols. 194 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 195 // Press/release "=\<" key, enter symbols shifted. 196 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 197 // Press "=\<" key, enter into symbols chording state. 198 pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 199 // Enter/release symbols letter key. 200 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 201 // Release "=\<" key, switch back to symbols shifted. 202 releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 203 // Press/release "ABC" key, switch to alphabet shift locked. 204 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 205 } 206 207 // Chording input in automatic upper case. 208 public void testChordingAutomaticUpperCase() { 209 // Set auto caps mode on. 210 setAutoCapsMode(AUTO_CAPS); 211 212 // Update shift state with auto caps enabled. 213 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 214 // Press shift key and hold, enter into chording shift state. 215 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 216 // Press/release letter key. 217 chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 218 // Release shift key, switch back to alphabet. 219 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 220 221 // Update shift state with auto caps enabled. 222 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 223 // Press "123?" key and hold, enter into chording symbols state. 224 pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 225 // Press/release symbol letter key. 226 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 227 // Release "123?" key, switch back to alphabet. 228 releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 229 } 230 231 // Chording letter key with shift key. 232 public void testChordingLetterAndShiftKey() { 233 // Press letter key and hold. 234 pressKey('z', ALPHABET_UNSHIFTED); 235 // Press shift key, {@link PointerTracker} will fire a phantom release letter key. 236 chordingReleaseKey('z', ALPHABET_UNSHIFTED); 237 chordingPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 238 // Press another letter key and hold. 239 chordingPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 240 // Release shift key 241 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 242 } 243} 244