1e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka/*
2e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project
3e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka *
4ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
5ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * you may not use this file except in compliance with the License.
6ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * You may obtain a copy of the License at
7e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka *
8ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
9e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka *
10e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software
11ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
12ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * See the License for the specific language governing permissions and
14ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * limitations under the License.
15e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka */
16e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
17e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal;
18e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
19b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaokaimport android.test.suitebuilder.annotation.SmallTest;
20b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka
21b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka@SmallTest
2260c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaokapublic class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
23373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Shift key in alphabet.
24373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testShiftAlphabet() {
25373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
2664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
27373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
28373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, back to alphabet.
2964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
30e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
31373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
3264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
33373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release letter key, switch back to alphabet.
3464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
35e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
36e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
37e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    // Shift key in symbols.
38e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    public void testShiftSymbols() {
39e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
40e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
41e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
42e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
43e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
44e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
45e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, back to symbols.
46e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
47e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
48e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
49e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
50e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release symbol letter key, remain in symbols shifted.
51e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
52e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    }
53e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
54e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Switching between alphabet and symbols.
55e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testAlphabetAndSymbols() {
5664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
57e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
58373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, back to alphabet.
5964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
6064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
61e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
62e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
63e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
64e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
65e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, back to alphabet.
66e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
67e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, back to symbols (not symbols shifted).
68e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
6987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka    }
7087e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
71373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Switching between alphabet shifted and symbols.
72373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testAlphabetShiftedAndSymbols() {
73373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
74373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
75e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
7664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
77e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
78e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
79e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
80e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
81e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release shift key, enter into alphabet shifted.
82e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
83e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
84e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
85e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\< key, enter into symbols shifted.
86e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
87373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
88373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
8987e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka    }
9087e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
91373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Switching between alphabet shift locked and symbols.
92373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testAlphabetShiftLockedAndSymbols() {
93373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
94f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
950d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
96373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
9764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
98e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
99747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "ABC" key, back to alphabet shift locked.
100373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
10164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
102e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
103e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
104e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
105e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
106e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, back to alphabet shift locked.
107e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
108e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, back to symbols (not symbols shifted).
109e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
110e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
111e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
112373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic switch back to alphabet by space key.
11306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testSwitchBackBySpace() {
11464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
115e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
116373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol letter.
117e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
118e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter space, switch back to alphabet.
119e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
120e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
121e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
122e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
123e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
124e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
125e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter symbol shift letter.
126e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
127373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter space, switch back to alphabet.
128e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
129e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols (not symbols shifted).
130e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
131e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
132e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
133373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic switch back to alphabet shift locked test by space key.
134373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSwitchBackBySpaceShiftLocked() {
13506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
136f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
1370d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
13806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
13906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
140e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
141373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol letter.
142e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
143747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter space, switch back to alphabet shift locked.
144e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
145e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
146e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
147e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
148e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
149e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
150e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter symbol shift letter.
151e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
152e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter space, switch back to alphabet shift locked.
153e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
154373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    }
15587e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
156373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic upper case test
157373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testAutomaticUpperCase() {
158553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
159553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
160373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
161373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
16264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
163373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release letter key, switch to alphabet.
164373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
165373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release auto caps trigger letter, should be in automatic shifted.
166373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
16787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
168373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, back to alphabet.
169373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
170373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release letter key, remain in alphabet.
171373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
172373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release auto caps trigger letter, should be in automatic shifted.
173373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
174e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
175373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
176e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
177373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release symbol letter key, remain in symbols.
178e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
179e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release space, switch back to automatic shifted.
180e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
181e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
182e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
183e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
184e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
185e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
186e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release symbol shift letter key, remain in symbols shifted.
187e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
188747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release space, switch back to automatic shifted.
189e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
190e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
191e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
192e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Long press shift key.
193e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testLongPressShift() {
194a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Set auto caps mode off.
195553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_OFF);
196a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Load keyboard, should be in alphabet.
197a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
19864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
199f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2000d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
201a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, back to alphabet.
202a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
20364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
204a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
205f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2060d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
20764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release letter key, remain in shift locked.
20864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
20964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release word separator, remain in shift locked.
21064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
211373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, back to alphabet.
212757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
213e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
21464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
215f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2160d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
217373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, back to alphabet.
218f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
2190d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_UNSHIFTED);
220a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka
221a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
222a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
223a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
224f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2250d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
226a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, back to alphabet.
227a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
228a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka
229553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
230553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
231a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
232a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
233a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
234f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2350d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
236a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, back to alphabet.
237a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
238e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
239e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
240e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Double tap shift key.
241e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testDoubleTapShift() {
242e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // First shift key tap.
24364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
244e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // Second shift key tap.
2450ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
246e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
247e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // First shift key tap.
248757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
249e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // Second shift key tap.
2500ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
2510ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
2520ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Press/release shift key, enter alphabet manual shifted.
2530ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
2540ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
2550ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
2560ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
2570ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
2580ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
2590ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
2600ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
2610ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
2620ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
2630ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
2640ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
265553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
266553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
2670ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
2680ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
2690ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
2700ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
2710ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
2720ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
2730ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
2740ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
2750ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
2760ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
2770ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
2780ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
279e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
280e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
281e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Update shift state.
282e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testUpdateShiftState() {
283373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Set auto caps mode off.
284553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_OFF);
285373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in alphabet.
286373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
287373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in alphabet.
288373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_UNSHIFTED);
289373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
290373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
291373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
292373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, back to alphabet.
293373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_UNSHIFTED);
294373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
295373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
296f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2970d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
298373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in alphabet shift locked.
299373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_SHIFT_LOCKED);
300373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, back to alphabet.
301f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
3020d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_UNSHIFTED);
303373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
304373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
305e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
306373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in symbols.
307e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        updateShiftState(SYMBOLS_UNSHIFTED);
308e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
309e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter symbols shifted.
310e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
311e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Update shift state, remained in symbols shifted.
312e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        updateShiftState(SYMBOLS_SHIFTED);
313373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
314553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
315553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
316373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
317373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
318373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in automatic shifted.
319373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
32064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
321373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet.
322373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
323373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
324373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
325373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, enter to automatic shifted (not alphabet shifted).
32664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
32764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
328373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
329f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
3300d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
331373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in alphabet shift locked (not automatic shifted).
332373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_SHIFT_LOCKED);
333373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, back to alphabet.
334f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
3350d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_UNSHIFTED);
33664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
337373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
338373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
339373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
340e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
341373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in symbols.
342e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        updateShiftState(SYMBOLS_UNSHIFTED);
343e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
344e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter symbols shifted.
345e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
346e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Update shift state, remained in symbols shifted.
347e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        updateShiftState(SYMBOLS_SHIFTED);
348e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
349e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
350373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Sliding input in alphabet.
351373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSlidingAlphabet() {
352373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet -> shift key + letter -> alphabet.
353373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
354373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
35541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, switch back to alphabet.
35641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
35741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
358373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
359373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet -> "?123" key + letter -> alphabet.
360373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
361e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
36241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release into symbol letter keys, switch back to alphabet.
363e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
364e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
365373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
366373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shifted -> shift key + letter -> alphabet.
367373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
368373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
369373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, remain alphabet shifted.
370373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
37141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, switch back to alphabet (not alphabet shifted).
37241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
37341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
374373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
375373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shifted -> "?123" key + letter -> alphabet.
376373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
377373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
378373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
379e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
38041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release into symbol letter keys, switch back to alphabet (not alphabet shifted).
381e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
382e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
38364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
384373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
38564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
386f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
3870d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
388373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
389e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
39041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release into symbol letter keys, switch back to alphabet shift locked.
391e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
392e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
39364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
394373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
395373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
396757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
39741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, switch back to shift locked.
39841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
39941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingOnKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
40041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka    }
40141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
40241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka    // Cancel sliding input in alphabet.
40341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka    public void testSlidingAlphabetCancel() {
40441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet -> shift key + letter -> cancel -> alphabet.
40541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
40641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
40741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
40841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
40941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter key, remains in alphabet shifted.
41041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
41141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to alphabet.
41241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingAndCancel(ALPHABET_UNSHIFTED);
41341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
41441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet -> "?123" key + letter -> cancel -> alphabet.
41541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
416e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
41741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release into symbol letter key, remains in symbols.
418e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
41941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to alphabet.
42041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingAndCancel(ALPHABET_UNSHIFTED);
42141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
42241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet shifted -> shift key + letter -> cancel -> alphabet.
42341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
42441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
42541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from shift key, remain alphabet shifted.
42641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
42741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter key, remains in alphabet shifted.
42841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
42941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to alphabet (not alphabet shifted).
43041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingAndCancel(ALPHABET_UNSHIFTED);
43141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
43241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet shifted -> "?123" key + letter -> cancel -> alphabet.
43341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
43441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
43541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
436e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
43741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release into symbol letter key, remains in symbols.
438e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
43941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to alphabet (not alphabet shifted).
44041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingAndCancel(ALPHABET_UNSHIFTED);
44141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
44241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet shift locked -> shift key + letter -> cancel -> alphabet shift locked.
44341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
444f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
44541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
44641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
447e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
44841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release into symbol letter key, remains in symbols.
449e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
45041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to alphabet shift locked.
45141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingAndCancel( ALPHABET_SHIFT_LOCKED);
45241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
45341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet shift locked -> "?123" key + letter -> cancel -> alphabet shift locked.
45441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
45541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
45641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter key, remains in alphabet shift locked.
45741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
458747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter/release letter key, switch back to shift locked.
45941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        stopSlidingAndCancel(ALPHABET_SHIFT_LOCKED);
460373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    }
461373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
462373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Sliding input in symbols.
463373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSlidingSymbols() {
464e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Symbols -> "=\<" key + letter -> symbols.
465373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
466e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
467e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from shift key, enter symbols shifted.
468e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
469e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbol shifted letter keys, switch back to symbols.
470e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
471e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
472e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
47341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Symbols -> "ABC" key + letter -> Symbols.
47441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet.
47541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
47641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, switch back to symbols.
47741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
478e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
47941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet.
48041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
48141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
48241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
48341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // alphabet.
48441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Load keyboard
48541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
48641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
48741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
48841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
489e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
49041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from "ABC" key.
49141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
49241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, switch back to symbols.
49341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
494e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
49541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
49641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
49741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
49841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
49941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // alphabet shift locked.
50041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Load keyboard
50141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
50241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
503f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
50441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
50541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
506e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
50741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet shift locked.
50841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
50941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, switch back to symbols.
51041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
511e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
512e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet shift locked.
513e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
514e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
515e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
516e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet shift locked.
517e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
518e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
519e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Long press shift key, enter alphabet shift locked.
520e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
521e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka                ALPHABET_SHIFT_LOCKED);
522e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
523e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
524e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "=\<" key, enter symbols shifted.
525e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
526e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbols shift letter keys, switch back to symbols.
527e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
528e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
52941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet shift locked.
53041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
53141016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka    }
53241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka
53341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka    // Cancel sliding input in symbols.
53441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka    public void testSlidingSymbolsCancel() {
535e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Symbols -> "=\<" key + letter -> cancel -> symbols.
53641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
537e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
538e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from shift key, enter symbols shifted.
539e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
540e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbol shifted letter key, remains in symbols shifted.
541e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
542e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols.
543e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
544e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
545373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Symbols -> "ABC" key + letter -> Symbols.
546373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet.
547373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
54841016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter keys, remains in alphabet.
54941016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
55041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to symbols.
551e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
552373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet.
553373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
554373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
555f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
556f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet.
557373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard
558373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
559373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
560373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
561373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
562e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
563373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key.
564373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
56541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter key, remains in alphabet.
56641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
56741016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to symbols.
568e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
569373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
570373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
571373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
572f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
573f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet shift locked.
574373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard
575373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
576373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
577f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
5780d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
579373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
580e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
581747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet shift locked.
582373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
58341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Enter/release letter key, remains in alphabet shifted.
58441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
58541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka        // Cancel sliding, switch back to symbols.
586e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
587e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet shift locked.
588e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
589e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
590e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
591e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet shift locked.
592e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
593e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
594e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Long press shift key, enter alphabet shift locked.
595e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
596e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka                ALPHABET_SHIFT_LOCKED);
597e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
598e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
599e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "=\<" key, enter symbols shifted.
600e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
601e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbols shift letter key, remains in symbols shifted.
602e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
603e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols.
604e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
605e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet shift locked.
606e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
607e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    }
608e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
609e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    // Sliding input in symbols shifted.
610e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    public void testSlidingSymbolsShifted() {
611e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Symbols shifted -> "?123" + letter -> symbols shifted.
612e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
613e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
614e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
615e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
616e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from shift key, enter symbols.
617e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
618e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbol letter keys, switch back to symbols shifted.
619e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
620e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
621e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
622e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
623e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "ABC" key, enter alphabet.
624e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
625e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release letter keys, switch back to symbols shifted.
626e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
627e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
628e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet.
629e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
630e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
631e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
632e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet.
633e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
634e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
635e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release shift key, enter alphabet shifted.
636e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
637e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
638e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
639e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
640e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
641e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "ABC" key.
642e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
643e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release letter keys, switch back to symbols shifted.
644e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
645e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
646e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
647e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
648e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
649e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
650e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet shift locked.
651e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
652e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
653e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Long press shift key, enter alphabet shift locked.
654e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
655e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka                ALPHABET_SHIFT_LOCKED);
656e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
657e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
658e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
659e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
660e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "ABC" key.
661e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
662e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release letter keys, switch back to symbols shifted.
663e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
664e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
665e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet shift locked.
666e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
667e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
668e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
669e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet shift locked.
670e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
671e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
672e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Long press shift key, enter alphabet shift locked.
673e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
674e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka                ALPHABET_SHIFT_LOCKED);
675e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
676e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
677e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
678e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
679e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "?123" key.
680e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
681e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbol letter keys, switch back to symbols shifted.
682e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
683e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
684e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet shift locked.
685e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
686e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    }
687e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
688e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    // Cancel sliding input in symbols shifted.
689e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka    public void testSlidingSymbolsShiftedCancel() {
690e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Symbols shifted -> "?123" + letter -> symbols shifted.
691e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
692e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
693e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
694e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
695e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from shift key, enter symbols.
696e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
697e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbol letter key, remains in symbols.
698e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
699e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols shifted.
700e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_SHIFTED);
701e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
702e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
703e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "ABC" key, enter alphabet.
704e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
705e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release letter key, remains in alphabet.
706e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
707e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols shifted.
708e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_SHIFTED);
709e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet.
710e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
711e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
712e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
713e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet.
714e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
715e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
716e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release shift key, enter alphabet shifted.
717e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
718e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
719e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
720e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
721e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
722e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "ABC" key.
723e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
724e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release letter key, remains in alphabet.
725e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
726e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols shifted.
727e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_SHIFTED);
728e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
729e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
730e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
731e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
732e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet shift locked.
733e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
734e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
735e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Long press shift key, enter alphabet shift locked.
736e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
737e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka                ALPHABET_SHIFT_LOCKED);
738e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
739e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
740e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
741e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
742e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "ABC" key.
743e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
744e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release letter key, remains in alphabet shift locked.
745e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
746e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols shifted.
747e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_SHIFTED);
748e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, switch to alphabet shift locked.
749e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
750e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
751e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
752e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // alphabet shift locked.
753e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Load keyboard
754e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
755e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Long press shift key, enter alphabet shift locked.
756e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
757e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka                ALPHABET_SHIFT_LOCKED);
758e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter into symbols.
759e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
760e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter into symbols shifted.
761e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
762e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press and slide from "?123" key.
763e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
764e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Enter/release symbol letter key, remains in symbols.
765e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
766e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Cancel sliding, switch back to symbols shifted.
767e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        stopSlidingAndCancel(SYMBOLS_SHIFTED);
768f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet shift locked.
769f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
770e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
771e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
77206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    // Change focus to new text field.
77306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testChangeFocus() {
77406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Press/release shift key.
77506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
77606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
77706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
77806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
77906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
780f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
7810d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
78206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
78306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
78406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
785373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key.
786e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
787e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Change focus to new text field.
788e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
789e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
790e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key.
791e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
792e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key.
793e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
79406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
79506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
79606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    }
79706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
79806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    // Change focus to auto caps text field.
79906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testChangeFocusAutoCaps() {
800553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
801553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
80206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
80306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
80406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
80506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Press/release shift key, enter alphabet.
80606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
80706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
80806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
80906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
81006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
811f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
8120d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
81306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
81406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
81506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
816373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key.
817e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
818e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Change focus to new text field.
819e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
820e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
821e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key.
822e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
823e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key.
824e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
82506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
82606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
82706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    }
82806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
82906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    // Change orientation.
83006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testChangeOrientation() {
83149bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet -> rotate -> alphabet.
83249bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        updateShiftState(ALPHABET_UNSHIFTED);
83349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet.
83449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        rotateDevice(ALPHABET_UNSHIFTED);
83549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka
8367f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        // Alphabet automatic shifted -> rotate -> automatic shifted.
8377f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        // Set capitalize the first character of all words mode.
8387f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
8397f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        // Press/release auto caps trigger letter to enter alphabet automatic shifted.
8407f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
8417f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        // Rotate device, remain in alphabet.
8427f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        rotateDevice(ALPHABET_AUTOMATIC_SHIFTED);
8437f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        setAutoCapsMode(CAP_MODE_OFF);
8447f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        // Press/release auto caps trigger letter to reset shift state.
8457f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
8467f8dd50b8fe38738e52511e1d0bf082172b8932dTadashi G. Takaoka
84749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shifted -> rotate -> alphabet shifted.
84849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
84906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
85049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet shifted.
85106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        rotateDevice(ALPHABET_MANUAL_SHIFTED);
85206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
85349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> rotate -> alphabet shift locked.
85406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
855f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
8560d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
85749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet shift locked.
85806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        rotateDevice(ALPHABET_SHIFT_LOCKED);
85906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
86049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> symbols -> rotate -> symbols ->
86149bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked.
86249bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols.
863e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
86449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in symbols,
865e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        rotateDevice(SYMBOLS_UNSHIFTED);
866e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, alphabet shift locked state should be maintained.
867e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
868e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
869e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
870e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked.
871e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter symbols.
872e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
873e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter symbols shifted.
874e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
875e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Rotate device, remain in symbols shifted.
876e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        rotateDevice(SYMBOLS_SHIFTED);
87749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "ABC" key, alphabet shift locked state should be maintained.
87849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
879e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
880e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
881e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet shift locked -> symbols.
882e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter symbols.
883e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
884e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter symbols shifted.
885e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
886e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, enter alphabet shift locked.
887e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
888e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Rotate device, remain in alphabet shift locked.
889e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        rotateDevice(ALPHABET_SHIFT_LOCKED);
890e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter symbols (not symbols shifted).
891e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
892e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka
893e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet -> symbols shifted -> alphabet -> rotate ->
894e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Alphabet -> symbols.
895e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        loadKeyboard(ALPHABET_UNSHIFTED);
896e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter symbols.
897e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
898e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "=\<" key, enter symbols shifted.
899e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
900e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "ABC" key, enter alphabet.
901e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
902e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Rotate device, remain in alphabet shift locked.
903e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        rotateDevice(ALPHABET_UNSHIFTED);
904e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        // Press/release "?123" key, enter symbols (not symbols shifted).
905e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
90606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    }
907beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
908beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka    // Rapidly type shift key.
909beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka    public void testRapidShiftTyping() {
910beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
911beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
912beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
913beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
914beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
915beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
916beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
917beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
918beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
919beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
920beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
921beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
922beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
923beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key to enter alphabet manual shifted.
924beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
925beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
926beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
927beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
928beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
929beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
930beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
931beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
932beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
933beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
934beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
935beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
936beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
937beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
938beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Long press shift key to enter alphabet shift locked.
939f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka        longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
9400d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
941beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
942beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
943beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
944beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
945beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
946beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
947beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
948beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
949beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
950beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
951beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
952beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
953beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
954553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
955553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
956beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release auto caps trigger letter to enter alphabet automatic shifted.
957beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
958beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
959beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
960beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
961beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
962beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
963beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
964beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
965beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
966beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
967beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
968beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
969beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
970beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka    }
971e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka}
972