KeyboardStateSingleTouchTests.java revision 553e2f19c1607080ff874cb642237f947809cdb3
1/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
17package com.android.inputmethod.keyboard.internal;
18
19public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
20    // Shift key in alphabet.
21    public void testShiftAlphabet() {
22        // Press/release shift key, enter into alphabet shifted.
23        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
24
25        // Press/release shift key, back to alphabet.
26        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
27
28        // Press/release shift key, enter into alphabet shifted.
29        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
30        // Press/release letter key, switch back to alphabet.
31        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
32    }
33
34    // Shift key in symbols.
35    public void testShiftSymbols() {
36        // Press/release "?123" key, enter into symbols.
37        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
38
39        // Press/release "=\<" key, enter into symbols shifted.
40        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
41
42        // Press/release "?123" key, back to symbols.
43        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
44
45        // Press/release "=\<" key, enter into symbols shifted.
46        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
47        // Press/release symbol letter key, remain in symbols shifted.
48        pressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
49    }
50
51    // Switching between alphabet and symbols.
52    public void testAlphabetAndSymbols() {
53        // Press/release "?123" key, enter into symbols.
54        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
55        // Press/release "ABC" key, back to alphabet.
56        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
57        // Press/release "?123" key, enter into symbols.
58        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
59
60        // Press/release "=\<" key, enter into symbols shifted.
61        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
62        // Press/release "ABC" key, back to alphabet.
63        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
64        // Press/release "?123" key, back to symbols (not symbols shifted).
65        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
66    }
67
68    // Switching between alphabet shifted and symbols.
69    public void testAlphabetShiftedAndSymbols() {
70        // Press/release shift key, enter into alphabet shifted.
71        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
72
73        // Press/release "?123" key, enter into symbols.
74        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
75        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
76        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
77
78        // Press/release shift key, enter into alphabet shifted.
79        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
80        // Press/release "?123" key, enter into symbols.
81        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
82        // Press/release "=\< key, enter into symbols shifted.
83        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
84        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
85        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
86    }
87
88    // Switching between alphabet shift locked and symbols.
89    public void testAlphabetShiftLockedAndSymbols() {
90        // Long press shift key, enter alphabet shift locked.
91        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
92
93        // Press/release "?123" key, enter into symbols.
94        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
95        // Press/release "ABC" key, back to alphabet shift locked.
96        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
97        // Press/release "?123" key, enter into symbols.
98        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
99
100        // Press/release "=\<" key, enter into symbols shifted.
101        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
102        // Press/release "ABC" key, back to alphabet shift locked.
103        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
104        // Press/release "?123" key, back to symbols (not symbols shifted).
105        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
106    }
107
108    // Automatic switch back to alphabet by space key.
109    public void testSwitchBackBySpace() {
110        // Press/release "?123" key, enter into symbols.
111        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
112        // Enter symbol letter.
113        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
114        // Enter space, switch back to alphabet.
115        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
116
117        // Press/release "?123" key, enter into symbols.
118        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
119        // Press/release "=\<" key, enter into symbols shifted.
120        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
121        // Enter symbol shift letter.
122        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
123        // Enter space, switch back to alphabet.
124        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
125        // Press/release "?123" key, enter into symbols (not symbols shifted).
126        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
127    }
128
129    // Automatic switch back to alphabet shift locked test by space key.
130    public void testSwitchBackBySpaceShiftLocked() {
131        // Long press shift key, enter alphabet shift locked.
132        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
133
134        // Press/release "?123" key, enter into symbols.
135        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
136        // Enter symbol letter.
137        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
138        // Enter space, switch back to alphabet shift locked.
139        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
140
141        // Press/release "?123" key, enter into symbols.
142        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
143        // Press/release "=\<" key, enter into symbols shifted.
144        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
145        // Enter symbol shift letter.
146        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
147        // Enter space, switch back to alphabet shift locked.
148        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
149    }
150
151    // Automatic switch back to alphabet by registered letters.
152    public void testSwitchBackChar() {
153        // Set switch back chars.
154        final String switchBackSymbols = "'";
155        final int switchBackCode = switchBackSymbols.codePointAt(0);
156        setLayoutSwitchBackSymbols(switchBackSymbols);
157        loadKeyboard(ALPHABET_UNSHIFTED);
158
159        // Press/release "?123" key, enter into symbols.
160        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
161        // Enter symbol letter.
162        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
163        // Enter switch back letter, switch back to alphabet.
164        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
165
166        // Press/release "?123" key, enter into symbols.
167        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
168        // Press/release "=\<" key, enter into symbols shifted.
169        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
170        // Enter symbol shift letter.
171        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
172        // Enter switch abck letter, switch back to alphabet.
173        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
174    }
175
176    // Automatic switch back to alphabet shift locked by registered letters.
177    public void testSwitchBackCharShiftLocked() {
178        // Set switch back chars.
179        final String switchBackSymbols = "'";
180        final int switchBackCode = switchBackSymbols.codePointAt(0);
181        setLayoutSwitchBackSymbols(switchBackSymbols);
182        loadKeyboard(ALPHABET_UNSHIFTED);
183        // Long press shift key, enter alphabet shift locked.
184        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
185
186        // Press/release "?123" key, enter into symbols.
187        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
188        // Enter symbol letter.
189        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
190        // Enter switch back letter, switch back to alphabet shift locked.
191        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
192
193        // Press/release "?123" key, enter into symbols.
194        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
195        // Press/release "=\<" key, enter into symbols shifted.
196        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
197        // Enter symbol shift letter.
198        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
199        // Enter switch back letter, switch back to alphabet shift locked.
200        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
201    }
202
203    // Automatic upper case test
204    public void testAutomaticUpperCase() {
205        // Set capitalize the first character of all words mode.
206        setAutoCapsMode(CAP_MODE_WORDS);
207        // Load keyboard, should be in automatic shifted.
208        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
209
210        // Press/release letter key, switch to alphabet.
211        pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
212        // Press/release auto caps trigger letter, should be in automatic shifted.
213        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
214
215        // Press/release shift key, back to alphabet.
216        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
217        // Press/release letter key, remain in alphabet.
218        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
219        // Press/release auto caps trigger letter, should be in automatic shifted.
220        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
221
222        // Press/release "?123" key, enter into symbols.
223        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
224        // Press/release symbol letter key, remain in symbols.
225        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
226        // Press/release space, switch back to automatic shifted.
227        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
228
229        // Press/release "?123" key, enter into symbols.
230        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
231        // Press/release "=\<" key, enter into symbols shifted.
232        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
233        // Press/release symbol shift letter key, remain in symbols shifted.
234        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
235        // Press/release space, switch back to automatic shifted.
236        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
237    }
238
239    // Long press shift key.
240    public void testLongPressShift() {
241        // Set auto caps mode off.
242        setAutoCapsMode(CAP_MODE_OFF);
243        // Load keyboard, should be in alphabet.
244        loadKeyboard(ALPHABET_UNSHIFTED);
245        // Long press shift key, enter alphabet shift locked.
246        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
247        // Press/release shift key, back to alphabet.
248        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
249
250        // Long press shift key, enter alphabet shift locked.
251        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
252        // Press/release letter key, remain in shift locked.
253        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
254        // Press/release word separator, remain in shift locked.
255        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
256        // Press/release shift key, back to alphabet.
257        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
258
259        // Long press shift key, enter alphabet shift locked.
260        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
261        // Long press shift key, back to alphabet.
262        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
263
264        // Press/release shift key, enter alphabet shifted.
265        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
266        // Long press shift key, enter alphabet shift locked.
267        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
268        // Press/release shift key, back to alphabet.
269        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
270
271        // Set capitalize the first character of all words mode.
272        setAutoCapsMode(CAP_MODE_WORDS);
273        // Load keyboard, should be in automatic shifted.
274        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
275        // Long press shift key, enter alphabet shift locked.
276        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
277        // Press/release shift key, back to alphabet.
278        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
279    }
280
281    // Double tap shift key.
282    public void testDoubleTapShift() {
283        // First shift key tap.
284        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
285        // Second shift key tap.
286        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
287
288        // First shift key tap.
289        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
290        // Second shift key tap.
291        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
292
293        // Press/release shift key, enter alphabet manual shifted.
294        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
295
296        // First shift key tap.
297        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
298        // Second shift key tap.
299        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
300
301        // First shift key tap.
302        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
303        // Second shift key tap.
304        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
305
306        // Set capitalize the first character of all words mode.
307        setAutoCapsMode(CAP_MODE_WORDS);
308        // Load keyboard, should be in automatic shifted.
309        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
310
311        // First shift key tap.
312        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
313        // Second shift key tap.
314        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
315
316        // First shift key tap.
317        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
318        // Second shift key tap.
319        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
320    }
321
322    // Update shift state.
323    public void testUpdateShiftState() {
324        // Set auto caps mode off.
325        setAutoCapsMode(CAP_MODE_OFF);
326        // Load keyboard, should be in alphabet.
327        loadKeyboard(ALPHABET_UNSHIFTED);
328        // Update shift state, remained in alphabet.
329        updateShiftState(ALPHABET_UNSHIFTED);
330
331        // Press/release shift key, enter alphabet shifted.
332        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
333        // Update shift state, back to alphabet.
334        updateShiftState(ALPHABET_UNSHIFTED);
335
336        // Long press shift key, enter alphabet shift locked.
337        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
338        // Update shift state, remained in alphabet shift locked.
339        updateShiftState(ALPHABET_SHIFT_LOCKED);
340        // Long press shift key, back to alphabet.
341        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
342
343        // Press/release "?123" key, enter into symbols.
344        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
345        // Update shift state, remained in symbols.
346        updateShiftState(SYMBOLS_UNSHIFTED);
347
348        // Press/release "=\<" key, enter symbols shifted.
349        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
350        // Update shift state, remained in symbols shifted.
351        updateShiftState(SYMBOLS_SHIFTED);
352
353        // Set capitalize the first character of all words mode.
354        setAutoCapsMode(CAP_MODE_WORDS);
355        // Load keyboard, should be in automatic shifted.
356        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
357        // Update shift state, remained in automatic shifted.
358        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
359
360        // Press/release shift key, enter alphabet.
361        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
362        // Press/release shift key, enter alphabet shifted.
363        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
364        // Update shift state, enter to automatic shifted (not alphabet shifted).
365        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
366
367        // Long press shift key, enter alphabet shift locked.
368        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
369        // Update shift state, remained in alphabet shift locked (not automatic shifted).
370        updateShiftState(ALPHABET_SHIFT_LOCKED);
371        // Long press shift key, back to alphabet.
372        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
373
374        // Load keyboard, should be in automatic shifted.
375        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
376        // Press/release "?123" key, enter into symbols.
377        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
378        // Update shift state, remained in symbols.
379        updateShiftState(SYMBOLS_UNSHIFTED);
380
381        // Press/release "=\<" key, enter symbols shifted.
382        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
383        // Update shift state, remained in symbols shifted.
384        updateShiftState(SYMBOLS_SHIFTED);
385    }
386
387    // Sliding input in alphabet.
388    public void testSlidingAlphabet() {
389        // Alphabet -> shift key + letter -> alphabet.
390        // Press and slide from shift key, enter alphabet shifted.
391        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
392        // Enter/release letter key, switch back to alphabet.
393        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
394
395        // Alphabet -> "?123" key + letter -> alphabet.
396        // Press and slide from "123?" key, enter symbols.
397        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
398        // Enter/release into symbol letter key, switch back to alphabet.
399        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
400
401        // Alphabet shifted -> shift key + letter -> alphabet.
402        // Press/release shift key, enter alphabet shifted.
403        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
404        // Press and slide from shift key, remain alphabet shifted.
405        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
406        // Enter/release letter key, switch back to alphabet (not alphabet shifted).
407        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
408
409        // Alphabet shifted -> "?123" key + letter -> alphabet.
410        // Press/release shift key, enter alphabet shifted.
411        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
412        // Press and slide from "123?" key, enter symbols.
413        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
414        // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
415        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
416
417        // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
418        // Long press shift key, enter alphabet shift locked.
419        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
420        // Press and slide from "123?" key, enter symbols.
421        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
422        // Enter/release into symbol letter key, switch back to alphabet shift locked.
423        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
424
425        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
426        // Press and slide from shift key, enter alphabet shifted.
427        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
428        // Enter/release letter key, switch back to shift locked.
429        pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
430    }
431
432    // Sliding input in symbols.
433    public void testSlidingSymbols() {
434        // Symbols -> "=\<" key + letter -> symbols.
435        // Press/release "?123" key, enter into symbols.
436        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
437        // Press and slide from shift key, enter symols shifted.
438        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
439        // Enter/release symbol shifted letter key, switch back to symbols.
440        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
441
442        // Symbols -> "ABC" key + letter -> Symbols.
443        // Press and slide from "ABC" key, enter alphabet.
444        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
445        // Enter/release letter key, switch back to symbols.
446        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
447        // Press/release "ABC" key, switch to alphabet.
448        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
449
450        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
451        // alphabet.
452        // Load keyboard
453        loadKeyboard(ALPHABET_UNSHIFTED);
454        // Press/release shift key, enter alphabet shifted.
455        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
456        // Press/release "?123" key, enter into symbols.
457        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
458        // Press and slide from "ABC" key.
459        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
460        // Enter/release letter key, switch back to symbols.
461        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
462        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
463        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
464
465        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
466        // alphabet shift locked.
467        // Load keyboard
468        loadKeyboard(ALPHABET_UNSHIFTED);
469        // Long press shift key, enter alphabet shift locked.
470        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
471        // Press/release "?123" key, enter into symbols.
472        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
473        // Press and slide from "ABC" key, enter alphabet shift locked.
474        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
475        // Enter/release letter key, switch back to symbols.
476        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
477        // Press/release "ABC" key, switch to alphabet shift locked.
478        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
479
480        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
481        // alphabet shift locked.
482        // Load keyboard
483        loadKeyboard(ALPHABET_UNSHIFTED);
484        // Long press shift key, enter alphabet shift locked.
485        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
486        // Press/release "?123" key, enter into symbols.
487        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
488        // Press and slide from "=\<" key, enter symbols shifted.
489        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
490        // Enter/release symbols shift letter key, switch back to symbols.
491        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
492        // Press/release "ABC" key, switch to alphabet shift locked.
493        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
494    }
495
496    // Sliding input in symbols shifted.
497    public void testSlidingSymbolsShifted() {
498        // Symbols shifted -> "?123" + letter -> symbols shifted.
499        // Press/release "?123" key, enter into symbols.
500        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
501        // Press/release "=\<" key, enter into symbols shifted.
502        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
503        // Press and slide from shift key, enter symbols.
504        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
505        // Enter/release symbol letter key, switch back to symbols shifted.
506        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
507
508        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
509        // Press and slide from "ABC" key, enter alphabet.
510        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
511        // Enter/release letter key, switch back to symbols shifted.
512        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
513        // Press/release "ABC" key, switch to alphabet.
514        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
515
516        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
517        // alphabet.
518        // Load keyboard
519        loadKeyboard(ALPHABET_UNSHIFTED);
520        // Press/release shift key, enter alphabet shifted.
521        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
522        // Press/release "?123" key, enter into symbols.
523        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
524        // Press/release "=\<" key, enter into symbols shifted.
525        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
526        // Press and slide from "ABC" key.
527        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
528        // Enter/release letter key, switch back to symbols shifted.
529        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
530        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
531        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
532
533        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
534        // alphabet shift locked.
535        // Load keyboard
536        loadKeyboard(ALPHABET_UNSHIFTED);
537        // Long press shift key, enter alphabet shift locked.
538        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
539        // Press/release "?123" key, enter into symbols.
540        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
541        // Press/release "=\<" key, enter into symbols shifted.
542        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
543        // Press and slide from "ABC" key.
544        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
545        // Enter/release letter key, switch back to symbols shifted.
546        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
547        // Press/release "ABC" key, switch to alphabet shift locked.
548        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
549
550        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
551        // alphabet shift locked.
552        // Load keyboard
553        loadKeyboard(ALPHABET_UNSHIFTED);
554        // Long press shift key, enter alphabet shift locked.
555        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
556        // Press/release "?123" key, enter into symbols.
557        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
558        // Press/release "=\<" key, enter into symbols shifted.
559        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
560        // Press and slide from "?123" key.
561        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
562        // Enter/release symbol letter key, switch back to symbols shifted.
563        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
564        // Press/release "ABC" key, switch to alphabet shift locked.
565        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
566    }
567
568    // Change focus to new text field.
569    public void testChangeFocus() {
570        // Press/release shift key.
571        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
572        // Change focus to new text field.
573        loadKeyboard(ALPHABET_UNSHIFTED);
574
575        // Long press shift key, enter alphabet shift locked.
576        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
577        // Change focus to new text field.
578        loadKeyboard(ALPHABET_UNSHIFTED);
579
580        // Press/release "?123" key.
581        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
582        // Change focus to new text field.
583        loadKeyboard(ALPHABET_UNSHIFTED);
584
585        // Press/release "?123" key.
586        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
587        // Press/release "=\<" key.
588        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
589        // Change focus to new text field.
590        loadKeyboard(ALPHABET_UNSHIFTED);
591    }
592
593    // Change focus to auto caps text field.
594    public void testChangeFocusAutoCaps() {
595        // Set capitalize the first character of all words mode.
596        setAutoCapsMode(CAP_MODE_WORDS);
597        // Change focus to new text field.
598        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
599
600        // Press/release shift key, enter alphabet.
601        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
602        // Change focus to new text field.
603        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
604
605        // Long press shift key, enter alphabet shift locked.
606        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
607        // Change focus to new text field.
608        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
609
610        // Press/release "?123" key.
611        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
612        // Change focus to new text field.
613        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
614
615        // Press/release "?123" key.
616        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
617        // Press/release "=\<" key.
618        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
619        // Change focus to new text field.
620        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
621    }
622
623    // Change orientation.
624    public void testChangeOrientation() {
625        // Alphabet -> rotate -> alphabet.
626        updateShiftState(ALPHABET_UNSHIFTED);
627        // Rotate device, remain in alphabet.
628        rotateDevice(ALPHABET_UNSHIFTED);
629
630        // Alphabet shifted -> rotate -> alphabet shifted.
631        // Press/release shift key, enter alphabet shifted.
632        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
633        // Rotate device, remain in alphabet shifted.
634        rotateDevice(ALPHABET_MANUAL_SHIFTED);
635
636        // Alphabet shift locked -> rotate -> alphabet shift locked.
637        // Long press shift key, enter alphabet shift locked.
638        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
639        // Rotate device, remain in alphabet shift locked.
640        rotateDevice(ALPHABET_SHIFT_LOCKED);
641
642        // Alphabet shift locked -> symbols -> rotate -> symbols ->
643        // Alphabet shift locked.
644        // Press/release "?123" key, enter symbols.
645        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
646        // Rotate device, remain in symbols,
647        rotateDevice(SYMBOLS_UNSHIFTED);
648        // Press/release "ABC" key, alphabet shift locked state should be maintained.
649        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
650
651        // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
652        // Alphabet shift locked.
653        // Press/release "?123" key, enter symbols.
654        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
655        // Press/release "=\<" key, enter symbols shifted.
656        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
657        // Rotate device, remain in symbols shifted.
658        rotateDevice(SYMBOLS_SHIFTED);
659        // Press/release "ABC" key, alphabet shift locked state should be maintained.
660        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
661
662        // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
663        // Alphabet shift locked -> symbols.
664        // Press/release "?123" key, enter symbols.
665        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
666        // Press/release "=\<" key, enter symbols shifted.
667        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
668        // Press/release "ABC" key, enter alphabet shift locked.
669        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
670        // Rotate device, remain in alphabet shift locked.
671        rotateDevice(ALPHABET_SHIFT_LOCKED);
672        // Press/release "?123" key, enter symbols (not symbols shifted).
673        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
674
675        // Alphabet -> symbols shifted -> alphabet -> rotate ->
676        // Alphabet -> symbols.
677        loadKeyboard(ALPHABET_UNSHIFTED);
678        // Press/release "?123" key, enter symbols.
679        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
680        // Press/release "=\<" key, enter symbols shifted.
681        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
682        // Press/release "ABC" key, enter alphabet.
683        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
684        // Rotate device, remain in alphabet shift locked.
685        rotateDevice(ALPHABET_UNSHIFTED);
686        // Press/release "?123" key, enter symbols (not symbols shifted).
687        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
688    }
689
690    // Rapidly type shift key.
691    public void testRapidShiftTyping() {
692        // Press/release shift key
693        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
694        // Rapidly press/release letter key.
695        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
696        // Rapidly press/release shift key.
697        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
698        // Rapidly press/release letter key.
699        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
700        // Rapidly press/release shift key.
701        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
702        // Rapidly press/release letter key.
703        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
704
705        // Press/release shift key to enter alphabet manual shifted.
706        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
707        // Press/release shift key
708        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
709        // Rapidly press/release letter key.
710        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
711        // Rapidly press/release shift key.
712        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
713        // Rapidly press/release letter key.
714        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
715        // Rapidly press/release shift key.
716        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
717        // Rapidly press/release letter key.
718        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
719
720        // Long press shift key to enter alphabet shift locked.
721        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
722        // Press/release shift key
723        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
724        // Rapidly press/release letter key.
725        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
726        // Rapidly press/release shift key.
727        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
728        // Rapidly press/release letter key.
729        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
730        // Rapidly press/release shift key.
731        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
732        // Rapidly press/release letter key.
733        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
734
735        // Set capitalize the first character of all words mode.
736        setAutoCapsMode(CAP_MODE_WORDS);
737        // Press/release auto caps trigger letter to enter alphabet automatic shifted.
738        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
739        // Press/release shift key
740        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
741        // Rapidly press/release letter key.
742        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
743        // Rapidly press/release shift key.
744        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
745        // Rapidly press/release letter key.
746        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
747        // Rapidly press/release shift key.
748        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
749        // Rapidly press/release letter key.
750        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
751    }
752}
753