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.EN; 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 193feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawaimport jp.co.omronsoft.openwnn.*; 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.SharedPreferences; 21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.KeyEvent; 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.View; 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.inputmethod.EditorInfo; 24e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.view.inputmethod.InputConnection; 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 2659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.Keyboard; 2759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.util.Log; 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/** 313feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * The default Software Keyboard class for English IME. 32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 333feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. 34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpublic class DefaultSoftKeyboardEN extends DefaultSoftKeyboard { 36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 12-key keyboard [PHONE MODE] */ 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public static final int KEYCODE_PHONE = -116; 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Keyboards toggled by ALT key. 41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * The normal keyboard(KEYMODE_EN_ALPHABET) and the number/symbol 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * keyboard(KEYMODE_EN_NUMBER) is active. The phone number 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * keyboard(KEYMODE_EN_PHONE) is disabled. 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final boolean[] TOGGLE_KEYBOARD = {true, true, false}; 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Auto caps mode */ 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mAutoCaps = false; 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Default constructor 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public DefaultSoftKeyboardEN() { } 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Dismiss the pop-up keyboard. 58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Nothing will be done if no pop-up keyboard is displaying. 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void dismissPopupKeyboard() { 627b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa try { 637b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mKeyboardView != null) { 647b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mKeyboardView.handleBack(); 657b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 667b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } catch (Exception ex) { 677b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /* ignore */ 687b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#createKeyboards */ 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override protected void createKeyboards(OpenWnn parent) { 73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard = new Keyboard[3][2][4][2][7][2]; 74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[][] keyList; 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /*********************************************************************** 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * English 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ***********************************************************************/ 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* qwerty shift_off */ 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList = mKeyboard[LANG_EN][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; 81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList[KEYMODE_EN_ALPHABET][0] = new Keyboard(parent, R.xml.default_en_qwerty); 82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList[KEYMODE_EN_NUMBER][0] = new Keyboard(parent, R.xml.default_en_symbols); 83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList[KEYMODE_EN_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* qwerty shift_on */ 86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList = mKeyboard[LANG_EN][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList[KEYMODE_EN_ALPHABET][0] = 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard[LANG_EN][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_EN_ALPHABET][0]; 89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList[KEYMODE_EN_NUMBER][0] = new Keyboard(parent, R.xml.default_en_symbols_shift); 90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keyList[KEYMODE_EN_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get the shift key state from the editor. 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 963feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @param editor The information of editor 973feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @return state ID of the shift key (0:off, 1:on) 98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int getShiftKeyState(EditorInfo editor) { 100e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa InputConnection connection = mWnn.getCurrentInputConnection(); 101e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (connection != null) { 102e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int caps = connection.getCursorCapsMode(editor.inputType); 103e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return (caps == 0) ? 0 : 1; 104e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } else { 105e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return 0; 106e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Switch the keymode 111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 1123feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @param keyMode Keymode 113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void changeKeyMode(int keyMode) { 115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard keyboard = super.getModeChangeKeyboard(keyMode); 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (keyboard != null) { 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = keyMode; 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project super.changeKeyboard(keyboard); 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /*********************************************************************** 123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * from DefaultSoftKeyboard 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ***********************************************************************/ 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#initView */ 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public View initView(OpenWnn parent, int width, int height) { 1277b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa View view = super.initView(parent, width, height); 1287b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 1297b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /* default setting */ 1307b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mCurrentLanguage = LANG_EN; 1317b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mCurrentKeyboardType = KEYBOARD_QWERTY; 1327b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mShiftOn = KEYBOARD_SHIFT_OFF; 1337b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mCurrentKeyMode = KEYMODE_EN_ALPHABET; 1347b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 1357b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa Keyboard kbd = mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode][0]; 1367b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (kbd == null) { 1377b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if(mDisplayMode == LANDSCAPE){ 1387b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return view; 1397b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 1407b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return null; 1417b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 1427b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mCurrentKeyboard = null; 1437b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa changeKeyboard(kbd); 1447b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return view; 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setPreferences */ 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public void setPreferences(SharedPreferences pref, EditorInfo editor) { 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project super.setPreferences(pref, editor); 150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* auto caps mode */ 1527b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mAutoCaps = pref.getBoolean("auto_caps", true); 153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (editor.inputType & EditorInfo.TYPE_MASK_CLASS) { 155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_NUMBER: 156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_DATETIME: 157053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentLanguage = LANG_EN; 158053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboardType = KEYBOARD_QWERTY; 159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = KEYBOARD_SHIFT_OFF; 160053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_NUMBER; 161053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbdn = 163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode][0]; 164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbdn); 166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_PHONE: 169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentLanguage = LANG_EN; 170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboardType = KEYBOARD_QWERTY; 171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = KEYBOARD_SHIFT_OFF; 172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_PHONE; 173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbdp = 175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode][0]; 176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbdp); 178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 181053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentLanguage = LANG_EN; 183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboardType = KEYBOARD_QWERTY; 184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = KEYBOARD_SHIFT_OFF; 185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_ALPHABET; 186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbdq = 188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode][0]; 189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbdq); 191053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 192053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 193053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 194053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int shift = (mAutoCaps)? getShiftKeyState(mWnn.getCurrentInputEditorInfo()) : 0; 195053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (shift != mShiftOn) { 196053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbd = getShiftChangeKeyboard(shift); 197053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = shift; 198053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 199053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 200053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 201053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 202053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#onKey */ 203053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public void onKey(int primaryCode, int[] keyCodes) { 204053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (primaryCode) { 205053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_HAN_ALPHA: 206053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project this.changeKeyMode(KEYMODE_EN_ALPHABET); 207053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 208053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 209053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_HAN_NUM: 210053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project this.changeKeyMode(KEYMODE_EN_NUMBER); 211053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 212053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 213053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_PHONE: 214053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project this.changeKeyMode(KEYMODE_EN_PHONE); 215053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 216053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 217053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_EMOJI: 218053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_SYMBOLS)); 219053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 221053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_TOGGLE_MODE: 222053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch(mCurrentKeyMode){ 223053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_EN_ALPHABET: 224053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (TOGGLE_KEYBOARD[KEYMODE_EN_NUMBER]){ 225053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_NUMBER; 226053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if (TOGGLE_KEYBOARD[KEYMODE_EN_PHONE]) { 227053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_PHONE; 228053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 229053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 230053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_EN_NUMBER: 231053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (TOGGLE_KEYBOARD[KEYMODE_EN_PHONE]) { 232053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_PHONE; 233053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if(TOGGLE_KEYBOARD[KEYMODE_EN_ALPHABET]) { 234053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_ALPHABET; 235053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 236053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 237053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_EN_PHONE: 238053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (TOGGLE_KEYBOARD[KEYMODE_EN_ALPHABET]) { 239053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_ALPHABET; 240053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else if (TOGGLE_KEYBOARD[KEYMODE_EN_NUMBER]) { 241053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_EN_NUMBER; 242053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 243053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 244053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 245053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbdp = 246053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode][0]; 247053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project super.changeKeyboard(kbdp); 248053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 249053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_QWERTY_BACKSPACE: 251053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_JP12_BACKSPACE: 252053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 253053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))); 254053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 255053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 256053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_QWERTY_SHIFT: 257053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project toggleShiftLock(); 258053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 259053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 260053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_QWERTY_ALT: 261053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project processAltKey(); 262053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 263053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 264053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_ENTER: 265053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_ENTER: 266053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 267053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))); 268053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 269053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 270053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_LEFT: 271053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 272053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, 273053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project KeyEvent.KEYCODE_DPAD_LEFT))); 274053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 275053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 276053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_RIGHT: 277053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 278053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, 279053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project KeyEvent.KEYCODE_DPAD_RIGHT))); 280053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 281053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (primaryCode >= 0) { 282053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mKeyboardView.isShifted()) { 283053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project primaryCode = Character.toUpperCase(primaryCode); 284053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 285053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_CHAR, (char)primaryCode)); 286053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 287053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 288053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 289053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* update shift key's state */ 290053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mCapsLock && primaryCode != KEYCODE_QWERTY_SHIFT) { 2913feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa if(mCurrentKeyMode != KEYMODE_EN_NUMBER){ 2923feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa int shift = (mAutoCaps)? getShiftKeyState(mWnn.getCurrentInputEditorInfo()) : 0; 2933feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa if (shift != mShiftOn) { 2943feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa Keyboard kbd = getShiftChangeKeyboard(shift); 2953feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa mShiftOn = shift; 2963feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa changeKeyboard(kbd); 2973feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa } 2983feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa }else{ 2993feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa mShiftOn = KEYBOARD_SHIFT_OFF; 3003feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa Keyboard kbd = getShiftChangeKeyboard(mShiftOn); 301053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 302053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 303053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 304053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 305053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 306053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 3077b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 3083feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa 309