15a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka/* 28632bff2d5a8e1160989008dea6eff4b94b065ddTadashi G. Takaoka * Copyright (C) 2010 The Android Open Source Project 35a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 45a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); you may not 55a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * use this file except in compliance with the License. You may obtain a copy of 65a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * the License at 75a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 85a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 95a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 105a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 115a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 125a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 135a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * License for the specific language governing permissions and limitations under 145a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * the License. 155a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 165a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 175a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokapackage com.android.inputmethod.keyboard; 185a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 19f0f726464dcb5b3cef4f8e703659b35ca62430b5Tadashi G. Takaokaimport android.view.inputmethod.EditorInfo; 20f0f726464dcb5b3cef4f8e703659b35ca62430b5Tadashi G. Takaoka 21f1a81f5eb37df4170de2cf6327c860e3d64dc2f8satokimport com.android.inputmethod.compat.EditorInfoCompatUtils; 22e9957752bcaad048746c7a57bbd2c0a59e1918a0satokimport com.android.inputmethod.compat.InputTypeCompatUtils; 235a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokaimport com.android.inputmethod.latin.R; 245a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 255a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokaimport java.util.Arrays; 265a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokaimport java.util.Locale; 275a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 285a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka/** 295a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * Represents the parameters necessary to construct a new LatinKeyboard, 305a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * which also serve as a unique identifier for each keyboard type. 315a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 325a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokapublic class KeyboardId { 335a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public static final int MODE_TEXT = 0; 345a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public static final int MODE_URL = 1; 355a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public static final int MODE_EMAIL = 2; 365a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public static final int MODE_IM = 3; 379e2d810dc524380ca1db6b384cfb00b4401585e5Tadashi G. Takaoka public static final int MODE_PHONE = 4; 389e2d810dc524380ca1db6b384cfb00b4401585e5Tadashi G. Takaoka public static final int MODE_NUMBER = 5; 395a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 40cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public static final int F2KEY_MODE_NONE = 0; 41cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public static final int F2KEY_MODE_SETTINGS = 1; 42cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public static final int F2KEY_MODE_SHORTCUT_IME = 2; 43cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public static final int F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS = 3; 44cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka 455a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public final Locale mLocale; 465a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public final int mOrientation; 47e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka public final int mWidth; 485a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public final int mMode; 495a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public final int mXmlId; 5028a38fdfeeb9596883ee5b422c12532a73d38c87Tadashi G. Takaoka public final boolean mNavigateAction; 514b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka public final boolean mPasswordInput; 52cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka // TODO: Clean up these booleans and modes. 535a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public final boolean mHasSettingsKey; 54cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public final int mF2KeyMode; 55cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public final boolean mClobberSettingsKey; 56c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka public final boolean mShortcutKeyEnabled; 57c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka public final boolean mHasShortcutKey; 58d9c52ba62317aa7919483ccd157182ae0f0db7f4Tadashi G. Takaoka public final int mImeAction; 59e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka 609b6d1d52d91f8f18952ae3841f4bb0d7309bfc0eTadashi G. Takaoka public final String mXmlName; 61e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka public final EditorInfo mAttribute; 625a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 635a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka private final int mHashCode; 645a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 65a93d27d6b87c29cb6292d1dd1223a4e42cca07d9Tadashi G. Takaoka public KeyboardId(String xmlName, int xmlId, Locale locale, int orientation, int width, 66cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka int mode, EditorInfo attribute, boolean hasSettingsKey, int f2KeyMode, 67c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka boolean clobberSettingsKey, boolean shortcutKeyEnabled, boolean hasShortcutKey) { 684b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka final int inputType = (attribute != null) ? attribute.inputType : 0; 694b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka final int imeOptions = (attribute != null) ? attribute.imeOptions : 0; 705a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka this.mLocale = locale; 715a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka this.mOrientation = orientation; 72e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka this.mWidth = width; 735a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka this.mMode = mode; 745a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka this.mXmlId = xmlId; 75f0f726464dcb5b3cef4f8e703659b35ca62430b5Tadashi G. Takaoka // Note: Turn off checking navigation flag to show TAB key for now. 76f0f726464dcb5b3cef4f8e703659b35ca62430b5Tadashi G. Takaoka this.mNavigateAction = InputTypeCompatUtils.isWebInputType(inputType); 77f0f726464dcb5b3cef4f8e703659b35ca62430b5Tadashi G. Takaoka// || EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions) 78f0f726464dcb5b3cef4f8e703659b35ca62430b5Tadashi G. Takaoka// || EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions); 79e9957752bcaad048746c7a57bbd2c0a59e1918a0satok this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType) 80e9957752bcaad048746c7a57bbd2c0a59e1918a0satok || InputTypeCompatUtils.isVisiblePasswordInputType(inputType); 815a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka this.mHasSettingsKey = hasSettingsKey; 82cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka this.mF2KeyMode = f2KeyMode; 83cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka this.mClobberSettingsKey = clobberSettingsKey; 84c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka this.mShortcutKeyEnabled = shortcutKeyEnabled; 85c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka this.mHasShortcutKey = hasShortcutKey; 86d9c52ba62317aa7919483ccd157182ae0f0db7f4Tadashi G. Takaoka // We are interested only in {@link EditorInfo#IME_MASK_ACTION} enum value and 87d9c52ba62317aa7919483ccd157182ae0f0db7f4Tadashi G. Takaoka // {@link EditorInfo#IME_FLAG_NO_ENTER_ACTION}. 884b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka this.mImeAction = imeOptions & ( 894b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION); 90e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka 919b6d1d52d91f8f18952ae3841f4bb0d7309bfc0eTadashi G. Takaoka this.mXmlName = xmlName; 92e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka this.mAttribute = attribute; 935a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 945a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka this.mHashCode = Arrays.hashCode(new Object[] { 955a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka locale, 965a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka orientation, 97e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka width, 985a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka mode, 995a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka xmlId, 10028a38fdfeeb9596883ee5b422c12532a73d38c87Tadashi G. Takaoka mNavigateAction, 1014b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka mPasswordInput, 1025a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka hasSettingsKey, 103cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka f2KeyMode, 104cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka clobberSettingsKey, 105c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka shortcutKeyEnabled, 106c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka hasShortcutKey, 107d9c52ba62317aa7919483ccd157182ae0f0db7f4Tadashi G. Takaoka mImeAction, 1085a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka }); 1095a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1105a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 1118da9a13760896cd78235b60d0ea680ea13620532Tadashi G. Takaoka public KeyboardId cloneWithNewXml(String xmlName, int xmlId) { 1128da9a13760896cd78235b60d0ea680ea13620532Tadashi G. Takaoka return new KeyboardId(xmlName, xmlId, mLocale, mOrientation, mWidth, mMode, mAttribute, 1138da9a13760896cd78235b60d0ea680ea13620532Tadashi G. Takaoka false, F2KEY_MODE_NONE, false, false, false); 114d773bf38a3c8f49ea56de67d3b828f8126f46ed2Tadashi G. Takaoka } 115d773bf38a3c8f49ea56de67d3b828f8126f46ed2Tadashi G. Takaoka 1165a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public int getXmlId() { 1175a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka return mXmlId; 1185a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1195a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 120571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka public boolean isAlphabetKeyboard() { 1215a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka return mXmlId == R.xml.kbd_qwerty; 1225a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1235a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 1249e91472285a1b903631f1e3c998f5aa1efd3e98eTadashi G. Takaoka public boolean isSymbolsKeyboard() { 1255ac4638f999db4fea8a9e24171dbceb640a10858Alan Viverette return mXmlId == R.xml.kbd_symbols || mXmlId == R.xml.kbd_symbols_shift; 1269e91472285a1b903631f1e3c998f5aa1efd3e98eTadashi G. Takaoka } 1279e91472285a1b903631f1e3c998f5aa1efd3e98eTadashi G. Takaoka 128571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka public boolean isPhoneKeyboard() { 129571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka return mMode == MODE_PHONE; 130571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka } 131571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka 13260ccbe16eea5ce9a874835850f257b3c88295022Tadashi G. Takaoka public boolean isPhoneShiftKeyboard() { 13360ccbe16eea5ce9a874835850f257b3c88295022Tadashi G. Takaoka return mXmlId == R.xml.kbd_phone_shift; 1345ac4638f999db4fea8a9e24171dbceb640a10858Alan Viverette } 1355ac4638f999db4fea8a9e24171dbceb640a10858Alan Viverette 136571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka public boolean isNumberKeyboard() { 137571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka return mMode == MODE_NUMBER; 138571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka } 139571bdb401f670b92bd7710a12a990cb65a99b7d3Tadashi G. Takaoka 1405a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka @Override 1415a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public boolean equals(Object other) { 1425a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka return other instanceof KeyboardId && equals((KeyboardId) other); 1435a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1445a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 145c3d175c01ff1956ddb1c2d608d69af1793b4ad8aTadashi G. Takaoka private boolean equals(KeyboardId other) { 1465a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka return other.mLocale.equals(this.mLocale) 1475a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka && other.mOrientation == this.mOrientation 148e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka && other.mWidth == this.mWidth 1495a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka && other.mMode == this.mMode 1505a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka && other.mXmlId == this.mXmlId 15128a38fdfeeb9596883ee5b422c12532a73d38c87Tadashi G. Takaoka && other.mNavigateAction == this.mNavigateAction 1524b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka && other.mPasswordInput == this.mPasswordInput 1535a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka && other.mHasSettingsKey == this.mHasSettingsKey 154cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka && other.mF2KeyMode == this.mF2KeyMode 155cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka && other.mClobberSettingsKey == this.mClobberSettingsKey 156c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka && other.mShortcutKeyEnabled == this.mShortcutKeyEnabled 157c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka && other.mHasShortcutKey == this.mHasShortcutKey 1586d9bcd5e1317722207116ab6a3ddfcb152005701Tadashi G. Takaoka && other.mImeAction == this.mImeAction; 1595a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1605a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 1615a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka @Override 1625a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public int hashCode() { 1635a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka return mHashCode; 1645a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1655a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 1665a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka @Override 1675a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka public String toString() { 1686d9bcd5e1317722207116ab6a3ddfcb152005701Tadashi G. Takaoka return String.format("[%s.xml %s %s%d %s %s %s%s%s%s%s%s%s]", 1699b6d1d52d91f8f18952ae3841f4bb0d7309bfc0eTadashi G. Takaoka mXmlName, 1705a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka mLocale, 171e896d31bb92146379c8b7c0050ee05eec0830317Tadashi G. Takaoka (mOrientation == 1 ? "port" : "land"), mWidth, 1725a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka modeName(mMode), 173f1a81f5eb37df4170de2cf6327c860e3d64dc2f8satok EditorInfoCompatUtils.imeOptionsName(mImeAction), 174cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka f2KeyModeName(mF2KeyMode), 175cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka (mClobberSettingsKey ? " clobberSettingsKey" : ""), 17628a38fdfeeb9596883ee5b422c12532a73d38c87Tadashi G. Takaoka (mNavigateAction ? " navigateAction" : ""), 1774b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka (mPasswordInput ? " passwordInput" : ""), 1785a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka (mHasSettingsKey ? " hasSettingsKey" : ""), 179c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka (mShortcutKeyEnabled ? " shortcutKeyEnabled" : ""), 180c3afe2c244c14ed0f8a355fe608b3402e3656330Tadashi G. Takaoka (mHasShortcutKey ? " hasShortcutKey" : "") 1814b13b4f94215368c6387b2564bdaf2cbcbe4c130Tadashi G. Takaoka ); 1825a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 1835a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 1849b6d1d52d91f8f18952ae3841f4bb0d7309bfc0eTadashi G. Takaoka public static String modeName(int mode) { 1855a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka switch (mode) { 1865a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka case MODE_TEXT: return "text"; 1875a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka case MODE_URL: return "url"; 1885a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka case MODE_EMAIL: return "email"; 1895a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka case MODE_IM: return "im"; 1905a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka case MODE_PHONE: return "phone"; 1915a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka case MODE_NUMBER: return "number"; 192cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka default: return null; 193cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka } 194cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka } 195cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka 196cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka public static String f2KeyModeName(int f2KeyMode) { 197cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka switch (f2KeyMode) { 198cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka case F2KEY_MODE_NONE: return "none"; 199cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka case F2KEY_MODE_SETTINGS: return "settings"; 200cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka case F2KEY_MODE_SHORTCUT_IME: return "shortcutIme"; 201cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka case F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS: return "shortcutImeOrSettings"; 202cd96a691b14b384face577d907f6c1aa33b47233Tadashi G. Takaoka default: return null; 2035a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 2045a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka } 2055a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka} 206