diff --git a/include/input/Input.h b/include/input/Input.h index 077a03bf2..a4fa31708 100644 --- a/include/input/Input.h +++ b/include/input/Input.h @@ -71,7 +71,7 @@ enum { * Constants for LEDs. Hidden from the API since we don't actually expose a way to interact * with LEDs to developers * - * NOTE: If you add LEDs here, you must also add them to KeycodeLabels.h + * NOTE: If you add LEDs here, you must also add them to InputEventLabels.h */ ALED_NUM_LOCK = 0x00, @@ -146,18 +146,12 @@ class Parcel; */ enum { /* These flags originate in RawEvents and are generally set in the key map. - * NOTE: If you edit these flags, also edit labels in KeycodeLabels.h. */ + * NOTE: If you want a flag to be able to set in a keylayout file, then you must add it to + * InputEventLabels.h as well. */ POLICY_FLAG_WAKE = 0x00000001, - POLICY_FLAG_WAKE_DROPPED = 0x00000002, - POLICY_FLAG_SHIFT = 0x00000004, - POLICY_FLAG_CAPS_LOCK = 0x00000008, - POLICY_FLAG_ALT = 0x00000010, - POLICY_FLAG_ALT_GR = 0x00000020, - POLICY_FLAG_MENU = 0x00000040, - POLICY_FLAG_LAUNCHER = 0x00000080, - POLICY_FLAG_VIRTUAL = 0x00000100, - POLICY_FLAG_FUNCTION = 0x00000200, + POLICY_FLAG_VIRTUAL = 0x00000002, + POLICY_FLAG_FUNCTION = 0x00000004, POLICY_FLAG_RAW_MASK = 0x0000ffff, @@ -312,13 +306,8 @@ public: inline nsecs_t getEventTime() const { return mEventTime; } - // Return true if this event may have a default action implementation. - static bool hasDefaultAction(int32_t keyCode); - bool hasDefaultAction() const; - - // Return true if this event represents a system key. - static bool isSystemKey(int32_t keyCode); - bool isSystemKey() const; + static const char* getLabel(int32_t keyCode); + static int32_t getKeyCodeFromLabel(const char* label); void initialize( int32_t deviceId, @@ -578,6 +567,9 @@ public: return mSamplePointerCoords.array(); } + static const char* getLabel(int32_t axis); + static int32_t getAxisFromLabel(const char* label); + protected: int32_t mAction; int32_t mFlags; diff --git a/include/input/InputEventLabels.h b/include/input/InputEventLabels.h new file mode 100644 index 000000000..c6eef9bec --- /dev/null +++ b/include/input/InputEventLabels.h @@ -0,0 +1,396 @@ +/* + * Copyright (C) 2008 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. + */ + +#ifndef _LIBINPUT_INPUT_EVENT_LABELS_H +#define _LIBINPUT_INPUT_EVENT_LABELS_H + +#include +#include + +#define DEFINE_KEYCODE(key) { #key, AKEYCODE_##key } +#define DEFINE_AXIS(axis) { #axis, AMOTION_EVENT_AXIS_##axis } +#define DEFINE_LED(led) { #led, ALED_##led } +#define DEFINE_FLAG(flag) { #flag, POLICY_FLAG_##flag } + +namespace android { + +template +size_t size(T (&)[N]) { return N; } + +struct InputEventLabel { + const char *literal; + int value; +}; + + +static const InputEventLabel KEYCODES[] = { + // NOTE: If you add a new keycode here you must also add it to several other files. + // Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list. + DEFINE_KEYCODE(UNKNOWN), + DEFINE_KEYCODE(SOFT_LEFT), + DEFINE_KEYCODE(SOFT_RIGHT), + DEFINE_KEYCODE(HOME), + DEFINE_KEYCODE(BACK), + DEFINE_KEYCODE(CALL), + DEFINE_KEYCODE(ENDCALL), + DEFINE_KEYCODE(0), + DEFINE_KEYCODE(1), + DEFINE_KEYCODE(2), + DEFINE_KEYCODE(3), + DEFINE_KEYCODE(4), + DEFINE_KEYCODE(5), + DEFINE_KEYCODE(6), + DEFINE_KEYCODE(7), + DEFINE_KEYCODE(8), + DEFINE_KEYCODE(9), + DEFINE_KEYCODE(STAR), + DEFINE_KEYCODE(POUND), + DEFINE_KEYCODE(DPAD_UP), + DEFINE_KEYCODE(DPAD_DOWN), + DEFINE_KEYCODE(DPAD_LEFT), + DEFINE_KEYCODE(DPAD_RIGHT), + DEFINE_KEYCODE(DPAD_CENTER), + DEFINE_KEYCODE(VOLUME_UP), + DEFINE_KEYCODE(VOLUME_DOWN), + DEFINE_KEYCODE(POWER), + DEFINE_KEYCODE(CAMERA), + DEFINE_KEYCODE(CLEAR), + DEFINE_KEYCODE(A), + DEFINE_KEYCODE(B), + DEFINE_KEYCODE(C), + DEFINE_KEYCODE(D), + DEFINE_KEYCODE(E), + DEFINE_KEYCODE(F), + DEFINE_KEYCODE(G), + DEFINE_KEYCODE(H), + DEFINE_KEYCODE(I), + DEFINE_KEYCODE(J), + DEFINE_KEYCODE(K), + DEFINE_KEYCODE(L), + DEFINE_KEYCODE(M), + DEFINE_KEYCODE(N), + DEFINE_KEYCODE(O), + DEFINE_KEYCODE(P), + DEFINE_KEYCODE(Q), + DEFINE_KEYCODE(R), + DEFINE_KEYCODE(S), + DEFINE_KEYCODE(T), + DEFINE_KEYCODE(U), + DEFINE_KEYCODE(V), + DEFINE_KEYCODE(W), + DEFINE_KEYCODE(X), + DEFINE_KEYCODE(Y), + DEFINE_KEYCODE(Z), + DEFINE_KEYCODE(COMMA), + DEFINE_KEYCODE(PERIOD), + DEFINE_KEYCODE(ALT_LEFT), + DEFINE_KEYCODE(ALT_RIGHT), + DEFINE_KEYCODE(SHIFT_LEFT), + DEFINE_KEYCODE(SHIFT_RIGHT), + DEFINE_KEYCODE(TAB), + DEFINE_KEYCODE(SPACE), + DEFINE_KEYCODE(SYM), + DEFINE_KEYCODE(EXPLORER), + DEFINE_KEYCODE(ENVELOPE), + DEFINE_KEYCODE(ENTER), + DEFINE_KEYCODE(DEL), + DEFINE_KEYCODE(GRAVE), + DEFINE_KEYCODE(MINUS), + DEFINE_KEYCODE(EQUALS), + DEFINE_KEYCODE(LEFT_BRACKET), + DEFINE_KEYCODE(RIGHT_BRACKET), + DEFINE_KEYCODE(BACKSLASH), + DEFINE_KEYCODE(SEMICOLON), + DEFINE_KEYCODE(APOSTROPHE), + DEFINE_KEYCODE(SLASH), + DEFINE_KEYCODE(AT), + DEFINE_KEYCODE(NUM), + DEFINE_KEYCODE(HEADSETHOOK), + DEFINE_KEYCODE(FOCUS), // *Camera* focus + DEFINE_KEYCODE(PLUS), + DEFINE_KEYCODE(MENU), + DEFINE_KEYCODE(NOTIFICATION), + DEFINE_KEYCODE(SEARCH), + DEFINE_KEYCODE(MEDIA_PLAY_PAUSE), + DEFINE_KEYCODE(MEDIA_STOP), + DEFINE_KEYCODE(MEDIA_NEXT), + DEFINE_KEYCODE(MEDIA_PREVIOUS), + DEFINE_KEYCODE(MEDIA_REWIND), + DEFINE_KEYCODE(MEDIA_FAST_FORWARD), + DEFINE_KEYCODE(MUTE), + DEFINE_KEYCODE(PAGE_UP), + DEFINE_KEYCODE(PAGE_DOWN), + DEFINE_KEYCODE(PICTSYMBOLS), + DEFINE_KEYCODE(SWITCH_CHARSET), + DEFINE_KEYCODE(BUTTON_A), + DEFINE_KEYCODE(BUTTON_B), + DEFINE_KEYCODE(BUTTON_C), + DEFINE_KEYCODE(BUTTON_X), + DEFINE_KEYCODE(BUTTON_Y), + DEFINE_KEYCODE(BUTTON_Z), + DEFINE_KEYCODE(BUTTON_L1), + DEFINE_KEYCODE(BUTTON_R1), + DEFINE_KEYCODE(BUTTON_L2), + DEFINE_KEYCODE(BUTTON_R2), + DEFINE_KEYCODE(BUTTON_THUMBL), + DEFINE_KEYCODE(BUTTON_THUMBR), + DEFINE_KEYCODE(BUTTON_START), + DEFINE_KEYCODE(BUTTON_SELECT), + DEFINE_KEYCODE(BUTTON_MODE), + DEFINE_KEYCODE(ESCAPE), + DEFINE_KEYCODE(FORWARD_DEL), + DEFINE_KEYCODE(CTRL_LEFT), + DEFINE_KEYCODE(CTRL_RIGHT), + DEFINE_KEYCODE(CAPS_LOCK), + DEFINE_KEYCODE(SCROLL_LOCK), + DEFINE_KEYCODE(META_LEFT), + DEFINE_KEYCODE(META_RIGHT), + DEFINE_KEYCODE(FUNCTION), + DEFINE_KEYCODE(SYSRQ), + DEFINE_KEYCODE(BREAK), + DEFINE_KEYCODE(MOVE_HOME), + DEFINE_KEYCODE(MOVE_END), + DEFINE_KEYCODE(INSERT), + DEFINE_KEYCODE(FORWARD), + DEFINE_KEYCODE(MEDIA_PLAY), + DEFINE_KEYCODE(MEDIA_PAUSE), + DEFINE_KEYCODE(MEDIA_CLOSE), + DEFINE_KEYCODE(MEDIA_EJECT), + DEFINE_KEYCODE(MEDIA_RECORD), + DEFINE_KEYCODE(F1), + DEFINE_KEYCODE(F2), + DEFINE_KEYCODE(F3), + DEFINE_KEYCODE(F4), + DEFINE_KEYCODE(F5), + DEFINE_KEYCODE(F6), + DEFINE_KEYCODE(F7), + DEFINE_KEYCODE(F8), + DEFINE_KEYCODE(F9), + DEFINE_KEYCODE(F10), + DEFINE_KEYCODE(F11), + DEFINE_KEYCODE(F12), + DEFINE_KEYCODE(NUM_LOCK), + DEFINE_KEYCODE(NUMPAD_0), + DEFINE_KEYCODE(NUMPAD_1), + DEFINE_KEYCODE(NUMPAD_2), + DEFINE_KEYCODE(NUMPAD_3), + DEFINE_KEYCODE(NUMPAD_4), + DEFINE_KEYCODE(NUMPAD_5), + DEFINE_KEYCODE(NUMPAD_6), + DEFINE_KEYCODE(NUMPAD_7), + DEFINE_KEYCODE(NUMPAD_8), + DEFINE_KEYCODE(NUMPAD_9), + DEFINE_KEYCODE(NUMPAD_DIVIDE), + DEFINE_KEYCODE(NUMPAD_MULTIPLY), + DEFINE_KEYCODE(NUMPAD_SUBTRACT), + DEFINE_KEYCODE(NUMPAD_ADD), + DEFINE_KEYCODE(NUMPAD_DOT), + DEFINE_KEYCODE(NUMPAD_COMMA), + DEFINE_KEYCODE(NUMPAD_ENTER), + DEFINE_KEYCODE(NUMPAD_EQUALS), + DEFINE_KEYCODE(NUMPAD_LEFT_PAREN), + DEFINE_KEYCODE(NUMPAD_RIGHT_PAREN), + DEFINE_KEYCODE(VOLUME_MUTE), + DEFINE_KEYCODE(INFO), + DEFINE_KEYCODE(CHANNEL_UP), + DEFINE_KEYCODE(CHANNEL_DOWN), + DEFINE_KEYCODE(ZOOM_IN), + DEFINE_KEYCODE(ZOOM_OUT), + DEFINE_KEYCODE(TV), + DEFINE_KEYCODE(WINDOW), + DEFINE_KEYCODE(GUIDE), + DEFINE_KEYCODE(DVR), + DEFINE_KEYCODE(BOOKMARK), + DEFINE_KEYCODE(CAPTIONS), + DEFINE_KEYCODE(SETTINGS), + DEFINE_KEYCODE(TV_POWER), + DEFINE_KEYCODE(TV_INPUT), + DEFINE_KEYCODE(STB_POWER), + DEFINE_KEYCODE(STB_INPUT), + DEFINE_KEYCODE(AVR_POWER), + DEFINE_KEYCODE(AVR_INPUT), + DEFINE_KEYCODE(PROG_RED), + DEFINE_KEYCODE(PROG_GREEN), + DEFINE_KEYCODE(PROG_YELLOW), + DEFINE_KEYCODE(PROG_BLUE), + DEFINE_KEYCODE(APP_SWITCH), + DEFINE_KEYCODE(BUTTON_1), + DEFINE_KEYCODE(BUTTON_2), + DEFINE_KEYCODE(BUTTON_3), + DEFINE_KEYCODE(BUTTON_4), + DEFINE_KEYCODE(BUTTON_5), + DEFINE_KEYCODE(BUTTON_6), + DEFINE_KEYCODE(BUTTON_7), + DEFINE_KEYCODE(BUTTON_8), + DEFINE_KEYCODE(BUTTON_9), + DEFINE_KEYCODE(BUTTON_10), + DEFINE_KEYCODE(BUTTON_11), + DEFINE_KEYCODE(BUTTON_12), + DEFINE_KEYCODE(BUTTON_13), + DEFINE_KEYCODE(BUTTON_14), + DEFINE_KEYCODE(BUTTON_15), + DEFINE_KEYCODE(BUTTON_16), + DEFINE_KEYCODE(LANGUAGE_SWITCH), + DEFINE_KEYCODE(MANNER_MODE), + DEFINE_KEYCODE(3D_MODE), + DEFINE_KEYCODE(CONTACTS), + DEFINE_KEYCODE(CALENDAR), + DEFINE_KEYCODE(MUSIC), + DEFINE_KEYCODE(CALCULATOR), + DEFINE_KEYCODE(ZENKAKU_HANKAKU), + DEFINE_KEYCODE(EISU), + DEFINE_KEYCODE(MUHENKAN), + DEFINE_KEYCODE(HENKAN), + DEFINE_KEYCODE(KATAKANA_HIRAGANA), + DEFINE_KEYCODE(YEN), + DEFINE_KEYCODE(RO), + DEFINE_KEYCODE(KANA), + DEFINE_KEYCODE(ASSIST), + DEFINE_KEYCODE(BRIGHTNESS_DOWN), + DEFINE_KEYCODE(BRIGHTNESS_UP), + DEFINE_KEYCODE(MEDIA_AUDIO_TRACK), + DEFINE_KEYCODE(SLEEP), + DEFINE_KEYCODE(WAKEUP), + + { NULL, 0 } +}; + +static const InputEventLabel AXES[] = { + DEFINE_AXIS(X), + DEFINE_AXIS(Y), + DEFINE_AXIS(PRESSURE), + DEFINE_AXIS(SIZE), + DEFINE_AXIS(TOUCH_MAJOR), + DEFINE_AXIS(TOUCH_MINOR), + DEFINE_AXIS(TOOL_MAJOR), + DEFINE_AXIS(TOOL_MINOR), + DEFINE_AXIS(ORIENTATION), + DEFINE_AXIS(VSCROLL), + DEFINE_AXIS(HSCROLL), + DEFINE_AXIS(Z), + DEFINE_AXIS(RX), + DEFINE_AXIS(RY), + DEFINE_AXIS(RZ), + DEFINE_AXIS(HAT_X), + DEFINE_AXIS(HAT_Y), + DEFINE_AXIS(LTRIGGER), + DEFINE_AXIS(RTRIGGER), + DEFINE_AXIS(THROTTLE), + DEFINE_AXIS(RUDDER), + DEFINE_AXIS(WHEEL), + DEFINE_AXIS(GAS), + DEFINE_AXIS(BRAKE), + DEFINE_AXIS(DISTANCE), + DEFINE_AXIS(TILT), + DEFINE_AXIS(GENERIC_1), + DEFINE_AXIS(GENERIC_2), + DEFINE_AXIS(GENERIC_3), + DEFINE_AXIS(GENERIC_4), + DEFINE_AXIS(GENERIC_5), + DEFINE_AXIS(GENERIC_6), + DEFINE_AXIS(GENERIC_7), + DEFINE_AXIS(GENERIC_8), + DEFINE_AXIS(GENERIC_9), + DEFINE_AXIS(GENERIC_10), + DEFINE_AXIS(GENERIC_11), + DEFINE_AXIS(GENERIC_12), + DEFINE_AXIS(GENERIC_13), + DEFINE_AXIS(GENERIC_14), + DEFINE_AXIS(GENERIC_15), + DEFINE_AXIS(GENERIC_16), + + // NOTE: If you add a new axis here you must also add it to several other files. + // Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list. + { NULL, 0 } +}; + +static const InputEventLabel LEDS[] = { + DEFINE_LED(NUM_LOCK), + DEFINE_LED(CAPS_LOCK), + DEFINE_LED(SCROLL_LOCK), + DEFINE_LED(COMPOSE), + DEFINE_LED(KANA), + DEFINE_LED(SLEEP), + DEFINE_LED(SUSPEND), + DEFINE_LED(MUTE), + DEFINE_LED(MISC), + DEFINE_LED(MAIL), + DEFINE_LED(CHARGING), + DEFINE_LED(CONTROLLER_1), + DEFINE_LED(CONTROLLER_2), + DEFINE_LED(CONTROLLER_3), + DEFINE_LED(CONTROLLER_4), + + // NOTE: If you add new LEDs here, you must also add them to Input.h + { NULL, 0 } +}; + +static const InputEventLabel FLAGS[] = { + DEFINE_FLAG(FUNCTION), + + { NULL, 0 } +}; + +static int lookupValueByLabel(const char* literal, const InputEventLabel *list) { + while (list->literal) { + if (strcmp(literal, list->literal) == 0) { + return list->value; + } + list++; + } + return list->value; +} + +static const char* lookupLabelByValue(int value, const InputEventLabel* list) { + while (list->literal) { + if (list->value == value) { + return list->literal; + } + list++; + } + return NULL; +} + +static int32_t getKeyCodeByLabel(const char* label) { + return int32_t(lookupValueByLabel(label, KEYCODES)); +} + +static const char* getLabelByKeyCode(int32_t keyCode) { + if (keyCode >= 0 && keyCode < size(KEYCODES)) { + return KEYCODES[keyCode].literal; + } + return NULL; +} + +static uint32_t getKeyFlagByLabel(const char* label) { + return uint32_t(lookupValueByLabel(label, FLAGS)); +} + +static int32_t getAxisByLabel(const char* label) { + return int32_t(lookupValueByLabel(label, AXES)); +} + +static const char* getAxisLabel(int32_t axisId) { + return lookupLabelByValue(axisId, AXES); +} + +static int32_t getLedByLabel(const char* label) { + return int32_t(lookupValueByLabel(label, LEDS)); +} + + +} // namespace android +#endif // _LIBINPUT_INPUT_EVENT_LABELS_H diff --git a/include/input/Keyboard.h b/include/input/Keyboard.h index 25b2f07cf..519bb22d2 100644 --- a/include/input/Keyboard.h +++ b/include/input/Keyboard.h @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -81,36 +82,6 @@ private: extern bool isEligibleBuiltInKeyboard(const InputDeviceIdentifier& deviceIdentifier, const PropertyMap* deviceConfiguration, const KeyMap* keyMap); -/** - * Gets a key code by its short form label, eg. "HOME". - * Returns 0 if unknown. - */ -extern int32_t getKeyCodeByLabel(const char* label); - -/** - * Gets a key flag by its short form label, eg. "WAKE". - * Returns 0 if unknown. - */ -extern uint32_t getKeyFlagByLabel(const char* label); - -/** - * Gets an axis by its short form label, eg. "X". - * Returns -1 if unknown. - */ -extern int32_t getAxisByLabel(const char* label); - -/** - * Gets an axis label by its id. - * Returns NULL if unknown. - */ -extern const char* getAxisLabel(int32_t axisId); - -/** - * Gets an LED by its short form label, eg. "CAPS_LOCK". - * Returns -1 if unknown. - */ -extern int32_t getLedByLabel(const char* label); - /** * Updates a meta state field when a key is pressed or released. */ diff --git a/include/input/KeycodeLabels.h b/include/input/KeycodeLabels.h deleted file mode 100644 index a8d63da50..000000000 --- a/include/input/KeycodeLabels.h +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright (C) 2008 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. - */ - -#ifndef _LIBINPUT_KEYCODE_LABELS_H -#define _LIBINPUT_KEYCODE_LABELS_H - -#include - -struct KeycodeLabel { - const char *literal; - int value; -}; - -static const KeycodeLabel KEYCODES[] = { - { "SOFT_LEFT", 1 }, - { "SOFT_RIGHT", 2 }, - { "HOME", 3 }, - { "BACK", 4 }, - { "CALL", 5 }, - { "ENDCALL", 6 }, - { "0", 7 }, - { "1", 8 }, - { "2", 9 }, - { "3", 10 }, - { "4", 11 }, - { "5", 12 }, - { "6", 13 }, - { "7", 14 }, - { "8", 15 }, - { "9", 16 }, - { "STAR", 17 }, - { "POUND", 18 }, - { "DPAD_UP", 19 }, - { "DPAD_DOWN", 20 }, - { "DPAD_LEFT", 21 }, - { "DPAD_RIGHT", 22 }, - { "DPAD_CENTER", 23 }, - { "VOLUME_UP", 24 }, - { "VOLUME_DOWN", 25 }, - { "POWER", 26 }, - { "CAMERA", 27 }, - { "CLEAR", 28 }, - { "A", 29 }, - { "B", 30 }, - { "C", 31 }, - { "D", 32 }, - { "E", 33 }, - { "F", 34 }, - { "G", 35 }, - { "H", 36 }, - { "I", 37 }, - { "J", 38 }, - { "K", 39 }, - { "L", 40 }, - { "M", 41 }, - { "N", 42 }, - { "O", 43 }, - { "P", 44 }, - { "Q", 45 }, - { "R", 46 }, - { "S", 47 }, - { "T", 48 }, - { "U", 49 }, - { "V", 50 }, - { "W", 51 }, - { "X", 52 }, - { "Y", 53 }, - { "Z", 54 }, - { "COMMA", 55 }, - { "PERIOD", 56 }, - { "ALT_LEFT", 57 }, - { "ALT_RIGHT", 58 }, - { "SHIFT_LEFT", 59 }, - { "SHIFT_RIGHT", 60 }, - { "TAB", 61 }, - { "SPACE", 62 }, - { "SYM", 63 }, - { "EXPLORER", 64 }, - { "ENVELOPE", 65 }, - { "ENTER", 66 }, - { "DEL", 67 }, - { "GRAVE", 68 }, - { "MINUS", 69 }, - { "EQUALS", 70 }, - { "LEFT_BRACKET", 71 }, - { "RIGHT_BRACKET", 72 }, - { "BACKSLASH", 73 }, - { "SEMICOLON", 74 }, - { "APOSTROPHE", 75 }, - { "SLASH", 76 }, - { "AT", 77 }, - { "NUM", 78 }, - { "HEADSETHOOK", 79 }, - { "FOCUS", 80 }, - { "PLUS", 81 }, - { "MENU", 82 }, - { "NOTIFICATION", 83 }, - { "SEARCH", 84 }, - { "MEDIA_PLAY_PAUSE", 85 }, - { "MEDIA_STOP", 86 }, - { "MEDIA_NEXT", 87 }, - { "MEDIA_PREVIOUS", 88 }, - { "MEDIA_REWIND", 89 }, - { "MEDIA_FAST_FORWARD", 90 }, - { "MUTE", 91 }, - { "PAGE_UP", 92 }, - { "PAGE_DOWN", 93 }, - { "PICTSYMBOLS", 94 }, - { "SWITCH_CHARSET", 95 }, - { "BUTTON_A", 96 }, - { "BUTTON_B", 97 }, - { "BUTTON_C", 98 }, - { "BUTTON_X", 99 }, - { "BUTTON_Y", 100 }, - { "BUTTON_Z", 101 }, - { "BUTTON_L1", 102 }, - { "BUTTON_R1", 103 }, - { "BUTTON_L2", 104 }, - { "BUTTON_R2", 105 }, - { "BUTTON_THUMBL", 106 }, - { "BUTTON_THUMBR", 107 }, - { "BUTTON_START", 108 }, - { "BUTTON_SELECT", 109 }, - { "BUTTON_MODE", 110 }, - { "ESCAPE", 111 }, - { "FORWARD_DEL", 112 }, - { "CTRL_LEFT", 113 }, - { "CTRL_RIGHT", 114 }, - { "CAPS_LOCK", 115 }, - { "SCROLL_LOCK", 116 }, - { "META_LEFT", 117 }, - { "META_RIGHT", 118 }, - { "FUNCTION", 119 }, - { "SYSRQ", 120 }, - { "BREAK", 121 }, - { "MOVE_HOME", 122 }, - { "MOVE_END", 123 }, - { "INSERT", 124 }, - { "FORWARD", 125 }, - { "MEDIA_PLAY", 126 }, - { "MEDIA_PAUSE", 127 }, - { "MEDIA_CLOSE", 128 }, - { "MEDIA_EJECT", 129 }, - { "MEDIA_RECORD", 130 }, - { "F1", 131 }, - { "F2", 132 }, - { "F3", 133 }, - { "F4", 134 }, - { "F5", 135 }, - { "F6", 136 }, - { "F7", 137 }, - { "F8", 138 }, - { "F9", 139 }, - { "F10", 140 }, - { "F11", 141 }, - { "F12", 142 }, - { "NUM_LOCK", 143 }, - { "NUMPAD_0", 144 }, - { "NUMPAD_1", 145 }, - { "NUMPAD_2", 146 }, - { "NUMPAD_3", 147 }, - { "NUMPAD_4", 148 }, - { "NUMPAD_5", 149 }, - { "NUMPAD_6", 150 }, - { "NUMPAD_7", 151 }, - { "NUMPAD_8", 152 }, - { "NUMPAD_9", 153 }, - { "NUMPAD_DIVIDE", 154 }, - { "NUMPAD_MULTIPLY", 155 }, - { "NUMPAD_SUBTRACT", 156 }, - { "NUMPAD_ADD", 157 }, - { "NUMPAD_DOT", 158 }, - { "NUMPAD_COMMA", 159 }, - { "NUMPAD_ENTER", 160 }, - { "NUMPAD_EQUALS", 161 }, - { "NUMPAD_LEFT_PAREN", 162 }, - { "NUMPAD_RIGHT_PAREN", 163 }, - { "VOLUME_MUTE", 164 }, - { "INFO", 165 }, - { "CHANNEL_UP", 166 }, - { "CHANNEL_DOWN", 167 }, - { "ZOOM_IN", 168 }, - { "ZOOM_OUT", 169 }, - { "TV", 170 }, - { "WINDOW", 171 }, - { "GUIDE", 172 }, - { "DVR", 173 }, - { "BOOKMARK", 174 }, - { "CAPTIONS", 175 }, - { "SETTINGS", 176 }, - { "TV_POWER", 177 }, - { "TV_INPUT", 178 }, - { "STB_POWER", 179 }, - { "STB_INPUT", 180 }, - { "AVR_POWER", 181 }, - { "AVR_INPUT", 182 }, - { "PROG_RED", 183 }, - { "PROG_GREEN", 184 }, - { "PROG_YELLOW", 185 }, - { "PROG_BLUE", 186 }, - { "APP_SWITCH", 187 }, - { "BUTTON_1", 188 }, - { "BUTTON_2", 189 }, - { "BUTTON_3", 190 }, - { "BUTTON_4", 191 }, - { "BUTTON_5", 192 }, - { "BUTTON_6", 193 }, - { "BUTTON_7", 194 }, - { "BUTTON_8", 195 }, - { "BUTTON_9", 196 }, - { "BUTTON_10", 197 }, - { "BUTTON_11", 198 }, - { "BUTTON_12", 199 }, - { "BUTTON_13", 200 }, - { "BUTTON_14", 201 }, - { "BUTTON_15", 202 }, - { "BUTTON_16", 203 }, - { "LANGUAGE_SWITCH", 204 }, - { "MANNER_MODE", 205 }, - { "3D_MODE", 206 }, - { "CONTACTS", 207 }, - { "CALENDAR", 208 }, - { "MUSIC", 209 }, - { "CALCULATOR", 210 }, - { "ZENKAKU_HANKAKU", 211 }, - { "EISU", 212 }, - { "MUHENKAN", 213 }, - { "HENKAN", 214 }, - { "KATAKANA_HIRAGANA", 215 }, - { "YEN", 216 }, - { "RO", 217 }, - { "KANA", 218 }, - { "ASSIST", 219 }, - { "BRIGHTNESS_DOWN", 220 }, - { "BRIGHTNESS_UP", 221 }, - { "MEDIA_AUDIO_TRACK", 222 }, - { "SLEEP", 223 }, - { "WAKEUP", 224 }, - - // NOTE: If you add a new keycode here you must also add it to several other files. - // Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list. - - { NULL, 0 } -}; - -// NOTE: If you edit these flags, also edit policy flags in Input.h. -static const KeycodeLabel FLAGS[] = { - { "WAKE", 0x00000001 }, - { "WAKE_DROPPED", 0x00000002 }, - { "SHIFT", 0x00000004 }, - { "CAPS_LOCK", 0x00000008 }, - { "ALT", 0x00000010 }, - { "ALT_GR", 0x00000020 }, - { "MENU", 0x00000040 }, - { "LAUNCHER", 0x00000080 }, - { "VIRTUAL", 0x00000100 }, - { "FUNCTION", 0x00000200 }, - { NULL, 0 } -}; - -static const KeycodeLabel AXES[] = { - { "X", 0 }, - { "Y", 1 }, - { "PRESSURE", 2 }, - { "SIZE", 3 }, - { "TOUCH_MAJOR", 4 }, - { "TOUCH_MINOR", 5 }, - { "TOOL_MAJOR", 6 }, - { "TOOL_MINOR", 7 }, - { "ORIENTATION", 8 }, - { "VSCROLL", 9 }, - { "HSCROLL", 10 }, - { "Z", 11 }, - { "RX", 12 }, - { "RY", 13 }, - { "RZ", 14 }, - { "HAT_X", 15 }, - { "HAT_Y", 16 }, - { "LTRIGGER", 17 }, - { "RTRIGGER", 18 }, - { "THROTTLE", 19 }, - { "RUDDER", 20 }, - { "WHEEL", 21 }, - { "GAS", 22 }, - { "BRAKE", 23 }, - { "DISTANCE", 24 }, - { "TILT", 25 }, - { "GENERIC_1", 32 }, - { "GENERIC_2", 33 }, - { "GENERIC_3", 34 }, - { "GENERIC_4", 35 }, - { "GENERIC_5", 36 }, - { "GENERIC_6", 37 }, - { "GENERIC_7", 38 }, - { "GENERIC_8", 39 }, - { "GENERIC_9", 40 }, - { "GENERIC_10", 41 }, - { "GENERIC_11", 42 }, - { "GENERIC_12", 43 }, - { "GENERIC_13", 44 }, - { "GENERIC_14", 45 }, - { "GENERIC_15", 46 }, - { "GENERIC_16", 47 }, - - // NOTE: If you add a new axis here you must also add it to several other files. - // Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list. - - { NULL, -1 } -}; - -static const KeycodeLabel LEDS[] = { - { "NUM_LOCK", 0x00 }, - { "CAPS_LOCK", 0x01 }, - { "SCROLL_LOCK", 0x02 }, - { "COMPOSE", 0x03 }, - { "KANA", 0x04 }, - { "SLEEP", 0x05 }, - { "SUSPEND", 0x06 }, - { "MUTE", 0x07 }, - { "MISC", 0x08 }, - { "MAIL", 0x09 }, - { "CHARGING", 0x0a }, - { "CONTROLLER_1", 0x10 }, - { "CONTROLLER_2", 0x11 }, - { "CONTROLLER_3", 0x12 }, - { "CONTROLLER_4", 0x13 }, - - // NOTE: If you add new LEDs here, you must also add them to Input.h - - { NULL, -1 } -}; - -#endif // _LIBINPUT_KEYCODE_LABELS_H diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp index d9f22e9d5..3a7afe9cb 100644 --- a/libs/input/Input.cpp +++ b/libs/input/Input.cpp @@ -21,6 +21,7 @@ #include #include +#include #ifdef HAVE_ANDROID_OS #include @@ -42,82 +43,12 @@ void InputEvent::initialize(const InputEvent& from) { // --- KeyEvent --- -bool KeyEvent::hasDefaultAction(int32_t keyCode) { - switch (keyCode) { - case AKEYCODE_HOME: - case AKEYCODE_BACK: - case AKEYCODE_CALL: - case AKEYCODE_ENDCALL: - case AKEYCODE_VOLUME_UP: - case AKEYCODE_VOLUME_DOWN: - case AKEYCODE_VOLUME_MUTE: - case AKEYCODE_POWER: - case AKEYCODE_CAMERA: - case AKEYCODE_HEADSETHOOK: - case AKEYCODE_MENU: - case AKEYCODE_NOTIFICATION: - case AKEYCODE_FOCUS: - case AKEYCODE_SEARCH: - case AKEYCODE_MEDIA_PLAY: - case AKEYCODE_MEDIA_PAUSE: - case AKEYCODE_MEDIA_PLAY_PAUSE: - case AKEYCODE_MEDIA_STOP: - case AKEYCODE_MEDIA_NEXT: - case AKEYCODE_MEDIA_PREVIOUS: - case AKEYCODE_MEDIA_REWIND: - case AKEYCODE_MEDIA_RECORD: - case AKEYCODE_MEDIA_FAST_FORWARD: - case AKEYCODE_MUTE: - case AKEYCODE_BRIGHTNESS_DOWN: - case AKEYCODE_BRIGHTNESS_UP: - case AKEYCODE_MEDIA_AUDIO_TRACK: - return true; - } - - return false; +const char* KeyEvent::getLabel(int32_t keyCode) { + return getLabelByKeyCode(keyCode); } -bool KeyEvent::hasDefaultAction() const { - return hasDefaultAction(getKeyCode()); -} - -bool KeyEvent::isSystemKey(int32_t keyCode) { - switch (keyCode) { - case AKEYCODE_MENU: - case AKEYCODE_SOFT_RIGHT: - case AKEYCODE_HOME: - case AKEYCODE_BACK: - case AKEYCODE_CALL: - case AKEYCODE_ENDCALL: - case AKEYCODE_VOLUME_UP: - case AKEYCODE_VOLUME_DOWN: - case AKEYCODE_VOLUME_MUTE: - case AKEYCODE_MUTE: - case AKEYCODE_POWER: - case AKEYCODE_HEADSETHOOK: - case AKEYCODE_MEDIA_PLAY: - case AKEYCODE_MEDIA_PAUSE: - case AKEYCODE_MEDIA_PLAY_PAUSE: - case AKEYCODE_MEDIA_STOP: - case AKEYCODE_MEDIA_NEXT: - case AKEYCODE_MEDIA_PREVIOUS: - case AKEYCODE_MEDIA_REWIND: - case AKEYCODE_MEDIA_RECORD: - case AKEYCODE_MEDIA_FAST_FORWARD: - case AKEYCODE_CAMERA: - case AKEYCODE_FOCUS: - case AKEYCODE_SEARCH: - case AKEYCODE_BRIGHTNESS_DOWN: - case AKEYCODE_BRIGHTNESS_UP: - case AKEYCODE_MEDIA_AUDIO_TRACK: - return true; - } - - return false; -} - -bool KeyEvent::isSystemKey() const { - return isSystemKey(getKeyCode()); +int32_t KeyEvent::getKeyCodeFromLabel(const char* label) { + return getKeyCodeByLabel(label); } void KeyEvent::initialize( @@ -591,6 +522,14 @@ bool MotionEvent::isTouchEvent(int32_t source, int32_t action) { return false; } +const char* MotionEvent::getLabel(int32_t axis) { + return getAxisLabel(axis); +} + +int32_t MotionEvent::getAxisFromLabel(const char* label) { + return getAxisByLabel(label); +} + // --- PooledInputEventFactory --- diff --git a/libs/input/InputTransport.cpp b/libs/input/InputTransport.cpp index 09b2e7c5c..a73780d28 100644 --- a/libs/input/InputTransport.cpp +++ b/libs/input/InputTransport.cpp @@ -312,7 +312,7 @@ status_t InputPublisher::publishMotionEvent( } if (pointerCount > MAX_POINTERS || pointerCount < 1) { - ALOGE("channel '%s' publisher ~ Invalid number of pointers provided: %d.", + ALOGE("channel '%s' publisher ~ Invalid number of pointers provided: %zu.", mChannel->getName().string(), pointerCount); return BAD_VALUE; } diff --git a/libs/input/KeyCharacterMap.cpp b/libs/input/KeyCharacterMap.cpp index 15a877447..b03e01eff 100644 --- a/libs/input/KeyCharacterMap.cpp +++ b/libs/input/KeyCharacterMap.cpp @@ -24,6 +24,7 @@ #endif #include +#include #include #include diff --git a/libs/input/KeyLayoutMap.cpp b/libs/input/KeyLayoutMap.cpp index 0800a31d7..2b2f13e4c 100644 --- a/libs/input/KeyLayoutMap.cpp +++ b/libs/input/KeyLayoutMap.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include diff --git a/libs/input/Keyboard.cpp b/libs/input/Keyboard.cpp index 7d4ac9216..f4d95077d 100644 --- a/libs/input/Keyboard.cpp +++ b/libs/input/Keyboard.cpp @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include #include @@ -167,46 +167,6 @@ bool isEligibleBuiltInKeyboard(const InputDeviceIdentifier& deviceIdentifier, return strstr(deviceIdentifier.name.string(), "-keypad"); } -static int lookupValueByLabel(const char* literal, const KeycodeLabel *list) { - while (list->literal) { - if (strcmp(literal, list->literal) == 0) { - return list->value; - } - list++; - } - return list->value; -} - -static const char* lookupLabelByValue(int value, const KeycodeLabel *list) { - while (list->literal) { - if (list->value == value) { - return list->literal; - } - list++; - } - return NULL; -} - -int32_t getKeyCodeByLabel(const char* label) { - return int32_t(lookupValueByLabel(label, KEYCODES)); -} - -uint32_t getKeyFlagByLabel(const char* label) { - return uint32_t(lookupValueByLabel(label, FLAGS)); -} - -int32_t getAxisByLabel(const char* label) { - return int32_t(lookupValueByLabel(label, AXES)); -} - -const char* getAxisLabel(int32_t axisId) { - return lookupLabelByValue(axisId, AXES); -} - -int32_t getLedByLabel(const char* label) { - return int32_t(lookupValueByLabel(label, LEDS)); -} - static int32_t setEphemeralMetaState(int32_t mask, bool down, int32_t oldMetaState) { int32_t newMetaState; if (down) { diff --git a/services/inputflinger/InputDispatcher.cpp b/services/inputflinger/InputDispatcher.cpp index f219f9511..0bae399d4 100644 --- a/services/inputflinger/InputDispatcher.cpp +++ b/services/inputflinger/InputDispatcher.cpp @@ -2360,18 +2360,6 @@ void InputDispatcher::notifyKey(const NotifyKeyArgs* args) { policyFlags |= POLICY_FLAG_VIRTUAL; flags |= AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY; } - if (policyFlags & POLICY_FLAG_ALT) { - metaState |= AMETA_ALT_ON | AMETA_ALT_LEFT_ON; - } - if (policyFlags & POLICY_FLAG_ALT_GR) { - metaState |= AMETA_ALT_ON | AMETA_ALT_RIGHT_ON; - } - if (policyFlags & POLICY_FLAG_SHIFT) { - metaState |= AMETA_SHIFT_ON | AMETA_SHIFT_LEFT_ON; - } - if (policyFlags & POLICY_FLAG_CAPS_LOCK) { - metaState |= AMETA_CAPS_LOCK_ON; - } if (policyFlags & POLICY_FLAG_FUNCTION) { metaState |= AMETA_FUNCTION_ON; } diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp index f27ba96d5..8295c4c9a 100644 --- a/services/inputflinger/InputReader.cpp +++ b/services/inputflinger/InputReader.cpp @@ -2167,9 +2167,8 @@ void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t keyCode, // For internal keyboards, the key layout file should specify the policy flags for // each wake key individually. // TODO: Use the input device configuration to control this behavior more finely. - if (down && getDevice()->isExternal() - && !(policyFlags & (POLICY_FLAG_WAKE | POLICY_FLAG_WAKE_DROPPED))) { - policyFlags |= POLICY_FLAG_WAKE_DROPPED; + if (down && getDevice()->isExternal()) { + policyFlags |= POLICY_FLAG_WAKE; } if (mParameters.handlesKeyRepeat) { @@ -2510,7 +2509,7 @@ void CursorInputMapper::sync(nsecs_t when) { // TODO: Use the input device configuration to control this behavior more finely. uint32_t policyFlags = 0; if ((buttonsPressed || moved || scrolled) && getDevice()->isExternal()) { - policyFlags |= POLICY_FLAG_WAKE_DROPPED; + policyFlags |= POLICY_FLAG_WAKE; } // Synthesize key down from buttons if needed. @@ -3787,7 +3786,7 @@ void TouchInputMapper::sync(nsecs_t when) { } if (mParameters.wake) { - policyFlags |= POLICY_FLAG_WAKE_DROPPED; + policyFlags |= POLICY_FLAG_WAKE; } }