1e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka/*
2e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project
3e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka *
4e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * use this file except in compliance with the License. You may obtain a copy of
6e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * the License at
7e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka *
8e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi 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
11e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * License for the specific language governing permissions and limitations under
14e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka * the License.
15e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka */
16e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
17e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal;
18e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
1960c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaokapublic class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
20373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Shift key in alphabet.
21373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testShiftAlphabet() {
22373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
2364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
24373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
25373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, back to alphabet.
2664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
27e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
28373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
2964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
30373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release letter key, switch back to alphabet.
3164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
32e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
33e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
34373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Shift key in symbols.
35373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testShiftSymbols() {
36373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
37373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
38e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
39373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
40373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
41373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
42373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, back to symbols.
43373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
44373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
45373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
46373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
47373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release symbol letter key, remain in symbols shifted.
48373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
49e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
50e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
51e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Switching between alphabet and symbols.
52e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testAlphabetAndSymbols() {
5364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
5464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
55373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, back to alphabet.
5664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
5764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
5864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
59e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
60373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
61373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
62373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, back to alphabet.
63373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
64747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "?123" key, back to symbols (not symbols shifted).
65747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
6687e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka    }
6787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
68373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Switching between alphabet shifted and symbols.
69373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testAlphabetShiftedAndSymbols() {
70373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
71373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
72e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
7364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
7464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
75373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
76373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
7764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
78373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter into alphabet shifted.
79373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
8064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
81373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
82373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\< key, enter into symbols shifted.
83373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
84373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
85373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
8687e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka    }
8787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
88373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Switching between alphabet shift locked and symbols.
89373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testAlphabetShiftLockedAndSymbols() {
90373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
912959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
920d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
93373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
9464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
9564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
96747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "ABC" key, back to alphabet shift locked.
97373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
9864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
9964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
10064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
10164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
10264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
103747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "ABC" key, back to alphabet shift locked.
104747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
105747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "?123" key, back to symbols (not symbols shifted).
106747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
107e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
108e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
109373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic switch back to alphabet by space key.
11006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testSwitchBackBySpace() {
11164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
11264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
113373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol letter.
11464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
11506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Enter space, switch back to alphabet.
11664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
117373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
118373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
119373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
120373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
121373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
122373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol shift letter.
123373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
124373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter space, switch back to alphabet.
125373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
1264ba22162193ca8587ebee43fff8d60251b76a415Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols (not symbols shifted).
1274ba22162193ca8587ebee43fff8d60251b76a415Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
128e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
129e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
130373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic switch back to alphabet shift locked test by space key.
131373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSwitchBackBySpaceShiftLocked() {
13206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
1332959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
1340d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
13506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
13606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
13706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
138373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol letter.
13906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
140747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter space, switch back to alphabet shift locked.
14106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
14206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
143373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
144373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
145373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
146373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
147373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol shift letter.
148373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
149747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter space, switch back to alphabet shift locked.
150373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
151373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    }
15287e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
153373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic switch back to alphabet by registered letters.
15406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testSwitchBackChar() {
15506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Set switch back chars.
15606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        final String switchBackSymbols = "'";
15706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        final int switchBackCode = switchBackSymbols.codePointAt(0);
15806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        setLayoutSwitchBackSymbols(switchBackSymbols);
15906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
160e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
16164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
16264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
163373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol letter.
16464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
16506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Enter switch back letter, switch back to alphabet.
16606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
167e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
168373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
169373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
170373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
171373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
172373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol shift letter.
173373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
174373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter switch abck letter, switch back to alphabet.
175373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
176e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
177e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
178373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic switch back to alphabet shift locked by registered letters.
179373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSwitchBackCharShiftLocked() {
180373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Set switch back chars.
181373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        final String switchBackSymbols = "'";
182373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        final int switchBackCode = switchBackSymbols.codePointAt(0);
183373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        setLayoutSwitchBackSymbols(switchBackSymbols);
184373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
185373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
1862959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
1870d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
18864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
189373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
190373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
191373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol letter.
192373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
193747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter switch back letter, switch back to alphabet shift locked.
194373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
19564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
196373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
197373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
198373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
199373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
200373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter symbol shift letter.
201373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
202747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter switch back letter, switch back to alphabet shift locked.
203373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
20487e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka    }
20587e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
206373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Automatic upper case test
207373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testAutomaticUpperCase() {
208553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
209553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
210373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
211373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
21264e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
213373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release letter key, switch to alphabet.
214373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
215373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release auto caps trigger letter, should be in automatic shifted.
216373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
21787e025da11703af65e7bb85670adac5b54e2a367Tadashi G. Takaoka
218373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, back to alphabet.
219373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
220373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release letter key, remain in alphabet.
221373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
222373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release auto caps trigger letter, should be in automatic shifted.
223373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
224e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
225373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
226373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
227373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release symbol letter key, remain in symbols.
228373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
229747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release space, switch back to automatic shifted.
230373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
231373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
232373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
233373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
234373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
235373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
236373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release symbol shift letter key, remain in symbols shifted.
237373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
238747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release space, switch back to automatic shifted.
239373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
240e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
241e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
242e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Long press shift key.
243e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testLongPressShift() {
244a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Set auto caps mode off.
245553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_OFF);
246a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Load keyboard, should be in alphabet.
247a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
24864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
2492959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2500d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
251a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, back to alphabet.
252a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
25364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
254a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
2552959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2560d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
25764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release letter key, remain in shift locked.
25864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
25964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Press/release word separator, remain in shift locked.
26064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
261373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, back to alphabet.
262757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
263e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
26464e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
2652959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2660d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
267373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, back to alphabet.
2682959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
2690d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_UNSHIFTED);
270a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka
271a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
272a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
273a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
2742959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2750d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
276a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, back to alphabet.
277a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
278a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka
279553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
280553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
281a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
282a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
283a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
2842959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
2850d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
286a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        // Press/release shift key, back to alphabet.
287a5c96f376ad57e78a88942bb618e067054ed818aTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
288e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
289e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
290e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Double tap shift key.
291e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testDoubleTapShift() {
292e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // First shift key tap.
29364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
294e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // Second shift key tap.
2950ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
296e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
297e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // First shift key tap.
298757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
299e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka        // Second shift key tap.
3000ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
3010ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
3020ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Press/release shift key, enter alphabet manual shifted.
3030ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
3040ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
3050ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
3060ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
3070ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
3080ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
3090ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
3100ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
3110ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
3120ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
3130ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
3140ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
315553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
316553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
3170ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
3180ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
3190ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
3200ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
3210ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
3220ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
3230ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
3240ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka
3250ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // First shift key tap.
3260ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
3270ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        // Second shift key tap.
3280ed2d3a4491cb0f6142975a15b653be6079b6a4eTadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
329e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
330e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
331e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    // Update shift state.
332e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    public void testUpdateShiftState() {
333373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Set auto caps mode off.
334553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_OFF);
335373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in alphabet.
336373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
337373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in alphabet.
338373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_UNSHIFTED);
339373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
340373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
341373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
342373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, back to alphabet.
343373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_UNSHIFTED);
344373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
345373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
3462959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
3470d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
348373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in alphabet shift locked.
349373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_SHIFT_LOCKED);
350373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, back to alphabet.
3512959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
3520d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_UNSHIFTED);
353373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
354373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
355373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
356373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in symbols.
357373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(SYMBOLS_UNSHIFTED);
358373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
359373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter symbols shifted.
360373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
361373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in symbols shifted.
362373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(SYMBOLS_SHIFTED);
363373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
364553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
365553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
366373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
367373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
368373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in automatic shifted.
369373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
37064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
371373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet.
372373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
373373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
374373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
375373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, enter to automatic shifted (not alphabet shifted).
37664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
37764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
378373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
3792959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
3800d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
381373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in alphabet shift locked (not automatic shifted).
382373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(ALPHABET_SHIFT_LOCKED);
383373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, back to alphabet.
3842959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
3850d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_UNSHIFTED);
38664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
387373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard, should be in automatic shifted.
388373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
389373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
390373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
391373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in symbols.
392373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(SYMBOLS_UNSHIFTED);
39364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
394373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter symbols shifted.
395373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
396373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Update shift state, remained in symbols shifted.
397373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        updateShiftState(SYMBOLS_SHIFTED);
398e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
399e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
400373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Sliding input in alphabet.
401373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSlidingAlphabet() {
402373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet -> shift key + letter -> alphabet.
403373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
404373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
405373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to alphabet.
406373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
407373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
408373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet -> "?123" key + letter -> alphabet.
409373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
410373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
411373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release into symbol letter key, switch back to alphabet.
412373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
413373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
414373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shifted -> shift key + letter -> alphabet.
415373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
416373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
417373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, remain alphabet shifted.
418373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
419373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to alphabet (not alphabet shifted).
420373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
421373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
422373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shifted -> "?123" key + letter -> alphabet.
423373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
424373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
425373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
426373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
427373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
428373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
42964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
430373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
43164e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
4322959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
4330d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
434373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "123?" key, enter symbols.
435373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
436747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter/release into symbol letter key, switch back to alphabet shift locked.
437373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
43864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka
439373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
440373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, enter alphabet shifted.
441757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
442747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Enter/release letter key, switch back to shift locked.
44383d81f2e34b28e56bb0f8505d2315ae53c8f9eefTadashi G. Takaoka        pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
444373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    }
445373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
446373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Sliding input in symbols.
447373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSlidingSymbols() {
448373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Symbols -> "=\<" key + letter -> symbols.
449373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
450373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
451373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, enter symols shifted.
452373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
453373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release symbol shifted letter key, switch back to symbols.
454373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
455373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
456373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Symbols -> "ABC" key + letter -> Symbols.
457373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet.
458373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
459373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to symbols.
460373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
461373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet.
462373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
463373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
464f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
465f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet.
466373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard
467373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
468373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
469373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
470373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
471373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
472373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key.
473373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
474373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to symbols.
475373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
476373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
477373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
478373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
479f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
480f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet shift locked.
481373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard
482373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
483373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
4842959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
4850d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
486373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
487373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
488747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet shift locked.
489373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
490373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to symbols.
491373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
492747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet shift locked.
493373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
494f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka
495f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
496f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet shift locked.
497f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Load keyboard
498f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
499f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
5002959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
5010d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
502f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
503f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
504f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press and slide from "=\<" key, enter symbols shifted.
505f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
506f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Enter/release symbols shift letter key, switch back to symbols.
507f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
508f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet shift locked.
509f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
510373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    }
511373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
512373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    // Sliding input in symbols shifted.
513373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka    public void testSlidingSymbolsShifted() {
514373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Symbols shifted -> "?123" + letter -> symbols shifted.
515373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
516373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
517373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
518373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
519373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from shift key, enter symbols.
520373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
521373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release symbol letter key, switch back to symbols shifted.
522373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
523373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
524373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
525373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key, enter alphabet.
526373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
527373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to symbols shifted.
528373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
529373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet.
530373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
531373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
532f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
533f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet.
534373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard
535373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
536373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
537373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
538373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
539373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
540373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
541373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
542373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key.
543373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
544373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to symbols shifted.
545373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
546373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
547373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
548373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka
549f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
550f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet shift locked.
551373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Load keyboard
552373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
553373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
5542959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
5550d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
556373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
557373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
558373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
559373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
560373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press and slide from "ABC" key.
561373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
562373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Enter/release letter key, switch back to symbols shifted.
563373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
564747ed9e99a6a83e54d97d96aa3cbb1abd11eaf0fTadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet shift locked.
565373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
566f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka
567f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
568f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // alphabet shift locked.
569f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Load keyboard
570f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
571f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
5722959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
5730d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
574f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press/release "?123" key, enter into symbols.
575f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
576f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press/release "=\<" key, enter into symbols shifted.
577f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
578f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press and slide from "?123" key.
579f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
580f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Enter/release symbol letter key, switch back to symbols shifted.
581f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
582f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        // Press/release "ABC" key, switch to alphabet shift locked.
583f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
584e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka    }
585e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka
58606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    // Change focus to new text field.
58706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testChangeFocus() {
58806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Press/release shift key.
58906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
59006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
59106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
59206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
59306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
5942959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
5950d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
59606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
59706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
59806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
599373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key.
60006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
60106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
60206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
60306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
604373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key.
60506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
606373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key.
60706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
60806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
60906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
61006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    }
61106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
61206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    // Change focus to auto caps text field.
61306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testChangeFocusAutoCaps() {
614553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
615553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
61606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
61706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
61806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
61906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Press/release shift key, enter alphabet.
62006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
62106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
62206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
62306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
62406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
6252959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
6260d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
62706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
62806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
62906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
630373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key.
63106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
63206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
63306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
63406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
635373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "?123" key.
63606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
637373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka        // Press/release "=\<" key.
63806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
63906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Change focus to new text field.
64006bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
64106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    }
64206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
64306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    // Change orientation.
64406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    public void testChangeOrientation() {
64549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet -> rotate -> alphabet.
64649bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        updateShiftState(ALPHABET_UNSHIFTED);
64749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet.
64849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        rotateDevice(ALPHABET_UNSHIFTED);
64949bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka
65049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shifted -> rotate -> alphabet shifted.
65149bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release shift key, enter alphabet shifted.
65206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
65349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet shifted.
65406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        rotateDevice(ALPHABET_MANUAL_SHIFTED);
65506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
65649bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> rotate -> alphabet shift locked.
65706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        // Long press shift key, enter alphabet shift locked.
6582959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
6590d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
66049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet shift locked.
66106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        rotateDevice(ALPHABET_SHIFT_LOCKED);
66206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
66349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> symbols -> rotate -> symbols ->
66449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked.
66549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols.
66606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
66749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in symbols,
66806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        rotateDevice(SYMBOLS_UNSHIFTED);
66949bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "ABC" key, alphabet shift locked state should be maintained.
67049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
67106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka
67249bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
67349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked.
67449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols.
67549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
67649bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "=\<" key, enter symbols shifted.
67706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
67849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in symbols shifted.
67906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka        rotateDevice(SYMBOLS_SHIFTED);
68049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "ABC" key, alphabet shift locked state should be maintained.
68149bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
68249bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka
68349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
68449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet shift locked -> symbols.
68549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols.
68649bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
68749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "=\<" key, enter symbols shifted.
68849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
68949bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "ABC" key, enter alphabet shift locked.
69049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
69149bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet shift locked.
69249bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        rotateDevice(ALPHABET_SHIFT_LOCKED);
69349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols (not symbols shifted).
69449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
69549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka
69649bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet -> symbols shifted -> alphabet -> rotate ->
69749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Alphabet -> symbols.
69849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        loadKeyboard(ALPHABET_UNSHIFTED);
69949bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols.
70049bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
70149bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "=\<" key, enter symbols shifted.
70249bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
70349bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "ABC" key, enter alphabet.
70449bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
70549bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Rotate device, remain in alphabet shift locked.
70649bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        rotateDevice(ALPHABET_UNSHIFTED);
70749bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        // Press/release "?123" key, enter symbols (not symbols shifted).
70849bd49c8fbc394d277e89e8d105450d3e2818f50Tadashi G. Takaoka        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
70906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka    }
710beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
711beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka    // Rapidly type shift key.
712beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka    public void testRapidShiftTyping() {
713beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
714beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
715beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
716beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
717beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
718beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
719beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
720beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
721beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
722beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
723beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
724beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
725beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
726beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key to enter alphabet manual shifted.
727beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
728beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
729beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
730beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
731beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
732beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
733beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
734beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
735beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
736beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
737beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
738beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
739beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
740beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
741beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Long press shift key to enter alphabet shift locked.
7422959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
7430d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka                ALPHABET_SHIFT_LOCKED);
744beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
745beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
746beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
747beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
748beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
749beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
750beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
751beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
752beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
753beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
754beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
755beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
756beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka
757553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        // Set capitalize the first character of all words mode.
758553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka        setAutoCapsMode(CAP_MODE_WORDS);
759beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release auto caps trigger letter to enter alphabet automatic shifted.
760beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
761beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Press/release shift key
762beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
763beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
764beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
765beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
766beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
767beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
768beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
769beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release shift key.
770beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
771beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        // Rapidly press/release letter key.
772beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
773beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka    }
774e47bd3f4fbf38ae20c5b61fac563a3f6152037a3Tadashi G. Takaoka}
775