KeyboardStateSingleTouchTests.java revision 0ed2d3a4491cb0f6142975a15b653be6079b6a4e
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        longPressShiftKey(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        longPressShiftKey(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        longPressShiftKey(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    // TODO: Move long press recognizing timer/logic into KeyboardState.
239    public void testLongPressShift() {
240        // Long press shift key, enter alphabet shift locked.
241        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
242
243        // Press/release letter key, remain in shift locked.
244        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
245        // Press/release word separator, remain in shift locked.
246        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
247
248        // Press/release shift key, back to alphabet.
249        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
250
251        // Long press shift key, enter alphabet shift locked.
252        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
253
254        // Long press shift key, back to alphabet.
255        longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
256    }
257
258    // Double tap shift key.
259    public void testDoubleTapShift() {
260        // First shift key tap.
261        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
262        // Second shift key tap.
263        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
264
265        // First shift key tap.
266        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
267        // Second shift key tap.
268        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
269
270        // Press/release shift key, enter alphabet manual shifted.
271        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
272
273        // First shift key tap.
274        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
275        // Second shift key tap.
276        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
277
278        // First shift key tap.
279        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
280        // Second shift key tap.
281        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
282
283        // Set auto caps mode on.
284        setAutoCapsMode(AUTO_CAPS);
285        // Load keyboard, should be in automatic shifted.
286        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
287
288        // First shift key tap.
289        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
290        // Second shift key tap.
291        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
292
293        // First shift key tap.
294        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
295        // Second shift key tap.
296        secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
297    }
298
299    // Update shift state.
300    public void testUpdateShiftState() {
301        // Set auto caps mode off.
302        setAutoCapsMode(NO_AUTO_CAPS);
303        // Load keyboard, should be in alphabet.
304        loadKeyboard(ALPHABET_UNSHIFTED);
305        // Update shift state, remained in alphabet.
306        updateShiftState(ALPHABET_UNSHIFTED);
307
308        // Press/release shift key, enter alphabet shifted.
309        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
310        // Update shift state, back to alphabet.
311        updateShiftState(ALPHABET_UNSHIFTED);
312
313        // Long press shift key, enter alphabet shift locked.
314        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
315        // Update shift state, remained in alphabet shift locked.
316        updateShiftState(ALPHABET_SHIFT_LOCKED);
317        // Long press shift key, back to alphabet.
318        longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
319
320        // Press/release "?123" key, enter into symbols.
321        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
322        // Update shift state, remained in symbols.
323        updateShiftState(SYMBOLS_UNSHIFTED);
324
325        // Press/release "=\<" key, enter symbols shifted.
326        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
327        // Update shift state, remained in symbols shifted.
328        updateShiftState(SYMBOLS_SHIFTED);
329
330        // Set auto caps mode on.
331        setAutoCapsMode(AUTO_CAPS);
332        // Load keyboard, should be in automatic shifted.
333        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
334        // Update shift state, remained in automatic shifted.
335        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
336
337        // Press/release shift key, enter alphabet.
338        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
339        // Press/release shift key, enter alphabet shifted.
340        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
341        // Update shift state, enter to automatic shifted (not alphabet shifted).
342        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
343
344        // Long press shift key, enter alphabet shift locked.
345        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
346        // Update shift state, remained in alphabet shift locked (not automatic shifted).
347        updateShiftState(ALPHABET_SHIFT_LOCKED);
348        // Long press shift key, back to alphabet.
349        longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
350
351        // Load keyboard, should be in automatic shifted.
352        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
353        // Press/release "?123" key, enter into symbols.
354        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
355        // Update shift state, remained in symbols.
356        updateShiftState(SYMBOLS_UNSHIFTED);
357
358        // Press/release "=\<" key, enter symbols shifted.
359        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
360        // Update shift state, remained in symbols shifted.
361        updateShiftState(SYMBOLS_SHIFTED);
362    }
363
364    // Sliding input in alphabet.
365    public void testSlidingAlphabet() {
366        // Alphabet -> shift key + letter -> alphabet.
367        // Press and slide from shift key, enter alphabet shifted.
368        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
369        // Enter/release letter key, switch back to alphabet.
370        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
371
372        // Alphabet -> "?123" key + letter -> alphabet.
373        // Press and slide from "123?" key, enter symbols.
374        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
375        // Enter/release into symbol letter key, switch back to alphabet.
376        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
377
378        // Alphabet shifted -> shift key + letter -> alphabet.
379        // Press/release shift key, enter alphabet shifted.
380        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
381        // Press and slide from shift key, remain alphabet shifted.
382        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
383        // Enter/release letter key, switch back to alphabet (not alphabet shifted).
384        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
385
386        // Alphabet shifted -> "?123" key + letter -> alphabet.
387        // Press/release shift key, enter alphabet shifted.
388        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
389        // Press and slide from "123?" key, enter symbols.
390        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
391        // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
392        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
393
394        // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
395        // Long press shift key, enter alphabet shift locked.
396        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
397        // Press and slide from "123?" key, enter symbols.
398        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
399        // Enter/release into symbol letter key, switch back to alphabet shift locked.
400        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
401
402        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
403        // Press and slide from shift key, enter alphabet shifted.
404        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
405        // Enter/release letter key, switch back to shift locked.
406        pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
407    }
408
409    // Sliding input in symbols.
410    public void testSlidingSymbols() {
411        // Symbols -> "=\<" key + letter -> symbols.
412        // Press/release "?123" key, enter into symbols.
413        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
414        // Press and slide from shift key, enter symols shifted.
415        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
416        // Enter/release symbol shifted letter key, switch back to symbols.
417        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
418
419        // Symbols -> "ABC" key + letter -> Symbols.
420        // Press and slide from "ABC" key, enter alphabet.
421        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
422        // Enter/release letter key, switch back to symbols.
423        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
424        // Press/release "ABC" key, switch to alphabet.
425        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
426
427        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
428        // alphabet.
429        // Load keyboard
430        loadKeyboard(ALPHABET_UNSHIFTED);
431        // Press/release shift key, enter alphabet shifted.
432        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
433        // Press/release "?123" key, enter into symbols.
434        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
435        // Press and slide from "ABC" key.
436        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
437        // Enter/release letter key, switch back to symbols.
438        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
439        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
440        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
441
442        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
443        // alphabet shift locked.
444        // Load keyboard
445        loadKeyboard(ALPHABET_UNSHIFTED);
446        // Long press shift key, enter alphabet shift locked.
447        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
448        // Press/release "?123" key, enter into symbols.
449        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
450        // Press and slide from "ABC" key, enter alphabet shift locked.
451        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
452        // Enter/release letter key, switch back to symbols.
453        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
454        // Press/release "ABC" key, switch to alphabet shift locked.
455        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
456
457        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
458        // alphabet shift locked.
459        // Load keyboard
460        loadKeyboard(ALPHABET_UNSHIFTED);
461        // Long press shift key, enter alphabet shift locked.
462        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
463        // Press/release "?123" key, enter into symbols.
464        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
465        // Press and slide from "=\<" key, enter symbols shifted.
466        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
467        // Enter/release symbols shift letter key, switch back to symbols.
468        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
469        // Press/release "ABC" key, switch to alphabet shift locked.
470        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
471    }
472
473    // Sliding input in symbols shifted.
474    public void testSlidingSymbolsShifted() {
475        // Symbols shifted -> "?123" + letter -> symbols shifted.
476        // Press/release "?123" key, enter into symbols.
477        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
478        // Press/release "=\<" key, enter into symbols shifted.
479        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
480        // Press and slide from shift key, enter symbols.
481        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
482        // Enter/release symbol letter key, switch back to symbols shifted.
483        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
484
485        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
486        // Press and slide from "ABC" key, enter alphabet.
487        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
488        // Enter/release letter key, switch back to symbols shifted.
489        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
490        // Press/release "ABC" key, switch to alphabet.
491        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
492
493        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
494        // alphabet.
495        // Load keyboard
496        loadKeyboard(ALPHABET_UNSHIFTED);
497        // Press/release shift key, enter alphabet shifted.
498        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_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 "ABC" key.
504        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
505        // Enter/release letter key, switch back to symbols shifted.
506        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
507        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
508        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
509
510        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
511        // alphabet shift locked.
512        // Load keyboard
513        loadKeyboard(ALPHABET_UNSHIFTED);
514        // Long press shift key, enter alphabet shift locked.
515        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
516        // Press/release "?123" key, enter into symbols.
517        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
518        // Press/release "=\<" key, enter into symbols shifted.
519        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
520        // Press and slide from "ABC" key.
521        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
522        // Enter/release letter key, switch back to symbols shifted.
523        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
524        // Press/release "ABC" key, switch to alphabet shift locked.
525        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
526
527        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
528        // alphabet shift locked.
529        // Load keyboard
530        loadKeyboard(ALPHABET_UNSHIFTED);
531        // Long press shift key, enter alphabet shift locked.
532        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
533        // Press/release "?123" key, enter into symbols.
534        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
535        // Press/release "=\<" key, enter into symbols shifted.
536        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
537        // Press and slide from "?123" key.
538        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
539        // Enter/release symbol letter key, switch back to symbols shifted.
540        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
541        // Press/release "ABC" key, switch to alphabet shift locked.
542        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
543    }
544
545    // Change focus to new text field.
546    public void testChangeFocus() {
547        // Press/release shift key.
548        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
549        // Change focus to new text field.
550        loadKeyboard(ALPHABET_UNSHIFTED);
551
552        // Long press shift key, enter alphabet shift locked.
553        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
554        // Change focus to new text field.
555        loadKeyboard(ALPHABET_UNSHIFTED);
556
557        // Press/release "?123" key.
558        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
559        // Change focus to new text field.
560        loadKeyboard(ALPHABET_UNSHIFTED);
561
562        // Press/release "?123" key.
563        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
564        // Press/release "=\<" key.
565        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
566        // Change focus to new text field.
567        loadKeyboard(ALPHABET_UNSHIFTED);
568    }
569
570    // Change focus to auto caps text field.
571    public void testChangeFocusAutoCaps() {
572        // Set auto caps mode on.
573        setAutoCapsMode(AUTO_CAPS);
574
575        // Update shift state.
576        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
577        // Change focus to new text field.
578        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
579
580        // Press/release shift key, enter alphabet.
581        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
582        // Change focus to new text field.
583        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
584
585        // Long press shift key, enter alphabet shift locked.
586        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
587        // Change focus to new text field.
588        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
589
590        // Press/release "?123" key.
591        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
592        // Change focus to new text field.
593        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
594
595        // Press/release "?123" key.
596        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
597        // Press/release "=\<" key.
598        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
599        // Change focus to new text field.
600        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
601    }
602
603    // Change orientation.
604    public void testChangeOrientation() {
605        // Press/release shift key.
606        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
607        // Rotate device.
608        rotateDevice(ALPHABET_MANUAL_SHIFTED);
609
610        // Long press shift key, enter alphabet shift locked.
611        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
612        // Rotate device.
613        rotateDevice(ALPHABET_SHIFT_LOCKED);
614
615        // Press/release "?123" key.
616        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
617        // Rotate device.
618        rotateDevice(SYMBOLS_UNSHIFTED);
619
620        // Press/release "=\<" key.
621        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
622        // Rotate device.
623        rotateDevice(SYMBOLS_SHIFTED);
624    }
625}
626