diff options
Diffstat (limited to 'widget/gonk/GonkKeyMapping.h')
-rw-r--r-- | widget/gonk/GonkKeyMapping.h | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/widget/gonk/GonkKeyMapping.h b/widget/gonk/GonkKeyMapping.h new file mode 100644 index 000000000..d5d4e7a0b --- /dev/null +++ b/widget/gonk/GonkKeyMapping.h @@ -0,0 +1,301 @@ +/* Copyright 2012 Mozilla Foundation and Mozilla contributors + * + * 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 GONKKEYMAPPING_H +#define GONKKEYMAPPING_H + +#include "libui/android_keycodes.h" +#include "mozilla/EventForwards.h" + +namespace mozilla { +namespace widget { + +/* See libui/KeycodeLabels.h for the mapping */ +static const unsigned long kKeyMapping[] = { + 0, + 0, // SOFT_LEFT + 0, // SOFT_RIGHT + NS_VK_HOME, // HOME + NS_VK_ESCAPE, // BACK + 0, // CALL + NS_VK_SLEEP, // ENDCALL + NS_VK_0, + NS_VK_1, + NS_VK_2, + NS_VK_3, + NS_VK_4, + NS_VK_5, + NS_VK_6, + NS_VK_7, + NS_VK_8, + NS_VK_9, + NS_VK_ASTERISK, + NS_VK_HASH, + NS_VK_UP, + NS_VK_DOWN, + NS_VK_LEFT, + NS_VK_RIGHT, + NS_VK_RETURN, + NS_VK_VOLUME_UP, + NS_VK_VOLUME_DOWN, + NS_VK_SLEEP, // POWER + NS_VK_PRINTSCREEN, // CAMERA + NS_VK_CLEAR, + NS_VK_A, + NS_VK_B, + NS_VK_C, + NS_VK_D, + NS_VK_E, + NS_VK_F, + NS_VK_G, + NS_VK_H, + NS_VK_I, + NS_VK_J, + NS_VK_K, + NS_VK_L, + NS_VK_M, + NS_VK_N, + NS_VK_O, + NS_VK_P, + NS_VK_Q, + NS_VK_R, + NS_VK_S, + NS_VK_T, + NS_VK_U, + NS_VK_V, + NS_VK_W, + NS_VK_X, + NS_VK_Y, + NS_VK_Z, + NS_VK_COMMA, + NS_VK_PERIOD, + 0, + 0, + 0, + 0, + NS_VK_TAB, + NS_VK_SPACE, + NS_VK_META, // SYM + 0, // EXPLORER + 0, // ENVELOPE + NS_VK_RETURN, // ENTER + NS_VK_BACK, + NS_VK_BACK_QUOTE, // GRAVE + NS_VK_HYPHEN_MINUS, + NS_VK_EQUALS, + NS_VK_OPEN_BRACKET, + NS_VK_CLOSE_BRACKET, + NS_VK_BACK_SLASH, + NS_VK_SEMICOLON, + NS_VK_QUOTE, + NS_VK_SLASH, + NS_VK_AT, + 0, // NUM + NS_VK_F1, // HEADSETHOOK + 0, // FOCUS + NS_VK_PLUS, + NS_VK_CONTEXT_MENU, + 0, // NOTIFICATION + NS_VK_F5, // SEARCH + 0, // MEDIA_PLAY_PAUSE + 0, // MEDIA_STOP + 0, // MEDIA_NEXT + 0, // MEDIA_PREVIOUS + 0, // MEDIA_REWIND + 0, // MEDIA_FAST_FORWARD + 0, // MUTE + NS_VK_PAGE_UP, + NS_VK_PAGE_DOWN, + 0, // PICTSYMBOLS + 0, // SWITCH_CHARSET + 0, // BUTTON_A + 0, // BUTTON_B + 0, // BUTTON_C + 0, // BUTTON_X + 0, // BUTTON_Y + 0, // BUTTON_Z + 0, // BUTTON_L1 + 0, // BUTTON_R1 + 0, // BUTTON_L2 + 0, // BUTTON_R2 + 0, // BUTTON_THUMBL + 0, // BUTTON_THUMBR + 0, // BUTTON_START + 0, // BUTTON_SELECT + 0, // BUTTON_MODE + NS_VK_ESCAPE, + NS_VK_DELETE, + 0, // CTRL_LEFT + 0, // CTRL_RIGHT + NS_VK_CAPS_LOCK, + NS_VK_SCROLL_LOCK, + 0, // META_LEFT + 0, // META_RIGHT + 0, // FUNCTION + 0, // SYSRQ + 0, // BREAK + NS_VK_HOME, // MOVE_HOME + NS_VK_END, + NS_VK_INSERT, + 0, // FORWARD + 0, // MEDIA_PLAY + 0, // MEDIA_PAUSE + 0, // MEDIA_CLOSE + 0, // MEDIA_EJECT + 0, // MEDIA_RECORD + NS_VK_F1, + NS_VK_F2, + NS_VK_F3, + NS_VK_F4, + NS_VK_F5, + NS_VK_F6, + NS_VK_F7, + NS_VK_F8, + NS_VK_F9, + NS_VK_F10, + NS_VK_F11, + NS_VK_F12, + NS_VK_NUM_LOCK, + NS_VK_NUMPAD0, + NS_VK_NUMPAD1, + NS_VK_NUMPAD2, + NS_VK_NUMPAD3, + NS_VK_NUMPAD4, + NS_VK_NUMPAD5, + NS_VK_NUMPAD6, + NS_VK_NUMPAD7, + NS_VK_NUMPAD8, + NS_VK_NUMPAD9, + NS_VK_DIVIDE, + NS_VK_MULTIPLY, + NS_VK_SUBTRACT, + NS_VK_ADD, + NS_VK_PERIOD, + NS_VK_COMMA, + NS_VK_RETURN, + NS_VK_EQUALS, + 0, // NUMPAD_LEFT_PAREN + 0, // NUMPAD_RIGHT_PAREN + NS_VK_VOLUME_MUTE, + // There are more but we don't map them +}; + +static KeyNameIndex GetKeyNameIndex(int aKeyCode) +{ + switch (aKeyCode) { +#define NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, aKeyNameIndex) \ + case aNativeKey: return aKeyNameIndex; + +#include "NativeKeyToDOMKeyName.h" + +#undef NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX + + case AKEYCODE_0: + case AKEYCODE_1: + case AKEYCODE_2: + case AKEYCODE_3: + case AKEYCODE_4: + case AKEYCODE_5: + case AKEYCODE_6: + case AKEYCODE_7: + case AKEYCODE_8: + case AKEYCODE_9: + case AKEYCODE_STAR: + case AKEYCODE_POUND: + case AKEYCODE_A: + case AKEYCODE_B: + case AKEYCODE_C: + case AKEYCODE_D: + case AKEYCODE_E: + case AKEYCODE_F: + case AKEYCODE_G: + case AKEYCODE_H: + case AKEYCODE_I: + case AKEYCODE_J: + case AKEYCODE_K: + case AKEYCODE_L: + case AKEYCODE_M: + case AKEYCODE_N: + case AKEYCODE_O: + case AKEYCODE_P: + case AKEYCODE_Q: + case AKEYCODE_R: + case AKEYCODE_S: + case AKEYCODE_T: + case AKEYCODE_U: + case AKEYCODE_V: + case AKEYCODE_W: + case AKEYCODE_X: + case AKEYCODE_Y: + case AKEYCODE_Z: + case AKEYCODE_COMMA: + case AKEYCODE_PERIOD: + case AKEYCODE_SPACE: + case AKEYCODE_GRAVE: + case AKEYCODE_MINUS: + case AKEYCODE_EQUALS: + case AKEYCODE_LEFT_BRACKET: + case AKEYCODE_RIGHT_BRACKET: + case AKEYCODE_BACKSLASH: + case AKEYCODE_SEMICOLON: + case AKEYCODE_APOSTROPHE: + case AKEYCODE_SLASH: + case AKEYCODE_AT: + case AKEYCODE_PLUS: + case AKEYCODE_NUMPAD_0: + case AKEYCODE_NUMPAD_1: + case AKEYCODE_NUMPAD_2: + case AKEYCODE_NUMPAD_3: + case AKEYCODE_NUMPAD_4: + case AKEYCODE_NUMPAD_5: + case AKEYCODE_NUMPAD_6: + case AKEYCODE_NUMPAD_7: + case AKEYCODE_NUMPAD_8: + case AKEYCODE_NUMPAD_9: + case AKEYCODE_NUMPAD_DIVIDE: + case AKEYCODE_NUMPAD_MULTIPLY: + case AKEYCODE_NUMPAD_SUBTRACT: + case AKEYCODE_NUMPAD_ADD: + case AKEYCODE_NUMPAD_DOT: + case AKEYCODE_NUMPAD_COMMA: + case AKEYCODE_NUMPAD_EQUALS: + case AKEYCODE_NUMPAD_LEFT_PAREN: + case AKEYCODE_NUMPAD_RIGHT_PAREN: + return KEY_NAME_INDEX_USE_STRING; + + default: + return KEY_NAME_INDEX_Unidentified; + } +} + +static CodeNameIndex GetCodeNameIndex(int aScanCode) +{ + switch (aScanCode) { +#define NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, aCodeNameIndex) \ + case aNativeKey: return aCodeNameIndex; + +#include "NativeKeyToDOMCodeName.h" + +#undef NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX + + default: + return CODE_NAME_INDEX_UNKNOWN; + } +} + +} // namespace widget +} // namespace mozilla + +#endif /* GONKKEYMAPPING_H */ |