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