1dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka/* 260c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project 3dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * 4ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 5ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * you may not use this file except in compliance with the License. 6ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * You may obtain a copy of the License at 7dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * 8ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * 10dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 12ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * See the License for the specific language governing permissions and 14ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * limitations under the License. 15dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka */ 16dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 17dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 19b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaokaimport android.test.suitebuilder.annotation.SmallTest; 20b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka 21b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka@SmallTest 2260c4594ee6415b266b3418e46d09e6a5b3ed23e1Tadashi G. Takaokapublic class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { 23373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Chording input in alphabet. 24373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka public void testChordingAlphabet() { 256d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Press shift key and hold, enter into choring shift state. 2664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 27373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release letter key. 2864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 2906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release shift key, switch back to alphabet. 3064e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 3106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 32373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press "?123" key and hold, enter into choring symbols state. 33e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 34373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release symbol letter key. 35e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 36373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Release "ABC" key, switch back to alphabet. 3706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 3806bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka } 3906bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 402972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Chording input in shifted. 412972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testChordingShifted() { 422972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press shift key, enter alphabet shifted. 432972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 442972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 452972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press shift key and hold, enter into choring shift state. 462972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 472972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press/release letter key. 482972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 492972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release shift key, switch back to alphabet shifted. 502972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 512972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 522972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press "?123" key and hold, enter into choring symbols state. 53e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 542972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press/release symbol letter key. 55e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 567d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release "123?" key, switch back to alphabet unshifted. 572972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 582972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 592972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 60373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Chording input in shift locked. 61373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka public void testChordingShiftLocked() { 6206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 63f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 640d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka ALPHABET_SHIFT_LOCKED); 6506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 6606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press shift key and hold, enter into choring shift state. 67757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED); 68373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release letter key. 69757f8d96eea3dfb5951243d2ebb4b763db868471Tadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 70d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka // Release shift key, switch back to alphabet shift locked. 71d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 72d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka 73373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press "?123" key and hold, enter into choring symbols state. 74e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 75373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release symbol letter key. 76e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 77373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Release "123?" key, switch back to alphabet shift locked. 78d26d63b35d34333a8f6737572b1c306b774eebd0Tadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 79dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka } 80dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka 81373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Chording input in symbols. 82373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka public void testChordingSymbols() { 83373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release "?123" key, enter symbols. 84e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 85e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 86e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "=\<" key and hold, enter into choring symbols shifted state. 87e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 88e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release symbol letter key. 89e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 90e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "=\<" key, switch back to symbols. 91e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 9206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka 9306bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press "ABC" key and hold, enter into choring alphabet state. 9406bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 95373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release letter key. 9606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 9706bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release "ABC" key, switch back to symbols. 98e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 99f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka 100f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols 101f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // -> alphabet. 102f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Load keyboard 103f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka loadKeyboard(ALPHABET_UNSHIFTED); 104f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press/release shift key, enter alphabet shifted. 105f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 106f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 107e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 108f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press "ABC" key, enter into chording alphabet state. 109f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 110f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Enter/release letter key. 111f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 112f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Release "ABC" key, switch back to symbols. 113e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 114f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press/release "ABC" key, switch to alphabet (not alphabet shifted). 115f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 116f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka 117f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols -> 118f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // alphabet shift locked. 119f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Load keyboard 120f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka loadKeyboard(ALPHABET_UNSHIFTED); 121f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 122f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 1230d6d4c20ce2e6ff75901d29aa9b2ad11b8dd1118Tadashi G. Takaoka ALPHABET_SHIFT_LOCKED); 124f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press/release "?123" key, enter into symbols. 125e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 126f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press "ABC" key, enter into chording alphabet shift locked. 127f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 128f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Enter/release letter key. 129f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 130f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Release "ABC" key, switch back to symbols. 131e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 132e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "ABC" key, switch to alphabet shift locked. 133e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 134e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 135e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols -> 136e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // alphabet shift locked. 137e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Load keyboard 138e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka loadKeyboard(ALPHABET_UNSHIFTED); 139e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Long press shift key, enter alphabet shift locked. 140e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 141e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka ALPHABET_SHIFT_LOCKED); 142e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "?123" key, enter into symbols. 143e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 144e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "=\<" key, enter into symbols shifted chording state. 145e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SHIFT, SYMBOLS_SHIFTED); 146e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Enter/release symbols shift letter key. 147e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 148e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "=\<" key, switch back to symbols. 149e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 150e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "ABC" key, switch to alphabet shift locked. 151e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 152e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka } 153e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 154e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Chording input in symbol shifted. 155e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka public void testChordingSymbolsShifted() { 156e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "?123" key, enter symbols. 157e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 158e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "=\<" key, enter symbols shifted. 159e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 160e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 161e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "?123" key and hold, enter into chording symbols state. 162e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 163e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release symbol letter key. 164e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 165e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "=\<" key, switch back to symbols shifted state. 166e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 167e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 168e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "ABC" key and hold, enter into choring alphabet state. 169e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 170e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release letter key. 171e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 172e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "ABC" key, switch back to symbols. 173e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 174e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 175e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Alphabet shifted -> symbols shifted -> "ABC" key + letter -> symbols shifted -> 176e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // alphabet. 177e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Load keyboard 178e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka loadKeyboard(ALPHABET_UNSHIFTED); 179e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release shift key, enter alphabet shifted. 180e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 181e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "?123" key, enter into symbols. 182e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 183e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "=\<" key, enter symbols shifted. 184e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 185e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "ABC" key, enter into chording alphabet state. 186e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 187e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Enter/release letter key. 188e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 189e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "ABC" key, switch back to symbols shifted. 190e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 191e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "ABC" key, switch to alphabet (not alphabet shifted). 192e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 193e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 194e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Alphabet shift locked -> symbols shifted -> "ABC" key + letter -> symbols shifted 195e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // -> alphabet shift locked. 196e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Load keyboard 197e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka loadKeyboard(ALPHABET_UNSHIFTED); 198e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Long press shift key, enter alphabet shift locked. 199e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 200e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka ALPHABET_SHIFT_LOCKED); 201e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "?123" key, enter into symbols. 202e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 203e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "=\<" key, enter symbols shifted. 204e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 205e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "ABC" key, enter into chording alphabet shift locked. 206e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED); 207e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Enter/release letter key. 208e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 209e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "ABC" key, switch back to symbols shifted. 210e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED); 211e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "ABC" key, switch to alphabet shift locked. 212e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 213e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka 214e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Alphabet shift locked -> symbols shifted -> "=\<" key + letter -> symbols shifted 215e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // -> alphabet shift locked. 216e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Load keyboard 217e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka loadKeyboard(ALPHABET_UNSHIFTED); 218e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Long press shift key, enter alphabet shift locked. 219e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 220e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka ALPHABET_SHIFT_LOCKED); 221e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "?123" key, enter into symbols. 222e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 223e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press/release "=\<" key, enter symbols shifted. 224e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 225e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Press "=\<" key, enter into symbols chording state. 226e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED); 227e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Enter/release symbols letter key. 228e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 229e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka // Release "=\<" key, switch back to symbols shifted. 230e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED); 231f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka // Press/release "ABC" key, switch to alphabet shift locked. 232f057b25cddb3e5e18bc56e8ddaab541044c6ba58Tadashi G. Takaoka pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 2336d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka } 2346d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka 235373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Chording input in automatic upper case. 236373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka public void testChordingAutomaticUpperCase() { 237553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka // Set capitalize the first character of all words mode. 238553e2f19c1607080ff874cb642237f947809cdb3Tadashi G. Takaoka setAutoCapsMode(CAP_MODE_WORDS); 23964e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 2406d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Update shift state with auto caps enabled. 241373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 24206bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press shift key and hold, enter into chording shift state. 24364e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 244373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release letter key. 24564e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 24606bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release shift key, switch back to alphabet. 24764e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 24864e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka 2496d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka // Update shift state with auto caps enabled. 250373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 25106bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Press "123?" key and hold, enter into chording symbols state. 252e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED); 253373f452584f5a6881d496eec9beb262fccf4a2a4Tadashi G. Takaoka // Press/release symbol letter key. 254e3150664ae4d8d007b8571b5bd0fd2259aac3a20Satoshi Kataoka chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 25506bc1db017b14614353137fde035d2eed666a74fTadashi G. Takaoka // Release "123?" key, switch back to alphabet. 25664e01baadeb624781d9d056b62679b25ea0fe5c0Tadashi G. Takaoka releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED); 2576d5c9c9edceddb70b03728aca21fed48d01bd973Tadashi G. Takaoka } 258beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka 259beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka // Chording letter key with shift key. 260beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka public void testChordingLetterAndShiftKey() { 261beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka // Press letter key and hold. 262beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka pressKey('z', ALPHABET_UNSHIFTED); 263beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka // Press shift key, {@link PointerTracker} will fire a phantom release letter key. 264beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka chordingReleaseKey('z', ALPHABET_UNSHIFTED); 265beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka chordingPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 266beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka // Press another letter key and hold. 267beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka chordingPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 268beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka // Release shift key 269beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 270beb08b398fa73a26f2d42d6feec87e34a96ca2d9Tadashi G. Takaoka } 2712972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 2722972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Multi touch input in manual shifted. 2732972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testMultiTouchManualShifted() { 2742972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press/release shift key, enter into alphabet shifted. 2752972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 2762972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 2772972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'X' key and hold 2782972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey('X', ALPHABET_MANUAL_SHIFTED); 27916950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka // Press 'z' key and hold, switch back to alphabet unshifted. 28016950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka chordingPressKey('z', ALPHABET_UNSHIFTED); 28116950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka // Release 'X' key 28216950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka releaseKey('X', ALPHABET_UNSHIFTED); 28316950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka // Release 'z' key 28416950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka releaseKey('z', ALPHABET_UNSHIFTED); 2852972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 2862972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 2872972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Multi touch input in automatic upper case. 2882972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testMultiTouchAutomaticUpperCase() { 2892972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Set auto word caps mode on. 2902972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka setAutoCapsMode(CAP_MODE_WORDS); 2912972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Update shift state with auto caps enabled. 2922972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 2932972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 2942972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'X' key and hold 2952972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey('X', ALPHABET_AUTOMATIC_SHIFTED); 29616950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka // Press 'z' key and hold, switch back to alphabet unshifted. 29716950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka chordingPressKey('z', ALPHABET_UNSHIFTED); 29816950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka // Release 'X' key 29916950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka releaseKey('X', ALPHABET_UNSHIFTED); 30016950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka // Release 'z' key 30116950d65c323f99507d97cb7f0403dc653e2506cTadashi G. Takaoka releaseKey('z', ALPHABET_UNSHIFTED); 3022972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 3032972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3042972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Multi touch input in capitalize character mode. 3052972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testMultiTouchCapModeCharacter() { 3062972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Set auto character caps mode on. 3072972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka setAutoCapsMode(CAP_MODE_CHARACTERS); 3082972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Update shift state with auto caps enabled. 3092972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 3102972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3112972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'X' key and hold 3122972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey('X', ALPHABET_AUTOMATIC_SHIFTED); 3132972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'Z' key and hold, stay in automatic shifted mode. 3142972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('Z', ALPHABET_AUTOMATIC_SHIFTED); 3152972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'X' key 3162972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('X', ALPHABET_AUTOMATIC_SHIFTED); 3172972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'Z' key 3182972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('Z', ALPHABET_AUTOMATIC_SHIFTED); 3192972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 3202972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3212972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Multi touch shift chording input in manual shifted. 3222972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testMultiTouchShiftChordingManualShifted() { 3232972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press/release shift key, enter into alphabet shifted. 3242972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 3252972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3262972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press shift key and hold, stays in alphabet shifted. 3272972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 3282972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'X' key and hold 3292972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 3302972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'Z' key and hold, stays in alphabet shifted. 3312972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 3322972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'X' key 3332972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('X', ALPHABET_MANUAL_SHIFTED); 3342972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'Z' key 3352972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 3367d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release shift key, switch back to alphabet shifted. 3372972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 3382972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 3392972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3402972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Multi touch shift chording input in automatic upper case. 3412972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testMultiTouchShiftChordingAutomaticUpperCase() { 3422972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Set auto word caps mode on. 3432972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka setAutoCapsMode(CAP_MODE_WORDS); 3442972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Update shift state with auto caps enabled. 3452972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 3462972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3472972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press shift key and hold, switch to alphabet shifted. 3482972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 3492972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'X' key and hold 3502972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 3512972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'Z' key and hold, stays in alphabet shifted. 3522972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 3532972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'X' key 3542972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('X', ALPHABET_MANUAL_SHIFTED); 3552972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'Z' key 3562972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 3577d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release shift key, updated to alphabet unshifted. 3582972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 3597d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka 3607d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Update shift state with auto caps enabled. 3617d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 3627d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka 3637d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Press shift key and hold, switch to alphabet shifted. 3647d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 3657d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Press 'X' key and hold 3667d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 3677d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release 'X' key 3687d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka releaseKey('X', ALPHABET_MANUAL_SHIFTED); 3697d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Press key and hold, stays in alphabet shifted. 3707d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka chordingPressKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_MANUAL_SHIFTED); 3717d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release 'Z' key 3727d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka releaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_MANUAL_SHIFTED); 3737d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release shift key, updated to alphabet automatic shifted. 3747d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_AUTOMATIC_SHIFTED); 3752972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 3762972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3772972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Multi touch shift chording input in capitalize character mode. 3782972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka public void testMultiTouchShiftChordingCapModeCharacter() { 3792972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Set auto character caps mode on. 3802972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka setAutoCapsMode(CAP_MODE_CHARACTERS); 3812972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Update shift state with auto caps enabled. 3822972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 3832972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka 3842972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press shift key and hold, switch to alphabet shifted. 3852972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 3862972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'X' key and hold 3872972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('X', ALPHABET_MANUAL_SHIFTED); 3882972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Press 'Z' key and hold, stay in automatic shifted mode. 3892972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka chordingPressKey('Z', ALPHABET_MANUAL_SHIFTED); 3902972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'X' key 3912972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('X', ALPHABET_MANUAL_SHIFTED); 3922972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka // Release 'Z' key 3932972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka releaseKey('Z', ALPHABET_MANUAL_SHIFTED); 3947d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka // Release shift key, updated to alphabet automatic shifted. 3957d045829b8cd613ab43cb88b4cf0d4f492827996Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_AUTOMATIC_SHIFTED); 3962972ccb85175d5211aa8f5c78d453efd628af8d3Tadashi G. Takaoka } 397fb0a4ba8fd7291e1bed0ec61bb7d2b5c8f93c1adTadashi G. Takaoka 398fb0a4ba8fd7291e1bed0ec61bb7d2b5c8f93c1adTadashi G. Takaoka public void testLongPressShiftAndChording() { 3992959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Long press shift key, enter maybe shift locked. 400f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4012959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Press/release letter key, remain in manual shifted. 4022959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4032959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Release shift key, back to alphabet (not shift locked). 4042959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 4052959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka 4062959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Long press shift key, enter alphabet shift locked. 407f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 4082959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka ALPHABET_SHIFT_LOCKED); 4092959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Long press shift key, enter maybe alphabet. 410f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 4112959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Press/release letter key, remain in manual shifted. 4122959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); 4132959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Release shift key, back to shift locked (not alphabet). 4142959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); 4152959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Long press shift key, enter alphabet 416f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressAndReleaseShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, 4172959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka ALPHABET_UNSHIFTED); 4182959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka 4192959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Press/release shift key, enter alphabet shifted. 4202959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4212959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Long press shift key, enter maybe alphabet. 422f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4232959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Press/release letter key, remain in manual shifted. 4242959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4252959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Release shift key, back to alphabet shifted (not alphabet). 4262959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 4272959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka 4282959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Set capitalize the first character of all words mode. 4292959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka setAutoCapsMode(CAP_MODE_WORDS); 4302959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Load keyboard, should be in automatic shifted. 4312959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 4322959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Long press shift key, enter maybe shift locked. 433f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4342959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Press/release letter key, remain in manual shifted. 4352959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4362959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka // Release shift key, back to alphabet (not shift locked). 4372959fc0f13ec29e05eda2c4a1e9a728350a80557Tadashi G. Takaoka releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 438fb0a4ba8fd7291e1bed0ec61bb7d2b5c8f93c1adTadashi G. Takaoka } 4399a3211802baf11e5749a080e4f451ef7b795220bTadashi G. Takaoka 4409a3211802baf11e5749a080e4f451ef7b795220bTadashi G. Takaoka public void testDoubleTapShiftAndChording() { 4419a3211802baf11e5749a080e4f451ef7b795220bTadashi G. Takaoka // TODO: The following tests fail due to bug. Temporarily commented. 4420cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // First shift key tap. 4430cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4440cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Second shift key tap, maybe shift locked. 4450cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 4460cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Press/release letter key, remain in manual shifted. 4470cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4480cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Release shift key, back to alphabet shifted (not shift locked). 4490cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 4500cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// 4510cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Long press shift key, enter alphabet shift locked. 452f87e8f7ec1efb93398d909c67468d716b0248fe7Tadashi G. Takaoka// longPressAndReleaseShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, 4530cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// ALPHABET_SHIFT_LOCKED); 4540cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // First shift key tap. 4550cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 4560cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Second shift key tap, maybe shift unlocked. 4570cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 4580cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Press/release letter key, remain in manual shifted. 4590cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4600cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Release shift key, back to alphabet (not shift locked). 4610cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 4620cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// 4630cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Set capitalize the first character of all words mode. 4640cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// setAutoCapsMode(CAP_MODE_WORDS); 4650cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Load keyboard, should be in automatic shifted. 4660cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 4670cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // First shift key tap. 4680cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 4690cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Second shift key tap, maybe shift locked. 4700cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); 4710cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Press/release letter key, remain in manual shifted. 4720cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 4730cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// // Release shift key, back to alphabet (not shift locked). 4740cc425bd9c476d3cb6708554282a3242019eb317Tadashi G. Takaoka// releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); 4759a3211802baf11e5749a080e4f451ef7b795220bTadashi G. Takaoka } 476dfbe254de6f0bf722d9cb5a3ab6dc97d135c73d5Tadashi G. Takaoka} 477