KeyboardStateMultiTouchTests.java revision 64e01baadeb624781d9d056b62679b25ea0fe5c0
1dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka/*
2dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * Copyright (C) 2011 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
1987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaokapublic class KeyboardStateTests extends KeyboardStateNonDistinctTests {
20dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka    @Override
2187e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka    public boolean hasDistinctMultitouch() {
2287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka        return true;
236d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    }
246d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka
256d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    // Shift key chording input.
266d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    public void testShiftChording() {
276d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press shift key and hold, enter into choring shift state.
2864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
296d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka
306d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press/release letter keys.
3164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
3264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
33dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka
346d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Release shift key, snap back to normal state.
3564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
36dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka    }
37dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka
386d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    // Symbols key chording input.
396d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    public void testSymbolsChording() {
406d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press symbols key and hold, enter into choring shift state.
4164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
426d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka
436d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press/release symbol letter keys.
4464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
4564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
466d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka
476d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Release shift key, snap back to normal state.
4864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
496d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    }
506d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka
516d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    // Chording shift key in automatic upper case.
526d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    public void testAutomaticUpperCaseChording() {
5364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Set auto caps mode on.
5464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        setAutoCapsMode(AUTO_CAPS);
5564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
566d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Update shift state with auto caps enabled.
5764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
58dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka
596d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press shift key.
6064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
6164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
626d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press/release letter keys.
6364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
6464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
656d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Release shift key, snap back to alphabet.
6664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
67dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka    }
68dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka
696d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    // Chording symbol key in automatic upper case.
7064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka    public void testAutomaticUpperCaseChording2() {
7164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Set auto caps mode on.
7264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        setAutoCapsMode(AUTO_CAPS);
7364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
746d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Update shift state with auto caps enabled.
7564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
76dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka
776d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press "123?" key.
7864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
7964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
806d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Press/release symbol letter keys.
8164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
8264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
836d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka        // Release "123?" key, snap back to alphabet.
8464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
856d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    }
86dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka
876d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka    // TODO: Multitouch test
885731b939c7baa2ca64a59b35f48fb3c2a43ba739Tadashi G. Takaoka
895731b939c7baa2ca64a59b35f48fb3c2a43ba739Tadashi G. Takaoka    // TODO: n-Keys roll over test
90dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka}
91