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