1889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka/* 28632bff2d5a8e1160989008dea6eff4b94b065ddTadashi G. Takaoka * Copyright (C) 2010 The Android Open Source Project 3889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka * 48aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 58aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * you may not use this file except in compliance with the License. 68aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * You may obtain a copy of the License at 7889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka * 88aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka * 10889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 118aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 128aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * See the License for the specific language governing permissions and 148aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * limitations under the License. 15889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka */ 16889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka 1772934bd5967d0127f71fd4d66158b18b4e6ceefeTadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka 19f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaokaimport android.util.Log; 20f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka 21a28a05e971cc242b338331a3b78276fa95188d19Tadashi G. Takaoka/* package */ final class ShiftKeyState extends ModifierKeyState { 22889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka private static final int PRESSING_ON_SHIFTED = 3; // both temporary shifted & shift locked 23889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka private static final int IGNORING = 4; 24889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka 25f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka public ShiftKeyState(String name) { 26f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka super(name); 27f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka } 28f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka 29889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka @Override 30889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka public void onOtherKeyPressed() { 31f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka int oldState = mState; 326769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka if (oldState == PRESSING) { 3325971b5a14b378c4821fadd078e3cdaf8e07bb2aTadashi G. Takaoka mState = CHORDING; 346769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka } else if (oldState == PRESSING_ON_SHIFTED) { 35889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka mState = IGNORING; 36889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka } 37f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka if (DEBUG) 38f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka Log.d(TAG, mName + ".onOtherKeyPressed: " + toString(oldState) + " > " + this); 39889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka } 40889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka 41889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka public void onPressOnShifted() { 42f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka int oldState = mState; 43889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka mState = PRESSING_ON_SHIFTED; 44f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka if (DEBUG) 45f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka Log.d(TAG, mName + ".onPressOnShifted: " + toString(oldState) + " > " + this); 46889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka } 47889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka 48889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka public boolean isPressingOnShifted() { 49889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka return mState == PRESSING_ON_SHIFTED; 50889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka } 51889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka 52889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka public boolean isIgnoring() { 53889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka return mState == IGNORING; 54889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka } 55f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka 56f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka @Override 57f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka public String toString() { 58f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka return toString(mState); 59f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka } 60f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka 616769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka @Override 626769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka protected String toString(int state) { 63f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka switch (state) { 64f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka case PRESSING_ON_SHIFTED: return "PRESSING_ON_SHIFTED"; 65f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka case IGNORING: return "IGNORING"; 666769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka default: return super.toString(state); 67f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka } 68f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka } 69889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka} 70