KeyboardStateSingleTouchTests.java revision 4ba22162193ca8587ebee43fff8d60251b76a415
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 auto caps mode on.
206        setAutoCapsMode(AUTO_CAPS);
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(NO_AUTO_CAPS);
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 auto caps mode on.
272        setAutoCapsMode(AUTO_CAPS);
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 auto caps mode on.
307        setAutoCapsMode(AUTO_CAPS);
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(NO_AUTO_CAPS);
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 auto caps mode on.
354        setAutoCapsMode(AUTO_CAPS);
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 auto caps mode on.
596        setAutoCapsMode(AUTO_CAPS);
597
598        // Update shift state.
599        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
600        // Change focus to new text field.
601        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
602
603        // Press/release shift key, enter alphabet.
604        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
605        // Change focus to new text field.
606        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
607
608        // Long press shift key, enter alphabet shift locked.
609        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
610        // Change focus to new text field.
611        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
612
613        // Press/release "?123" key.
614        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
615        // Change focus to new text field.
616        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
617
618        // Press/release "?123" key.
619        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
620        // Press/release "=\<" key.
621        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
622        // Change focus to new text field.
623        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
624    }
625
626    // Change orientation.
627    public void testChangeOrientation() {
628        // Alphabet -> rotate -> alphabet.
629        updateShiftState(ALPHABET_UNSHIFTED);
630        // Rotate device, remain in alphabet.
631        rotateDevice(ALPHABET_UNSHIFTED);
632
633        // Alphabet shifted -> rotate -> alphabet shifted.
634        // Press/release shift key, enter alphabet shifted.
635        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
636        // Rotate device, remain in alphabet shifted.
637        rotateDevice(ALPHABET_MANUAL_SHIFTED);
638
639        // Alphabet shift locked -> rotate -> alphabet shift locked.
640        // Long press shift key, enter alphabet shift locked.
641        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
642        // Rotate device, remain in alphabet shift locked.
643        rotateDevice(ALPHABET_SHIFT_LOCKED);
644
645        // Alphabet shift locked -> symbols -> rotate -> symbols ->
646        // Alphabet shift locked.
647        // Press/release "?123" key, enter symbols.
648        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
649        // Rotate device, remain in symbols,
650        rotateDevice(SYMBOLS_UNSHIFTED);
651        // Press/release "ABC" key, alphabet shift locked state should be maintained.
652        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
653
654        // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
655        // Alphabet shift locked.
656        // Press/release "?123" key, enter symbols.
657        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
658        // Press/release "=\<" key, enter symbols shifted.
659        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
660        // Rotate device, remain in symbols shifted.
661        rotateDevice(SYMBOLS_SHIFTED);
662        // Press/release "ABC" key, alphabet shift locked state should be maintained.
663        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
664
665        // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
666        // Alphabet shift locked -> symbols.
667        // Press/release "?123" key, enter symbols.
668        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
669        // Press/release "=\<" key, enter symbols shifted.
670        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
671        // Press/release "ABC" key, enter alphabet shift locked.
672        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
673        // Rotate device, remain in alphabet shift locked.
674        rotateDevice(ALPHABET_SHIFT_LOCKED);
675        // Press/release "?123" key, enter symbols (not symbols shifted).
676        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
677
678        // Alphabet -> symbols shifted -> alphabet -> rotate ->
679        // Alphabet -> symbols.
680        loadKeyboard(ALPHABET_UNSHIFTED);
681        // Press/release "?123" key, enter symbols.
682        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
683        // Press/release "=\<" key, enter symbols shifted.
684        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
685        // Press/release "ABC" key, enter alphabet.
686        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
687        // Rotate device, remain in alphabet shift locked.
688        rotateDevice(ALPHABET_UNSHIFTED);
689        // Press/release "?123" key, enter symbols (not symbols shifted).
690        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
691    }
692
693    // Rapidly type shift key.
694    public void testRapidShiftTyping() {
695        // Press/release shift key
696        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
697        // Rapidly press/release letter key.
698        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
699        // Rapidly press/release shift key.
700        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
701        // Rapidly press/release letter key.
702        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
703        // Rapidly press/release shift key.
704        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
705        // Rapidly press/release letter key.
706        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
707
708        // Press/release shift key to enter alphabet manual shifted.
709        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
710        // Press/release shift key
711        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
712        // Rapidly press/release letter key.
713        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
714        // Rapidly press/release shift key.
715        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
716        // Rapidly press/release letter key.
717        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
718        // Rapidly press/release shift key.
719        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
720        // Rapidly press/release letter key.
721        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
722
723        // Long press shift key to enter alphabet shift locked.
724        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
725        // Press/release shift key
726        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
727        // Rapidly press/release letter key.
728        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
729        // Rapidly press/release shift key.
730        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
731        // Rapidly press/release letter key.
732        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
733        // Rapidly press/release shift key.
734        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
735        // Rapidly press/release letter key.
736        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
737
738        // Set auto caps mode on.
739        setAutoCapsMode(AUTO_CAPS);
740        // Press/release auto caps trigger letter to enter alphabet automatic shifted.
741        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
742        // Press/release shift key
743        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
744        // Rapidly press/release letter key.
745        secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
746        // Rapidly press/release shift key.
747        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
748        // Rapidly press/release letter key.
749        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
750        // Rapidly press/release shift key.
751        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
752        // Rapidly press/release letter key.
753        secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
754    }
755}
756