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 17 package com.android.inputmethod.keyboard.internal; 18 19 public 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 shifted. 38 public void testChordingShifted() { 39 // Press shift key, enter alphabet shifted. 40 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 41 42 // Press shift key and hold, enter into choring shift state. 43 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 44 // Press/release letter key. 45 chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 46 // Release shift key, switch back to alphabet shifted. 47 releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 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 unshifted. 54 releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 55 } 56 57 // Chording input in shift locked. 58 public void testChordingShiftLocked() { 59 // Long press shift key, enter alphabet shift locked. 60 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 61 ALPHABET_SHIFT_LOCKED); 62 63 // Press shift key and hold, enter into choring shift state. 64 pressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED); 65 // Press/release letter key. 66 chordingPressAndReleaseKey('Z', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 67 // Release shift key, switch back to alphabet shift locked. 68 releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 69 70 // Press "?123" key and hold, enter into choring symbols state. 71 pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 72 // Press/release symbol letter key. 73 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 74 // Release "123?" key, switch back to alphabet shift locked. 75 releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 76 } 77 78 // Chording input in symbols. 79 public void testChordingSymbols() { 80 // Press/release "?123" key, enter symbols. 81 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 82 83 // Press "=\<" key and hold, enter into choring symbols shifted state. 84 pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 85 // Press/release symbol letter key. 86 chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 87 // Release "=\<" key, switch back to symbols. 88 releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 89 90 // Press "ABC" key and hold, enter into choring alphabet state. 91 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 92 // Press/release letter key. 93 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 94 // Release "ABC" key, switch back to symbols. 95 releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 96 97 // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols 98 // -> alphabet. 99 // Load keyboard 100 loadKeyboard(ALPHABET_UNSHIFTED); 101 // Press/release shift key, enter alphabet shifted. 102 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 103 // Press/release "?123" key, enter into symbols. 104 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 105 // Press "ABC" key, enter into chording alphabet state. 106 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 107 // Enter/release letter key. 108 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 109 // Release "ABC" key, switch back to symbols. 110 releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 111 // Press/release "ABC" key, switch to alphabet (not alphabet shifted). 112 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 113 114 // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols -> 115 // alphabet shift locked. 116 // Load keyboard 117 loadKeyboard(ALPHABET_UNSHIFTED); 118 // Long press shift key, enter alphabet shift locked. 119 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 120 ALPHABET_SHIFT_LOCKED); 121 // Press/release "?123" key, enter into symbols. 122 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 123 // Press "ABC" key, enter into chording alphabet shift locked. 124 pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 125 // Enter/release letter key. 126 chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 127 // Release "ABC" key, switch back to symbols. 128 releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 129 // Press/release "ABC" key, switch to alphabet shift locked. 130 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 131 132 // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols -> 133 // alphabet shift locked. 134 // Load keyboard 135 loadKeyboard(ALPHABET_UNSHIFTED); 136 // Long press shift key, enter alphabet shift locked. 137 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 138 ALPHABET_SHIFT_LOCKED); 139 // Press/release "?123" key, enter into symbols. 140 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 141 // Press "=\<" key, enter into symbols shifted chording state. 142 pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 143 // Enter/release symbols shift letter key. 144 chordingPressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 145 // Release "=\<" key, switch back to symbols. 146 releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 147 // Press/release "ABC" key, switch to alphabet shift locked. 148 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 149 } 150 151 // Chording input in symbol shifted. 152 public void testChordingSymbolsShifted() { 153 // Press/release "?123" key, enter symbols. 154 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 155 // Press/release "=\<" key, enter symbols shifted. 156 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 157 158 // Press "?123" key and hold, enter into chording symbols state. 159 pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 160 // Press/release symbol letter key. 161 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 162 // Release "=\<" key, switch back to symbols shifted state. 163 releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 164 165 // Press "ABC" key and hold, enter into choring alphabet state. 166 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 167 // Press/release letter key. 168 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 169 // Release "ABC" key, switch back to symbols. 170 releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 171 172 // Alphabet shifted -> symbols shifted -> "ABC" key + letter -> symbols shifted -> 173 // alphabet. 174 // Load keyboard 175 loadKeyboard(ALPHABET_UNSHIFTED); 176 // Press/release shift key, enter alphabet shifted. 177 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 178 // Press/release "?123" key, enter into symbols. 179 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 180 // Press/release "=\<" key, enter symbols shifted. 181 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 182 // Press "ABC" key, enter into chording alphabet state. 183 pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 184 // Enter/release letter key. 185 chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 186 // Release "ABC" key, switch back to symbols shifted. 187 releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 188 // Press/release "ABC" key, switch to alphabet (not alphabet shifted). 189 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 190 191 // Alphabet shift locked -> symbols shifted -> "ABC" key + letter -> symbols shifted 192 // -> alphabet shift locked. 193 // Load keyboard 194 loadKeyboard(ALPHABET_UNSHIFTED); 195 // Long press shift key, enter alphabet shift locked. 196 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 197 ALPHABET_SHIFT_LOCKED); 198 // Press/release "?123" key, enter into symbols. 199 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 200 // Press/release "=\<" key, enter symbols shifted. 201 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 202 // Press "ABC" key, enter into chording alphabet shift locked. 203 pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 204 // Enter/release letter key. 205 chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 206 // Release "ABC" key, switch back to symbols shifted. 207 releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 208 // Press/release "ABC" key, switch to alphabet shift locked. 209 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 210 211 // Alphabet shift locked -> symbols shifted -> "=\<" key + letter -> symbols shifted 212 // -> alphabet shift locked. 213 // Load keyboard 214 loadKeyboard(ALPHABET_UNSHIFTED); 215 // Long press shift key, enter alphabet shift locked. 216 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 217 ALPHABET_SHIFT_LOCKED); 218 // Press/release "?123" key, enter into symbols. 219 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 220 // Press/release "=\<" key, enter symbols shifted. 221 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 222 // Press "=\<" key, enter into symbols chording state. 223 pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 224 // Enter/release symbols letter key. 225 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 226 // Release "=\<" key, switch back to symbols shifted. 227 releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 228 // Press/release "ABC" key, switch to alphabet shift locked. 229 pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 230 } 231 232 // Chording input in automatic upper case. 233 public void testChordingAutomaticUpperCase() { 234 // Set capitalize the first character of all words mode. 235 setAutoCapsMode(CAP_MODE_WORDS); 236 237 // Update shift state with auto caps enabled. 238 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 239 // Press shift key and hold, enter into chording shift state. 240 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 241 // Press/release letter key. 242 chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 243 // Release shift key, switch back to alphabet. 244 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 245 246 // Update shift state with auto caps enabled. 247 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 248 // Press "123?" key and hold, enter into chording symbols state. 249 pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 250 // Press/release symbol letter key. 251 chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 252 // Release "123?" key, switch back to alphabet. 253 releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 254 } 255 256 // Chording letter key with shift key. 257 public void testChordingLetterAndShiftKey() { 258 // Press letter key and hold. 259 pressKey('z', ALPHABET_UNSHIFTED); 260 // Press shift key, {@link PointerTracker} will fire a phantom release letter key. 261 chordingReleaseKey('z', ALPHABET_UNSHIFTED); 262 chordingPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 263 // Press another letter key and hold. 264 chordingPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 265 // Release shift key 266 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 267 } 268 269 // Multi touch input in manual shifted. 270 public void testMultiTouchManualShifted() { 271 // Press/release shift key, enter into alphabet shifted. 272 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 273 274 // Press 'X' key and hold 275 pressKey('X', ALPHABET_MANUAL_SHIFTED); 276 // Press 'z' key and hold, switch back to alphabet unshifted. 277 chordingPressKey('z', ALPHABET_UNSHIFTED); 278 // Release 'X' key 279 releaseKey('X', ALPHABET_UNSHIFTED); 280 // Release 'z' key 281 releaseKey('z', ALPHABET_UNSHIFTED); 282 } 283 284 // Multi touch input in automatic upper case. 285 public void testMultiTouchAutomaticUpperCase() { 286 // Set auto word caps mode on. 287 setAutoCapsMode(CAP_MODE_WORDS); 288 // Update shift state with auto caps enabled. 289 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 290 291 // Press 'X' key and hold 292 pressKey('X', ALPHABET_AUTOMATIC_SHIFTED); 293 // Press 'z' key and hold, switch back to alphabet unshifted. 294 chordingPressKey('z', ALPHABET_UNSHIFTED); 295 // Release 'X' key 296 releaseKey('X', ALPHABET_UNSHIFTED); 297 // Release 'z' key 298 releaseKey('z', ALPHABET_UNSHIFTED); 299 } 300 301 // Multi touch input in capitalize character mode. 302 public void testMultiTouchCapModeCharacter() { 303 // Set auto character caps mode on. 304 setAutoCapsMode(CAP_MODE_CHARACTERS); 305 // Update shift state with auto caps enabled. 306 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 307 308 // Press 'X' key and hold 309 pressKey('X', ALPHABET_AUTOMATIC_SHIFTED); 310 // Press 'Z' key and hold, stay in automatic shifted mode. 311 chordingPressKey('Z', ALPHABET_AUTOMATIC_SHIFTED); 312 // Release 'X' key 313 releaseKey('X', ALPHABET_AUTOMATIC_SHIFTED); 314 // Release 'Z' key 315 releaseKey('Z', ALPHABET_AUTOMATIC_SHIFTED); 316 } 317 318 // Multi touch shift chording input in manual shifted. 319 public void testMultiTouchShiftChordingManualShifted() { 320 // Press/release shift key, enter into alphabet shifted. 321 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 322 323 // Press shift key and hold, stays in alphabet shifted. 324 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 325 // Press 'X' key and hold 326 chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 327 // Press 'Z' key and hold, stays in alphabet shifted. 328 chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 329 // Release 'X' key 330 releaseKey('X', ALPHABET_MANUAL_SHIFTED); 331 // Release 'Z' key 332 releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 333 // Release shift key. 334 releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 335 } 336 337 // Multi touch shift chording input in automatic upper case. 338 public void testMultiTouchShiftChordingAutomaticUpperCase() { 339 // Set auto word caps mode on. 340 setAutoCapsMode(CAP_MODE_WORDS); 341 // Update shift state with auto caps enabled. 342 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 343 344 // Press shift key and hold, switch to alphabet shifted. 345 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 346 // Press 'X' key and hold 347 chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 348 // Press 'Z' key and hold, stays in alphabet shifted. 349 chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 350 // Release 'X' key 351 releaseKey('X', ALPHABET_MANUAL_SHIFTED); 352 // Release 'Z' key 353 releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 354 // Release shift key. 355 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 356 } 357 358 // Multi touch shift chording input in capitalize character mode. 359 public void testMultiTouchShiftChordingCapModeCharacter() { 360 // Set auto character caps mode on. 361 setAutoCapsMode(CAP_MODE_CHARACTERS); 362 // Update shift state with auto caps enabled. 363 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 364 365 // Press shift key and hold, switch to alphabet shifted. 366 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 367 // Press 'X' key and hold 368 chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 369 // Press 'Z' key and hold, stay in automatic shifted mode. 370 chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 371 // Release 'X' key 372 releaseKey('X', ALPHABET_MANUAL_SHIFTED); 373 // Release 'Z' key 374 releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 375 // Release shift key. 376 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 377 } 378 379 public void testLongPressShiftAndChording() { 380 // Long press shift key, enter maybe shift locked. 381 longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 382 // Press/release letter key, remain in manual shifted. 383 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 384 // Release shift key, back to alphabet (not shift locked). 385 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 386 387 // Long press shift key, enter alphabet shift locked. 388 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 389 ALPHABET_SHIFT_LOCKED); 390 // Long press shift key, enter maybe alphabet. 391 longPressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 392 // Press/release letter key, remain in manual shifted. 393 chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 394 // Release shift key, back to shift locked (not alphabet). 395 releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 396 // Long press shift key, enter alphabet 397 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, 398 ALPHABET_UNSHIFTED); 399 400 // Press/release shift key, enter alphabet shifted. 401 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 402 // Long press shift key, enter maybe alphabet. 403 longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 404 // Press/release letter key, remain in manual shifted. 405 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 406 // Release shift key, back to alphabet shifted (not alphabet). 407 releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 408 409 // Set capitalize the first character of all words mode. 410 setAutoCapsMode(CAP_MODE_WORDS); 411 // Load keyboard, should be in automatic shifted. 412 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 413 // Long press shift key, enter maybe shift locked. 414 longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 415 // Press/release letter key, remain in manual shifted. 416 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 417 // Release shift key, back to alphabet (not shift locked). 418 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 419 } 420 421 public void testDoubleTapShiftAndChording() { 422 // TODO: The following tests fail due to bug. Temporarily commented. 423 // First shift key tap. 424 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 425 // Second shift key tap, maybe shift locked. 426 secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 427 // Press/release letter key, remain in manual shifted. 428 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 429 // Release shift key, back to alphabet shifted (not shift locked). 430 releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 431 432 // Long press shift key, enter alphabet shift locked. 433 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 434 ALPHABET_SHIFT_LOCKED); 435 // First shift key tap. 436 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 437 // Second shift key tap, maybe shift unlocked. 438 secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 439 // Press/release letter key, remain in manual shifted. 440 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 441 // Release shift key, back to alphabet (not shift locked). 442 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 443 444 // Set capitalize the first character of all words mode. 445 setAutoCapsMode(CAP_MODE_WORDS); 446 // Load keyboard, should be in automatic shifted. 447 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 448 // First shift key tap. 449 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 450 // Second shift key tap, maybe shift locked. 451 secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 452 // Press/release letter key, remain in manual shifted. 453 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 454 // Release shift key, back to alphabet (not shift locked). 455 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 456 } 457 } 458