diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
| commit | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch) | |
| tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/view/KeyEvent.java | |
| parent | 076357b8567458d4b6dfdcf839ef751634cd2bfb (diff) | |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/view/KeyEvent.java')
| -rw-r--r-- | core/java/android/view/KeyEvent.java | 880 |
1 files changed, 0 insertions, 880 deletions
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java deleted file mode 100644 index d6ea91c4b5e3..000000000000 --- a/core/java/android/view/KeyEvent.java +++ /dev/null @@ -1,880 +0,0 @@ -/* - * Copyright (C) 2006 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 android.view; - -import android.os.Parcel; -import android.os.Parcelable; -import android.view.KeyCharacterMap; -import android.view.KeyCharacterMap.KeyData; - -/** - * Contains constants for key events. - */ -public class KeyEvent implements Parcelable { - // key codes - public static final int KEYCODE_UNKNOWN = 0; - public static final int KEYCODE_SOFT_LEFT = 1; - public static final int KEYCODE_SOFT_RIGHT = 2; - public static final int KEYCODE_HOME = 3; - public static final int KEYCODE_BACK = 4; - public static final int KEYCODE_CALL = 5; - public static final int KEYCODE_ENDCALL = 6; - public static final int KEYCODE_0 = 7; - public static final int KEYCODE_1 = 8; - public static final int KEYCODE_2 = 9; - public static final int KEYCODE_3 = 10; - public static final int KEYCODE_4 = 11; - public static final int KEYCODE_5 = 12; - public static final int KEYCODE_6 = 13; - public static final int KEYCODE_7 = 14; - public static final int KEYCODE_8 = 15; - public static final int KEYCODE_9 = 16; - public static final int KEYCODE_STAR = 17; - public static final int KEYCODE_POUND = 18; - public static final int KEYCODE_DPAD_UP = 19; - public static final int KEYCODE_DPAD_DOWN = 20; - public static final int KEYCODE_DPAD_LEFT = 21; - public static final int KEYCODE_DPAD_RIGHT = 22; - public static final int KEYCODE_DPAD_CENTER = 23; - public static final int KEYCODE_VOLUME_UP = 24; - public static final int KEYCODE_VOLUME_DOWN = 25; - public static final int KEYCODE_POWER = 26; - public static final int KEYCODE_CAMERA = 27; - public static final int KEYCODE_CLEAR = 28; - public static final int KEYCODE_A = 29; - public static final int KEYCODE_B = 30; - public static final int KEYCODE_C = 31; - public static final int KEYCODE_D = 32; - public static final int KEYCODE_E = 33; - public static final int KEYCODE_F = 34; - public static final int KEYCODE_G = 35; - public static final int KEYCODE_H = 36; - public static final int KEYCODE_I = 37; - public static final int KEYCODE_J = 38; - public static final int KEYCODE_K = 39; - public static final int KEYCODE_L = 40; - public static final int KEYCODE_M = 41; - public static final int KEYCODE_N = 42; - public static final int KEYCODE_O = 43; - public static final int KEYCODE_P = 44; - public static final int KEYCODE_Q = 45; - public static final int KEYCODE_R = 46; - public static final int KEYCODE_S = 47; - public static final int KEYCODE_T = 48; - public static final int KEYCODE_U = 49; - public static final int KEYCODE_V = 50; - public static final int KEYCODE_W = 51; - public static final int KEYCODE_X = 52; - public static final int KEYCODE_Y = 53; - public static final int KEYCODE_Z = 54; - public static final int KEYCODE_COMMA = 55; - public static final int KEYCODE_PERIOD = 56; - public static final int KEYCODE_ALT_LEFT = 57; - public static final int KEYCODE_ALT_RIGHT = 58; - public static final int KEYCODE_SHIFT_LEFT = 59; - public static final int KEYCODE_SHIFT_RIGHT = 60; - public static final int KEYCODE_TAB = 61; - public static final int KEYCODE_SPACE = 62; - public static final int KEYCODE_SYM = 63; - public static final int KEYCODE_EXPLORER = 64; - public static final int KEYCODE_ENVELOPE = 65; - public static final int KEYCODE_ENTER = 66; - public static final int KEYCODE_DEL = 67; - public static final int KEYCODE_GRAVE = 68; - public static final int KEYCODE_MINUS = 69; - public static final int KEYCODE_EQUALS = 70; - public static final int KEYCODE_LEFT_BRACKET = 71; - public static final int KEYCODE_RIGHT_BRACKET = 72; - public static final int KEYCODE_BACKSLASH = 73; - public static final int KEYCODE_SEMICOLON = 74; - public static final int KEYCODE_APOSTROPHE = 75; - public static final int KEYCODE_SLASH = 76; - public static final int KEYCODE_AT = 77; - public static final int KEYCODE_NUM = 78; - public static final int KEYCODE_HEADSETHOOK = 79; - public static final int KEYCODE_FOCUS = 80; // *Camera* focus - public static final int KEYCODE_PLUS = 81; - public static final int KEYCODE_MENU = 82; - public static final int KEYCODE_NOTIFICATION = 83; - public static final int KEYCODE_SEARCH = 84; - public static final int KEYCODE_PLAYPAUSE = 85; - public static final int KEYCODE_STOP = 86; - public static final int KEYCODE_NEXTSONG = 87; - public static final int KEYCODE_PREVIOUSSONG = 88; - public static final int KEYCODE_REWIND = 89; - public static final int KEYCODE_FORWARD = 90; - public static final int KEYCODE_MUTE = 91; - private static final int LAST_KEYCODE = KEYCODE_MUTE; - - // NOTE: If you add a new keycode here you must also add it to: - // isSystem() - // frameworks/base/include/ui/KeycodeLabels.h - // tools/puppet_master/PuppetMaster/nav_keys.py - // frameworks/base/core/res/res/values/attrs.xml - // commands/monkey/Monkey.java - // emulator? - - /** - * @deprecated There are now more than MAX_KEYCODE keycodes. - * Use {@link #getMaxKeyCode()} instead. - */ - @Deprecated - public static final int MAX_KEYCODE = 84; - - /** - * {@link #getAction} value: the key has been pressed down. - */ - public static final int ACTION_DOWN = 0; - /** - * {@link #getAction} value: the key has been released. - */ - public static final int ACTION_UP = 1; - /** - * {@link #getAction} value: multiple duplicate key events have - * occurred in a row, or a complex string is being delivered. If the - * key code is not {#link {@link #KEYCODE_UNKNOWN} then the - * {#link {@link #getRepeatCount()} method returns the number of times - * the given key code should be executed. - * Otherwise, if the key code {@link #KEYCODE_UNKNOWN}, then - * this is a sequence of characters as returned by {@link #getCharacters}. - */ - public static final int ACTION_MULTIPLE = 2; - - /** - * <p>This mask is used to check whether one of the ALT meta keys is pressed.</p> - * - * @see #isAltPressed() - * @see #getMetaState() - * @see #KEYCODE_ALT_LEFT - * @see #KEYCODE_ALT_RIGHT - */ - public static final int META_ALT_ON = 0x02; - - /** - * <p>This mask is used to check whether the left ALT meta key is pressed.</p> - * - * @see #isAltPressed() - * @see #getMetaState() - * @see #KEYCODE_ALT_LEFT - */ - public static final int META_ALT_LEFT_ON = 0x10; - - /** - * <p>This mask is used to check whether the right the ALT meta key is pressed.</p> - * - * @see #isAltPressed() - * @see #getMetaState() - * @see #KEYCODE_ALT_RIGHT - */ - public static final int META_ALT_RIGHT_ON = 0x20; - - /** - * <p>This mask is used to check whether one of the SHIFT meta keys is pressed.</p> - * - * @see #isShiftPressed() - * @see #getMetaState() - * @see #KEYCODE_SHIFT_LEFT - * @see #KEYCODE_SHIFT_RIGHT - */ - public static final int META_SHIFT_ON = 0x1; - - /** - * <p>This mask is used to check whether the left SHIFT meta key is pressed.</p> - * - * @see #isShiftPressed() - * @see #getMetaState() - * @see #KEYCODE_SHIFT_LEFT - */ - public static final int META_SHIFT_LEFT_ON = 0x40; - - /** - * <p>This mask is used to check whether the right SHIFT meta key is pressed.</p> - * - * @see #isShiftPressed() - * @see #getMetaState() - * @see #KEYCODE_SHIFT_RIGHT - */ - public static final int META_SHIFT_RIGHT_ON = 0x80; - - /** - * <p>This mask is used to check whether the SYM meta key is pressed.</p> - * - * @see #isSymPressed() - * @see #getMetaState() - */ - public static final int META_SYM_ON = 0x4; - - /** - * This mask is set if the device woke because of this key event. - */ - public static final int FLAG_WOKE_HERE = 0x1; - - /** - * This mask is set if the key event was generated by a software keyboard. - */ - public static final int FLAG_SOFT_KEYBOARD = 0x2; - - /** - * Returns the maximum keycode. - */ - public static int getMaxKeyCode() { - return LAST_KEYCODE; - } - - /** - * Get the character that is produced by putting accent on the character - * c. - * For example, getDeadChar('`', 'e') returns è. - */ - public static int getDeadChar(int accent, int c) { - return KeyCharacterMap.getDeadChar(accent, c); - } - - private int mMetaState; - private int mAction; - private int mKeyCode; - private int mScancode; - private int mRepeatCount; - private int mDeviceId; - private int mFlags; - private long mDownTime; - private long mEventTime; - private String mCharacters; - - public interface Callback { - /** - * Called when a key down event has occurred. - * - * @param keyCode The value in event.getKeyCode(). - * @param event Description of the key event. - * - * @return If you handled the event, return true. If you want to allow - * the event to be handled by the next receiver, return false. - */ - boolean onKeyDown(int keyCode, KeyEvent event); - - /** - * Called when a key up event has occurred. - * - * @param keyCode The value in event.getKeyCode(). - * @param event Description of the key event. - * - * @return If you handled the event, return true. If you want to allow - * the event to be handled by the next receiver, return false. - */ - boolean onKeyUp(int keyCode, KeyEvent event); - - /** - * Called when multiple down/up pairs of the same key have occurred - * in a row. - * - * @param keyCode The value in event.getKeyCode(). - * @param count Number of pairs as returned by event.getRepeatCount(). - * @param event Description of the key event. - * - * @return If you handled the event, return true. If you want to allow - * the event to be handled by the next receiver, return false. - */ - boolean onKeyMultiple(int keyCode, int count, KeyEvent event); - } - - /** - * Create a new key event. - * - * @param action Action code: either {@link #ACTION_DOWN}, - * {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. - * @param code The key code. - */ - public KeyEvent(int action, int code) { - mAction = action; - mKeyCode = code; - mRepeatCount = 0; - } - - /** - * Create a new key event. - * - * @param downTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this key code originally went down. - * @param eventTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this event happened. - * @param action Action code: either {@link #ACTION_DOWN}, - * {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. - * @param code The key code. - * @param repeat A repeat count for down events (> 0 if this is after the - * initial down) or event count for multiple events. - */ - public KeyEvent(long downTime, long eventTime, int action, - int code, int repeat) { - mDownTime = downTime; - mEventTime = eventTime; - mAction = action; - mKeyCode = code; - mRepeatCount = repeat; - } - - /** - * Create a new key event. - * - * @param downTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this key code originally went down. - * @param eventTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this event happened. - * @param action Action code: either {@link #ACTION_DOWN}, - * {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. - * @param code The key code. - * @param repeat A repeat count for down events (> 0 if this is after the - * initial down) or event count for multiple events. - * @param metaState Flags indicating which meta keys are currently pressed. - */ - public KeyEvent(long downTime, long eventTime, int action, - int code, int repeat, int metaState) { - mDownTime = downTime; - mEventTime = eventTime; - mAction = action; - mKeyCode = code; - mRepeatCount = repeat; - mMetaState = metaState; - } - - /** - * Create a new key event. - * - * @param downTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this key code originally went down. - * @param eventTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this event happened. - * @param action Action code: either {@link #ACTION_DOWN}, - * {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. - * @param code The key code. - * @param repeat A repeat count for down events (> 0 if this is after the - * initial down) or event count for multiple events. - * @param metaState Flags indicating which meta keys are currently pressed. - * @param device The device ID that generated the key event. - * @param scancode Raw device scan code of the event. - */ - public KeyEvent(long downTime, long eventTime, int action, - int code, int repeat, int metaState, - int device, int scancode) { - mDownTime = downTime; - mEventTime = eventTime; - mAction = action; - mKeyCode = code; - mRepeatCount = repeat; - mMetaState = metaState; - mDeviceId = device; - mScancode = scancode; - } - - /** - * Create a new key event. - * - * @param downTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this key code originally went down. - * @param eventTime The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this event happened. - * @param action Action code: either {@link #ACTION_DOWN}, - * {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. - * @param code The key code. - * @param repeat A repeat count for down events (> 0 if this is after the - * initial down) or event count for multiple events. - * @param metaState Flags indicating which meta keys are currently pressed. - * @param device The device ID that generated the key event. - * @param scancode Raw device scan code of the event. - * @param flags The flags for this key event - */ - public KeyEvent(long downTime, long eventTime, int action, - int code, int repeat, int metaState, - int device, int scancode, int flags) { - mDownTime = downTime; - mEventTime = eventTime; - mAction = action; - mKeyCode = code; - mRepeatCount = repeat; - mMetaState = metaState; - mDeviceId = device; - mScancode = scancode; - mFlags = flags; - } - - /** - * Create a new key event for a string of characters. The key code, - * action, and repeat could will automatically be set to - * {@link #KEYCODE_UNKNOWN}, {@link #ACTION_MULTIPLE}, and 0 for you. - * - * @param time The time (in {@link android.os.SystemClock#uptimeMillis}) - * at which this event occured. - * @param characters The string of characters. - * @param device The device ID that generated the key event. - * @param flags The flags for this key event - */ - public KeyEvent(long time, String characters, int device, int flags) { - mDownTime = time; - mEventTime = time; - mCharacters = characters; - mAction = ACTION_MULTIPLE; - mKeyCode = KEYCODE_UNKNOWN; - mRepeatCount = 0; - mDeviceId = device; - mFlags = flags; - } - - /** - * Copy an existing key event, modifying its time and repeat count. - * - * @param origEvent The existing event to be copied. - * @param eventTime The new event time - * (in {@link android.os.SystemClock#uptimeMillis}) of the event. - * @param newRepeat The new repeat count of the event. - */ - public KeyEvent(KeyEvent origEvent, long eventTime, int newRepeat) { - mDownTime = origEvent.mDownTime; - mEventTime = eventTime; - mAction = origEvent.mAction; - mKeyCode = origEvent.mKeyCode; - mRepeatCount = newRepeat; - mMetaState = origEvent.mMetaState; - mDeviceId = origEvent.mDeviceId; - mScancode = origEvent.mScancode; - mFlags = origEvent.mFlags; - mCharacters = origEvent.mCharacters; - } - - /** - * Copy an existing key event, modifying its action. - * - * @param origEvent The existing event to be copied. - * @param action The new action code of the event. - */ - public KeyEvent(KeyEvent origEvent, int action) { - mDownTime = origEvent.mDownTime; - mEventTime = origEvent.mEventTime; - mAction = action; - mKeyCode = origEvent.mKeyCode; - mRepeatCount = origEvent.mRepeatCount; - mMetaState = origEvent.mMetaState; - mDeviceId = origEvent.mDeviceId; - mScancode = origEvent.mScancode; - mFlags = origEvent.mFlags; - // Don't copy mCharacters, since one way or the other we'll lose it - // when changing the action. - } - - /** - * Don't use in new code, instead explicitly check - * {@link #getAction()}. - * - * @return If the action is ACTION_DOWN, returns true; else false. - * - * @deprecated - * @hide - */ - @Deprecated public final boolean isDown() { - return mAction == ACTION_DOWN; - } - - /** - * Is this a system key? System keys can not be used for menu shortcuts. - * - * TODO: this information should come from a table somewhere. - * TODO: should the dpad keys be here? arguably, because they also shouldn't be menu shortcuts - */ - public final boolean isSystem() { - switch (mKeyCode) { - case KEYCODE_MENU: - case KEYCODE_SOFT_RIGHT: - case KEYCODE_HOME: - case KEYCODE_BACK: - case KEYCODE_CALL: - case KEYCODE_ENDCALL: - case KEYCODE_VOLUME_UP: - case KEYCODE_VOLUME_DOWN: - case KEYCODE_MUTE: - case KEYCODE_POWER: - case KEYCODE_HEADSETHOOK: - case KEYCODE_PLAYPAUSE: - case KEYCODE_STOP: - case KEYCODE_NEXTSONG: - case KEYCODE_PREVIOUSSONG: - case KEYCODE_REWIND: - case KEYCODE_FORWARD: - case KEYCODE_CAMERA: - case KEYCODE_FOCUS: - case KEYCODE_SEARCH: - return true; - default: - return false; - } - } - - - /** - * <p>Returns the state of the meta keys.</p> - * - * @return an integer in which each bit set to 1 represents a pressed - * meta key - * - * @see #isAltPressed() - * @see #isShiftPressed() - * @see #isSymPressed() - * @see #META_ALT_ON - * @see #META_SHIFT_ON - * @see #META_SYM_ON - */ - public final int getMetaState() { - return mMetaState; - } - - /** - * Returns the flags for this key event. - * - * @see #FLAG_WOKE_HERE - */ - public final int getFlags() { - return mFlags; - } - - /** - * Returns true if this key code is a modifier key. - * - * @return whether the provided keyCode is one of - * {@link #KEYCODE_SHIFT_LEFT} {@link #KEYCODE_SHIFT_RIGHT}, - * {@link #KEYCODE_ALT_LEFT}, {@link #KEYCODE_ALT_RIGHT} - * or {@link #KEYCODE_SYM}. - */ - public static boolean isModifierKey(int keyCode) { - return keyCode == KEYCODE_SHIFT_LEFT || keyCode == KEYCODE_SHIFT_RIGHT - || keyCode == KEYCODE_ALT_LEFT || keyCode == KEYCODE_ALT_RIGHT - || keyCode == KEYCODE_SYM; - } - - /** - * <p>Returns the pressed state of the ALT meta key.</p> - * - * @return true if the ALT key is pressed, false otherwise - * - * @see #KEYCODE_ALT_LEFT - * @see #KEYCODE_ALT_RIGHT - * @see #META_ALT_ON - */ - public final boolean isAltPressed() { - return (mMetaState & META_ALT_ON) != 0; - } - - /** - * <p>Returns the pressed state of the SHIFT meta key.</p> - * - * @return true if the SHIFT key is pressed, false otherwise - * - * @see #KEYCODE_SHIFT_LEFT - * @see #KEYCODE_SHIFT_RIGHT - * @see #META_SHIFT_ON - */ - public final boolean isShiftPressed() { - return (mMetaState & META_SHIFT_ON) != 0; - } - - /** - * <p>Returns the pressed state of the SYM meta key.</p> - * - * @return true if the SYM key is pressed, false otherwise - * - * @see #KEYCODE_SYM - * @see #META_SYM_ON - */ - public final boolean isSymPressed() { - return (mMetaState & META_SYM_ON) != 0; - } - - /** - * Retrieve the action of this key event. May be either - * {@link #ACTION_DOWN}, {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. - * - * @return The event action: ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE. - */ - public final int getAction() { - return mAction; - } - - /** - * Retrieve the key code of the key event. This is the physical key that - * was pressed, <em>not</em> the Unicode character. - * - * @return The key code of the event. - */ - public final int getKeyCode() { - return mKeyCode; - } - - /** - * For the special case of a {@link #ACTION_MULTIPLE} event with key - * code of {@link #KEYCODE_UNKNOWN}, this is a raw string of characters - * associated with the event. In all other cases it is null. - * - * @return Returns a String of 1 or more characters associated with - * the event. - */ - public final String getCharacters() { - return mCharacters; - } - - /** - * Retrieve the hardware key id of this key event. These values are not - * reliable and vary from device to device. - * - * {@more} - * Mostly this is here for debugging purposes. - */ - public final int getScanCode() { - return mScancode; - } - - /** - * Retrieve the repeat count of the event. For both key up and key down - * events, this is the number of times the key has repeated with the first - * down starting at 0 and counting up from there. For multiple key - * events, this is the number of down/up pairs that have occurred. - * - * @return The number of times the key has repeated. - */ - public final int getRepeatCount() { - return mRepeatCount; - } - - /** - * Retrieve the time of the most recent key down event, - * in the {@link android.os.SystemClock#uptimeMillis} time base. If this - * is a down event, this will be the same as {@link #getEventTime()}. - * Note that when chording keys, this value is the down time of the - * most recently pressed key, which may <em>not</em> be the same physical - * key of this event. - * - * @return Returns the most recent key down time, in the - * {@link android.os.SystemClock#uptimeMillis} time base - */ - public final long getDownTime() { - return mDownTime; - } - - /** - * Retrieve the time this event occurred, - * in the {@link android.os.SystemClock#uptimeMillis} time base. - * - * @return Returns the time this event occurred, - * in the {@link android.os.SystemClock#uptimeMillis} time base. - */ - public final long getEventTime() { - return mEventTime; - } - - /** - * Return the id for the keyboard that this event came from. A device - * id of 0 indicates the event didn't come from a physical device and - * maps to the default keymap. The other numbers are arbitrary and - * you shouldn't depend on the values. - * - * @see KeyCharacterMap#load - */ - public final int getDeviceId() { - return mDeviceId; - } - - /** - * Renamed to {@link #getDeviceId}. - * - * @hide - * @deprecated - */ - public final int getKeyboardDevice() { - return mDeviceId; - } - - /** - * Get the primary character for this key. In other words, the label - * that is physically printed on it. - */ - public char getDisplayLabel() { - return KeyCharacterMap.load(mDeviceId).getDisplayLabel(mKeyCode); - } - - /** - * <p> - * Returns the Unicode character that the key would produce. - * </p><p> - * Returns 0 if the key is not one that is used to type Unicode - * characters. - * </p><p> - * If the return value has bit - * {@link KeyCharacterMap#COMBINING_ACCENT} - * set, the key is a "dead key" that should be combined with another to - * actually produce a character -- see {@link #getDeadChar} -- - * after masking with - * {@link KeyCharacterMap#COMBINING_ACCENT_MASK}. - * </p> - */ - public int getUnicodeChar() { - return getUnicodeChar(mMetaState); - } - - /** - * <p> - * Returns the Unicode character that the key would produce. - * </p><p> - * Returns 0 if the key is not one that is used to type Unicode - * characters. - * </p><p> - * If the return value has bit - * {@link KeyCharacterMap#COMBINING_ACCENT} - * set, the key is a "dead key" that should be combined with another to - * actually produce a character -- see {@link #getDeadChar} -- after masking - * with {@link KeyCharacterMap#COMBINING_ACCENT_MASK}. - * </p> - */ - public int getUnicodeChar(int meta) { - return KeyCharacterMap.load(mDeviceId).get(mKeyCode, meta); - } - - /** - * Get the characters conversion data for the key event.. - * - * @param results a {@link KeyData} that will be filled with the results. - * - * @return whether the key was mapped or not. If the key was not mapped, - * results is not modified. - */ - public boolean getKeyData(KeyData results) { - return KeyCharacterMap.load(mDeviceId).getKeyData(mKeyCode, results); - } - - /** - * The same as {@link #getMatch(char[],int) getMatch(chars, 0)}. - */ - public char getMatch(char[] chars) { - return getMatch(chars, 0); - } - - /** - * If one of the chars in the array can be generated by the keyCode of this - * key event, return the char; otherwise return '\0'. - * @param chars the characters to try to find - * @param modifiers the modifier bits to prefer. If any of these bits - * are set, if there are multiple choices, that could - * work, the one for this modifier will be set. - */ - public char getMatch(char[] chars, int modifiers) { - return KeyCharacterMap.load(mDeviceId).getMatch(mKeyCode, chars, modifiers); - } - - /** - * Gets the number or symbol associated with the key. The character value - * is returned, not the numeric value. If the key is not a number, but is - * a symbol, the symbol is retuned. - */ - public char getNumber() { - return KeyCharacterMap.load(mDeviceId).getNumber(mKeyCode); - } - - /** - * Does the key code of this key produce a glyph? - */ - public boolean isPrintingKey() { - return KeyCharacterMap.load(mDeviceId).isPrintingKey(mKeyCode); - } - - /** - * Deliver this key event to a {@link Callback} interface. If this is - * an ACTION_MULTIPLE event and it is not handled, then an attempt will - * be made to deliver a single normal event. - * - * @param receiver The Callback that will be given the event. - * - * @return The return value from the Callback method that was called. - */ - public final boolean dispatch(Callback receiver) { - switch (mAction) { - case ACTION_DOWN: - return receiver.onKeyDown(mKeyCode, this); - case ACTION_UP: - return receiver.onKeyUp(mKeyCode, this); - case ACTION_MULTIPLE: - final int count = mRepeatCount; - final int code = mKeyCode; - if (receiver.onKeyMultiple(code, count, this)) { - return true; - } - if (code != KeyEvent.KEYCODE_UNKNOWN) { - mAction = ACTION_DOWN; - mRepeatCount = 0; - boolean handled = receiver.onKeyDown(code, this); - if (handled) { - mAction = ACTION_UP; - receiver.onKeyUp(code, this); - } - mAction = ACTION_MULTIPLE; - mRepeatCount = count; - return handled; - } - } - return false; - } - - public String toString() { - return "KeyEvent{action=" + mAction + " code=" + mKeyCode - + " repeat=" + mRepeatCount - + " meta=" + mMetaState + " scancode=" + mScancode - + " mFlags=" + mFlags + "}"; - } - - public static final Parcelable.Creator<KeyEvent> CREATOR - = new Parcelable.Creator<KeyEvent>() { - public KeyEvent createFromParcel(Parcel in) { - return new KeyEvent(in); - } - - public KeyEvent[] newArray(int size) { - return new KeyEvent[size]; - } - }; - - public int describeContents() { - return 0; - } - - public void writeToParcel(Parcel out, int flags) { - out.writeInt(mAction); - out.writeInt(mKeyCode); - out.writeInt(mRepeatCount); - out.writeInt(mMetaState); - out.writeInt(mDeviceId); - out.writeInt(mScancode); - out.writeInt(mFlags); - out.writeLong(mDownTime); - out.writeLong(mEventTime); - } - - private KeyEvent(Parcel in) { - mAction = in.readInt(); - mKeyCode = in.readInt(); - mRepeatCount = in.readInt(); - mMetaState = in.readInt(); - mDeviceId = in.readInt(); - mScancode = in.readInt(); - mFlags = in.readInt(); - mDownTime = in.readLong(); - mEventTime = in.readLong(); - } -} |
