/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.inputmethod.latin; public final class Constants { public static final class Color { /** * The alpha value for fully opaque. */ public final static int ALPHA_OPAQUE = 255; } public static final class ImeOption { /** * The private IME option used to indicate that no microphone should be shown for a given * text field. For instance, this is specified by the search dialog when the dialog is * already showing a voice search button. * * @deprecated Use {@link ImeOption#NO_MICROPHONE} with package name prefixed. */ @SuppressWarnings("dep-ann") public static final String NO_MICROPHONE_COMPAT = "nm"; /** * The private IME option used to indicate that no microphone should be shown for a given * text field. For instance, this is specified by the search dialog when the dialog is * already showing a voice search button. */ public static final String NO_MICROPHONE = "noMicrophoneKey"; /** * The private IME option used to indicate that no settings key should be shown for a given * text field. */ public static final String NO_SETTINGS_KEY = "noSettingsKey"; /** * The private IME option used to indicate that the given text field needs ASCII code points * input. * * @deprecated Use EditorInfo#IME_FLAG_FORCE_ASCII. */ @SuppressWarnings("dep-ann") public static final String FORCE_ASCII = "forceAscii"; private ImeOption() { // This utility class is not publicly instantiable. } } public static final class Subtype { /** * The subtype mode used to indicate that the subtype is a keyboard. */ public static final String KEYBOARD_MODE = "keyboard"; public static final class ExtraValue { /** * The subtype extra value used to indicate that the subtype keyboard layout is capable * for typing ASCII characters. */ public static final String ASCII_CAPABLE = "AsciiCapable"; /** * The subtype extra value used to indicate that the subtype require network connection * to work. */ public static final String REQ_NETWORK_CONNECTIVITY = "requireNetworkConnectivity"; /** * The subtype extra value used to indicate that the subtype display name contains "%s" * for replacement mark and it should be replaced by this extra value. * This extra value is supported on JellyBean and later. */ public static final String UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME = "UntranslatableReplacementStringInSubtypeName"; /** * The subtype extra value used to indicate that the subtype keyboard layout set name. * This extra value is private to LatinIME. */ public static final String KEYBOARD_LAYOUT_SET = "KeyboardLayoutSet"; /** * The subtype extra value used to indicate that the subtype is additional subtype * that the user defined. This extra value is private to LatinIME. */ public static final String IS_ADDITIONAL_SUBTYPE = "isAdditionalSubtype"; private ExtraValue() { // This utility class is not publicly instantiable. } } private Subtype() { // This utility class is not publicly instantiable. } } public static final class TextUtils { /** * Capitalization mode for {@link android.text.TextUtils#getCapsMode}: don't capitalize * characters. This value may be used with * {@link android.text.TextUtils#CAP_MODE_CHARACTERS}, * {@link android.text.TextUtils#CAP_MODE_WORDS}, and * {@link android.text.TextUtils#CAP_MODE_SENTENCES}. */ public static final int CAP_MODE_OFF = 0; private TextUtils() { // This utility class is not publicly instantiable. } } public static final int NOT_A_CODE = -1; public static final int NOT_A_COORDINATE = -1; public static final int SUGGESTION_STRIP_COORDINATE = -2; public static final int SPELL_CHECKER_COORDINATE = -3; public static final int EXTERNAL_KEYBOARD_COORDINATE = -4; // Must be equal to MAX_WORD_LENGTH in native/jni/src/defines.h public static final int DICTIONARY_MAX_WORD_LENGTH = 48; public static boolean isValidCoordinate(final int coordinate) { // Detect {@link NOT_A_COORDINATE}, {@link SUGGESTION_STRIP_COORDINATE}, // and {@link SPELL_CHECKER_COORDINATE}. return coordinate >= 0; } /** * Custom request code used in * {@link com.android.inputmethod.keyboard.KeyboardActionListener#onCustomRequest(int)}. */ // The code to show input method picker. public static final int CUSTOM_CODE_SHOW_INPUT_METHOD_PICKER = 1; /** * Some common keys code. Must be positive. */ public static final int CODE_ENTER = '\n'; public static final int CODE_TAB = '\t'; public static final int CODE_SPACE = ' '; public static final int CODE_PERIOD = '.'; public static final int CODE_DASH = '-'; public static final int CODE_SINGLE_QUOTE = '\''; public static final int CODE_DOUBLE_QUOTE = '"'; public static final int CODE_QUESTION_MARK = '?'; public static final int CODE_EXCLAMATION_MARK = '!'; public static final int CODE_SLASH = '/'; public static final int CODE_COMMERCIAL_AT = '@'; // TODO: Check how this should work for right-to-left languages. It seems to stand // that for rtl languages, a closing parenthesis is a left parenthesis. Is this // managed by the font? Or is it a different char? public static final int CODE_CLOSING_PARENTHESIS = ')'; public static final int CODE_CLOSING_SQUARE_BRACKET = ']'; public static final int CODE_CLOSING_CURLY_BRACKET = '}'; public static final int CODE_CLOSING_ANGLE_BRACKET = '>'; /** * Special keys code. Must be negative. * These should be aligned with {@link KeyboardCodesSet#ID_TO_NAME}, * {@link KeyboardCodesSet#DEFAULT}, and {@link KeyboardCodesSet#RTL}. */ public static final int CODE_SHIFT = -1; public static final int CODE_CAPSLOCK = -2; public static final int CODE_SWITCH_ALPHA_SYMBOL = -3; public static final int CODE_OUTPUT_TEXT = -4; public static final int CODE_DELETE = -5; public static final int CODE_SETTINGS = -6; public static final int CODE_SHORTCUT = -7; public static final int CODE_ACTION_NEXT = -8; public static final int CODE_ACTION_PREVIOUS = -9; public static final int CODE_LANGUAGE_SWITCH = -10; public static final int CODE_EMOJI = -11; public static final int CODE_SHIFT_ENTER = -12; // Code value representing the code is not specified. public static final int CODE_UNSPECIFIED = -13; public static boolean isLetterCode(final int code) { return code >= CODE_SPACE; } public static String printableCode(final int code) { switch (code) { case CODE_SHIFT: return "shift"; case CODE_CAPSLOCK: return "capslock"; case CODE_SWITCH_ALPHA_SYMBOL: return "symbol"; case CODE_OUTPUT_TEXT: return "text"; case CODE_DELETE: return "delete"; case CODE_SETTINGS: return "settings"; case CODE_SHORTCUT: return "shortcut"; case CODE_ACTION_NEXT: return "actionNext"; case CODE_ACTION_PREVIOUS: return "actionPrevious"; case CODE_LANGUAGE_SWITCH: return "languageSwitch"; case CODE_EMOJI: return "emoji"; case CODE_SHIFT_ENTER: return "shiftEnter"; case CODE_UNSPECIFIED: return "unspec"; case CODE_TAB: return "tab"; case CODE_ENTER: return "enter"; default: if (code < CODE_SPACE) return String.format("'\\u%02x'", code); if (code < 0x100) return String.format("'%c'", code); return String.format("'\\u%04x'", code); } } public static final int MAX_INT_BIT_COUNT = 32; private Constants() { // This utility class is not publicly instantiable. } }