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 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 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, switch back to alphabet shifted. 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, updated to alphabet unshifted. 355 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 356 357 // Update shift state with auto caps enabled. 358 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 359 360 // Press shift key and hold, switch to alphabet shifted. 361 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 362 // Press 'X' key and hold 363 chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 364 // Release 'X' key 365 releaseKey('X', ALPHABET_MANUAL_SHIFTED); 366 // Press key and hold, stays in alphabet shifted. 367 chordingPressKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_MANUAL_SHIFTED); 368 // Release 'Z' key 369 releaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_MANUAL_SHIFTED); 370 // Release shift key, updated to alphabet automatic shifted. 371 releaseKey(CODE_SHIFT, ALPHABET_AUTOMATIC_SHIFTED); 372 } 373 374 // Multi touch shift chording input in capitalize character mode. 375 public void testMultiTouchShiftChordingCapModeCharacter() { 376 // Set auto character caps mode on. 377 setAutoCapsMode(CAP_MODE_CHARACTERS); 378 // Update shift state with auto caps enabled. 379 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 380 381 // Press shift key and hold, switch to alphabet shifted. 382 pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 383 // Press 'X' key and hold 384 chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 385 // Press 'Z' key and hold, stay in automatic shifted mode. 386 chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 387 // Release 'X' key 388 releaseKey('X', ALPHABET_MANUAL_SHIFTED); 389 // Release 'Z' key 390 releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 391 // Release shift key, updated to alphabet automatic shifted. 392 releaseKey(CODE_SHIFT, ALPHABET_AUTOMATIC_SHIFTED); 393 } 394 395 public void testLongPressShiftAndChording() { 396 // Long press shift key, enter maybe shift locked. 397 longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 398 // Press/release letter key, remain in manual shifted. 399 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 400 // Release shift key, back to alphabet (not shift locked). 401 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 402 403 // Long press shift key, enter alphabet shift locked. 404 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 405 ALPHABET_SHIFT_LOCKED); 406 // Long press shift key, enter maybe alphabet. 407 longPressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 408 // Press/release letter key, remain in manual shifted. 409 chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 410 // Release shift key, back to shift locked (not alphabet). 411 releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 412 // Long press shift key, enter alphabet 413 longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, 414 ALPHABET_UNSHIFTED); 415 416 // Press/release shift key, enter alphabet shifted. 417 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 418 // Long press shift key, enter maybe alphabet. 419 longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 420 // Press/release letter key, remain in manual shifted. 421 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 422 // Release shift key, back to alphabet shifted (not alphabet). 423 releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 424 425 // Set capitalize the first character of all words mode. 426 setAutoCapsMode(CAP_MODE_WORDS); 427 // Load keyboard, should be in automatic shifted. 428 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 429 // Long press shift key, enter maybe shift locked. 430 longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 431 // Press/release letter key, remain in manual shifted. 432 chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 433 // Release shift key, back to alphabet (not shift locked). 434 releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 435 } 436 437 public void testDoubleTapShiftAndChording() { 438 // TODO: The following tests fail due to bug. Temporarily commented. 439// // First shift key tap. 440// pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 441// // Second shift key tap, maybe shift locked. 442// secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 443// // Press/release letter key, remain in manual shifted. 444// chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 445// // Release shift key, back to alphabet shifted (not shift locked). 446// releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 447// 448// // Long press shift key, enter alphabet shift locked. 449// longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 450// ALPHABET_SHIFT_LOCKED); 451// // First shift key tap. 452// pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 453// // Second shift key tap, maybe shift unlocked. 454// secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 455// // Press/release letter key, remain in manual shifted. 456// chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 457// // Release shift key, back to alphabet (not shift locked). 458// releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 459// 460// // Set capitalize the first character of all words mode. 461// setAutoCapsMode(CAP_MODE_WORDS); 462// // Load keyboard, should be in automatic shifted. 463// loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 464// // First shift key tap. 465// pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 466// // Second shift key tap, maybe shift locked. 467// secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 468// // Press/release letter key, remain in manual shifted. 469// chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 470// // Release shift key, back to alphabet (not shift locked). 471// releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 472 } 473} 474