KeyboardStateSingleTouchTests.java revision beb08b398fa73a26f2d42d6feec87e34a96ca2d9
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    }
126
127    // Automatic switch back to alphabet shift locked test by space key.
128    public void testSwitchBackBySpaceShiftLocked() {
129        // Long press shift key, enter alphabet shift locked.
130        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
131
132        // Press/release "?123" key, enter into symbols.
133        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
134        // Enter symbol letter.
135        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
136        // Enter space, switch back to alphabet shift locked.
137        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
138
139        // Press/release "?123" key, enter into symbols.
140        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
141        // Press/release "=\<" key, enter into symbols shifted.
142        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
143        // Enter symbol shift letter.
144        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
145        // Enter space, switch back to alphabet shift locked.
146        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
147    }
148
149    // Automatic switch back to alphabet by registered letters.
150    public void testSwitchBackChar() {
151        // Set switch back chars.
152        final String switchBackSymbols = "'";
153        final int switchBackCode = switchBackSymbols.codePointAt(0);
154        setLayoutSwitchBackSymbols(switchBackSymbols);
155        loadKeyboard(ALPHABET_UNSHIFTED);
156
157        // Press/release "?123" key, enter into symbols.
158        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
159        // Enter symbol letter.
160        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
161        // Enter switch back letter, switch back to alphabet.
162        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
163
164        // Press/release "?123" key, enter into symbols.
165        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
166        // Press/release "=\<" key, enter into symbols shifted.
167        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
168        // Enter symbol shift letter.
169        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
170        // Enter switch abck letter, switch back to alphabet.
171        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
172    }
173
174    // Automatic switch back to alphabet shift locked by registered letters.
175    public void testSwitchBackCharShiftLocked() {
176        // Set switch back chars.
177        final String switchBackSymbols = "'";
178        final int switchBackCode = switchBackSymbols.codePointAt(0);
179        setLayoutSwitchBackSymbols(switchBackSymbols);
180        loadKeyboard(ALPHABET_UNSHIFTED);
181        // Long press shift key, enter alphabet shift locked.
182        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
183
184        // Press/release "?123" key, enter into symbols.
185        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
186        // Enter symbol letter.
187        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
188        // Enter switch back letter, switch back to alphabet shift locked.
189        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
190
191        // Press/release "?123" key, enter into symbols.
192        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
193        // Press/release "=\<" key, enter into symbols shifted.
194        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
195        // Enter symbol shift letter.
196        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
197        // Enter switch back letter, switch back to alphabet shift locked.
198        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
199    }
200
201    // Automatic upper case test
202    public void testAutomaticUpperCase() {
203        // Set auto caps mode on.
204        setAutoCapsMode(AUTO_CAPS);
205        // Load keyboard, should be in automatic shifted.
206        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
207
208        // Press/release letter key, switch to alphabet.
209        pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
210        // Press/release auto caps trigger letter, should be in automatic shifted.
211        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
212
213        // Press/release shift key, back to alphabet.
214        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
215        // Press/release letter key, remain in alphabet.
216        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
217        // Press/release auto caps trigger letter, should be in automatic shifted.
218        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
219
220        // Press/release "?123" key, enter into symbols.
221        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
222        // Press/release symbol letter key, remain in symbols.
223        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
224        // Press/release space, switch back to automatic shifted.
225        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
226
227        // Press/release "?123" key, enter into symbols.
228        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
229        // Press/release "=\<" key, enter into symbols shifted.
230        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
231        // Press/release symbol shift letter key, remain in symbols shifted.
232        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
233        // Press/release space, switch back to automatic shifted.
234        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
235    }
236
237    // Long press shift key.
238    public void testLongPressShift() {
239        // Set auto caps mode off.
240        setAutoCapsMode(NO_AUTO_CAPS);
241        // Load keyboard, should be in alphabet.
242        loadKeyboard(ALPHABET_UNSHIFTED);
243        // Long press shift key, enter alphabet shift locked.
244        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
245        // Press/release shift key, back to alphabet.
246        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
247
248        // Long press shift key, enter alphabet shift locked.
249        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
250        // Press/release letter key, remain in shift locked.
251        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
252        // Press/release word separator, remain in shift locked.
253        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
254        // Press/release shift key, back to alphabet.
255        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
256
257        // Long press shift key, enter alphabet shift locked.
258        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
259        // Long press shift key, back to alphabet.
260        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
261
262        // Press/release shift key, enter alphabet shifted.
263        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
264        // Long press shift key, enter alphabet shift locked.
265        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
266        // Press/release shift key, back to alphabet.
267        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
268
269        // Set auto caps mode on.
270        setAutoCapsMode(AUTO_CAPS);
271        // Load keyboard, should be in automatic shifted.
272        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
273        // Long press shift key, enter alphabet shift locked.
274        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
275        // Press/release shift key, back to alphabet.
276        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
277    }
278
279    // Double tap shift key.
280    public void testDoubleTapShift() {
281        // First shift key tap.
282        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
283        // Second shift key tap.
284        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
285
286        // First shift key tap.
287        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
288        // Second shift key tap.
289        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
290
291        // Press/release shift key, enter alphabet manual shifted.
292        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
293
294        // First shift key tap.
295        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
296        // Second shift key tap.
297        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
298
299        // First shift key tap.
300        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
301        // Second shift key tap.
302        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
303
304        // Set auto caps mode on.
305        setAutoCapsMode(AUTO_CAPS);
306        // Load keyboard, should be in automatic shifted.
307        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
308
309        // First shift key tap.
310        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
311        // Second shift key tap.
312        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
313
314        // First shift key tap.
315        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
316        // Second shift key tap.
317        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
318    }
319
320    // Update shift state.
321    public void testUpdateShiftState() {
322        // Set auto caps mode off.
323        setAutoCapsMode(NO_AUTO_CAPS);
324        // Load keyboard, should be in alphabet.
325        loadKeyboard(ALPHABET_UNSHIFTED);
326        // Update shift state, remained in alphabet.
327        updateShiftState(ALPHABET_UNSHIFTED);
328
329        // Press/release shift key, enter alphabet shifted.
330        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
331        // Update shift state, back to alphabet.
332        updateShiftState(ALPHABET_UNSHIFTED);
333
334        // Long press shift key, enter alphabet shift locked.
335        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
336        // Update shift state, remained in alphabet shift locked.
337        updateShiftState(ALPHABET_SHIFT_LOCKED);
338        // Long press shift key, back to alphabet.
339        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
340
341        // Press/release "?123" key, enter into symbols.
342        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
343        // Update shift state, remained in symbols.
344        updateShiftState(SYMBOLS_UNSHIFTED);
345
346        // Press/release "=\<" key, enter symbols shifted.
347        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
348        // Update shift state, remained in symbols shifted.
349        updateShiftState(SYMBOLS_SHIFTED);
350
351        // Set auto caps mode on.
352        setAutoCapsMode(AUTO_CAPS);
353        // Load keyboard, should be in automatic shifted.
354        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
355        // Update shift state, remained in automatic shifted.
356        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
357
358        // Press/release shift key, enter alphabet.
359        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
360        // Press/release shift key, enter alphabet shifted.
361        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
362        // Update shift state, enter to automatic shifted (not alphabet shifted).
363        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
364
365        // Long press shift key, enter alphabet shift locked.
366        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
367        // Update shift state, remained in alphabet shift locked (not automatic shifted).
368        updateShiftState(ALPHABET_SHIFT_LOCKED);
369        // Long press shift key, back to alphabet.
370        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
371
372        // Load keyboard, should be in automatic shifted.
373        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
374        // Press/release "?123" key, enter into symbols.
375        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
376        // Update shift state, remained in symbols.
377        updateShiftState(SYMBOLS_UNSHIFTED);
378
379        // Press/release "=\<" key, enter symbols shifted.
380        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
381        // Update shift state, remained in symbols shifted.
382        updateShiftState(SYMBOLS_SHIFTED);
383    }
384
385    // Sliding input in alphabet.
386    public void testSlidingAlphabet() {
387        // Alphabet -> shift key + letter -> alphabet.
388        // Press and slide from shift key, enter alphabet shifted.
389        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
390        // Enter/release letter key, switch back to alphabet.
391        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
392
393        // Alphabet -> "?123" key + letter -> alphabet.
394        // Press and slide from "123?" key, enter symbols.
395        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
396        // Enter/release into symbol letter key, switch back to alphabet.
397        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
398
399        // Alphabet shifted -> shift key + letter -> alphabet.
400        // Press/release shift key, enter alphabet shifted.
401        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
402        // Press and slide from shift key, remain alphabet shifted.
403        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
404        // Enter/release letter key, switch back to alphabet (not alphabet shifted).
405        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
406
407        // Alphabet shifted -> "?123" key + letter -> alphabet.
408        // Press/release shift key, enter alphabet shifted.
409        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
410        // Press and slide from "123?" key, enter symbols.
411        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
412        // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
413        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
414
415        // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
416        // Long press shift key, enter alphabet shift locked.
417        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
418        // Press and slide from "123?" key, enter symbols.
419        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
420        // Enter/release into symbol letter key, switch back to alphabet shift locked.
421        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
422
423        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
424        // Press and slide from shift key, enter alphabet shifted.
425        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
426        // Enter/release letter key, switch back to shift locked.
427        pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
428    }
429
430    // Sliding input in symbols.
431    public void testSlidingSymbols() {
432        // Symbols -> "=\<" key + letter -> symbols.
433        // Press/release "?123" key, enter into symbols.
434        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
435        // Press and slide from shift key, enter symols shifted.
436        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
437        // Enter/release symbol shifted letter key, switch back to symbols.
438        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
439
440        // Symbols -> "ABC" key + letter -> Symbols.
441        // Press and slide from "ABC" key, enter alphabet.
442        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
443        // Enter/release letter key, switch back to symbols.
444        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
445        // Press/release "ABC" key, switch to alphabet.
446        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
447
448        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
449        // alphabet.
450        // Load keyboard
451        loadKeyboard(ALPHABET_UNSHIFTED);
452        // Press/release shift key, enter alphabet shifted.
453        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
454        // Press/release "?123" key, enter into symbols.
455        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
456        // Press and slide from "ABC" key.
457        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
458        // Enter/release letter key, switch back to symbols.
459        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
460        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
461        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
462
463        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
464        // alphabet shift locked.
465        // Load keyboard
466        loadKeyboard(ALPHABET_UNSHIFTED);
467        // Long press shift key, enter alphabet shift locked.
468        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
469        // Press/release "?123" key, enter into symbols.
470        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
471        // Press and slide from "ABC" key, enter alphabet shift locked.
472        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
473        // Enter/release letter key, switch back to symbols.
474        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
475        // Press/release "ABC" key, switch to alphabet shift locked.
476        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
477
478        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
479        // alphabet shift locked.
480        // Load keyboard
481        loadKeyboard(ALPHABET_UNSHIFTED);
482        // Long press shift key, enter alphabet shift locked.
483        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
484        // Press/release "?123" key, enter into symbols.
485        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
486        // Press and slide from "=\<" key, enter symbols shifted.
487        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
488        // Enter/release symbols shift letter key, switch back to symbols.
489        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
490        // Press/release "ABC" key, switch to alphabet shift locked.
491        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
492    }
493
494    // Sliding input in symbols shifted.
495    public void testSlidingSymbolsShifted() {
496        // Symbols shifted -> "?123" + letter -> symbols shifted.
497        // Press/release "?123" key, enter into symbols.
498        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
499        // Press/release "=\<" key, enter into symbols shifted.
500        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
501        // Press and slide from shift key, enter symbols.
502        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
503        // Enter/release symbol letter key, switch back to symbols shifted.
504        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
505
506        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
507        // Press and slide from "ABC" key, enter alphabet.
508        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
509        // Enter/release letter key, switch back to symbols shifted.
510        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
511        // Press/release "ABC" key, switch to alphabet.
512        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
513
514        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
515        // alphabet.
516        // Load keyboard
517        loadKeyboard(ALPHABET_UNSHIFTED);
518        // Press/release shift key, enter alphabet shifted.
519        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
520        // Press/release "?123" key, enter into symbols.
521        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
522        // Press/release "=\<" key, enter into symbols shifted.
523        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
524        // Press and slide from "ABC" key.
525        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
526        // Enter/release letter key, switch back to symbols shifted.
527        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
528        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
529        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
530
531        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
532        // alphabet shift locked.
533        // Load keyboard
534        loadKeyboard(ALPHABET_UNSHIFTED);
535        // Long press shift key, enter alphabet shift locked.
536        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
537        // Press/release "?123" key, enter into symbols.
538        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
539        // Press/release "=\<" key, enter into symbols shifted.
540        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
541        // Press and slide from "ABC" key.
542        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
543        // Enter/release letter key, switch back to symbols shifted.
544        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
545        // Press/release "ABC" key, switch to alphabet shift locked.
546        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
547
548        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
549        // alphabet shift locked.
550        // Load keyboard
551        loadKeyboard(ALPHABET_UNSHIFTED);
552        // Long press shift key, enter alphabet shift locked.
553        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
554        // Press/release "?123" key, enter into symbols.
555        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
556        // Press/release "=\<" key, enter into symbols shifted.
557        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
558        // Press and slide from "?123" key.
559        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
560        // Enter/release symbol letter key, switch back to symbols shifted.
561        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
562        // Press/release "ABC" key, switch to alphabet shift locked.
563        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
564    }
565
566    // Change focus to new text field.
567    public void testChangeFocus() {
568        // Press/release shift key.
569        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
570        // Change focus to new text field.
571        loadKeyboard(ALPHABET_UNSHIFTED);
572
573        // Long press shift key, enter alphabet shift locked.
574        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
575        // Change focus to new text field.
576        loadKeyboard(ALPHABET_UNSHIFTED);
577
578        // Press/release "?123" key.
579        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
580        // Change focus to new text field.
581        loadKeyboard(ALPHABET_UNSHIFTED);
582
583        // Press/release "?123" key.
584        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
585        // Press/release "=\<" key.
586        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
587        // Change focus to new text field.
588        loadKeyboard(ALPHABET_UNSHIFTED);
589    }
590
591    // Change focus to auto caps text field.
592    public void testChangeFocusAutoCaps() {
593        // Set auto caps mode on.
594        setAutoCapsMode(AUTO_CAPS);
595
596        // Update shift state.
597        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
598        // Change focus to new text field.
599        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
600
601        // Press/release shift key, enter alphabet.
602        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
603        // Change focus to new text field.
604        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
605
606        // Long press shift key, enter alphabet shift locked.
607        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
608        // Change focus to new text field.
609        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
610
611        // Press/release "?123" key.
612        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
613        // Change focus to new text field.
614        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
615
616        // Press/release "?123" key.
617        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
618        // Press/release "=\<" key.
619        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
620        // Change focus to new text field.
621        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
622    }
623
624    // Change orientation.
625    public void testChangeOrientation() {
626        // Alphabet -> rotate -> alphabet.
627        updateShiftState(ALPHABET_UNSHIFTED);
628        // Rotate device, remain in alphabet.
629        rotateDevice(ALPHABET_UNSHIFTED);
630
631        // Alphabet shifted -> rotate -> alphabet shifted.
632        // Press/release shift key, enter alphabet shifted.
633        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
634        // Rotate device, remain in alphabet shifted.
635        rotateDevice(ALPHABET_MANUAL_SHIFTED);
636
637        // Alphabet shift locked -> rotate -> alphabet shift locked.
638        // Long press shift key, enter alphabet shift locked.
639        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
640        // Rotate device, remain in alphabet shift locked.
641        rotateDevice(ALPHABET_SHIFT_LOCKED);
642
643        // Alphabet shift locked -> symbols -> rotate -> symbols ->
644        // Alphabet shift locked.
645        // Press/release "?123" key, enter symbols.
646        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
647        // Rotate device, remain in symbols,
648        rotateDevice(SYMBOLS_UNSHIFTED);
649        // Press/release "ABC" key, alphabet shift locked state should be maintained.
650        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
651
652        // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
653        // Alphabet shift locked.
654        // Press/release "?123" key, enter symbols.
655        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
656        // Press/release "=\<" key, enter symbols shifted.
657        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
658        // Rotate device, remain in symbols shifted.
659        rotateDevice(SYMBOLS_SHIFTED);
660        // Press/release "ABC" key, alphabet shift locked state should be maintained.
661        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
662
663        // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
664        // Alphabet shift locked -> symbols.
665        // Press/release "?123" key, enter symbols.
666        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
667        // Press/release "=\<" key, enter symbols shifted.
668        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
669        // Press/release "ABC" key, enter alphabet shift locked.
670        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
671        // Rotate device, remain in alphabet shift locked.
672        rotateDevice(ALPHABET_SHIFT_LOCKED);
673        // Press/release "?123" key, enter symbols (not symbols shifted).
674        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
675
676        // Alphabet -> symbols shifted -> alphabet -> rotate ->
677        // Alphabet -> symbols.
678        loadKeyboard(ALPHABET_UNSHIFTED);
679        // Press/release "?123" key, enter symbols.
680        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
681        // Press/release "=\<" key, enter symbols shifted.
682        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
683        // Press/release "ABC" key, enter alphabet.
684        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
685        // Rotate device, remain in alphabet shift locked.
686        rotateDevice(ALPHABET_UNSHIFTED);
687        // Press/release "?123" key, enter symbols (not symbols shifted).
688        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
689    }
690
691    // Rapidly type shift key.
692    public void testRapidShiftTyping() {
693        // Press/release shift key
694        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
695        // Rapidly press/release letter key.
696        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
697        // Rapidly press/release shift key.
698        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
699        // Rapidly press/release letter key.
700        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
701        // Rapidly press/release shift key.
702        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
703        // Rapidly press/release letter key.
704        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
705
706        // Press/release shift key to enter alphabet manual shifted.
707        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
708        // Press/release shift key
709        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
710        // Rapidly press/release letter key.
711        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
712        // Rapidly press/release shift key.
713        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
714        // Rapidly press/release letter key.
715        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
716        // Rapidly press/release shift key.
717        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
718        // Rapidly press/release letter key.
719        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
720
721        // Long press shift key to enter alphabet shift locked.
722        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
723        // Press/release shift key
724        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
725        // Rapidly press/release letter key.
726        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
727        // Rapidly press/release shift key.
728        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
729        // Rapidly press/release letter key.
730        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
731        // Rapidly press/release shift key.
732        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
733        // Rapidly press/release letter key.
734        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
735
736        // Set auto caps mode on.
737        setAutoCapsMode(AUTO_CAPS);
738        // Press/release auto caps trigger letter to enter alphabet automatic shifted.
739        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
740        // Press/release shift key
741        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
742        // Rapidly press/release letter key.
743        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
744        // Rapidly press/release shift key.
745        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
746        // Rapidly press/release letter key.
747        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
748        // Rapidly press/release shift key.
749        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
750        // Rapidly press/release letter key.
751        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
752    }
753}
754