KeyboardStateMultiTouchTests.java revision d26d63b35d34333a8f6737572b1c306b774eebd0
1dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka/* 260c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project 3dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * 4dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * use this file except in compliance with the License. You may obtain a copy of 6dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * the License at 7dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * 8dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * 10dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * License for the specific language governing permissions and limitations under 14dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * the License. 15dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka */ 16dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 17dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 1960c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaokapublic class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { 206d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Shift key chording input. 2106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka public void testChording() { 226d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Press shift key and hold, enter into choring shift state. 2364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 246d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka 256d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Press/release letter keys. 2664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 2764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 28dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 2906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release shift key, switch back to alphabet. 3064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 3106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 3206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press symbols key and hold, enter into choring symbols state. 3306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 3406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 3506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release symbol letter keys. 3606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 3706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 3806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 3906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release symbols key, switch back to alphabet. 4006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 4106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka } 4206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 4306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Shift key chording input in shift locked. 4406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka public void testShiftChordingShiftLocked() { 4506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 4606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 4706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 4806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press shift key and hold, enter into choring shift state. 4906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 5006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 5106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release letter keys. 5206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 5306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 5406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 55d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka // Release shift key, switch back to alphabet shift locked. 56d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 57d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka 58d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka // Press symbols key and hold, enter into choring symbols state. 59d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 60d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka 61d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka // Press/release symbol letter keys. 62d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 63d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 6401d9fc966abd59ead120190604198a7d455ba7cdTadashi G. Takaoka 65d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka // Release symbols key, switch back to alphabet shift locked. 66d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 67dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka } 68dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 696d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Symbols key chording input. 706d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka public void testSymbolsChording() { 7106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release symbols key, enter symbols. 7206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 7306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 7406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press shift key and hold, enter into choring symbols shifted state. 7506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 7606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 7706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release symbols keys. 7806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 7906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('2', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 8006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 8106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release shift key, switch back to symbols. 8206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 8306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 8406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press "ABC" key and hold, enter into choring alphabet state. 8506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 8606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 8706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release letter keys. 8806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 8906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 9006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 9106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release "ABC" key, switch back to symbols. 9206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 9306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka } 9406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 9506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Symbols shifted key chording input in symbol. 9606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka public void testSymbolsShiftedChording() { 9706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release symbols key, enter symbols. 9806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 9906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press/release shift key, enter symbols shifted. 10006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 10106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 10206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press shift key and hold, enter into chording symbols state. 10306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 1046d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka 1056d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Press/release symbol letter keys. 10664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 10764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 1086d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka 10906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release shift key, switch back to symbols shifted state. 11006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 11106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 11206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // TODO: This test fails due to bug. 11306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// // Press "ABC" key and hold, enter into choring alphabet state. 11406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 11506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// 11606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// // Press/release letter keys. 11706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 11806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// chordingPressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 11906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// 12006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// // Release "ABC" key, switch back to symbols. 12106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka// releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 1226d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka } 1236d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka 1246d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Chording shift key in automatic upper case. 1256d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka public void testAutomaticUpperCaseChording() { 12664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 12764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 12864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 1296d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Update shift state with auto caps enabled. 13064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 131dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 13206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press shift key and hold, enter into chording shift state. 13364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 13464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 1356d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Press/release letter keys. 13664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 13764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 13806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release shift key, switch back to alphabet. 13964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 140dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka } 141dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 1426d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Chording symbol key in automatic upper case. 14364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka public void testAutomaticUpperCaseChording2() { 14464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka // Set auto caps mode on. 14564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka setAutoCapsMode(AUTO_CAPS); 14664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 1476d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Update shift state with auto caps enabled. 14864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 149dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 15006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press "123?" key and hold, enter into chording symbols state. 15164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 15264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 1536d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Press/release symbol letter keys. 15464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 15564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 15606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release "123?" key, switch back to alphabet. 15764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 1586d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka } 159dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 1606d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // TODO: Multitouch test 1615731b939c7baa2ca64a59b35f48fb3c2a43ba739Tadashi G. Takaoka 1625731b939c7baa2ca64a59b35f48fb3c2a43ba739Tadashi G. Takaoka // TODO: n-Keys roll over test 163dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka} 164