1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/* 259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. 3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License. 6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at 7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and 14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License. 15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpackage jp.co.omronsoft.openwnn; 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport android.view.KeyEvent; 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.View; 213feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawaimport android.view.ViewGroup; 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.inputmethod.EditorInfo; 2359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport android.view.inputmethod.InputConnection; 247b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawaimport android.widget.TextView; 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.SharedPreferences; 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.preference.PreferenceManager; 277b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawaimport android.content.res.*; 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.os.Vibrator; 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.media.MediaPlayer; 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.Context; 31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.util.Log; 33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 3459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.Keyboard; 3559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.KeyboardView; 3659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener; 3759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/** 393feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * The default software keyboard class. 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 4159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpublic class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKeyboardActionListener { 4477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* 4577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa *---------------------------------------------------------------------- 4677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * key codes for a software keyboard 4777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa *---------------------------------------------------------------------- 4877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa */ 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Change the keyboard language */ 5077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_CHANGE_LANG = -500; 5177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 5277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* for Japanese 12-key keyboard */ 5377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [1] */ 5477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_1 = -201; 5577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [2] */ 5677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_2 = -202; 5777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [3] */ 5877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_3 = -203; 5977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [4] */ 6077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_4 = -204; 6177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [5] */ 6277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_5 = -205; 6377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [6] */ 6477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_6 = -206; 6577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [7] */ 6677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_7 = -207; 6777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [8] */ 6877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_8 = -208; 6977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [9] */ 7077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_9 = -209; 7177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [0] */ 7277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_0 = -210; 7377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [#] */ 7477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_SHARP = -211; 7577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [*] */ 7677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_ASTER = -213; 7777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [DEL] */ 7877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_BACKSPACE = -214; 7977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [SPACE] */ 8077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_SPACE = -215; 8177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [ENTER] */ 8277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_ENTER = -216; 8377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [RIGHT ARROW] */ 8477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_RIGHT = -217; 8577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [LEFT ARROW] */ 8677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_LEFT = -218; 8777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [REVERSE TOGGLE] */ 8877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_REVERSE = -219; 8977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [CLOSE] */ 9077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_CLOSE = -220; 9177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [KEYBOARD TYPE CHANGE] */ 9277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_KBD = -221; 9377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [EMOJI] */ 9477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_EMOJI = -222; 9577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [FULL-WIDTH HIRAGANA MODE] */ 9677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_ZEN_HIRA = -223; 9777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [FULL-WIDTH NUMBER MODE] */ 9877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_ZEN_NUM = -224; 9977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [FULL-WIDTH ALPHABET MODE] */ 10077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_ZEN_ALPHA = -225; 10177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [FULL-WIDTH KATAKANA MODE] */ 10277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_ZEN_KATA = -226; 10377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [HALF-WIDTH KATAKANA MODE] */ 10477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_HAN_KATA = -227; 10577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [HALF-WIDTH NUMBER MODE] */ 10677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_HAN_NUM = -228; 10777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [HALF-WIDTH ALPHABET MODE] */ 10877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_HAN_ALPHA = -229; 10977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese 12-key keyboard [MODE TOOGLE CHANGE] */ 11077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_JP12_TOGGLE_MODE = -230; 11159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 11259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Key code for symbol keyboard alt key */ 11359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public static final int KEYCODE_4KEY_MODE = -300; 11459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Key code for symbol keyboard up key */ 11559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public static final int KEYCODE_4KEY_UP = -301; 11659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Key code for symbol keyboard down key */ 11759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public static final int KEYCODE_4KEY_DOWN = -302; 11859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Key code for symbol keyboard del key */ 11959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public static final int KEYCODE_4KEY_CLEAR = -303; 12059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 12177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* for Qwerty keyboard */ 12277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [DEL] */ 12377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_BACKSPACE = -100; 12477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [ENTER] */ 12577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_ENTER = -101; 12677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [SHIFT] */ 12777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_SHIFT = Keyboard.KEYCODE_SHIFT; 12877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [ALT] */ 12977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_ALT = -103; 13077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [KEYBOARD TYPE CHANGE] */ 13177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_KBD = -104; 13277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [CLOSE] */ 13377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_CLOSE = -105; 13477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese Qwerty keyboard [EMOJI] */ 13577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_EMOJI = -106; 13677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese Qwerty keyboard [FULL-WIDTH HIRAGANA MODE] */ 13777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_ZEN_HIRA = -107; 13877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese Qwerty keyboard [FULL-WIDTH NUMBER MODE] */ 13977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_ZEN_NUM = -108; 14077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese Qwerty keyboard [FULL-WIDTH ALPHABET MODE] */ 14177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_ZEN_ALPHA = -109; 14277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese Qwerty keyboard [FULL-WIDTH KATAKANA MODE] */ 14377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_ZEN_KATA = -110; 14477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Japanese Qwerty keyboard [HALF-WIDTH KATAKANA MODE] */ 14577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_HAN_KATA = -111; 14677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [NUMBER MODE] */ 14777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_HAN_NUM = -112; 14877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [ALPHABET MODE] */ 14977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_HAN_ALPHA = -113; 15077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [MODE TOOGLE CHANGE] */ 15177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_TOGGLE_MODE = -114; 15277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Qwerty keyboard [PINYIN MODE] */ 15377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYCODE_QWERTY_PINYIN = -115; 15477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 15577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** OpenWnn instance which hold this software keyboard*/ 15677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected OpenWnn mWnn; 15777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 15877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Current keyboard view */ 15977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected KeyboardView mKeyboardView; 16077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 16177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** View objects (main side) */ 16259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma protected BaseInputView mMainView; 16377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** View objects (sub side) */ 16477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected ViewGroup mSubView; 16577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 16677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Current keyboard definition */ 16777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected Keyboard mCurrentKeyboard; 16877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Caps lock state */ 17077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected boolean mCapsLock; 17177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 17277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Input restraint */ 17377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected boolean mDisableKeyInput = true; 17477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** 17577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * Keyboard surfaces 17677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * <br> 17777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * Keyboard[language][portrait/landscape][keyboard type][shift off/on][key-mode] 17877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa */ 17977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected Keyboard[][][][][][] mKeyboard; 18077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 18177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* languages */ 18277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Current language */ 18377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected int mCurrentLanguage; 18477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Language (English) */ 18577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int LANG_EN = 0; 18677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Language (Japanese) */ 18777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int LANG_JA = 1; 18877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Language (Chinese) */ 18977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int LANG_CN = 2; 19077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 19177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* portrait/landscape */ 19277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** State of the display */ 19377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected int mDisplayMode = 0; 19477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Display mode (Portrait) */ 19577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int PORTRAIT = 0; 19677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Display mode (Landscape) */ 19777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int LANDSCAPE = 1; 19877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 19977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* keyboard type */ 20077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Current keyboard type */ 20177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected int mCurrentKeyboardType; 20277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Keyboard (QWERTY keyboard) */ 20377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYBOARD_QWERTY = 0; 20477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Keyboard (12-keys keyboard) */ 20577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYBOARD_12KEY = 1; 20677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** State of the shift key */ 20777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected int mShiftOn = 0; 20877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Shift key off */ 20977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYBOARD_SHIFT_OFF = 0; 21077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Shift key on */ 21177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYBOARD_SHIFT_ON = 1; 21277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 21377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* key-modes */ 21477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Current key-mode */ 21577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected int mCurrentKeyMode; 21677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 21777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* key-modes for English */ 218053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** English key-mode (alphabet) */ 21977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_EN_ALPHABET = 0; 220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** English key-mode (number) */ 22177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_EN_NUMBER = 1; 222053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** English key-mode (phone number) */ 22377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_EN_PHONE = 2; 224053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 22577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* key-modes for Japanese */ 226053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Full-width Hiragana) */ 22777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_FULL_HIRAGANA = 0; 228053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Full-width alphabet) */ 22977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_FULL_ALPHABET = 1; 230053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Full-width number) */ 23177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_FULL_NUMBER = 2; 232053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Full-width Katakana) */ 23377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_FULL_KATAKANA = 3; 234053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Half-width alphabet) */ 23577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_HALF_ALPHABET = 4; 236053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Half-width number) */ 23777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_HALF_NUMBER = 5; 238053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Half-width Katakana) */ 23977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_HALF_KATAKANA = 6; 240053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Japanese key-mode (Half-width phone number) */ 24177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_JA_HALF_PHONE = 7; 242053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 24377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* key-modes for Chinese */ 244053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Chinese key-mode (pinyin) */ 24577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_CN_PINYIN = 0; 246053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Chinese key-mode (Full-width number) */ 24777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_CN_FULL_NUMBER = 1; 248053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Chinese key-mode (alphabet) */ 24977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_CN_ALPHABET = 2; 250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Chinese key-mode (phone) */ 25177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_CN_PHONE = 3; 252053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Chinese key-mode (Half-width number) */ 25377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public static final int KEYMODE_CN_HALF_NUMBER = 4; 25477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 25577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /* key-modes for HARD */ 2567b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_OFF_ALT_OFF) */ 2577b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_OFF_ALT_OFF = 2; 2587b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_ON_ALT_OFF) */ 2597b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_ON_ALT_OFF = 3; 2607b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_OFF_ALT_ON) */ 2617b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_OFF_ALT_ON = 4; 2627b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_ON_ALT_ON) */ 2637b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_ON_ALT_ON = 5; 26477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** HARD key-mode (SHIFT_LOCK_ALT_OFF) */ 2657b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_LOCK_ALT_OFF = 6; 2667b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_LOCK_ALT_ON) */ 2677b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_LOCK_ALT_ON = 7; 2687b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_LOCK_ALT_LOCK) */ 2697b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_LOCK_ALT_LOCK = 8; 2707b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_OFF_ALT_LOCK) */ 2717b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_OFF_ALT_LOCK = 9; 2727b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** HARD key-mode (SHIFT_ON_ALT_LOCK) */ 2737b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public static final int HARD_KEYMODE_SHIFT_ON_ALT_LOCK = 10; 2747b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 2757b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** Whether the H/W keyboard is hidden. */ 2767b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa protected boolean mHardKeyboardHidden = true; 2777b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 27859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Whether the H/W 12key keyboard. */ 27959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma protected boolean mEnableHardware12Keyboard = false; 28059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 28159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Symbol keyboard */ 28259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma protected Keyboard mSymbolKeyboard; 28359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 28459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Symbol keyboard state */ 28559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma protected boolean mIsSymbolKeyboard = false; 28659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 28777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** 28877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * Status of the composing text 28977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * <br> 29077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * {@code true} if there is no composing text. 29177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa */ 29277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected boolean mNoInput = true; 29377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 29477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Vibratior for key click vibration */ 29577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected Vibrator mVibrator = null; 29677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 29777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** MediaPlayer for key click sound */ 29877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected MediaPlayer mSound = null; 29977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 30077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** Key toggle cycle table currently using */ 30177ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa protected String[] mCurrentCycleTable; 30277ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 30359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** Event listener for symbol keyboard */ 30459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma private OnKeyboardActionListener mSymbolOnKeyboardAction = new OnKeyboardActionListener() { 30559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void onKey(int primaryCode, int[] keyCodes) { 30659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma switch (primaryCode) { 30759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case KEYCODE_4KEY_MODE: 30859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_KEY, 30959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK))); 31059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 31159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 31259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case KEYCODE_4KEY_UP: 31359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP)); 31459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 31559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 31659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case KEYCODE_4KEY_DOWN: 31759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN)); 31859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 31959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 32059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case KEYCODE_4KEY_CLEAR: 32159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma InputConnection connection = mWnn.getCurrentInputConnection(); 32259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (connection != null) { 32359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma connection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)); 32459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 32559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return; 32659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 32759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma default: 32859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 32959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 33059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 33159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void onPress(int primaryCode) { 33259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma playSoundAndVibration(); 33359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 33459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void onText(CharSequence text) { } 33559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void swipeLeft() { } 33659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void swipeRight() { } 33759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void swipeUp() { } 33859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void swipeDown() { } 33959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void onRelease(int primaryCode) { } 34059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public boolean onLongPress(Keyboard.Key key) { 34159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma switch (key.codes[0]) { 34259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case KEYCODE_4KEY_UP: 34359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_UP)); 34459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return true; 34559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 34659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case KEYCODE_4KEY_DOWN: 34759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_DOWN)); 34859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return true; 34959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 35059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma default: 35159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 35259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 35359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return false; 35459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 35559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma }; 35659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 35777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa /** 358053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Constructor 359053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 36077ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa public DefaultSoftKeyboard() { } 361053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 362053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 363053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Create keyboard views 364053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 365053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param parent OpenWnn using the keyboards. 366053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 367053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected void createKeyboards(OpenWnn parent) { 368053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* 369053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Keyboard[# of Languages][portrait/landscape][# of keyboard type] 370053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * [shift off/on][max # of key-modes][non-input/input] 371053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 372053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard = new Keyboard[3][2][4][2][7][2]; 373053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 374053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 375053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 376053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get the keyboard changed the specified shift state. 377053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 37877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param shift Shift state 37977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @return Keyboard view 380053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 381053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected Keyboard getShiftChangeKeyboard(int shift) { 382053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 383053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[] kbd = mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][shift][mCurrentKeyMode]; 384053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 385053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mNoInput && kbd[1] != null) { 386053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[1]; 387053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 388053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[0]; 389053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 390053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return null; 391053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 392053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 393053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 394053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 395053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get the keyboard changed the specified input mode. 396053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 39777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param mode Input mode 39877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @return Keyboard view 399053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 400053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected Keyboard getModeChangeKeyboard(int mode) { 401053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 402053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[] kbd = mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mode]; 403053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 404053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mNoInput && kbd[1] != null) { 405053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[1]; 406053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 407053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[0]; 408053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 409053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return null; 410053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 411053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 412053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 413053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 414053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get the keyboard changed the specified keyboard type 415053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 41677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param type Keyboard type 41777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @return Keyboard view 418053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 419053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected Keyboard getTypeChangeKeyboard(int type) { 420053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 421053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[] kbd = mKeyboard[mCurrentLanguage][mDisplayMode][type][mShiftOn][mCurrentKeyMode]; 422053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 423053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mNoInput && kbd[1] != null) { 424053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[1]; 425053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 426053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[0]; 427053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 428053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return null; 429053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 430053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 431053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 432053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 433053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get the keyboard when some characters are input or no character is input. 434053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 43577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param inputed {@code true} if some characters are inputed; {@code false} if no character is inputed. 43677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @return Keyboard view 437053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 438053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected Keyboard getKeyboardInputed(boolean inputed) { 439053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 440053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[] kbd = mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode]; 441053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 442053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (inputed && kbd[1] != null) { 443053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[1]; 444053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 445053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return kbd[0]; 446053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 447053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return null; 448053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 449053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 450053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 451053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 452053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change the circulative key-mode. 453053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 454053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected void toggleKeyMode() { 455053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* unlock shift */ 456053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = KEYBOARD_SHIFT_OFF; 457053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 458053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* search next defined key-mode */ 459053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[][] keyboardList = mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn]; 460053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project do { 461053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (++mCurrentKeyMode >= keyboardList.length) { 462053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = 0; 463053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 464053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } while (keyboardList[mCurrentKeyMode][0] == null); 465053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 466053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbd; 467053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mNoInput && keyboardList[mCurrentKeyMode][1] != null) { 468053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project kbd = keyboardList[mCurrentKeyMode][1]; 469053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 470053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project kbd = keyboardList[mCurrentKeyMode][0]; 471053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 472053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 473053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 474053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 475053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project OpenWnnEvent.Mode.DEFAULT)); 476053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 477053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 478053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 479053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Toggle change the shift lock state. 480053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 481053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected void toggleShiftLock() { 482053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mShiftOn == 0) { 483053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* turn shift on */ 484053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard newKeyboard = getShiftChangeKeyboard(KEYBOARD_SHIFT_ON); 485053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (newKeyboard != null) { 486053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = 1; 487053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(newKeyboard); 488053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 489053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCapsLock = true; 490053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 491053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* turn shift off */ 492053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard newKeyboard = getShiftChangeKeyboard(KEYBOARD_SHIFT_OFF); 493053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (newKeyboard != null) { 494053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = 0; 495053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(newKeyboard); 496053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 497053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCapsLock = false; 498053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 499053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 500053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 501053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 502053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Handling Alt key event. 503053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 504053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected void processAltKey() { 505053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* invalid if it is not qwerty mode */ 506053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mCurrentKeyboardType != KEYBOARD_QWERTY) { 507053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return; 508053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 509053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 510053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int mode = -1; 511053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int keymode = mCurrentKeyMode; 512053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (mCurrentLanguage) { 513053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case LANG_EN: 514053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (keymode == KEYMODE_EN_ALPHABET) { 515053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = KEYMODE_EN_NUMBER; 516053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if (keymode == KEYMODE_EN_NUMBER) { 517053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = KEYMODE_EN_ALPHABET; 518053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 519053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 520053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 521053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case LANG_JA: 522053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (keymode == KEYMODE_JA_HALF_ALPHABET) { 523053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = KEYMODE_JA_HALF_NUMBER; 524053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if (keymode == KEYMODE_JA_HALF_NUMBER) { 525053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = KEYMODE_JA_HALF_ALPHABET; 526053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if (keymode == KEYMODE_JA_FULL_ALPHABET) { 527053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = KEYMODE_JA_FULL_NUMBER; 528053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if (keymode == KEYMODE_JA_FULL_NUMBER) { 529053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = KEYMODE_JA_FULL_ALPHABET; 530053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 531053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 532053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 533053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 534053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* invalid */ 535053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 536053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 537053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mode >= 0) { 538053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbd = getModeChangeKeyboard(mode); 539053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (kbd != null) { 540053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = mode; 541053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 542053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 543053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 544053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 545053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 546053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 547053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change the keyboard type. 548053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 5493feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @param type Type of the keyboard 5503feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#KEYBOARD_QWERTY 5513feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#KEYBOARD_12KEY 552053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 553053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void changeKeyboardType(int type) { 554053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* ignore invalid parameter */ 555053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (type != KEYBOARD_QWERTY && type != KEYBOARD_12KEY) { 556053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return; 557053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 558053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 559053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* change keyboard view */ 560053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbd = getTypeChangeKeyboard(type); 561053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (kbd != null) { 562053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboardType = type; 563053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 564053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 565053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 566053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* notice that the keyboard is changed */ 567053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 568053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project OpenWnnEvent.Mode.DEFAULT)); 569053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 570053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 571053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 572053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change the keyboard. 573053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 574053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param keyboard The new keyboard 5757b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @return {@code true} if the keyboard is changed; {@code false} if not changed. 576053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 577053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected boolean changeKeyboard(Keyboard keyboard) { 578053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 579053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (keyboard == null) { 580053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return false; 581053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 582053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mCurrentKeyboard != keyboard) { 583053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboardView.setKeyboard(keyboard); 584053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboardView.setShifted((mShiftOn == 0) ? false : true); 585053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboard = keyboard; 586053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return true; 587053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 588053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboardView.setShifted((mShiftOn == 0) ? false : true); 589053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return false; 590053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 591053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 592053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.InputViewManager#initView */ 593053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public View initView(OpenWnn parent, int width, int height) { 594053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn = parent; 595e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mDisplayMode = 596e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa (parent.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 597e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa ? LANDSCAPE : PORTRAIT; 598053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 599053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* 600053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * create keyboards & the view. 601053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * To re-display the input view when the display mode is changed portrait <-> landscape, 602053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * create keyboards every time. 603053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 604053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project createKeyboards(parent); 6057b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 60659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* create symbol keyboard */ 60759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mSymbolKeyboard = new Keyboard(parent, R.xml.keyboard_4key); 60859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 6097b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(parent); 6107b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa String skin = pref.getString("keyboard_skin", 6117b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mWnn.getResources().getString(R.string.keyboard_skin_id_default)); 6127b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa int id = parent.getResources().getIdentifier(skin, "layout", "jp.co.omronsoft.openwnn"); 6137b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 6147b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mKeyboardView = (KeyboardView) mWnn.getLayoutInflater().inflate(id, null); 61577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa mKeyboardView.setOnKeyboardActionListener(this); 616053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboard = null; 617053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 61859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mMainView = (BaseInputView) parent.getLayoutInflater().inflate(R.layout.keyboard_default_main, null); 6193feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa mSubView = (ViewGroup) parent.getLayoutInflater().inflate(R.layout.keyboard_default_sub, null); 62059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 62159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (!mHardKeyboardHidden) { 62259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (!mEnableHardware12Keyboard) { 62359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mMainView.addView(mSubView); 62459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 625f66e64c9108f64da8c301fe1830e3165eccac5ffDaisuke Miyakawa } else if (mKeyboardView != null) { 6267b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mMainView.addView(mKeyboardView); 6277b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 62859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 6297b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return mMainView; 630053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 6317b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 6327b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** 6337b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * Update the SHFIT/ALT keys indicator. 6347b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * 6357b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @param mode The state of SHIFT/ALT keys. 6367b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa */ 6377b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public void updateIndicator(int mode) { 6387b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa Resources res = mWnn.getResources(); 6393feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa TextView text1 = (TextView)mSubView.findViewById(R.id.shift); 6403feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa TextView text2 = (TextView)mSubView.findViewById(R.id.alt); 6417b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 6427b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa switch (mode) { 6437b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_OFF_ALT_OFF: 6443feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_off)); 6453feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_off)); 6463feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6473feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6487b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6497b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_ON_ALT_OFF: 6503feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_on)); 6513feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_off)); 6523feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6533feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6547b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6557b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_LOCK_ALT_OFF: 6563feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_lock)); 6573feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_off)); 6583feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_background_lock_caps)); 6593feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6607b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6617b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_OFF_ALT_ON: 6623feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_off)); 6633feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_on)); 6643feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6653feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6667b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6677b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_OFF_ALT_LOCK: 6683feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_off)); 6693feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_lock)); 6703feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6713feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_background_lock_alt)); 6727b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6737b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_ON_ALT_ON: 6743feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_on)); 6753feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_on)); 6763feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6773feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6787b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6797b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_ON_ALT_LOCK: 6803feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_on)); 6813feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_lock)); 6823feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6833feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_background_lock_alt)); 6847b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6857b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_LOCK_ALT_ON: 6863feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_lock)); 6873feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_on)); 6883feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_background_lock_caps)); 6893feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 6907b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6917b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa case HARD_KEYMODE_SHIFT_LOCK_ALT_LOCK: 6923feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_lock)); 6933feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_lock)); 6943feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_background_lock_caps)); 6953feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_background_lock_alt)); 6967b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 6977b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa default: 6983feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setTextColor(res.getColor(R.color.indicator_textcolor_caps_off)); 6993feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setTextColor(res.getColor(R.color.indicator_textcolor_alt_off)); 7003feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text1.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 7013feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa text2.setBackgroundColor(res.getColor(R.color.indicator_textbackground_default)); 7027b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa break; 7037b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 7047b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return; 7057b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 7067b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 707053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.InputViewManager#getCurrentView */ 708053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public View getCurrentView() { 7097b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return mMainView; 710053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 711053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 712053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.InputViewManager#onUpdateState */ 713053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onUpdateState(OpenWnn parent) { 714053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 715053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (parent.mComposingText.size(1) == 0) { 716053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mNoInput) { 717053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* when the mode changed to "no input" */ 718053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mNoInput = true; 719053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard newKeyboard = getKeyboardInputed(false); 720053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mCurrentKeyboard != newKeyboard) { 721053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(newKeyboard); 722053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 723053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 724053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 725053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mNoInput) { 726053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* when the mode changed to "input some characters" */ 727053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mNoInput = false; 728053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard newKeyboard = getKeyboardInputed(true); 729053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mCurrentKeyboard != newKeyboard) { 730053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(newKeyboard); 731053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 732053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 733053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 734053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 735053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 736053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 737053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 738053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.InputViewManager#setPreferences */ 739053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void setPreferences(SharedPreferences pref, EditorInfo editor) { 740053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 741053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* vibrator */ 742053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 743053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (pref.getBoolean("key_vibration", false)) { 744053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mVibrator = (Vibrator)mWnn.getSystemService(Context.VIBRATOR_SERVICE); 745053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 746053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mVibrator = null; 747053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 748053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 749053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Log.d("OpenWnn", "NO VIBRATOR"); 750053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 751053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 752053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* sound */ 753053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { 754053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (pref.getBoolean("key_sound", false)) { 755053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSound = MediaPlayer.create(mWnn, R.raw.type); 756053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 757053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSound = null; 758053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 759053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } catch (Exception ex) { 760053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Log.d("OpenWnn", "NO SOUND"); 761053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 762053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 763053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* pop-up preview */ 76459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (OpenWnn.isXLarge()) { 76559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setPreviewEnabled(false); 76659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 76759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setPreviewEnabled(pref.getBoolean("popup_preview", true)); 76859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.clearWindowInfo(); 76959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 770053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 771053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 772053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 773053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.InputViewManager#closing */ 774053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void closing() { 775053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mKeyboardView != null) { 776053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboardView.closing(); 777053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 77877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa mDisableKeyInput = true; 779053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 780053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 78159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.InputViewManager#showInputView */ 78259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void showInputView() { 78359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (mKeyboardView != null) { 78459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setVisibility(View.VISIBLE); 78559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 78659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 78759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 78859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.InputViewManager#hideInputView */ 78959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void hideInputView() { 79059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setVisibility(View.GONE); 79159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 79259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 793053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /*********************************************************************** 794053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * onKeyboardActionListener 795053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ***********************************************************************/ 79659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onKey */ 797053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onKey(int primaryCode, int[] keyCodes) { } 798053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 79959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeRight */ 800053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void swipeRight() { } 801053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 80259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeLeft */ 803053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void swipeLeft() { } 804053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 80559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeDown */ 806053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void swipeDown() { } 807053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 80859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeUp */ 809053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void swipeUp() { } 810053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 81159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onRelease */ 812053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onRelease(int x) { } 813053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 81459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onPress */ 815053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onPress(int x) { 81659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma playSoundAndVibration(); 81759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 81859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 81959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see android.jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onLongPress */ 82059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public boolean onLongPress(Keyboard.Key key) { 82159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return false; 82259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 82359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 82459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** 82559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Play sound & vibration. 82659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma */ 82759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma private void playSoundAndVibration() { 828053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* key click sound & vibration */ 829053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mVibrator != null) { 83059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma try { mVibrator.vibrate(5); } catch (Exception ex) { } 831053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 832053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mSound != null) { 833053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project try { mSound.seekTo(0); mSound.start(); } catch (Exception ex) { } 834053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 835053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 83659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 83759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onText */ 8387b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public void onText(CharSequence text) {} 839053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 840053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 841053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get current key mode. 8423feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * 8437b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @return Current key mode 844053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 845053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int getKeyMode() { 846053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return mCurrentKeyMode; 847053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 848053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 849053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 850053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get current keyboard type. 8513feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * 8527b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @return Current keyboard type 853053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 854053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int getKeyboardType() { 855053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return mCurrentKeyboardType; 856053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 857053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 8587b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** 8597b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * Set the H/W keyboard's state. 8603feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * 8617b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @param hidden {@code true} if hidden. 8627b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa */ 8637b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa public void setHardKeyboardHidden(boolean hidden) { 8647b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mHardKeyboardHidden = hidden; 8657b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 8667b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 867e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** 86859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Set the H/W keyboard's type. 86959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * 87059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * @param type12Key {@code true} if 12Key. 87159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma */ 87259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void setHardware12Keyboard(boolean type12Key) { 87359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mEnableHardware12Keyboard = type12Key; 87459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 87559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 87659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** 877e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Get current keyboard view. 878e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa */ 879e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa public View getKeyboardView() { 880e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return mKeyboardView; 881e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 882e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 883e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** 884e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Reset the current keyboard 885e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa */ 886e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa public void resetCurrentKeyboard() { 887e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa closing(); 888e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa Keyboard keyboard = mCurrentKeyboard; 889e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mCurrentKeyboard = null; 890e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyboard(keyboard); 891e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 89259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 89359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** 89459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Set the normal keyboard. 89559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma */ 89659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void setNormalKeyboard() { 89759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (mCurrentKeyboard == null) { 89859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return; 89959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 90059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setKeyboard(mCurrentKeyboard); 90159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setOnKeyboardActionListener(this); 90259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mIsSymbolKeyboard = false; 90359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 90459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 90559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** 90659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Set the symbol keyboard. 90759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma */ 90859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void setSymbolKeyboard() { 90959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setKeyboard(mSymbolKeyboard); 91059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboardView.setOnKeyboardActionListener(mSymbolOnKeyboardAction); 91159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mIsSymbolKeyboard = true; 91259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 9137b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa} 914