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.JAJP; 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport android.app.AlertDialog; 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport jp.co.omronsoft.openwnn.*; 2159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport android.content.DialogInterface; 2259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport android.content.res.Resources; 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.KeyEvent; 24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.inputmethod.EditorInfo; 25e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.view.inputmethod.InputConnection; 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.util.Log; 27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.View; 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.SharedPreferences; 2959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 3059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.Keyboard; 3159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.BaseInputView; 3259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monmaimport jp.co.omronsoft.openwnn.R; 3359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.util.HashMap; 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.util.Locale; 36e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport java.util.List; 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/** 393feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * The default Software Keyboard class for Japanese IME. 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 413feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpublic class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Enable English word prediction on half-width alphabet mode */ 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final boolean USE_ENGLISH_PREDICT = true; 46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to full-width HIRAGANA mode */ 48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_FULL_HIRAGANA = -301; 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to full-width KATAKANA mode */ 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_FULL_KATAKANA = -302; 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to full-width alphabet mode */ 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_FULL_ALPHABET = -303; 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to full-width number mode */ 57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_FULL_NUMBER = -304; 58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to half-width KATAKANA mode */ 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_HALF_KATAKANA = -306; 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to half-width alphabet mode */ 63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_HALF_ALPHABET = -307; 64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for switching to half-width number mode */ 66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SWITCH_HALF_NUMBER = -308; 67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for case toggle key */ 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_SELECT_CASE = -309; 70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for EISU-KANA conversion */ 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_EISU_KANA = -305; 73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Key code for NOP (no-operation) */ 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int KEYCODE_NOP = -310; 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Input mode toggle cycle table */ 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int[] JP_MODE_CYCLE_TABLE = { 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_HALF_ALPHABET, KEYMODE_JA_HALF_NUMBER 81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 837b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** Definition for {@code mInputType} (toggle) */ 847b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private static final int INPUT_TYPE_TOGGLE = 1; 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 867b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** Definition for {@code mInputType} (commit instantly) */ 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int INPUT_TYPE_INSTANT = 2; 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 89e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** Max key number of the 12 key keyboard (depends on the definition of keyboards) */ 90e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private static final int KEY_NUMBER_12KEY = 20; 91e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Toggle cycle table for full-width HIRAGANA */ 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final String[][] JP_FULL_HIRAGANA_CYCLE_TABLE = { 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u3042", "\u3044", "\u3046", "\u3048", "\u304a", "\u3041", "\u3043", "\u3045", "\u3047", "\u3049"}, 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u304b", "\u304d", "\u304f", "\u3051", "\u3053"}, 96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u3055", "\u3057", "\u3059", "\u305b", "\u305d"}, 97053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u305f", "\u3061", "\u3064", "\u3066", "\u3068", "\u3063"}, 98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u306a", "\u306b", "\u306c", "\u306d", "\u306e"}, 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u306f", "\u3072", "\u3075", "\u3078", "\u307b"}, 100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u307e", "\u307f", "\u3080", "\u3081", "\u3082"}, 101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u3084", "\u3086", "\u3088", "\u3083", "\u3085", "\u3087"}, 102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u3089", "\u308a", "\u308b", "\u308c", "\u308d"}, 103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u308f", "\u3092", "\u3093", "\u308e", "\u30fc"}, 104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u3001", "\u3002", "\uff1f", "\uff01", "\u30fb", "\u3000"}, 105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Replace table for full-width HIRAGANA */ 1087b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private static final HashMap<String, String> JP_FULL_HIRAGANA_REPLACE_TABLE = new HashMap<String, String>() {{ 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3042", "\u3041"); put("\u3044", "\u3043"); put("\u3046", "\u3045"); put("\u3048", "\u3047"); put("\u304a", "\u3049"); 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3041", "\u3042"); put("\u3043", "\u3044"); put("\u3045", "\u30f4"); put("\u3047", "\u3048"); put("\u3049", "\u304a"); 111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u304b", "\u304c"); put("\u304d", "\u304e"); put("\u304f", "\u3050"); put("\u3051", "\u3052"); put("\u3053", "\u3054"); 112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u304c", "\u304b"); put("\u304e", "\u304d"); put("\u3050", "\u304f"); put("\u3052", "\u3051"); put("\u3054", "\u3053"); 113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3055", "\u3056"); put("\u3057", "\u3058"); put("\u3059", "\u305a"); put("\u305b", "\u305c"); put("\u305d", "\u305e"); 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3056", "\u3055"); put("\u3058", "\u3057"); put("\u305a", "\u3059"); put("\u305c", "\u305b"); put("\u305e", "\u305d"); 115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u305f", "\u3060"); put("\u3061", "\u3062"); put("\u3064", "\u3063"); put("\u3066", "\u3067"); put("\u3068", "\u3069"); 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3060", "\u305f"); put("\u3062", "\u3061"); put("\u3063", "\u3065"); put("\u3067", "\u3066"); put("\u3069", "\u3068"); 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3065", "\u3064"); put("\u30f4", "\u3046"); 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u306f", "\u3070"); put("\u3072", "\u3073"); put("\u3075", "\u3076"); put("\u3078", "\u3079"); put("\u307b", "\u307c"); 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3070", "\u3071"); put("\u3073", "\u3074"); put("\u3076", "\u3077"); put("\u3079", "\u307a"); put("\u307c", "\u307d"); 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3071", "\u306f"); put("\u3074", "\u3072"); put("\u3077", "\u3075"); put("\u307a", "\u3078"); put("\u307d", "\u307b"); 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3084", "\u3083"); put("\u3086", "\u3085"); put("\u3088", "\u3087"); 122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u3083", "\u3084"); put("\u3085", "\u3086"); put("\u3087", "\u3088"); 123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u308f", "\u308e"); 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u308e", "\u308f"); 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u309b", "\u309c"); 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u309c", "\u309b"); 127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }}; 128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Toggle cycle table for full-width KATAKANA */ 130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final String[][] JP_FULL_KATAKANA_CYCLE_TABLE = { 131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30a2", "\u30a4", "\u30a6", "\u30a8", "\u30aa", "\u30a1", "\u30a3", 132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project "\u30a5", "\u30a7", "\u30a9"}, 133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30ab", "\u30ad", "\u30af", "\u30b1", "\u30b3"}, 134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30b5", "\u30b7", "\u30b9", "\u30bb", "\u30bd"}, 135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30bf", "\u30c1", "\u30c4", "\u30c6", "\u30c8", "\u30c3"}, 136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30ca", "\u30cb", "\u30cc", "\u30cd", "\u30ce"}, 137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30cf", "\u30d2", "\u30d5", "\u30d8", "\u30db"}, 138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30de", "\u30df", "\u30e0", "\u30e1", "\u30e2"}, 139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30e4", "\u30e6", "\u30e8", "\u30e3", "\u30e5", "\u30e7"}, 140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30e9", "\u30ea", "\u30eb", "\u30ec", "\u30ed"}, 141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u30ef", "\u30f2", "\u30f3", "\u30ee", "\u30fc"}, 142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\u3001", "\u3002", "\uff1f", "\uff01", "\u30fb", "\u3000"} 143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Replace table for full-width KATAKANA */ 1467b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private static final HashMap<String,String> JP_FULL_KATAKANA_REPLACE_TABLE = new HashMap<String,String>() {{ 147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30a2", "\u30a1"); put("\u30a4", "\u30a3"); put("\u30a6", "\u30a5"); put("\u30a8", "\u30a7"); put("\u30aa", "\u30a9"); 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30a1", "\u30a2"); put("\u30a3", "\u30a4"); put("\u30a5", "\u30f4"); put("\u30a7", "\u30a8"); put("\u30a9", "\u30aa"); 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30ab", "\u30ac"); put("\u30ad", "\u30ae"); put("\u30af", "\u30b0"); put("\u30b1", "\u30b2"); put("\u30b3", "\u30b4"); 150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30ac", "\u30ab"); put("\u30ae", "\u30ad"); put("\u30b0", "\u30af"); put("\u30b2", "\u30b1"); put("\u30b4", "\u30b3"); 151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30b5", "\u30b6"); put("\u30b7", "\u30b8"); put("\u30b9", "\u30ba"); put("\u30bb", "\u30bc"); put("\u30bd", "\u30be"); 152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30b6", "\u30b5"); put("\u30b8", "\u30b7"); put("\u30ba", "\u30b9"); put("\u30bc", "\u30bb"); put("\u30be", "\u30bd"); 153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30bf", "\u30c0"); put("\u30c1", "\u30c2"); put("\u30c4", "\u30c3"); put("\u30c6", "\u30c7"); put("\u30c8", "\u30c9"); 154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30c0", "\u30bf"); put("\u30c2", "\u30c1"); put("\u30c3", "\u30c5"); put("\u30c7", "\u30c6"); put("\u30c9", "\u30c8"); 155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30c5", "\u30c4"); put("\u30f4", "\u30a6"); 156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30cf", "\u30d0"); put("\u30d2", "\u30d3"); put("\u30d5", "\u30d6"); put("\u30d8", "\u30d9"); put("\u30db", "\u30dc"); 157053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30d0", "\u30d1"); put("\u30d3", "\u30d4"); put("\u30d6", "\u30d7"); put("\u30d9", "\u30da"); put("\u30dc", "\u30dd"); 158053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30d1", "\u30cf"); put("\u30d4", "\u30d2"); put("\u30d7", "\u30d5"); put("\u30da", "\u30d8"); put("\u30dd", "\u30db"); 159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30e4", "\u30e3"); put("\u30e6", "\u30e5"); put("\u30e8", "\u30e7"); 160053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30e3", "\u30e4"); put("\u30e5", "\u30e6"); put("\u30e7", "\u30e8"); 161053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30ef", "\u30ee"); 162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\u30ee", "\u30ef"); 163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }}; 164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Toggle cycle table for half-width KATAKANA */ 166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final String[][] JP_HALF_KATAKANA_CYCLE_TABLE = { 167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff71", "\uff72", "\uff73", "\uff74", "\uff75", "\uff67", "\uff68", "\uff69", "\uff6a", "\uff6b"}, 168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff76", "\uff77", "\uff78", "\uff79", "\uff7a"}, 169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff7b", "\uff7c", "\uff7d", "\uff7e", "\uff7f"}, 170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff80", "\uff81", "\uff82", "\uff83", "\uff84", "\uff6f"}, 171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff85", "\uff86", "\uff87", "\uff88", "\uff89"}, 172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff8a", "\uff8b", "\uff8c", "\uff8d", "\uff8e"}, 173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff8f", "\uff90", "\uff91", "\uff92", "\uff93"}, 174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff94", "\uff95", "\uff96", "\uff6c", "\uff6d", "\uff6e"}, 175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff97", "\uff98", "\uff99", "\uff9a", "\uff9b"}, 176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff9c", "\uff66", "\uff9d", "\uff70"}, 177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff64", "\uff61", "?", "!", "\uff65", " "}, 178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Replace table for half-width KATAKANA */ 1817b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private static final HashMap<String,String> JP_HALF_KATAKANA_REPLACE_TABLE = new HashMap<String,String>() {{ 182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff71", "\uff67"); put("\uff72", "\uff68"); put("\uff73", "\uff69"); put("\uff74", "\uff6a"); put("\uff75", "\uff6b"); 183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff67", "\uff71"); put("\uff68", "\uff72"); put("\uff69", "\uff73\uff9e"); put("\uff6a", "\uff74"); put("\uff6b", "\uff75"); 184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff76", "\uff76\uff9e"); put("\uff77", "\uff77\uff9e"); put("\uff78", "\uff78\uff9e"); put("\uff79", "\uff79\uff9e"); put("\uff7a", "\uff7a\uff9e"); 185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff76\uff9e", "\uff76"); put("\uff77\uff9e", "\uff77"); put("\uff78\uff9e", "\uff78"); put("\uff79\uff9e", "\uff79"); put("\uff7a\uff9e", "\uff7a"); 186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff7b", "\uff7b\uff9e"); put("\uff7c", "\uff7c\uff9e"); put("\uff7d", "\uff7d\uff9e"); put("\uff7e", "\uff7e\uff9e"); put("\uff7f", "\uff7f\uff9e"); 187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff7b\uff9e", "\uff7b"); put("\uff7c\uff9e", "\uff7c"); put("\uff7d\uff9e", "\uff7d"); put("\uff7e\uff9e", "\uff7e"); put("\uff7f\uff9e", "\uff7f"); 188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff80", "\uff80\uff9e"); put("\uff81", "\uff81\uff9e"); put("\uff82", "\uff6f"); put("\uff83", "\uff83\uff9e"); put("\uff84", "\uff84\uff9e"); 189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff80\uff9e", "\uff80"); put("\uff81\uff9e", "\uff81"); put("\uff6f", "\uff82\uff9e"); put("\uff83\uff9e", "\uff83"); put("\uff84\uff9e", "\uff84"); 190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff82\uff9e", "\uff82"); 191053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff8a", "\uff8a\uff9e"); put("\uff8b", "\uff8b\uff9e"); put("\uff8c", "\uff8c\uff9e"); put("\uff8d", "\uff8d\uff9e"); put("\uff8e", "\uff8e\uff9e"); 192053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff8a\uff9e", "\uff8a\uff9f");put("\uff8b\uff9e", "\uff8b\uff9f");put("\uff8c\uff9e", "\uff8c\uff9f");put("\uff8d\uff9e", "\uff8d\uff9f");put("\uff8e\uff9e", "\uff8e\uff9f"); 193053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff8a\uff9f", "\uff8a"); put("\uff8b\uff9f", "\uff8b"); put("\uff8c\uff9f", "\uff8c"); put("\uff8d\uff9f", "\uff8d"); put("\uff8e\uff9f", "\uff8e"); 194053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff94", "\uff6c"); put("\uff95", "\uff6d"); put("\uff96", "\uff6e"); 195053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff6c", "\uff94"); put("\uff6d", "\uff95"); put("\uff6e", "\uff96"); 196053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff9c", "\uff9c"); put("\uff73\uff9e", "\uff73"); 197053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }}; 198053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 199053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Toggle cycle table for full-width alphabet */ 200053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final String[][] JP_FULL_ALPHABET_CYCLE_TABLE = { 201053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff0e", "\uff20", "\uff0d", "\uff3f", "\uff0f", "\uff1a", "\uff5e", "\uff11"}, 202053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff41", "\uff42", "\uff43", "\uff21", "\uff22", "\uff23", "\uff12"}, 203053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff44", "\uff45", "\uff46", "\uff24", "\uff25", "\uff26", "\uff13"}, 204053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff47", "\uff48", "\uff49", "\uff27", "\uff28", "\uff29", "\uff14"}, 205053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff4a", "\uff4b", "\uff4c", "\uff2a", "\uff2b", "\uff2c", "\uff15"}, 206053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff4d", "\uff4e", "\uff4f", "\uff2d", "\uff2e", "\uff2f", "\uff16"}, 207053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff50", "\uff51", "\uff52", "\uff53", "\uff30", "\uff31", "\uff32", "\uff33", "\uff17"}, 208053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff54", "\uff55", "\uff56", "\uff34", "\uff35", "\uff36", "\uff18"}, 209053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff57", "\uff58", "\uff59", "\uff5a", "\uff37", "\uff38", "\uff39", "\uff3a", "\uff19"}, 2107b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa {"\uff0d", "\uff10"}, 211053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"\uff0c", "\uff0e", "\uff1f", "\uff01", "\u30fb", "\u3000"} 212053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 213053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 214053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Replace table for full-width alphabet */ 2157b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private static final HashMap<String,String> JP_FULL_ALPHABET_REPLACE_TABLE = new HashMap<String,String>() {{ 216053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff21", "\uff41"); put("\uff22", "\uff42"); put("\uff23", "\uff43"); put("\uff24", "\uff44"); put("\uff25", "\uff45"); 217053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff41", "\uff21"); put("\uff42", "\uff22"); put("\uff43", "\uff23"); put("\uff44", "\uff24"); put("\uff45", "\uff25"); 218053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff26", "\uff46"); put("\uff27", "\uff47"); put("\uff28", "\uff48"); put("\uff29", "\uff49"); put("\uff2a", "\uff4a"); 219053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff46", "\uff26"); put("\uff47", "\uff27"); put("\uff48", "\uff28"); put("\uff49", "\uff29"); put("\uff4a", "\uff2a"); 220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff2b", "\uff4b"); put("\uff2c", "\uff4c"); put("\uff2d", "\uff4d"); put("\uff2e", "\uff4e"); put("\uff2f", "\uff4f"); 221053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff4b", "\uff2b"); put("\uff4c", "\uff2c"); put("\uff4d", "\uff2d"); put("\uff4e", "\uff2e"); put("\uff4f", "\uff2f"); 222053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff30", "\uff50"); put("\uff31", "\uff51"); put("\uff32", "\uff52"); put("\uff33", "\uff53"); put("\uff34", "\uff54"); 223053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff50", "\uff30"); put("\uff51", "\uff31"); put("\uff52", "\uff32"); put("\uff53", "\uff33"); put("\uff54", "\uff34"); 224053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff35", "\uff55"); put("\uff36", "\uff56"); put("\uff37", "\uff57"); put("\uff38", "\uff58"); put("\uff39", "\uff59"); 225053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff55", "\uff35"); put("\uff56", "\uff36"); put("\uff57", "\uff37"); put("\uff58", "\uff38"); put("\uff59", "\uff39"); 226053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff3a", "\uff5a"); 227053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("\uff5a", "\uff3a"); 228053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }}; 229053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 230053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Toggle cycle table for half-width alphabet */ 231053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final String[][] JP_HALF_ALPHABET_CYCLE_TABLE = { 232053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {".", "@", "-", "_", "/", ":", "~", "1"}, 233053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"a", "b", "c", "A", "B", "C", "2"}, 234053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"d", "e", "f", "D", "E", "F", "3"}, 235053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"g", "h", "i", "G", "H", "I", "4"}, 236053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"j", "k", "l", "J", "K", "L", "5"}, 237053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"m", "n", "o", "M", "N", "O", "6"}, 238053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"p", "q", "r", "s", "P", "Q", "R", "S", "7"}, 239053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"t", "u", "v", "T", "U", "V", "8"}, 240053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"w", "x", "y", "z", "W", "X", "Y", "Z", "9"}, 241053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {"-", "0"}, 242053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project {",", ".", "?", "!", ";", " "} 243053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 244053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 245053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Replace table for half-width alphabet */ 2467b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private static final HashMap<String,String> JP_HALF_ALPHABET_REPLACE_TABLE = new HashMap<String,String>() {{ 247053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("A", "a"); put("B", "b"); put("C", "c"); put("D", "d"); put("E", "e"); 248053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("a", "A"); put("b", "B"); put("c", "C"); put("d", "D"); put("e", "E"); 249053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("F", "f"); put("G", "g"); put("H", "h"); put("I", "i"); put("J", "j"); 250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("f", "F"); put("g", "G"); put("h", "H"); put("i", "I"); put("j", "J"); 251053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("K", "k"); put("L", "l"); put("M", "m"); put("N", "n"); put("O", "o"); 252053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("k", "K"); put("l", "L"); put("m", "M"); put("n", "N"); put("o", "O"); 253053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("P", "p"); put("Q", "q"); put("R", "r"); put("S", "s"); put("T", "t"); 254053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("p", "P"); put("q", "Q"); put("r", "R"); put("s", "S"); put("t", "T"); 255053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("U", "u"); put("V", "v"); put("W", "w"); put("X", "x"); put("Y", "y"); 256053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("u", "U"); put("v", "V"); put("w", "W"); put("x", "X"); put("y", "Y"); 257053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("Z", "z"); 258053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project put("z", "Z"); 259053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }}; 260053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 261053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Character table for full-width number */ 262053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final char[] INSTANT_CHAR_CODE_FULL_NUMBER = 263053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project "\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\uff10\uff03\uff0a".toCharArray(); 264053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 265053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Character table for half-width number */ 266053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final char[] INSTANT_CHAR_CODE_HALF_NUMBER = 267053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project "1234567890#*".toCharArray(); 268053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 269053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The constant for mFixedKeyMode. It means that input mode is not fixed. */ 270053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static final int INVALID_KEYMODE = -1; 271053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 272e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** KeyIndex of "Moji" key on 12 keyboard (depends on the definition of keyboards) */ 273e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private static final int KEY_INDEX_CHANGE_MODE_12KEY = 15; 274e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 275e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** KeyIndex of "Moji" key on QWERTY keyboard (depends on the definition of keyboards) */ 276e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private static final int KEY_INDEX_CHANGE_MODE_QWERTY = 29; 277e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 278053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Type of input mode */ 2797b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private int mInputType = INPUT_TYPE_TOGGLE; 280053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 281053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Previous input character code */ 282053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int mPrevInputKeyCode = 0; 283053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 284053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 285053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Character table to input when mInputType becomes INPUT_TYPE_INSTANT. 286053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * (Either INSTANT_CHAR_CODE_FULL_NUMBER or INSTANT_CHAR_CODE_HALF_NUMBER) 287053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 288053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private char[] mCurrentInstantTable = null; 289053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 290053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Input mode that is not able to be changed. If ENABLE_CHANGE_KEYMODE is set, input mode can change. */ 291e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private int[] mLimitedKeyMode = null; 292053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 293053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Input mode that is given the first priority. If ENABLE_CHANGE_KEYMODE is set, input mode can change. */ 294053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int mPreferenceKeyMode = INVALID_KEYMODE; 295053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 296053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The last input type */ 297053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int mLastInputType = 0; 298053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 2997b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** Auto caps mode */ 3007b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa private boolean mEnableAutoCaps = true; 301053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 302e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** PopupResId of "Moji" key (this is used for canceling long-press) */ 303e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private int mPopupResId = 0; 304e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 305e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** Whether the InputType is null */ 306e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private boolean mIsInputTypeNull = false; 307e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 308e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** {@code SharedPreferences} for save the keyboard type */ 309e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private SharedPreferences.Editor mPrefEditor = null; 310e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 311e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** "Moji" key (this is used for canceling long-press) */ 312e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private Keyboard.Key mChangeModeKey = null; 313e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 314053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 315053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Default constructor */ 316053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public DefaultSoftKeyboardJAJP() { 317053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentLanguage = LANG_JA; 31859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (OpenWnn.isXLarge()) { 31959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mCurrentKeyboardType = KEYBOARD_QWERTY; 32059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 32159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mCurrentKeyboardType = KEYBOARD_12KEY; 32259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 323053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = KEYBOARD_SHIFT_OFF; 324053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = KEYMODE_JA_FULL_HIRAGANA; 325053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 326053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 327053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#createKeyboards */ 328053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override protected void createKeyboards(OpenWnn parent) { 329053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 330053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* Keyboard[# of Languages][portrait/landscape][# of keyboard type][shift off/on][max # of key-modes][noinput/input] */ 331053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mKeyboard = new Keyboard[3][2][4][2][8][2]; 332053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 3337b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mHardKeyboardHidden) { 334e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Create the suitable keyboard object */ 3357b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mDisplayMode == DefaultSoftKeyboard.PORTRAIT) { 3367b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa createKeyboardsPortrait(parent); 3377b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } else { 3387b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa createKeyboardsLandscape(parent); 3397b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 3407b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 3417b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mCurrentKeyboardType == KEYBOARD_12KEY) { 3427b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 3437b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); 3447b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } else { 3457b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 3467b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); 3477b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 34859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else if (mEnableHardware12Keyboard) { 34959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 35059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); 351053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 3527b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 3537b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); 354053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 355053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 356053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 357053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 358e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Commit the pre-edit string for committing operation that is not explicit 359e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * (ex. when a candidate is selected) 360053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 361053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void commitText() { 362053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!mNoInput) { 363053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.COMMIT_COMPOSING_TEXT)); 364053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 365053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 366053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 367053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 368053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change input mode 369053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 370053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param keyMode The type of input mode 371053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 372053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void changeKeyMode(int keyMode) { 373e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int targetMode = filterKeyMode(keyMode); 374e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (targetMode == INVALID_KEYMODE) { 375e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return; 376e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 377e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 378053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project commitText(); 379053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 380053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mCapsLock) { 381e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 382053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_UP, 383053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project KeyEvent.KEYCODE_SHIFT_LEFT))); 384053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCapsLock = false; 385053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 386053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = KEYBOARD_SHIFT_OFF; 387053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbd = getModeChangeKeyboard(targetMode); 388053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyMode = targetMode; 389053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mPrevInputKeyCode = 0; 390053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 391053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int mode = OpenWnnEvent.Mode.DIRECT; 392053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 393053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (targetMode) { 394053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_HIRAGANA: 3957b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mInputType = INPUT_TYPE_TOGGLE; 396053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnEvent.Mode.DEFAULT; 397053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 398053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 399053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_ALPHABET: 4007b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (USE_ENGLISH_PREDICT) { 4017b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mInputType = INPUT_TYPE_TOGGLE; 402053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnEvent.Mode.NO_LV1_CONV; 403053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 4047b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mInputType = INPUT_TYPE_TOGGLE; 405053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnEvent.Mode.DIRECT; 406053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 407053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 408053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 409053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_NUMBER: 410053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mInputType = INPUT_TYPE_INSTANT; 411053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnEvent.Mode.DIRECT; 412053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentInstantTable = INSTANT_CHAR_CODE_FULL_NUMBER; 413053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 414053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 415053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_NUMBER: 416053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mInputType = INPUT_TYPE_INSTANT; 417053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnEvent.Mode.DIRECT; 418053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentInstantTable = INSTANT_CHAR_CODE_HALF_NUMBER; 419053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 420053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 421053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_KATAKANA: 4227b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mInputType = INPUT_TYPE_TOGGLE; 423053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnJAJP.ENGINE_MODE_FULL_KATAKANA; 424053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 425053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 426053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_ALPHABET: 4277b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mInputType = INPUT_TYPE_TOGGLE; 428053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnEvent.Mode.DIRECT; 429053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 430053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 431053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_KATAKANA: 4327b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mInputType = INPUT_TYPE_TOGGLE; 433053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mode = OpenWnnJAJP.ENGINE_MODE_HALF_KATAKANA; 434053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 435053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 436053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 437053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 438053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 439053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 440053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project setStatusIcon(); 441053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 442053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, mode)); 443053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 444053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 4457b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#initView */ 4467b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa @Override public View initView(OpenWnn parent, int width, int height) { 447053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 4487b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa View view = super.initView(parent, width, height); 4497b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa changeKeyboard(mKeyboard[mCurrentLanguage][mDisplayMode][mCurrentKeyboardType][mShiftOn][mCurrentKeyMode][0]); 450053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 451053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return view; 4527b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 453053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 454e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#changeKeyboard */ 455e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa @Override protected boolean changeKeyboard(Keyboard keyboard) { 456e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (keyboard != null) { 4572d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa if (mIsInputTypeNull && mChangeModeKey != null) { 458e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mChangeModeKey.popupResId = mPopupResId; 459e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 460e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 461e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa List<Keyboard.Key> keys = keyboard.getKeys(); 462e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int keyIndex = (KEY_NUMBER_12KEY < keys.size()) 463e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa ? KEY_INDEX_CHANGE_MODE_QWERTY : KEY_INDEX_CHANGE_MODE_12KEY; 464e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mChangeModeKey = keys.get(keyIndex); 465e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 4662d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa if (mIsInputTypeNull && mChangeModeKey != null) { 467e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mPopupResId = mChangeModeKey.popupResId; 468e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mChangeModeKey.popupResId = 0; 469e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 470e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 471e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 472e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return super.changeKeyboard(keyboard); 473e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 474e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 475053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#changeKeyboardType */ 476053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public void changeKeyboardType(int type) { 477053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project commitText(); 478053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard kbd = getTypeChangeKeyboard(type); 479053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (kbd != null) { 480053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentKeyboardType = type; 481e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mPrefEditor.putBoolean("opt_enable_qwerty", type == KEYBOARD_QWERTY); 482e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mPrefEditor.commit(); 483053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(kbd); 484053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 485053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (type == KEYBOARD_12KEY) { 486053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); 487053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 488053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); 489053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 490053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 491053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 492053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#onKey */ 493053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public void onKey(int primaryCode, int[] keyCodes) { 494053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 49577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa if (mDisableKeyInput) { 49677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa return; 49777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa } 49877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa 499053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (primaryCode) { 500053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_TOGGLE_MODE: 501053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_TOGGLE_MODE: 502e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (!mIsInputTypeNull) { 503e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa nextKeyMode(); 504e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 505053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 506053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 507053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_QWERTY_BACKSPACE: 508053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_BACKSPACE: 509053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 510053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))); 511053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 512053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 513053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_QWERTY_SHIFT: 514053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project toggleShiftLock(); 515053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 516053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 517053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DefaultSoftKeyboard.KEYCODE_QWERTY_ALT: 518053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project processAltKey(); 519053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 520053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 521053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_ENTER: 522053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_ENTER: 523053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 524053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))); 525053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 526053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 527053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_REVERSE: 52859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (!mNoInput && !mEnableHardware12Keyboard) { 529053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.TOGGLE_REVERSE_CHAR, mCurrentCycleTable)); 530053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 531053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 532053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 533053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_KBD: 534053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboardType(KEYBOARD_12KEY); 535053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 536053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 537053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_KBD: 538053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboardType(KEYBOARD_QWERTY); 539053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 540053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 541053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_EMOJI: 542053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_QWERTY_EMOJI: 543053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project commitText(); 544053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, OpenWnnJAJP.ENGINE_MODE_SYMBOL)); 545053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 546053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 547053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_1: 548053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_2: 549053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_3: 550053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_4: 551053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_5: 552053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_6: 553053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_7: 554053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_8: 555053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_9: 556053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_0: 557053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_SHARP: 558e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Processing to input by ten key */ 559e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mInputType == INPUT_TYPE_INSTANT) { 560e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Send a input character directly if instant input type is selected */ 561053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project commitText(); 562053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_CHAR, 563053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentInstantTable[getTableIndex(primaryCode)])); 564053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 565053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if ((mPrevInputKeyCode != primaryCode)) { 566e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.TOUCH_OTHER_KEY)); 567053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if ((mCurrentKeyMode == KEYMODE_JA_HALF_ALPHABET) 568053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project && (primaryCode == KEYCODE_JP12_SHARP)) { 569e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Commit text by symbol character (',' '.') when alphabet input mode is selected */ 570e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa commitText(); 571053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 572053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 573053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 5743feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa /* Convert the key code to the table index and send the toggle event with the table index */ 575053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project String[][] cycleTable = getCycleTable(); 576053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (cycleTable == null) { 577053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Log.e("OpenWnn", "not founds cycle table"); 578053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 579053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int index = getTableIndex(primaryCode); 580053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.TOGGLE_CHAR, cycleTable[index])); 581053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentCycleTable = cycleTable[index]; 582053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 583053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mPrevInputKeyCode = primaryCode; 584053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 585053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 586053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 587053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_ASTER: 588053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mInputType == INPUT_TYPE_INSTANT) { 589053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project commitText(); 590053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_CHAR, 591053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mCurrentInstantTable[getTableIndex(primaryCode)])); 592053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 593e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (!mNoInput) { 594e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Processing to toggle Dakuten, Handakuten, and capital */ 595e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa HashMap replaceTable = getReplaceTable(); 5967b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (replaceTable == null) { 5977b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa Log.e("OpenWnn", "not founds replace table"); 5987b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } else { 5997b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.REPLACE_CHAR, replaceTable)); 6007b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mPrevInputKeyCode = primaryCode; 6017b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 602053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 603053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 604053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 605053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 606053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SWITCH_FULL_HIRAGANA: 607e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Full width hiragana */ 608e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_FULL_HIRAGANA); 609053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 610053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 611053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SWITCH_FULL_KATAKANA: 612e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Full width katakana */ 613e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_FULL_KATAKANA); 614053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 615053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 616053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SWITCH_FULL_ALPHABET: 617e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Full width alphabet */ 618e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_FULL_ALPHABET); 619053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 620053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 621053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SWITCH_FULL_NUMBER: 622e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Full width numeric */ 623e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_FULL_NUMBER); 624053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 625053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 626053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SWITCH_HALF_KATAKANA: 627e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Half width katakana */ 628e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_HALF_KATAKANA); 629053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 630053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 6313feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa case KEYCODE_SWITCH_HALF_ALPHABET: 632e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Half width alphabet */ 633e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_HALF_ALPHABET); 634053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 635053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 636053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SWITCH_HALF_NUMBER: 637e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Change mode to Half width numeric */ 638e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(KEYMODE_JA_HALF_NUMBER); 639053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 640053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 641053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 642053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_SELECT_CASE: 643053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int shifted = (mShiftOn == 0) ? 1 : 0; 644053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard newKeyboard = getShiftChangeKeyboard(shifted); 645053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (newKeyboard != null) { 646053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = shifted; 647053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(newKeyboard); 648053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 649053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 650053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 651053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_SPACE: 652053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if ((mCurrentKeyMode == KEYMODE_JA_FULL_HIRAGANA) && !mNoInput) { 653053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CONVERT)); 654053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 655053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_CHAR, ' ')); 656053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 657053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 658053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 659053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_EISU_KANA: 660053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, OpenWnnJAJP.ENGINE_MODE_EISU_KANA)); 661053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 662053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 663053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_CLOSE: 664053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_KEY, 665053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK))); 666053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 667053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 668053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_LEFT: 669053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 670053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, 671053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project KeyEvent.KEYCODE_DPAD_LEFT))); 672053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 673053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 674053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_JP12_RIGHT: 675053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_SOFT_KEY, 676053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new KeyEvent(KeyEvent.ACTION_DOWN, 677053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project KeyEvent.KEYCODE_DPAD_RIGHT))); 678053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 679053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYCODE_NOP: 680053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 681053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 682053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 683053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (primaryCode >= 0) { 684053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mKeyboardView.isShifted()) { 685053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project primaryCode = Character.toUpperCase(primaryCode); 686053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 687053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_CHAR, (char)primaryCode)); 688053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 689053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 690053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 6917b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 692053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* update shift key's state */ 6937b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (!mCapsLock && (primaryCode != DefaultSoftKeyboard.KEYCODE_QWERTY_SHIFT)) { 694053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project setShiftByEditorInfo(); 695053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 696053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 697053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 698053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setPreferences */ 699053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public void setPreferences(SharedPreferences pref, EditorInfo editor) { 700e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mPrefEditor = pref.edit(); 70159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma boolean isQwerty; 70259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (OpenWnn.isXLarge()) { 70359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma isQwerty = pref.getBoolean("opt_enable_qwerty", true); 70459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 70559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma isQwerty = pref.getBoolean("opt_enable_qwerty", false); 70659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 70759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 708e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (isQwerty && (mCurrentKeyboardType == KEYBOARD_12KEY)) { 709e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyboardType(KEYBOARD_QWERTY); 710e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 711e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 712053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project super.setPreferences(pref, editor); 713053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 714053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int inputType = editor.inputType; 715e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mHardKeyboardHidden) { 716e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (inputType == EditorInfo.TYPE_NULL) { 717e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (!mIsInputTypeNull) { 718e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mIsInputTypeNull = true; 7192d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa if (mChangeModeKey != null) { 7202d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa mPopupResId = mChangeModeKey.popupResId; 7212d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa mChangeModeKey.popupResId = 0; 7222d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa } 723e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 724e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return; 725e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 726e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 727e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mIsInputTypeNull) { 728e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mIsInputTypeNull = false; 7292d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa if (mChangeModeKey != null) { 7302d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa mChangeModeKey.popupResId = mPopupResId; 7312d6595cdc6058d8712a90fc499b7c8b539f81247Daisuke Miyakawa } 732e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 733053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 734053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 7357b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa mEnableAutoCaps = pref.getBoolean("auto_caps", true); 736e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mLimitedKeyMode = null; 737053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mPreferenceKeyMode = INVALID_KEYMODE; 73877ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa mNoInput = true; 73977ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa mDisableKeyInput = false; 740e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mCapsLock = false; 741053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 742053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (inputType & EditorInfo.TYPE_MASK_CLASS) { 743053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 744053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_NUMBER: 745053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_DATETIME: 746053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mPreferenceKeyMode = KEYMODE_JA_HALF_NUMBER; 747053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 748053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 749053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_PHONE: 750e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mHardKeyboardHidden) { 751e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_PHONE}; 75259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else if (mEnableHardware12Keyboard) { 75359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_NUMBER}; 754e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } else { 755e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_ALPHABET}; 756e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 757053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 758053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 759053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_CLASS_TEXT: 760053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (inputType & EditorInfo.TYPE_MASK_VARIATION) { 761053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 762053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_TEXT_VARIATION_PASSWORD: 7630470b8581ba08779a7cc223c050e7b3556891f45Daisuke Miyakawa case EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD: 764e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_ALPHABET, KEYMODE_JA_HALF_NUMBER}; 765053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 766053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 767053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS: 768053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case EditorInfo.TYPE_TEXT_VARIATION_URI: 769053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mPreferenceKeyMode = KEYMODE_JA_HALF_ALPHABET; 770053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 771053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 772053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 773053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 774053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 775053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 776053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 777053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 778053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 779053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 780053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 781053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (inputType != mLastInputType) { 782053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project setDefaultKeyboard(); 783053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mLastInputType = inputType; 784053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 785053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 786e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa setStatusIcon(); 787053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project setShiftByEditorInfo(); 788053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 789053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 7907b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#onUpdateState */ 7917b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa @Override public void onUpdateState(OpenWnn parent) { 7927b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa super.onUpdateState(parent); 79377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa if (!mCapsLock) { 79477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa setShiftByEditorInfo(); 79577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa } 7967b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 7977b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 798053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 799053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change the keyboard to default 800053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 801053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void setDefaultKeyboard() { 802053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Locale locale = Locale.getDefault(); 803053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int keymode = KEYMODE_JA_FULL_HIRAGANA; 804053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 805053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mPreferenceKeyMode != INVALID_KEYMODE) { 806053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keymode = mPreferenceKeyMode; 807e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } else if (mLimitedKeyMode != null) { 808e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa keymode = mLimitedKeyMode[0]; 809053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 810053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!locale.getLanguage().equals(Locale.JAPANESE.getLanguage())) { 811053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project keymode = KEYMODE_JA_HALF_ALPHABET; 812053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 813053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 814053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyMode(keymode); 815053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 816053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 817053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 818053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 819053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change to the next input mode 820053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 821e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa public void nextKeyMode() { 822e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Search the current mode in the toggle table */ 823e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa boolean found = false; 824053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int index; 825053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for (index = 0; index < JP_MODE_CYCLE_TABLE.length; index++) { 826053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (JP_MODE_CYCLE_TABLE[index] == mCurrentKeyMode) { 827053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project found = true; 828053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 829053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 830053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 831053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 832053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!found) { 833e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* If the current mode not exists, set the default mode */ 834e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa setDefaultKeyboard(); 835053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 836e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* If the current mode exists, set the next input mode */ 837e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int size = JP_MODE_CYCLE_TABLE.length; 838e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int keyMode = INVALID_KEYMODE; 839e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa for (int i = 0; i < size; i++) { 840e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa index = (++index) % size; 841e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 842e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa keyMode = filterKeyMode(JP_MODE_CYCLE_TABLE[index]); 843e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (keyMode != INVALID_KEYMODE) { 844e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa break; 845e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 846e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 847e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 848e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (keyMode != INVALID_KEYMODE) { 849e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa changeKeyMode(keyMode); 850053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 851053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 852053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 853053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 854053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 855053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Create the keyboard for portrait mode 856053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 857053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param parent The context 858053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 859053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void createKeyboardsPortrait(OpenWnn parent) { 860053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[][] keyList; 86159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (OpenWnn.isXLarge()) { 86259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_off (portrait) */ 86359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; 86459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); 86559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); 86659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); 86759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); 86859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 86959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 87059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_on (portrait) */ 87159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; 87259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); 87359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); 87459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); 87559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); 87659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = 87759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; 87859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 87959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_off (portrait) */ 88059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; 88159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); 88259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet); 88359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); 88459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana); 88559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); 88659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); 88759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana); 88859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 88959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 89059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_on (portrait) */ 89159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; 89259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); 89359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift); 89459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); 89559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift); 89659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); 89759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); 89859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift); 89959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = 90059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; 90159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 90259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 90359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* 12-keys shift_off (portrait) */ 90459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF]; 90559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp); 90659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input); 90759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet); 90859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input); 90959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_full_num); 91059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana); 91159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input); 91259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet); 91359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input); 91459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_half_num); 91559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana); 91659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input); 91759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 91859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 91959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* 12-keys shift_on (portrait) */ 92059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON]; 92159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA] 92259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA]; 92359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET] 92459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET]; 92559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER] 92659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER]; 92759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA] 92859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA]; 92959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET] 93059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];; 93159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER] 93259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER]; 93359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA] 93459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA]; 93559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE] 93659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE]; 93759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 938053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 939053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 940053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 941053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Create the keyboard for landscape mode 942053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 943053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param parent The context 944053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 945053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void createKeyboardsLandscape(OpenWnn parent) { 946053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Keyboard[][] keyList; 94759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (OpenWnn.isXLarge()) { 94859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_off (landscape) */ 94959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; 95059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); 95159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); 95259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); 95359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); 95459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 95559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 95659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_on (landscape) */ 95759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; 95859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); 95959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); 96059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); 96159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); 96259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = 96359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; 96459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 96559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_off (landscape) */ 96659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; 96759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); 96859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet); 96959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); 97059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana); 97159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); 97259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); 97359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana); 97459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 97559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 97659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* qwerty shift_on (landscape) */ 97759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; 97859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); 97959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift); 98059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); 98159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift); 98259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); 98359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); 98459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift); 98559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = 98659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; 98759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 98859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 98959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* 12-keys shift_off (landscape) */ 99059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF]; 99159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp); 99259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input); 99359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet); 99459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input); 99559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_full_num); 99659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana); 99759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input); 99859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet); 99959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input); 100059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_half_num); 100159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana); 100259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input); 100359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); 100459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 100559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /* 12-keys shift_on (landscape) */ 100659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON]; 100759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_HIRAGANA] 100859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA]; 100959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_ALPHABET] 101059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET]; 101159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_NUMBER] 101259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER]; 101359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_FULL_KATAKANA] 101459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA]; 101559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_ALPHABET] 101659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];; 101759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_NUMBER] 101859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER]; 101959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_KATAKANA] 102059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA]; 102159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma keyList[KEYMODE_JA_HALF_PHONE] 102259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE]; 102359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 1024053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1025053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1026053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 1027053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Convert the key code to the index of table 1028053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 1029053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param index The key code 1030053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @return The index of the toggle table for input 1031053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 1032053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int getTableIndex(int keyCode) { 1033053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int index = 1034053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_1) ? 0 : 1035053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_2) ? 1 : 1036053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_3) ? 2 : 1037053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_4) ? 3 : 1038053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_5) ? 4 : 1039053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_6) ? 5 : 1040053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_7) ? 6 : 1041053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_8) ? 7 : 1042053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_9) ? 8 : 1043053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_0) ? 9 : 1044053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_SHARP) ? 10 : 1045053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project (keyCode == KEYCODE_JP12_ASTER) ? 11 : 1046053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 0; 1047053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1048053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return index; 1049053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1050053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1051053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 10527b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * Get the toggle table for input that is appropriate in current mode. 10533feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * 1054053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @return The toggle table for input 1055053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 1056053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private String[][] getCycleTable() { 1057053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project String[][] cycleTable = null; 1058053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (mCurrentKeyMode) { 1059053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_HIRAGANA: 1060053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project cycleTable = JP_FULL_HIRAGANA_CYCLE_TABLE; 1061053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1062053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1063053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_KATAKANA: 1064053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project cycleTable = JP_FULL_KATAKANA_CYCLE_TABLE; 1065053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1066053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1067053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_ALPHABET: 1068053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project cycleTable = JP_FULL_ALPHABET_CYCLE_TABLE; 1069053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1070053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1071053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_NUMBER: 1072053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_NUMBER: 1073e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Because these modes belong to direct input group, No toggle table exists */ 1074053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1075053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1076053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_ALPHABET: 1077053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project cycleTable = JP_HALF_ALPHABET_CYCLE_TABLE; 1078053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1079053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1080053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_KATAKANA: 1081053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project cycleTable = JP_HALF_KATAKANA_CYCLE_TABLE; 1082053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1083053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1084053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 1085053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1086053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1087053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return cycleTable; 1088053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1089053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1090053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 10917b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * Get the replace table that is appropriate in current mode. 10923feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * 1093053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @return The replace table 1094053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 1095053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private HashMap getReplaceTable() { 1096053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project HashMap hashTable = null; 1097053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (mCurrentKeyMode) { 1098053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_HIRAGANA: 1099053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project hashTable = JP_FULL_HIRAGANA_REPLACE_TABLE; 1100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_KATAKANA: 1102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project hashTable = JP_FULL_KATAKANA_REPLACE_TABLE; 1103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_ALPHABET: 1106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project hashTable = JP_FULL_ALPHABET_REPLACE_TABLE; 1107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_NUMBER: 1110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_NUMBER: 1111e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* Because these modes belong to direct input group, No replacing table exists */ 1112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_ALPHABET: 1115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project hashTable = JP_HALF_ALPHABET_REPLACE_TABLE; 1116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_KATAKANA: 1119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project hashTable = JP_HALF_KATAKANA_REPLACE_TABLE; 1120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 1123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return hashTable; 1126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 1129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Set the status icon that is appropriate in current mode 1130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 1131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void setStatusIcon() { 1132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int icon = 0; 1133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (mCurrentKeyMode) { 1135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_HIRAGANA: 1136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_hiragana; 1137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_KATAKANA: 1139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_full_kana; 1140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_ALPHABET: 1142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_full_alphabet; 1143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_FULL_NUMBER: 1145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_full_number; 1146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_KATAKANA: 1148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_half_kana; 1149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_ALPHABET: 1151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_half_alphabet; 1152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_NUMBER: 1154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case KEYMODE_JA_HALF_PHONE: 1155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project icon = R.drawable.immodeic_half_number; 1156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1157053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 1158053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 1159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1160053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1161053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWnn.showStatusIcon(icon); 1162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 1165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get the shift key state from the editor. 1166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 1167e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * @param editor The editor information 1168e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * @return The state id of the shift key (0:off, 1:on) 1169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 1170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected int getShiftKeyState(EditorInfo editor) { 1171e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa InputConnection connection = mWnn.getCurrentInputConnection(); 1172e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (connection != null) { 1173e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int caps = connection.getCursorCapsMode(editor.inputType); 1174e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return (caps == 0) ? 0 : 1; 1175e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } else { 1176e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return 0; 1177e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 11817b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * Set the shift key state from {@link EditorInfo}. 1182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 1183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void setShiftByEditorInfo() { 11847b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mEnableAutoCaps && (mCurrentKeyMode == KEYMODE_JA_HALF_ALPHABET)) { 1185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int shift = getShiftKeyState(mWnn.getCurrentInputEditorInfo()); 1186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mShiftOn = shift; 1188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project changeKeyboard(getShiftChangeKeyboard(shift)); 1189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 1190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 11917b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 11927b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setHardKeyboardHidden */ 11937b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa @Override public void setHardKeyboardHidden(boolean hidden) { 1194e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mWnn != null) { 1195e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (!hidden) { 119659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (mEnableHardware12Keyboard) { 119759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 119859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); 119959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 120059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 120159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); 120259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 1203e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1204e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 1205e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mHardKeyboardHidden != hidden) { 1206e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if ((mLimitedKeyMode != null) 120759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma || (!mEnableHardware12Keyboard 120859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma && (mCurrentKeyMode != KEYMODE_JA_FULL_HIRAGANA) 1209e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa && (mCurrentKeyMode != KEYMODE_JA_HALF_ALPHABET))) { 1210e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 1211e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa mLastInputType = EditorInfo.TYPE_NULL; 1212e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (mWnn.isInputViewShown()) { 1213e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa setDefaultKeyboard(); 1214e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1215e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1216e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 12177b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 12183feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa super.setHardKeyboardHidden(hidden); 12197b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 1220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 122159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setHardware12Keyboard */ 122259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma @Override public void setHardware12Keyboard(boolean type12Key) { 122359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (mWnn != null) { 122459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (mEnableHardware12Keyboard != type12Key) { 122559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (type12Key) { 122659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 122759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); 122859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 122959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, 123059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); 123159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 123259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 123359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 123459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma super.setHardware12Keyboard(type12Key); 123559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 123659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 1237e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /** 1238e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Change the key-mode to the allowed one which is restricted 1239e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * by the text input field or the type of the keyboard. 1240e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * @param keyMode The key-mode 1241e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * @return the key-mode allowed 1242e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa */ 1243e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa private int filterKeyMode(int keyMode) { 1244e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int targetMode = keyMode; 1245e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int[] limits = mLimitedKeyMode; 1246e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 1247e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (!mHardKeyboardHidden) { /* for hardware keyboard */ 124859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (!mEnableHardware12Keyboard && (targetMode != KEYMODE_JA_FULL_HIRAGANA) 1249e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa && (targetMode != KEYMODE_JA_HALF_ALPHABET)) { 1250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1251e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa Locale locale = Locale.getDefault(); 1252e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int keymode = KEYMODE_JA_HALF_ALPHABET; 1253e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (locale.getLanguage().equals(Locale.JAPANESE.getLanguage())) { 1254e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa switch (targetMode) { 1255e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa case KEYMODE_JA_FULL_HIRAGANA: 1256e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa case KEYMODE_JA_FULL_KATAKANA: 1257e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa case KEYMODE_JA_HALF_KATAKANA: 1258e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa keymode = KEYMODE_JA_FULL_HIRAGANA; 1259e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa break; 1260e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa default: 1261e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* half-alphabet */ 1262e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa break; 1263e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1264e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1265e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa targetMode = keymode; 1266e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1267e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1268e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 1269e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa /* restrict by the type of the text field */ 1270e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (limits != null) { 1271e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa boolean hasAccepted = false; 1272e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa boolean hasRequiredChange = true; 1273e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int size = limits.length; 1274e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa int nowMode = mCurrentKeyMode; 1275e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 1276e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa for (int i = 0; i < size; i++) { 1277e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (targetMode == limits[i]) { 1278e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa hasAccepted = true; 1279e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa break; 1280e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1281e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (nowMode == limits[i]) { 1282e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa hasRequiredChange = false; 1283e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1284e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 12857b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa 1286e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (!hasAccepted) { 1287e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa if (hasRequiredChange) { 1288e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa targetMode = mLimitedKeyMode[0]; 1289e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } else { 1290e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa targetMode = INVALID_KEYMODE; 1291e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1292e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1293e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 1294e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa 1295e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa return targetMode; 1296e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa } 129759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 129859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** 129959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Shows input mode choosing dialog. 130059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * 130159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * @return boolean 130259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma */ 130359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public boolean showInputModeSwitchDialog() { 130459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma BaseInputView baseInputView = (BaseInputView)getCurrentView(); 130559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma AlertDialog.Builder builder = new AlertDialog.Builder(baseInputView.getContext()); 130659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma builder.setCancelable(true); 130759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma builder.setNegativeButton(R.string.dialog_button_cancel, null); 130859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 130959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma Resources r = baseInputView.getResources(); 131059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemFullHirakana = r.getString(R.string.ti_input_mode_full_hirakana_title_txt); 131159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemFullKatakana = r.getString(R.string.ti_input_mode_full_katakana_title_txt); 131259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemHalfKatakana = r.getString(R.string.ti_input_mode_half_katakana_title_txt); 131359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemFullAlphabet = r.getString(R.string.ti_input_mode_full_alphabet_title_txt); 131459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemHalfAlphabet = r.getString(R.string.ti_input_mode_half_alphabet_title_txt); 131559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemFullNumber = r.getString(R.string.ti_input_mode_full_number_title_txt); 131659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma CharSequence itemHalfNumber = r.getString(R.string.ti_input_mode_half_number_title_txt); 131759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma final CharSequence[] itemTitles; 131859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma final int[] itemValues; 131959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (OpenWnn.isXLarge()) { 132059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemTitles = new CharSequence[] {itemFullHirakana, itemHalfAlphabet, 132159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemFullNumber, itemHalfNumber}; 132259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemValues = new int[] {KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_HALF_ALPHABET, 132359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma KEYMODE_JA_FULL_NUMBER, KEYMODE_JA_HALF_NUMBER}; 132459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } else { 132559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemTitles = new CharSequence[] {itemFullHirakana, itemFullKatakana, itemHalfKatakana, 132659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemFullAlphabet, itemHalfAlphabet, itemFullNumber, 132759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemHalfNumber}; 132859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma itemValues = new int[] {KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_FULL_KATAKANA, KEYMODE_JA_HALF_KATAKANA, 132959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma KEYMODE_JA_FULL_ALPHABET, KEYMODE_JA_HALF_ALPHABET, KEYMODE_JA_FULL_NUMBER, KEYMODE_JA_HALF_NUMBER}; 133059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 133159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 133259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma builder.setSingleChoiceItems(itemTitles, findIndexOfValue(itemValues, 133359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma mCurrentKeyMode), new DialogInterface.OnClickListener() { 133459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma public void onClick(DialogInterface inputModeSwitchDialog, int position) { 133559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma switch(position){ 133659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 0: 133759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[0]); 133859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 133959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 134059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 1: 134159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[1]); 134259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 134359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 134459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 2: 134559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[2]); 134659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 134759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 134859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 3: 134959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[3]); 135059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 135159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 135259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 4: 135359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[4]); 135459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 135559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 135659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 5: 135759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[5]); 135859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 135959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 136059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma case 6: 136159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma changeKeyMode(itemValues[6]); 136259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 136359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 136459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma default: 136559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma break; 136659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 136759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma inputModeSwitchDialog.dismiss(); 136859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 136959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma }); 137059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 137159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma builder.setTitle(r.getString(R.string.ti_long_press_dialog_input_mode_txt)); 137259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma baseInputView.showDialog(builder); 137359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return true; 137459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 137559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma 137659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma /** 137759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Finds the index of a value in a int[]. 137859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * 137959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * @param value the int[] to search in, 138059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * @param mode the value need to find index, 138159aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * @return the index of the value. 138259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma */ 138359aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma private int findIndexOfValue(int[] value, int mode) { 138459aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma for (int i = 0; i < value.length; i++) { 138559aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma if (value[i] == mode) { 138659aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return i; 138759aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 138859aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 138959aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma return -1; 139059aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma } 1391e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa} 1392