Loading core/java/android/view/KeyEvent.java +72 −258 Original line number Diff line number Diff line Loading @@ -645,12 +645,11 @@ public class KeyEvent extends InputEvent implements Parcelable { // NOTE: If you add a new keycode here you must also add it to: // isSystem() // frameworks/native/include/android/keycodes.h // frameworks/base/include/androidfw/KeycodeLabels.h // frameworks/base/include/androidfw/InputEventAttributes.h // external/webkit/WebKit/android/plugins/ANPKeyCodes.h // frameworks/base/core/res/res/values/attrs.xml // emulator? // LAST_KEYCODE // KEYCODE_SYMBOLIC_NAMES // // Also Android currently does not reserve code ranges for vendor- // specific key codes. If you have new key codes to have, you Loading @@ -658,237 +657,6 @@ public class KeyEvent extends InputEvent implements Parcelable { // those new codes. This is intended to maintain a consistent // set of key code definitions across all Android devices. // Symbolic names of all key codes. private static final SparseArray<String> KEYCODE_SYMBOLIC_NAMES = new SparseArray<String>(); private static void populateKeycodeSymbolicNames() { SparseArray<String> names = KEYCODE_SYMBOLIC_NAMES; names.append(KEYCODE_UNKNOWN, "KEYCODE_UNKNOWN"); names.append(KEYCODE_SOFT_LEFT, "KEYCODE_SOFT_LEFT"); names.append(KEYCODE_SOFT_RIGHT, "KEYCODE_SOFT_RIGHT"); names.append(KEYCODE_HOME, "KEYCODE_HOME"); names.append(KEYCODE_BACK, "KEYCODE_BACK"); names.append(KEYCODE_CALL, "KEYCODE_CALL"); names.append(KEYCODE_ENDCALL, "KEYCODE_ENDCALL"); names.append(KEYCODE_0, "KEYCODE_0"); names.append(KEYCODE_1, "KEYCODE_1"); names.append(KEYCODE_2, "KEYCODE_2"); names.append(KEYCODE_3, "KEYCODE_3"); names.append(KEYCODE_4, "KEYCODE_4"); names.append(KEYCODE_5, "KEYCODE_5"); names.append(KEYCODE_6, "KEYCODE_6"); names.append(KEYCODE_7, "KEYCODE_7"); names.append(KEYCODE_8, "KEYCODE_8"); names.append(KEYCODE_9, "KEYCODE_9"); names.append(KEYCODE_STAR, "KEYCODE_STAR"); names.append(KEYCODE_POUND, "KEYCODE_POUND"); names.append(KEYCODE_DPAD_UP, "KEYCODE_DPAD_UP"); names.append(KEYCODE_DPAD_DOWN, "KEYCODE_DPAD_DOWN"); names.append(KEYCODE_DPAD_LEFT, "KEYCODE_DPAD_LEFT"); names.append(KEYCODE_DPAD_RIGHT, "KEYCODE_DPAD_RIGHT"); names.append(KEYCODE_DPAD_CENTER, "KEYCODE_DPAD_CENTER"); names.append(KEYCODE_VOLUME_UP, "KEYCODE_VOLUME_UP"); names.append(KEYCODE_VOLUME_DOWN, "KEYCODE_VOLUME_DOWN"); names.append(KEYCODE_POWER, "KEYCODE_POWER"); names.append(KEYCODE_CAMERA, "KEYCODE_CAMERA"); names.append(KEYCODE_CLEAR, "KEYCODE_CLEAR"); names.append(KEYCODE_A, "KEYCODE_A"); names.append(KEYCODE_B, "KEYCODE_B"); names.append(KEYCODE_C, "KEYCODE_C"); names.append(KEYCODE_D, "KEYCODE_D"); names.append(KEYCODE_E, "KEYCODE_E"); names.append(KEYCODE_F, "KEYCODE_F"); names.append(KEYCODE_G, "KEYCODE_G"); names.append(KEYCODE_H, "KEYCODE_H"); names.append(KEYCODE_I, "KEYCODE_I"); names.append(KEYCODE_J, "KEYCODE_J"); names.append(KEYCODE_K, "KEYCODE_K"); names.append(KEYCODE_L, "KEYCODE_L"); names.append(KEYCODE_M, "KEYCODE_M"); names.append(KEYCODE_N, "KEYCODE_N"); names.append(KEYCODE_O, "KEYCODE_O"); names.append(KEYCODE_P, "KEYCODE_P"); names.append(KEYCODE_Q, "KEYCODE_Q"); names.append(KEYCODE_R, "KEYCODE_R"); names.append(KEYCODE_S, "KEYCODE_S"); names.append(KEYCODE_T, "KEYCODE_T"); names.append(KEYCODE_U, "KEYCODE_U"); names.append(KEYCODE_V, "KEYCODE_V"); names.append(KEYCODE_W, "KEYCODE_W"); names.append(KEYCODE_X, "KEYCODE_X"); names.append(KEYCODE_Y, "KEYCODE_Y"); names.append(KEYCODE_Z, "KEYCODE_Z"); names.append(KEYCODE_COMMA, "KEYCODE_COMMA"); names.append(KEYCODE_PERIOD, "KEYCODE_PERIOD"); names.append(KEYCODE_ALT_LEFT, "KEYCODE_ALT_LEFT"); names.append(KEYCODE_ALT_RIGHT, "KEYCODE_ALT_RIGHT"); names.append(KEYCODE_SHIFT_LEFT, "KEYCODE_SHIFT_LEFT"); names.append(KEYCODE_SHIFT_RIGHT, "KEYCODE_SHIFT_RIGHT"); names.append(KEYCODE_TAB, "KEYCODE_TAB"); names.append(KEYCODE_SPACE, "KEYCODE_SPACE"); names.append(KEYCODE_SYM, "KEYCODE_SYM"); names.append(KEYCODE_EXPLORER, "KEYCODE_EXPLORER"); names.append(KEYCODE_ENVELOPE, "KEYCODE_ENVELOPE"); names.append(KEYCODE_ENTER, "KEYCODE_ENTER"); names.append(KEYCODE_DEL, "KEYCODE_DEL"); names.append(KEYCODE_GRAVE, "KEYCODE_GRAVE"); names.append(KEYCODE_MINUS, "KEYCODE_MINUS"); names.append(KEYCODE_EQUALS, "KEYCODE_EQUALS"); names.append(KEYCODE_LEFT_BRACKET, "KEYCODE_LEFT_BRACKET"); names.append(KEYCODE_RIGHT_BRACKET, "KEYCODE_RIGHT_BRACKET"); names.append(KEYCODE_BACKSLASH, "KEYCODE_BACKSLASH"); names.append(KEYCODE_SEMICOLON, "KEYCODE_SEMICOLON"); names.append(KEYCODE_APOSTROPHE, "KEYCODE_APOSTROPHE"); names.append(KEYCODE_SLASH, "KEYCODE_SLASH"); names.append(KEYCODE_AT, "KEYCODE_AT"); names.append(KEYCODE_NUM, "KEYCODE_NUM"); names.append(KEYCODE_HEADSETHOOK, "KEYCODE_HEADSETHOOK"); names.append(KEYCODE_FOCUS, "KEYCODE_FOCUS"); names.append(KEYCODE_PLUS, "KEYCODE_PLUS"); names.append(KEYCODE_MENU, "KEYCODE_MENU"); names.append(KEYCODE_NOTIFICATION, "KEYCODE_NOTIFICATION"); names.append(KEYCODE_SEARCH, "KEYCODE_SEARCH"); names.append(KEYCODE_MEDIA_PLAY_PAUSE, "KEYCODE_MEDIA_PLAY_PAUSE"); names.append(KEYCODE_MEDIA_STOP, "KEYCODE_MEDIA_STOP"); names.append(KEYCODE_MEDIA_NEXT, "KEYCODE_MEDIA_NEXT"); names.append(KEYCODE_MEDIA_PREVIOUS, "KEYCODE_MEDIA_PREVIOUS"); names.append(KEYCODE_MEDIA_REWIND, "KEYCODE_MEDIA_REWIND"); names.append(KEYCODE_MEDIA_FAST_FORWARD, "KEYCODE_MEDIA_FAST_FORWARD"); names.append(KEYCODE_MUTE, "KEYCODE_MUTE"); names.append(KEYCODE_PAGE_UP, "KEYCODE_PAGE_UP"); names.append(KEYCODE_PAGE_DOWN, "KEYCODE_PAGE_DOWN"); names.append(KEYCODE_PICTSYMBOLS, "KEYCODE_PICTSYMBOLS"); names.append(KEYCODE_SWITCH_CHARSET, "KEYCODE_SWITCH_CHARSET"); names.append(KEYCODE_BUTTON_A, "KEYCODE_BUTTON_A"); names.append(KEYCODE_BUTTON_B, "KEYCODE_BUTTON_B"); names.append(KEYCODE_BUTTON_C, "KEYCODE_BUTTON_C"); names.append(KEYCODE_BUTTON_X, "KEYCODE_BUTTON_X"); names.append(KEYCODE_BUTTON_Y, "KEYCODE_BUTTON_Y"); names.append(KEYCODE_BUTTON_Z, "KEYCODE_BUTTON_Z"); names.append(KEYCODE_BUTTON_L1, "KEYCODE_BUTTON_L1"); names.append(KEYCODE_BUTTON_R1, "KEYCODE_BUTTON_R1"); names.append(KEYCODE_BUTTON_L2, "KEYCODE_BUTTON_L2"); names.append(KEYCODE_BUTTON_R2, "KEYCODE_BUTTON_R2"); names.append(KEYCODE_BUTTON_THUMBL, "KEYCODE_BUTTON_THUMBL"); names.append(KEYCODE_BUTTON_THUMBR, "KEYCODE_BUTTON_THUMBR"); names.append(KEYCODE_BUTTON_START, "KEYCODE_BUTTON_START"); names.append(KEYCODE_BUTTON_SELECT, "KEYCODE_BUTTON_SELECT"); names.append(KEYCODE_BUTTON_MODE, "KEYCODE_BUTTON_MODE"); names.append(KEYCODE_ESCAPE, "KEYCODE_ESCAPE"); names.append(KEYCODE_FORWARD_DEL, "KEYCODE_FORWARD_DEL"); names.append(KEYCODE_CTRL_LEFT, "KEYCODE_CTRL_LEFT"); names.append(KEYCODE_CTRL_RIGHT, "KEYCODE_CTRL_RIGHT"); names.append(KEYCODE_CAPS_LOCK, "KEYCODE_CAPS_LOCK"); names.append(KEYCODE_SCROLL_LOCK, "KEYCODE_SCROLL_LOCK"); names.append(KEYCODE_META_LEFT, "KEYCODE_META_LEFT"); names.append(KEYCODE_META_RIGHT, "KEYCODE_META_RIGHT"); names.append(KEYCODE_FUNCTION, "KEYCODE_FUNCTION"); names.append(KEYCODE_SYSRQ, "KEYCODE_SYSRQ"); names.append(KEYCODE_BREAK, "KEYCODE_BREAK"); names.append(KEYCODE_MOVE_HOME, "KEYCODE_MOVE_HOME"); names.append(KEYCODE_MOVE_END, "KEYCODE_MOVE_END"); names.append(KEYCODE_INSERT, "KEYCODE_INSERT"); names.append(KEYCODE_FORWARD, "KEYCODE_FORWARD"); names.append(KEYCODE_MEDIA_PLAY, "KEYCODE_MEDIA_PLAY"); names.append(KEYCODE_MEDIA_PAUSE, "KEYCODE_MEDIA_PAUSE"); names.append(KEYCODE_MEDIA_CLOSE, "KEYCODE_MEDIA_CLOSE"); names.append(KEYCODE_MEDIA_EJECT, "KEYCODE_MEDIA_EJECT"); names.append(KEYCODE_MEDIA_RECORD, "KEYCODE_MEDIA_RECORD"); names.append(KEYCODE_F1, "KEYCODE_F1"); names.append(KEYCODE_F2, "KEYCODE_F2"); names.append(KEYCODE_F3, "KEYCODE_F3"); names.append(KEYCODE_F4, "KEYCODE_F4"); names.append(KEYCODE_F5, "KEYCODE_F5"); names.append(KEYCODE_F6, "KEYCODE_F6"); names.append(KEYCODE_F7, "KEYCODE_F7"); names.append(KEYCODE_F8, "KEYCODE_F8"); names.append(KEYCODE_F9, "KEYCODE_F9"); names.append(KEYCODE_F10, "KEYCODE_F10"); names.append(KEYCODE_F11, "KEYCODE_F11"); names.append(KEYCODE_F12, "KEYCODE_F12"); names.append(KEYCODE_NUM_LOCK, "KEYCODE_NUM_LOCK"); names.append(KEYCODE_NUMPAD_0, "KEYCODE_NUMPAD_0"); names.append(KEYCODE_NUMPAD_1, "KEYCODE_NUMPAD_1"); names.append(KEYCODE_NUMPAD_2, "KEYCODE_NUMPAD_2"); names.append(KEYCODE_NUMPAD_3, "KEYCODE_NUMPAD_3"); names.append(KEYCODE_NUMPAD_4, "KEYCODE_NUMPAD_4"); names.append(KEYCODE_NUMPAD_5, "KEYCODE_NUMPAD_5"); names.append(KEYCODE_NUMPAD_6, "KEYCODE_NUMPAD_6"); names.append(KEYCODE_NUMPAD_7, "KEYCODE_NUMPAD_7"); names.append(KEYCODE_NUMPAD_8, "KEYCODE_NUMPAD_8"); names.append(KEYCODE_NUMPAD_9, "KEYCODE_NUMPAD_9"); names.append(KEYCODE_NUMPAD_DIVIDE, "KEYCODE_NUMPAD_DIVIDE"); names.append(KEYCODE_NUMPAD_MULTIPLY, "KEYCODE_NUMPAD_MULTIPLY"); names.append(KEYCODE_NUMPAD_SUBTRACT, "KEYCODE_NUMPAD_SUBTRACT"); names.append(KEYCODE_NUMPAD_ADD, "KEYCODE_NUMPAD_ADD"); names.append(KEYCODE_NUMPAD_DOT, "KEYCODE_NUMPAD_DOT"); names.append(KEYCODE_NUMPAD_COMMA, "KEYCODE_NUMPAD_COMMA"); names.append(KEYCODE_NUMPAD_ENTER, "KEYCODE_NUMPAD_ENTER"); names.append(KEYCODE_NUMPAD_EQUALS, "KEYCODE_NUMPAD_EQUALS"); names.append(KEYCODE_NUMPAD_LEFT_PAREN, "KEYCODE_NUMPAD_LEFT_PAREN"); names.append(KEYCODE_NUMPAD_RIGHT_PAREN, "KEYCODE_NUMPAD_RIGHT_PAREN"); names.append(KEYCODE_VOLUME_MUTE, "KEYCODE_VOLUME_MUTE"); names.append(KEYCODE_INFO, "KEYCODE_INFO"); names.append(KEYCODE_CHANNEL_UP, "KEYCODE_CHANNEL_UP"); names.append(KEYCODE_CHANNEL_DOWN, "KEYCODE_CHANNEL_DOWN"); names.append(KEYCODE_ZOOM_IN, "KEYCODE_ZOOM_IN"); names.append(KEYCODE_ZOOM_OUT, "KEYCODE_ZOOM_OUT"); names.append(KEYCODE_TV, "KEYCODE_TV"); names.append(KEYCODE_WINDOW, "KEYCODE_WINDOW"); names.append(KEYCODE_GUIDE, "KEYCODE_GUIDE"); names.append(KEYCODE_DVR, "KEYCODE_DVR"); names.append(KEYCODE_BOOKMARK, "KEYCODE_BOOKMARK"); names.append(KEYCODE_CAPTIONS, "KEYCODE_CAPTIONS"); names.append(KEYCODE_SETTINGS, "KEYCODE_SETTINGS"); names.append(KEYCODE_TV_POWER, "KEYCODE_TV_POWER"); names.append(KEYCODE_TV_INPUT, "KEYCODE_TV_INPUT"); names.append(KEYCODE_STB_INPUT, "KEYCODE_STB_INPUT"); names.append(KEYCODE_STB_POWER, "KEYCODE_STB_POWER"); names.append(KEYCODE_AVR_POWER, "KEYCODE_AVR_POWER"); names.append(KEYCODE_AVR_INPUT, "KEYCODE_AVR_INPUT"); names.append(KEYCODE_PROG_RED, "KEYCODE_PROG_RED"); names.append(KEYCODE_PROG_GREEN, "KEYCODE_PROG_GREEN"); names.append(KEYCODE_PROG_YELLOW, "KEYCODE_PROG_YELLOW"); names.append(KEYCODE_PROG_BLUE, "KEYCODE_PROG_BLUE"); names.append(KEYCODE_APP_SWITCH, "KEYCODE_APP_SWITCH"); names.append(KEYCODE_BUTTON_1, "KEYCODE_BUTTON_1"); names.append(KEYCODE_BUTTON_2, "KEYCODE_BUTTON_2"); names.append(KEYCODE_BUTTON_3, "KEYCODE_BUTTON_3"); names.append(KEYCODE_BUTTON_4, "KEYCODE_BUTTON_4"); names.append(KEYCODE_BUTTON_5, "KEYCODE_BUTTON_5"); names.append(KEYCODE_BUTTON_6, "KEYCODE_BUTTON_6"); names.append(KEYCODE_BUTTON_7, "KEYCODE_BUTTON_7"); names.append(KEYCODE_BUTTON_8, "KEYCODE_BUTTON_8"); names.append(KEYCODE_BUTTON_9, "KEYCODE_BUTTON_9"); names.append(KEYCODE_BUTTON_10, "KEYCODE_BUTTON_10"); names.append(KEYCODE_BUTTON_11, "KEYCODE_BUTTON_11"); names.append(KEYCODE_BUTTON_12, "KEYCODE_BUTTON_12"); names.append(KEYCODE_BUTTON_13, "KEYCODE_BUTTON_13"); names.append(KEYCODE_BUTTON_14, "KEYCODE_BUTTON_14"); names.append(KEYCODE_BUTTON_15, "KEYCODE_BUTTON_15"); names.append(KEYCODE_BUTTON_16, "KEYCODE_BUTTON_16"); names.append(KEYCODE_LANGUAGE_SWITCH, "KEYCODE_LANGUAGE_SWITCH"); names.append(KEYCODE_MANNER_MODE, "KEYCODE_MANNER_MODE"); names.append(KEYCODE_3D_MODE, "KEYCODE_3D_MODE"); names.append(KEYCODE_CONTACTS, "KEYCODE_CONTACTS"); names.append(KEYCODE_CALENDAR, "KEYCODE_CALENDAR"); names.append(KEYCODE_MUSIC, "KEYCODE_MUSIC"); names.append(KEYCODE_CALCULATOR, "KEYCODE_CALCULATOR"); names.append(KEYCODE_ZENKAKU_HANKAKU, "KEYCODE_ZENKAKU_HANKAKU"); names.append(KEYCODE_EISU, "KEYCODE_EISU"); names.append(KEYCODE_MUHENKAN, "KEYCODE_MUHENKAN"); names.append(KEYCODE_HENKAN, "KEYCODE_HENKAN"); names.append(KEYCODE_KATAKANA_HIRAGANA, "KEYCODE_KATAKANA_HIRAGANA"); names.append(KEYCODE_YEN, "KEYCODE_YEN"); names.append(KEYCODE_RO, "KEYCODE_RO"); names.append(KEYCODE_KANA, "KEYCODE_KANA"); names.append(KEYCODE_ASSIST, "KEYCODE_ASSIST"); names.append(KEYCODE_BRIGHTNESS_DOWN, "KEYCODE_BRIGHTNESS_DOWN"); names.append(KEYCODE_BRIGHTNESS_UP, "KEYCODE_BRIGHTNESS_UP"); names.append(KEYCODE_MEDIA_AUDIO_TRACK, "KEYCODE_MEDIA_AUDIO_TRACK"); names.append(KEYCODE_SLEEP, "KEYCODE_SLEEP"); names.append(KEYCODE_WAKEUP, "KEYCODE_WAKEUP"); }; // Symbolic names of all metakeys in bit order from least significant to most significant. // Accordingly there are exactly 32 values in this table. private static final String[] META_SYMBOLIC_NAMES = new String[] { Loading Loading @@ -926,6 +694,8 @@ public class KeyEvent extends InputEvent implements Parcelable { "0x80000000", }; private static final String LABEL_PREFIX = "KEYCODE_"; /** * @deprecated There are now more than MAX_KEYCODE keycodes. * Use {@link #getMaxKeyCode()} instead. Loading Loading @@ -1367,9 +1137,8 @@ public class KeyEvent extends InputEvent implements Parcelable { boolean onKeyMultiple(int keyCode, int count, KeyEvent event); } static { populateKeycodeSymbolicNames(); } private static native String nativeKeyCodeToString(int keyCode); private static native int nativeKeyCodeFromString(String keyCode); private KeyEvent() { } Loading Loading @@ -1792,19 +1561,15 @@ public class KeyEvent extends InputEvent implements Parcelable { 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 /** Is this a system key? System keys can not be used for menu shortcuts. */ public final boolean isSystem() { return native_isSystemKey(mKeyCode); return isSystemKey(mKeyCode); } /** @hide */ public final boolean hasDefaultAction() { return native_hasDefaultAction(mKeyCode); public final boolean isWakeKey() { return isWakeKey(mKeyCode); } /** Loading Loading @@ -1887,6 +1652,62 @@ public class KeyEvent extends InputEvent implements Parcelable { return false; } /** Is this a system key? System keys can not be used for menu shortcuts. * @hide */ public static final boolean isSystemKey(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: case KeyEvent.KEYCODE_SOFT_RIGHT: case KeyEvent.KEYCODE_HOME: case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_CALL: case KeyEvent.KEYCODE_ENDCALL: case KeyEvent.KEYCODE_VOLUME_UP: case KeyEvent.KEYCODE_VOLUME_DOWN: case KeyEvent.KEYCODE_VOLUME_MUTE: case KeyEvent.KEYCODE_MUTE: case KeyEvent.KEYCODE_POWER: case KeyEvent.KEYCODE_HEADSETHOOK: case KeyEvent.KEYCODE_MEDIA_PLAY: case KeyEvent.KEYCODE_MEDIA_PAUSE: case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: case KeyEvent.KEYCODE_MEDIA_STOP: case KeyEvent.KEYCODE_MEDIA_NEXT: case KeyEvent.KEYCODE_MEDIA_PREVIOUS: case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: case KeyEvent.KEYCODE_CAMERA: case KeyEvent.KEYCODE_FOCUS: case KeyEvent.KEYCODE_SEARCH: case KeyEvent.KEYCODE_BRIGHTNESS_DOWN: case KeyEvent.KEYCODE_BRIGHTNESS_UP: case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: case KeyEvent.KEYCODE_DPAD_UP: case KeyEvent.KEYCODE_DPAD_RIGHT: case KeyEvent.KEYCODE_DPAD_DOWN: case KeyEvent.KEYCODE_DPAD_LEFT: return true; } return false; } /** @hide */ public static final boolean isWakeKey(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_POWER: case KeyEvent.KEYCODE_MENU: case KeyEvent.KEYCODE_SLEEP: case KeyEvent.KEYCODE_WAKEUP: return true; } return false; } /** {@inheritDoc} */ @Override public final int getDeviceId() { Loading Loading @@ -2866,8 +2687,8 @@ public class KeyEvent extends InputEvent implements Parcelable { * @see KeyCharacterMap#getDisplayLabel */ public static String keyCodeToString(int keyCode) { String symbolicName = KEYCODE_SYMBOLIC_NAMES.get(keyCode); return symbolicName != null ? symbolicName : Integer.toString(keyCode); String symbolicName = nativeKeyCodeToString(keyCode); return symbolicName != null ? LABEL_PREFIX + symbolicName : Integer.toString(keyCode); } /** Loading @@ -2879,17 +2700,13 @@ public class KeyEvent extends InputEvent implements Parcelable { * @see #keycodeToString(int) */ public static int keyCodeFromString(String symbolicName) { if (symbolicName == null) { throw new IllegalArgumentException("symbolicName must not be null"); } final int count = KEYCODE_SYMBOLIC_NAMES.size(); for (int i = 0; i < count; i++) { if (symbolicName.equals(KEYCODE_SYMBOLIC_NAMES.valueAt(i))) { return i; if (symbolicName.startsWith(LABEL_PREFIX)) { symbolicName = symbolicName.substring(LABEL_PREFIX.length()); } int keyCode = nativeKeyCodeFromString(symbolicName); if (keyCode > 0) { return keyCode; } try { return Integer.parseInt(symbolicName, 10); } catch (NumberFormatException ex) { Loading Loading @@ -2977,7 +2794,4 @@ public class KeyEvent extends InputEvent implements Parcelable { out.writeLong(mDownTime); out.writeLong(mEventTime); } private native boolean native_isSystemKey(int keyCode); private native boolean native_hasDefaultAction(int keyCode); } core/java/android/view/MotionEvent.java +11 −11 Original line number Diff line number Diff line Loading @@ -167,6 +167,7 @@ import android.util.SparseArray; */ public final class MotionEvent extends InputEvent implements Parcelable { private static final long NS_PER_MS = 1000000; private static final String LABEL_PREFIX = "AXIS_"; /** * An invalid pointer id. Loading Loading @@ -1369,6 +1370,9 @@ public final class MotionEvent extends InputEvent implements Parcelable { private static native long nativeReadFromParcel(long nativePtr, Parcel parcel); private static native void nativeWriteToParcel(long nativePtr, Parcel parcel); private static native String nativeAxisToString(int axis); private static native int nativeAxisFromString(String label); private MotionEvent() { } Loading Loading @@ -3051,8 +3055,8 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @return The symbolic name of the specified axis. */ public static String axisToString(int axis) { String symbolicName = AXIS_SYMBOLIC_NAMES.get(axis); return symbolicName != null ? symbolicName : Integer.toString(axis); String symbolicName = nativeAxisToString(axis); return symbolicName != null ? LABEL_PREFIX + symbolicName : Integer.toString(axis); } /** Loading @@ -3064,17 +3068,13 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see KeyEvent#keyCodeToString(int) */ public static int axisFromString(String symbolicName) { if (symbolicName == null) { throw new IllegalArgumentException("symbolicName must not be null"); } final int count = AXIS_SYMBOLIC_NAMES.size(); for (int i = 0; i < count; i++) { if (symbolicName.equals(AXIS_SYMBOLIC_NAMES.valueAt(i))) { return i; if (symbolicName.startsWith(LABEL_PREFIX)) { symbolicName = symbolicName.substring(LABEL_PREFIX.length()); } int axis = nativeAxisFromString(symbolicName); if (axis >= 0) { return axis; } try { return Integer.parseInt(symbolicName, 10); } catch (NumberFormatException ex) { Loading core/java/android/view/WindowManagerPolicy.java +1 −8 Original line number Diff line number Diff line Loading @@ -76,14 +76,7 @@ import java.lang.annotation.RetentionPolicy; public interface WindowManagerPolicy { // Policy flags. These flags are also defined in frameworks/base/include/ui/Input.h. public final static int FLAG_WAKE = 0x00000001; public final static int FLAG_WAKE_DROPPED = 0x00000002; public final static int FLAG_SHIFT = 0x00000004; public final static int FLAG_CAPS_LOCK = 0x00000008; public final static int FLAG_ALT = 0x00000010; public final static int FLAG_ALT_GR = 0x00000020; public final static int FLAG_MENU = 0x00000040; public final static int FLAG_LAUNCHER = 0x00000080; public final static int FLAG_VIRTUAL = 0x00000100; public final static int FLAG_VIRTUAL = 0x00000002; public final static int FLAG_INJECTED = 0x01000000; public final static int FLAG_TRUSTED = 0x02000000; Loading core/jni/android_view_KeyEvent.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <android_runtime/Log.h> #include <utils/Log.h> #include <input/Input.h> #include <ScopedUtfChars.h> #include "android_view_KeyEvent.h" namespace android { Loading Loading @@ -102,20 +103,25 @@ status_t android_view_KeyEvent_recycle(JNIEnv* env, jobject eventObj) { return OK; } static jboolean native_isSystemKey(JNIEnv* env, jobject clazz, jint keyCode) { return KeyEvent::isSystemKey(keyCode); static jstring android_view_KeyEvent_nativeKeyCodeToString(JNIEnv* env, jobject clazz, jint keyCode) { return env->NewStringUTF(KeyEvent::getLabel(keyCode)); } static jboolean native_hasDefaultAction(JNIEnv* env, jobject clazz, jint keyCode) { return KeyEvent::hasDefaultAction(keyCode); static jint android_view_KeyEvent_nativeKeyCodeFromString(JNIEnv* env, jobject clazz, jstring label) { ScopedUtfChars keyLabel(env, label); return KeyEvent::getKeyCodeFromLabel(keyLabel.c_str()); } // ---------------------------------------------------------------------------- static const JNINativeMethod g_methods[] = { { "native_isSystemKey", "(I)Z", (void*)native_isSystemKey }, { "native_hasDefaultAction", "(I)Z", (void*)native_hasDefaultAction }, { "nativeKeyCodeToString", "(I)Ljava/lang/String;", (void*)android_view_KeyEvent_nativeKeyCodeToString}, { "nativeKeyCodeFromString", "(Ljava/lang/String;)I", (void*)android_view_KeyEvent_nativeKeyCodeFromString}, }; #define FIND_CLASS(var, className) \ Loading core/jni/android_view_MotionEvent.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <android_runtime/Log.h> #include <utils/Log.h> #include <input/Input.h> #include <ScopedUtfChars.h> #include "android_os_Parcel.h" #include "android_view_MotionEvent.h" #include "android_util_Binder.h" Loading Loading @@ -724,6 +725,17 @@ static void android_view_MotionEvent_nativeWriteToParcel(JNIEnv* env, jclass cla } } static jstring android_view_MotionEvent_nativeAxisToString(JNIEnv* env, jclass clazz, jint axis) { return env->NewStringUTF(MotionEvent::getLabel(static_cast<int32_t>(axis))); } static jint android_view_MotionEvent_nativeAxisFromString(JNIEnv* env, jclass clazz, jstring label) { ScopedUtfChars axisLabel(env, label); return static_cast<jint>(MotionEvent::getAxisFromLabel(axisLabel.c_str())); } // ---------------------------------------------------------------------------- static JNINativeMethod gMotionEventMethods[] = { Loading Loading @@ -840,6 +852,10 @@ static JNINativeMethod gMotionEventMethods[] = { { "nativeWriteToParcel", "(JLandroid/os/Parcel;)V", (void*)android_view_MotionEvent_nativeWriteToParcel }, { "nativeAxisToString", "(I)Ljava/lang/String;", (void*)android_view_MotionEvent_nativeAxisToString }, { "nativeAxisFromString", "(Ljava/lang/String;)I", (void*)android_view_MotionEvent_nativeAxisFromString }, }; #define FIND_CLASS(var, className) \ Loading Loading
core/java/android/view/KeyEvent.java +72 −258 Original line number Diff line number Diff line Loading @@ -645,12 +645,11 @@ public class KeyEvent extends InputEvent implements Parcelable { // NOTE: If you add a new keycode here you must also add it to: // isSystem() // frameworks/native/include/android/keycodes.h // frameworks/base/include/androidfw/KeycodeLabels.h // frameworks/base/include/androidfw/InputEventAttributes.h // external/webkit/WebKit/android/plugins/ANPKeyCodes.h // frameworks/base/core/res/res/values/attrs.xml // emulator? // LAST_KEYCODE // KEYCODE_SYMBOLIC_NAMES // // Also Android currently does not reserve code ranges for vendor- // specific key codes. If you have new key codes to have, you Loading @@ -658,237 +657,6 @@ public class KeyEvent extends InputEvent implements Parcelable { // those new codes. This is intended to maintain a consistent // set of key code definitions across all Android devices. // Symbolic names of all key codes. private static final SparseArray<String> KEYCODE_SYMBOLIC_NAMES = new SparseArray<String>(); private static void populateKeycodeSymbolicNames() { SparseArray<String> names = KEYCODE_SYMBOLIC_NAMES; names.append(KEYCODE_UNKNOWN, "KEYCODE_UNKNOWN"); names.append(KEYCODE_SOFT_LEFT, "KEYCODE_SOFT_LEFT"); names.append(KEYCODE_SOFT_RIGHT, "KEYCODE_SOFT_RIGHT"); names.append(KEYCODE_HOME, "KEYCODE_HOME"); names.append(KEYCODE_BACK, "KEYCODE_BACK"); names.append(KEYCODE_CALL, "KEYCODE_CALL"); names.append(KEYCODE_ENDCALL, "KEYCODE_ENDCALL"); names.append(KEYCODE_0, "KEYCODE_0"); names.append(KEYCODE_1, "KEYCODE_1"); names.append(KEYCODE_2, "KEYCODE_2"); names.append(KEYCODE_3, "KEYCODE_3"); names.append(KEYCODE_4, "KEYCODE_4"); names.append(KEYCODE_5, "KEYCODE_5"); names.append(KEYCODE_6, "KEYCODE_6"); names.append(KEYCODE_7, "KEYCODE_7"); names.append(KEYCODE_8, "KEYCODE_8"); names.append(KEYCODE_9, "KEYCODE_9"); names.append(KEYCODE_STAR, "KEYCODE_STAR"); names.append(KEYCODE_POUND, "KEYCODE_POUND"); names.append(KEYCODE_DPAD_UP, "KEYCODE_DPAD_UP"); names.append(KEYCODE_DPAD_DOWN, "KEYCODE_DPAD_DOWN"); names.append(KEYCODE_DPAD_LEFT, "KEYCODE_DPAD_LEFT"); names.append(KEYCODE_DPAD_RIGHT, "KEYCODE_DPAD_RIGHT"); names.append(KEYCODE_DPAD_CENTER, "KEYCODE_DPAD_CENTER"); names.append(KEYCODE_VOLUME_UP, "KEYCODE_VOLUME_UP"); names.append(KEYCODE_VOLUME_DOWN, "KEYCODE_VOLUME_DOWN"); names.append(KEYCODE_POWER, "KEYCODE_POWER"); names.append(KEYCODE_CAMERA, "KEYCODE_CAMERA"); names.append(KEYCODE_CLEAR, "KEYCODE_CLEAR"); names.append(KEYCODE_A, "KEYCODE_A"); names.append(KEYCODE_B, "KEYCODE_B"); names.append(KEYCODE_C, "KEYCODE_C"); names.append(KEYCODE_D, "KEYCODE_D"); names.append(KEYCODE_E, "KEYCODE_E"); names.append(KEYCODE_F, "KEYCODE_F"); names.append(KEYCODE_G, "KEYCODE_G"); names.append(KEYCODE_H, "KEYCODE_H"); names.append(KEYCODE_I, "KEYCODE_I"); names.append(KEYCODE_J, "KEYCODE_J"); names.append(KEYCODE_K, "KEYCODE_K"); names.append(KEYCODE_L, "KEYCODE_L"); names.append(KEYCODE_M, "KEYCODE_M"); names.append(KEYCODE_N, "KEYCODE_N"); names.append(KEYCODE_O, "KEYCODE_O"); names.append(KEYCODE_P, "KEYCODE_P"); names.append(KEYCODE_Q, "KEYCODE_Q"); names.append(KEYCODE_R, "KEYCODE_R"); names.append(KEYCODE_S, "KEYCODE_S"); names.append(KEYCODE_T, "KEYCODE_T"); names.append(KEYCODE_U, "KEYCODE_U"); names.append(KEYCODE_V, "KEYCODE_V"); names.append(KEYCODE_W, "KEYCODE_W"); names.append(KEYCODE_X, "KEYCODE_X"); names.append(KEYCODE_Y, "KEYCODE_Y"); names.append(KEYCODE_Z, "KEYCODE_Z"); names.append(KEYCODE_COMMA, "KEYCODE_COMMA"); names.append(KEYCODE_PERIOD, "KEYCODE_PERIOD"); names.append(KEYCODE_ALT_LEFT, "KEYCODE_ALT_LEFT"); names.append(KEYCODE_ALT_RIGHT, "KEYCODE_ALT_RIGHT"); names.append(KEYCODE_SHIFT_LEFT, "KEYCODE_SHIFT_LEFT"); names.append(KEYCODE_SHIFT_RIGHT, "KEYCODE_SHIFT_RIGHT"); names.append(KEYCODE_TAB, "KEYCODE_TAB"); names.append(KEYCODE_SPACE, "KEYCODE_SPACE"); names.append(KEYCODE_SYM, "KEYCODE_SYM"); names.append(KEYCODE_EXPLORER, "KEYCODE_EXPLORER"); names.append(KEYCODE_ENVELOPE, "KEYCODE_ENVELOPE"); names.append(KEYCODE_ENTER, "KEYCODE_ENTER"); names.append(KEYCODE_DEL, "KEYCODE_DEL"); names.append(KEYCODE_GRAVE, "KEYCODE_GRAVE"); names.append(KEYCODE_MINUS, "KEYCODE_MINUS"); names.append(KEYCODE_EQUALS, "KEYCODE_EQUALS"); names.append(KEYCODE_LEFT_BRACKET, "KEYCODE_LEFT_BRACKET"); names.append(KEYCODE_RIGHT_BRACKET, "KEYCODE_RIGHT_BRACKET"); names.append(KEYCODE_BACKSLASH, "KEYCODE_BACKSLASH"); names.append(KEYCODE_SEMICOLON, "KEYCODE_SEMICOLON"); names.append(KEYCODE_APOSTROPHE, "KEYCODE_APOSTROPHE"); names.append(KEYCODE_SLASH, "KEYCODE_SLASH"); names.append(KEYCODE_AT, "KEYCODE_AT"); names.append(KEYCODE_NUM, "KEYCODE_NUM"); names.append(KEYCODE_HEADSETHOOK, "KEYCODE_HEADSETHOOK"); names.append(KEYCODE_FOCUS, "KEYCODE_FOCUS"); names.append(KEYCODE_PLUS, "KEYCODE_PLUS"); names.append(KEYCODE_MENU, "KEYCODE_MENU"); names.append(KEYCODE_NOTIFICATION, "KEYCODE_NOTIFICATION"); names.append(KEYCODE_SEARCH, "KEYCODE_SEARCH"); names.append(KEYCODE_MEDIA_PLAY_PAUSE, "KEYCODE_MEDIA_PLAY_PAUSE"); names.append(KEYCODE_MEDIA_STOP, "KEYCODE_MEDIA_STOP"); names.append(KEYCODE_MEDIA_NEXT, "KEYCODE_MEDIA_NEXT"); names.append(KEYCODE_MEDIA_PREVIOUS, "KEYCODE_MEDIA_PREVIOUS"); names.append(KEYCODE_MEDIA_REWIND, "KEYCODE_MEDIA_REWIND"); names.append(KEYCODE_MEDIA_FAST_FORWARD, "KEYCODE_MEDIA_FAST_FORWARD"); names.append(KEYCODE_MUTE, "KEYCODE_MUTE"); names.append(KEYCODE_PAGE_UP, "KEYCODE_PAGE_UP"); names.append(KEYCODE_PAGE_DOWN, "KEYCODE_PAGE_DOWN"); names.append(KEYCODE_PICTSYMBOLS, "KEYCODE_PICTSYMBOLS"); names.append(KEYCODE_SWITCH_CHARSET, "KEYCODE_SWITCH_CHARSET"); names.append(KEYCODE_BUTTON_A, "KEYCODE_BUTTON_A"); names.append(KEYCODE_BUTTON_B, "KEYCODE_BUTTON_B"); names.append(KEYCODE_BUTTON_C, "KEYCODE_BUTTON_C"); names.append(KEYCODE_BUTTON_X, "KEYCODE_BUTTON_X"); names.append(KEYCODE_BUTTON_Y, "KEYCODE_BUTTON_Y"); names.append(KEYCODE_BUTTON_Z, "KEYCODE_BUTTON_Z"); names.append(KEYCODE_BUTTON_L1, "KEYCODE_BUTTON_L1"); names.append(KEYCODE_BUTTON_R1, "KEYCODE_BUTTON_R1"); names.append(KEYCODE_BUTTON_L2, "KEYCODE_BUTTON_L2"); names.append(KEYCODE_BUTTON_R2, "KEYCODE_BUTTON_R2"); names.append(KEYCODE_BUTTON_THUMBL, "KEYCODE_BUTTON_THUMBL"); names.append(KEYCODE_BUTTON_THUMBR, "KEYCODE_BUTTON_THUMBR"); names.append(KEYCODE_BUTTON_START, "KEYCODE_BUTTON_START"); names.append(KEYCODE_BUTTON_SELECT, "KEYCODE_BUTTON_SELECT"); names.append(KEYCODE_BUTTON_MODE, "KEYCODE_BUTTON_MODE"); names.append(KEYCODE_ESCAPE, "KEYCODE_ESCAPE"); names.append(KEYCODE_FORWARD_DEL, "KEYCODE_FORWARD_DEL"); names.append(KEYCODE_CTRL_LEFT, "KEYCODE_CTRL_LEFT"); names.append(KEYCODE_CTRL_RIGHT, "KEYCODE_CTRL_RIGHT"); names.append(KEYCODE_CAPS_LOCK, "KEYCODE_CAPS_LOCK"); names.append(KEYCODE_SCROLL_LOCK, "KEYCODE_SCROLL_LOCK"); names.append(KEYCODE_META_LEFT, "KEYCODE_META_LEFT"); names.append(KEYCODE_META_RIGHT, "KEYCODE_META_RIGHT"); names.append(KEYCODE_FUNCTION, "KEYCODE_FUNCTION"); names.append(KEYCODE_SYSRQ, "KEYCODE_SYSRQ"); names.append(KEYCODE_BREAK, "KEYCODE_BREAK"); names.append(KEYCODE_MOVE_HOME, "KEYCODE_MOVE_HOME"); names.append(KEYCODE_MOVE_END, "KEYCODE_MOVE_END"); names.append(KEYCODE_INSERT, "KEYCODE_INSERT"); names.append(KEYCODE_FORWARD, "KEYCODE_FORWARD"); names.append(KEYCODE_MEDIA_PLAY, "KEYCODE_MEDIA_PLAY"); names.append(KEYCODE_MEDIA_PAUSE, "KEYCODE_MEDIA_PAUSE"); names.append(KEYCODE_MEDIA_CLOSE, "KEYCODE_MEDIA_CLOSE"); names.append(KEYCODE_MEDIA_EJECT, "KEYCODE_MEDIA_EJECT"); names.append(KEYCODE_MEDIA_RECORD, "KEYCODE_MEDIA_RECORD"); names.append(KEYCODE_F1, "KEYCODE_F1"); names.append(KEYCODE_F2, "KEYCODE_F2"); names.append(KEYCODE_F3, "KEYCODE_F3"); names.append(KEYCODE_F4, "KEYCODE_F4"); names.append(KEYCODE_F5, "KEYCODE_F5"); names.append(KEYCODE_F6, "KEYCODE_F6"); names.append(KEYCODE_F7, "KEYCODE_F7"); names.append(KEYCODE_F8, "KEYCODE_F8"); names.append(KEYCODE_F9, "KEYCODE_F9"); names.append(KEYCODE_F10, "KEYCODE_F10"); names.append(KEYCODE_F11, "KEYCODE_F11"); names.append(KEYCODE_F12, "KEYCODE_F12"); names.append(KEYCODE_NUM_LOCK, "KEYCODE_NUM_LOCK"); names.append(KEYCODE_NUMPAD_0, "KEYCODE_NUMPAD_0"); names.append(KEYCODE_NUMPAD_1, "KEYCODE_NUMPAD_1"); names.append(KEYCODE_NUMPAD_2, "KEYCODE_NUMPAD_2"); names.append(KEYCODE_NUMPAD_3, "KEYCODE_NUMPAD_3"); names.append(KEYCODE_NUMPAD_4, "KEYCODE_NUMPAD_4"); names.append(KEYCODE_NUMPAD_5, "KEYCODE_NUMPAD_5"); names.append(KEYCODE_NUMPAD_6, "KEYCODE_NUMPAD_6"); names.append(KEYCODE_NUMPAD_7, "KEYCODE_NUMPAD_7"); names.append(KEYCODE_NUMPAD_8, "KEYCODE_NUMPAD_8"); names.append(KEYCODE_NUMPAD_9, "KEYCODE_NUMPAD_9"); names.append(KEYCODE_NUMPAD_DIVIDE, "KEYCODE_NUMPAD_DIVIDE"); names.append(KEYCODE_NUMPAD_MULTIPLY, "KEYCODE_NUMPAD_MULTIPLY"); names.append(KEYCODE_NUMPAD_SUBTRACT, "KEYCODE_NUMPAD_SUBTRACT"); names.append(KEYCODE_NUMPAD_ADD, "KEYCODE_NUMPAD_ADD"); names.append(KEYCODE_NUMPAD_DOT, "KEYCODE_NUMPAD_DOT"); names.append(KEYCODE_NUMPAD_COMMA, "KEYCODE_NUMPAD_COMMA"); names.append(KEYCODE_NUMPAD_ENTER, "KEYCODE_NUMPAD_ENTER"); names.append(KEYCODE_NUMPAD_EQUALS, "KEYCODE_NUMPAD_EQUALS"); names.append(KEYCODE_NUMPAD_LEFT_PAREN, "KEYCODE_NUMPAD_LEFT_PAREN"); names.append(KEYCODE_NUMPAD_RIGHT_PAREN, "KEYCODE_NUMPAD_RIGHT_PAREN"); names.append(KEYCODE_VOLUME_MUTE, "KEYCODE_VOLUME_MUTE"); names.append(KEYCODE_INFO, "KEYCODE_INFO"); names.append(KEYCODE_CHANNEL_UP, "KEYCODE_CHANNEL_UP"); names.append(KEYCODE_CHANNEL_DOWN, "KEYCODE_CHANNEL_DOWN"); names.append(KEYCODE_ZOOM_IN, "KEYCODE_ZOOM_IN"); names.append(KEYCODE_ZOOM_OUT, "KEYCODE_ZOOM_OUT"); names.append(KEYCODE_TV, "KEYCODE_TV"); names.append(KEYCODE_WINDOW, "KEYCODE_WINDOW"); names.append(KEYCODE_GUIDE, "KEYCODE_GUIDE"); names.append(KEYCODE_DVR, "KEYCODE_DVR"); names.append(KEYCODE_BOOKMARK, "KEYCODE_BOOKMARK"); names.append(KEYCODE_CAPTIONS, "KEYCODE_CAPTIONS"); names.append(KEYCODE_SETTINGS, "KEYCODE_SETTINGS"); names.append(KEYCODE_TV_POWER, "KEYCODE_TV_POWER"); names.append(KEYCODE_TV_INPUT, "KEYCODE_TV_INPUT"); names.append(KEYCODE_STB_INPUT, "KEYCODE_STB_INPUT"); names.append(KEYCODE_STB_POWER, "KEYCODE_STB_POWER"); names.append(KEYCODE_AVR_POWER, "KEYCODE_AVR_POWER"); names.append(KEYCODE_AVR_INPUT, "KEYCODE_AVR_INPUT"); names.append(KEYCODE_PROG_RED, "KEYCODE_PROG_RED"); names.append(KEYCODE_PROG_GREEN, "KEYCODE_PROG_GREEN"); names.append(KEYCODE_PROG_YELLOW, "KEYCODE_PROG_YELLOW"); names.append(KEYCODE_PROG_BLUE, "KEYCODE_PROG_BLUE"); names.append(KEYCODE_APP_SWITCH, "KEYCODE_APP_SWITCH"); names.append(KEYCODE_BUTTON_1, "KEYCODE_BUTTON_1"); names.append(KEYCODE_BUTTON_2, "KEYCODE_BUTTON_2"); names.append(KEYCODE_BUTTON_3, "KEYCODE_BUTTON_3"); names.append(KEYCODE_BUTTON_4, "KEYCODE_BUTTON_4"); names.append(KEYCODE_BUTTON_5, "KEYCODE_BUTTON_5"); names.append(KEYCODE_BUTTON_6, "KEYCODE_BUTTON_6"); names.append(KEYCODE_BUTTON_7, "KEYCODE_BUTTON_7"); names.append(KEYCODE_BUTTON_8, "KEYCODE_BUTTON_8"); names.append(KEYCODE_BUTTON_9, "KEYCODE_BUTTON_9"); names.append(KEYCODE_BUTTON_10, "KEYCODE_BUTTON_10"); names.append(KEYCODE_BUTTON_11, "KEYCODE_BUTTON_11"); names.append(KEYCODE_BUTTON_12, "KEYCODE_BUTTON_12"); names.append(KEYCODE_BUTTON_13, "KEYCODE_BUTTON_13"); names.append(KEYCODE_BUTTON_14, "KEYCODE_BUTTON_14"); names.append(KEYCODE_BUTTON_15, "KEYCODE_BUTTON_15"); names.append(KEYCODE_BUTTON_16, "KEYCODE_BUTTON_16"); names.append(KEYCODE_LANGUAGE_SWITCH, "KEYCODE_LANGUAGE_SWITCH"); names.append(KEYCODE_MANNER_MODE, "KEYCODE_MANNER_MODE"); names.append(KEYCODE_3D_MODE, "KEYCODE_3D_MODE"); names.append(KEYCODE_CONTACTS, "KEYCODE_CONTACTS"); names.append(KEYCODE_CALENDAR, "KEYCODE_CALENDAR"); names.append(KEYCODE_MUSIC, "KEYCODE_MUSIC"); names.append(KEYCODE_CALCULATOR, "KEYCODE_CALCULATOR"); names.append(KEYCODE_ZENKAKU_HANKAKU, "KEYCODE_ZENKAKU_HANKAKU"); names.append(KEYCODE_EISU, "KEYCODE_EISU"); names.append(KEYCODE_MUHENKAN, "KEYCODE_MUHENKAN"); names.append(KEYCODE_HENKAN, "KEYCODE_HENKAN"); names.append(KEYCODE_KATAKANA_HIRAGANA, "KEYCODE_KATAKANA_HIRAGANA"); names.append(KEYCODE_YEN, "KEYCODE_YEN"); names.append(KEYCODE_RO, "KEYCODE_RO"); names.append(KEYCODE_KANA, "KEYCODE_KANA"); names.append(KEYCODE_ASSIST, "KEYCODE_ASSIST"); names.append(KEYCODE_BRIGHTNESS_DOWN, "KEYCODE_BRIGHTNESS_DOWN"); names.append(KEYCODE_BRIGHTNESS_UP, "KEYCODE_BRIGHTNESS_UP"); names.append(KEYCODE_MEDIA_AUDIO_TRACK, "KEYCODE_MEDIA_AUDIO_TRACK"); names.append(KEYCODE_SLEEP, "KEYCODE_SLEEP"); names.append(KEYCODE_WAKEUP, "KEYCODE_WAKEUP"); }; // Symbolic names of all metakeys in bit order from least significant to most significant. // Accordingly there are exactly 32 values in this table. private static final String[] META_SYMBOLIC_NAMES = new String[] { Loading Loading @@ -926,6 +694,8 @@ public class KeyEvent extends InputEvent implements Parcelable { "0x80000000", }; private static final String LABEL_PREFIX = "KEYCODE_"; /** * @deprecated There are now more than MAX_KEYCODE keycodes. * Use {@link #getMaxKeyCode()} instead. Loading Loading @@ -1367,9 +1137,8 @@ public class KeyEvent extends InputEvent implements Parcelable { boolean onKeyMultiple(int keyCode, int count, KeyEvent event); } static { populateKeycodeSymbolicNames(); } private static native String nativeKeyCodeToString(int keyCode); private static native int nativeKeyCodeFromString(String keyCode); private KeyEvent() { } Loading Loading @@ -1792,19 +1561,15 @@ public class KeyEvent extends InputEvent implements Parcelable { 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 /** Is this a system key? System keys can not be used for menu shortcuts. */ public final boolean isSystem() { return native_isSystemKey(mKeyCode); return isSystemKey(mKeyCode); } /** @hide */ public final boolean hasDefaultAction() { return native_hasDefaultAction(mKeyCode); public final boolean isWakeKey() { return isWakeKey(mKeyCode); } /** Loading Loading @@ -1887,6 +1652,62 @@ public class KeyEvent extends InputEvent implements Parcelable { return false; } /** Is this a system key? System keys can not be used for menu shortcuts. * @hide */ public static final boolean isSystemKey(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: case KeyEvent.KEYCODE_SOFT_RIGHT: case KeyEvent.KEYCODE_HOME: case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_CALL: case KeyEvent.KEYCODE_ENDCALL: case KeyEvent.KEYCODE_VOLUME_UP: case KeyEvent.KEYCODE_VOLUME_DOWN: case KeyEvent.KEYCODE_VOLUME_MUTE: case KeyEvent.KEYCODE_MUTE: case KeyEvent.KEYCODE_POWER: case KeyEvent.KEYCODE_HEADSETHOOK: case KeyEvent.KEYCODE_MEDIA_PLAY: case KeyEvent.KEYCODE_MEDIA_PAUSE: case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: case KeyEvent.KEYCODE_MEDIA_STOP: case KeyEvent.KEYCODE_MEDIA_NEXT: case KeyEvent.KEYCODE_MEDIA_PREVIOUS: case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: case KeyEvent.KEYCODE_CAMERA: case KeyEvent.KEYCODE_FOCUS: case KeyEvent.KEYCODE_SEARCH: case KeyEvent.KEYCODE_BRIGHTNESS_DOWN: case KeyEvent.KEYCODE_BRIGHTNESS_UP: case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: case KeyEvent.KEYCODE_DPAD_UP: case KeyEvent.KEYCODE_DPAD_RIGHT: case KeyEvent.KEYCODE_DPAD_DOWN: case KeyEvent.KEYCODE_DPAD_LEFT: return true; } return false; } /** @hide */ public static final boolean isWakeKey(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_POWER: case KeyEvent.KEYCODE_MENU: case KeyEvent.KEYCODE_SLEEP: case KeyEvent.KEYCODE_WAKEUP: return true; } return false; } /** {@inheritDoc} */ @Override public final int getDeviceId() { Loading Loading @@ -2866,8 +2687,8 @@ public class KeyEvent extends InputEvent implements Parcelable { * @see KeyCharacterMap#getDisplayLabel */ public static String keyCodeToString(int keyCode) { String symbolicName = KEYCODE_SYMBOLIC_NAMES.get(keyCode); return symbolicName != null ? symbolicName : Integer.toString(keyCode); String symbolicName = nativeKeyCodeToString(keyCode); return symbolicName != null ? LABEL_PREFIX + symbolicName : Integer.toString(keyCode); } /** Loading @@ -2879,17 +2700,13 @@ public class KeyEvent extends InputEvent implements Parcelable { * @see #keycodeToString(int) */ public static int keyCodeFromString(String symbolicName) { if (symbolicName == null) { throw new IllegalArgumentException("symbolicName must not be null"); } final int count = KEYCODE_SYMBOLIC_NAMES.size(); for (int i = 0; i < count; i++) { if (symbolicName.equals(KEYCODE_SYMBOLIC_NAMES.valueAt(i))) { return i; if (symbolicName.startsWith(LABEL_PREFIX)) { symbolicName = symbolicName.substring(LABEL_PREFIX.length()); } int keyCode = nativeKeyCodeFromString(symbolicName); if (keyCode > 0) { return keyCode; } try { return Integer.parseInt(symbolicName, 10); } catch (NumberFormatException ex) { Loading Loading @@ -2977,7 +2794,4 @@ public class KeyEvent extends InputEvent implements Parcelable { out.writeLong(mDownTime); out.writeLong(mEventTime); } private native boolean native_isSystemKey(int keyCode); private native boolean native_hasDefaultAction(int keyCode); }
core/java/android/view/MotionEvent.java +11 −11 Original line number Diff line number Diff line Loading @@ -167,6 +167,7 @@ import android.util.SparseArray; */ public final class MotionEvent extends InputEvent implements Parcelable { private static final long NS_PER_MS = 1000000; private static final String LABEL_PREFIX = "AXIS_"; /** * An invalid pointer id. Loading Loading @@ -1369,6 +1370,9 @@ public final class MotionEvent extends InputEvent implements Parcelable { private static native long nativeReadFromParcel(long nativePtr, Parcel parcel); private static native void nativeWriteToParcel(long nativePtr, Parcel parcel); private static native String nativeAxisToString(int axis); private static native int nativeAxisFromString(String label); private MotionEvent() { } Loading Loading @@ -3051,8 +3055,8 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @return The symbolic name of the specified axis. */ public static String axisToString(int axis) { String symbolicName = AXIS_SYMBOLIC_NAMES.get(axis); return symbolicName != null ? symbolicName : Integer.toString(axis); String symbolicName = nativeAxisToString(axis); return symbolicName != null ? LABEL_PREFIX + symbolicName : Integer.toString(axis); } /** Loading @@ -3064,17 +3068,13 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see KeyEvent#keyCodeToString(int) */ public static int axisFromString(String symbolicName) { if (symbolicName == null) { throw new IllegalArgumentException("symbolicName must not be null"); } final int count = AXIS_SYMBOLIC_NAMES.size(); for (int i = 0; i < count; i++) { if (symbolicName.equals(AXIS_SYMBOLIC_NAMES.valueAt(i))) { return i; if (symbolicName.startsWith(LABEL_PREFIX)) { symbolicName = symbolicName.substring(LABEL_PREFIX.length()); } int axis = nativeAxisFromString(symbolicName); if (axis >= 0) { return axis; } try { return Integer.parseInt(symbolicName, 10); } catch (NumberFormatException ex) { Loading
core/java/android/view/WindowManagerPolicy.java +1 −8 Original line number Diff line number Diff line Loading @@ -76,14 +76,7 @@ import java.lang.annotation.RetentionPolicy; public interface WindowManagerPolicy { // Policy flags. These flags are also defined in frameworks/base/include/ui/Input.h. public final static int FLAG_WAKE = 0x00000001; public final static int FLAG_WAKE_DROPPED = 0x00000002; public final static int FLAG_SHIFT = 0x00000004; public final static int FLAG_CAPS_LOCK = 0x00000008; public final static int FLAG_ALT = 0x00000010; public final static int FLAG_ALT_GR = 0x00000020; public final static int FLAG_MENU = 0x00000040; public final static int FLAG_LAUNCHER = 0x00000080; public final static int FLAG_VIRTUAL = 0x00000100; public final static int FLAG_VIRTUAL = 0x00000002; public final static int FLAG_INJECTED = 0x01000000; public final static int FLAG_TRUSTED = 0x02000000; Loading
core/jni/android_view_KeyEvent.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <android_runtime/Log.h> #include <utils/Log.h> #include <input/Input.h> #include <ScopedUtfChars.h> #include "android_view_KeyEvent.h" namespace android { Loading Loading @@ -102,20 +103,25 @@ status_t android_view_KeyEvent_recycle(JNIEnv* env, jobject eventObj) { return OK; } static jboolean native_isSystemKey(JNIEnv* env, jobject clazz, jint keyCode) { return KeyEvent::isSystemKey(keyCode); static jstring android_view_KeyEvent_nativeKeyCodeToString(JNIEnv* env, jobject clazz, jint keyCode) { return env->NewStringUTF(KeyEvent::getLabel(keyCode)); } static jboolean native_hasDefaultAction(JNIEnv* env, jobject clazz, jint keyCode) { return KeyEvent::hasDefaultAction(keyCode); static jint android_view_KeyEvent_nativeKeyCodeFromString(JNIEnv* env, jobject clazz, jstring label) { ScopedUtfChars keyLabel(env, label); return KeyEvent::getKeyCodeFromLabel(keyLabel.c_str()); } // ---------------------------------------------------------------------------- static const JNINativeMethod g_methods[] = { { "native_isSystemKey", "(I)Z", (void*)native_isSystemKey }, { "native_hasDefaultAction", "(I)Z", (void*)native_hasDefaultAction }, { "nativeKeyCodeToString", "(I)Ljava/lang/String;", (void*)android_view_KeyEvent_nativeKeyCodeToString}, { "nativeKeyCodeFromString", "(Ljava/lang/String;)I", (void*)android_view_KeyEvent_nativeKeyCodeFromString}, }; #define FIND_CLASS(var, className) \ Loading
core/jni/android_view_MotionEvent.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <android_runtime/Log.h> #include <utils/Log.h> #include <input/Input.h> #include <ScopedUtfChars.h> #include "android_os_Parcel.h" #include "android_view_MotionEvent.h" #include "android_util_Binder.h" Loading Loading @@ -724,6 +725,17 @@ static void android_view_MotionEvent_nativeWriteToParcel(JNIEnv* env, jclass cla } } static jstring android_view_MotionEvent_nativeAxisToString(JNIEnv* env, jclass clazz, jint axis) { return env->NewStringUTF(MotionEvent::getLabel(static_cast<int32_t>(axis))); } static jint android_view_MotionEvent_nativeAxisFromString(JNIEnv* env, jclass clazz, jstring label) { ScopedUtfChars axisLabel(env, label); return static_cast<jint>(MotionEvent::getAxisFromLabel(axisLabel.c_str())); } // ---------------------------------------------------------------------------- static JNINativeMethod gMotionEventMethods[] = { Loading Loading @@ -840,6 +852,10 @@ static JNINativeMethod gMotionEventMethods[] = { { "nativeWriteToParcel", "(JLandroid/os/Parcel;)V", (void*)android_view_MotionEvent_nativeWriteToParcel }, { "nativeAxisToString", "(I)Ljava/lang/String;", (void*)android_view_MotionEvent_nativeAxisToString }, { "nativeAxisFromString", "(Ljava/lang/String;)I", (void*)android_view_MotionEvent_nativeAxisFromString }, }; #define FIND_CLASS(var, className) \ Loading