michael@0: /* Copyright 2012 Mozilla Foundation and Mozilla contributors michael@0: * michael@0: * Licensed under the Apache License, Version 2.0 (the "License"); michael@0: * you may not use this file except in compliance with the License. michael@0: * You may obtain a copy of the License at michael@0: * michael@0: * http://www.apache.org/licenses/LICENSE-2.0 michael@0: * michael@0: * Unless required by applicable law or agreed to in writing, software michael@0: * distributed under the License is distributed on an "AS IS" BASIS, michael@0: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. michael@0: * See the License for the specific language governing permissions and michael@0: * limitations under the License. michael@0: */ michael@0: michael@0: #ifndef GONKKEYMAPPING_H michael@0: #define GONKKEYMAPPING_H michael@0: michael@0: #include "libui/android_keycodes.h" michael@0: #include "mozilla/EventForwards.h" michael@0: michael@0: namespace mozilla { michael@0: namespace widget { michael@0: michael@0: /* See libui/KeycodeLabels.h for the mapping */ michael@0: static const unsigned long kKeyMapping[] = { michael@0: 0, michael@0: 0, // SOFT_LEFT michael@0: 0, // SOFT_RIGHT michael@0: NS_VK_HOME, // HOME michael@0: 0, // BACK michael@0: 0, // CALL michael@0: NS_VK_SLEEP, // ENDCALL michael@0: NS_VK_0, michael@0: NS_VK_1, michael@0: NS_VK_2, michael@0: NS_VK_3, michael@0: NS_VK_4, michael@0: NS_VK_5, michael@0: NS_VK_6, michael@0: NS_VK_7, michael@0: NS_VK_8, michael@0: NS_VK_9, michael@0: NS_VK_ASTERISK, michael@0: NS_VK_HASH, michael@0: NS_VK_UP, michael@0: NS_VK_DOWN, michael@0: NS_VK_LEFT, michael@0: NS_VK_RIGHT, michael@0: NS_VK_SELECT, michael@0: NS_VK_PAGE_UP, // VOLUME_UP michael@0: NS_VK_PAGE_DOWN, // VOLUME_DOWN michael@0: NS_VK_SLEEP, // POWER michael@0: NS_VK_PRINTSCREEN, // CAMERA michael@0: NS_VK_CLEAR, michael@0: NS_VK_A, michael@0: NS_VK_B, michael@0: NS_VK_C, michael@0: NS_VK_D, michael@0: NS_VK_E, michael@0: NS_VK_F, michael@0: NS_VK_G, michael@0: NS_VK_H, michael@0: NS_VK_I, michael@0: NS_VK_J, michael@0: NS_VK_K, michael@0: NS_VK_L, michael@0: NS_VK_M, michael@0: NS_VK_N, michael@0: NS_VK_O, michael@0: NS_VK_P, michael@0: NS_VK_Q, michael@0: NS_VK_R, michael@0: NS_VK_S, michael@0: NS_VK_T, michael@0: NS_VK_U, michael@0: NS_VK_V, michael@0: NS_VK_W, michael@0: NS_VK_X, michael@0: NS_VK_Y, michael@0: NS_VK_Z, michael@0: NS_VK_COMMA, michael@0: NS_VK_PERIOD, michael@0: 0, michael@0: 0, michael@0: 0, michael@0: 0, michael@0: NS_VK_TAB, michael@0: NS_VK_SPACE, michael@0: NS_VK_META, // SYM michael@0: 0, // EXPLORER michael@0: 0, // ENVELOPE michael@0: NS_VK_RETURN, // ENTER michael@0: NS_VK_BACK, michael@0: NS_VK_BACK_QUOTE, // GRAVE michael@0: NS_VK_HYPHEN_MINUS, michael@0: NS_VK_EQUALS, michael@0: NS_VK_OPEN_BRACKET, michael@0: NS_VK_CLOSE_BRACKET, michael@0: NS_VK_BACK_SLASH, michael@0: NS_VK_SEMICOLON, michael@0: NS_VK_QUOTE, michael@0: NS_VK_SLASH, michael@0: NS_VK_AT, michael@0: 0, // NUM michael@0: NS_VK_F1, // HEADSETHOOK michael@0: 0, // FOCUS michael@0: NS_VK_PLUS, michael@0: NS_VK_CONTEXT_MENU, michael@0: 0, // NOTIFICATION michael@0: NS_VK_F5, // SEARCH michael@0: 0, // MEDIA_PLAY_PAUSE michael@0: 0, // MEDIA_STOP michael@0: 0, // MEDIA_NEXT michael@0: 0, // MEDIA_PREVIOUS michael@0: 0, // MEDIA_REWIND michael@0: 0, // MEDIA_FAST_FORWARD michael@0: 0, // MUTE michael@0: 0, // PAGE_UP michael@0: 0, // PAGE_DOWN michael@0: 0, // PICTSYMBOLS michael@0: 0, // SWITCH_CHARSET michael@0: 0, // BUTTON_A michael@0: 0, // BUTTON_B michael@0: 0, // BUTTON_C michael@0: 0, // BUTTON_X michael@0: 0, // BUTTON_Y michael@0: 0, // BUTTON_Z michael@0: 0, // BUTTON_L1 michael@0: 0, // BUTTON_R1 michael@0: 0, // BUTTON_L2 michael@0: 0, // BUTTON_R2 michael@0: 0, // BUTTON_THUMBL michael@0: 0, // BUTTON_THUMBR michael@0: 0, // BUTTON_START michael@0: 0, // BUTTON_SELECT michael@0: 0, // BUTTON_MODE michael@0: 0, // ESCAPE michael@0: NS_VK_DELETE, michael@0: 0, // CTRL_LEFT michael@0: 0, // CTRL_RIGHT michael@0: NS_VK_CAPS_LOCK, michael@0: NS_VK_SCROLL_LOCK, michael@0: 0, // META_LEFT michael@0: 0, // META_RIGHT michael@0: 0, // FUNCTION michael@0: 0, // SYSRQ michael@0: 0, // BREAK michael@0: NS_VK_HOME, // MOVE_HOME michael@0: NS_VK_END, michael@0: NS_VK_INSERT, michael@0: 0, // FORWARD michael@0: 0, // MEDIA_PLAY michael@0: 0, // MEDIA_PAUSE michael@0: 0, // MEDIA_CLOSE michael@0: 0, // MEDIA_EJECT michael@0: 0, // MEDIA_RECORD michael@0: NS_VK_F1, michael@0: NS_VK_F2, michael@0: NS_VK_F3, michael@0: NS_VK_F4, michael@0: NS_VK_F5, michael@0: NS_VK_F6, michael@0: NS_VK_F7, michael@0: NS_VK_F8, michael@0: NS_VK_F9, michael@0: NS_VK_F10, michael@0: NS_VK_F11, michael@0: NS_VK_F12, michael@0: NS_VK_NUM_LOCK, michael@0: NS_VK_NUMPAD0, michael@0: NS_VK_NUMPAD1, michael@0: NS_VK_NUMPAD2, michael@0: NS_VK_NUMPAD3, michael@0: NS_VK_NUMPAD4, michael@0: NS_VK_NUMPAD5, michael@0: NS_VK_NUMPAD6, michael@0: NS_VK_NUMPAD7, michael@0: NS_VK_NUMPAD8, michael@0: NS_VK_NUMPAD9, michael@0: NS_VK_DIVIDE, michael@0: NS_VK_MULTIPLY, michael@0: NS_VK_SUBTRACT, michael@0: NS_VK_ADD, michael@0: NS_VK_PERIOD, michael@0: NS_VK_COMMA, michael@0: NS_VK_RETURN, michael@0: NS_VK_EQUALS, michael@0: // There are more but we don't map them michael@0: }; michael@0: michael@0: static KeyNameIndex GetKeyNameIndex(int aKeyCode) michael@0: { michael@0: switch (aKeyCode) { michael@0: #define NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, aKeyNameIndex) \ michael@0: case aNativeKey: return aKeyNameIndex; michael@0: michael@0: #include "NativeKeyToDOMKeyName.h" michael@0: michael@0: #undef NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX michael@0: michael@0: case AKEYCODE_0: michael@0: case AKEYCODE_1: michael@0: case AKEYCODE_2: michael@0: case AKEYCODE_3: michael@0: case AKEYCODE_4: michael@0: case AKEYCODE_5: michael@0: case AKEYCODE_6: michael@0: case AKEYCODE_7: michael@0: case AKEYCODE_8: michael@0: case AKEYCODE_9: michael@0: case AKEYCODE_STAR: michael@0: case AKEYCODE_POUND: michael@0: case AKEYCODE_A: michael@0: case AKEYCODE_B: michael@0: case AKEYCODE_C: michael@0: case AKEYCODE_D: michael@0: case AKEYCODE_E: michael@0: case AKEYCODE_F: michael@0: case AKEYCODE_G: michael@0: case AKEYCODE_H: michael@0: case AKEYCODE_I: michael@0: case AKEYCODE_J: michael@0: case AKEYCODE_K: michael@0: case AKEYCODE_L: michael@0: case AKEYCODE_M: michael@0: case AKEYCODE_N: michael@0: case AKEYCODE_O: michael@0: case AKEYCODE_P: michael@0: case AKEYCODE_Q: michael@0: case AKEYCODE_R: michael@0: case AKEYCODE_S: michael@0: case AKEYCODE_T: michael@0: case AKEYCODE_U: michael@0: case AKEYCODE_V: michael@0: case AKEYCODE_W: michael@0: case AKEYCODE_X: michael@0: case AKEYCODE_Y: michael@0: case AKEYCODE_Z: michael@0: case AKEYCODE_COMMA: michael@0: case AKEYCODE_PERIOD: michael@0: case AKEYCODE_SPACE: michael@0: case AKEYCODE_GRAVE: michael@0: case AKEYCODE_MINUS: michael@0: case AKEYCODE_EQUALS: michael@0: case AKEYCODE_LEFT_BRACKET: michael@0: case AKEYCODE_RIGHT_BRACKET: michael@0: case AKEYCODE_BACKSLASH: michael@0: case AKEYCODE_SEMICOLON: michael@0: case AKEYCODE_APOSTROPHE: michael@0: case AKEYCODE_SLASH: michael@0: case AKEYCODE_AT: michael@0: case AKEYCODE_PLUS: michael@0: case AKEYCODE_NUMPAD_0: michael@0: case AKEYCODE_NUMPAD_1: michael@0: case AKEYCODE_NUMPAD_2: michael@0: case AKEYCODE_NUMPAD_3: michael@0: case AKEYCODE_NUMPAD_4: michael@0: case AKEYCODE_NUMPAD_5: michael@0: case AKEYCODE_NUMPAD_6: michael@0: case AKEYCODE_NUMPAD_7: michael@0: case AKEYCODE_NUMPAD_8: michael@0: case AKEYCODE_NUMPAD_9: michael@0: case AKEYCODE_NUMPAD_DIVIDE: michael@0: case AKEYCODE_NUMPAD_MULTIPLY: michael@0: case AKEYCODE_NUMPAD_SUBTRACT: michael@0: case AKEYCODE_NUMPAD_ADD: michael@0: case AKEYCODE_NUMPAD_DOT: michael@0: case AKEYCODE_NUMPAD_COMMA: michael@0: case AKEYCODE_NUMPAD_EQUALS: michael@0: case AKEYCODE_NUMPAD_LEFT_PAREN: michael@0: case AKEYCODE_NUMPAD_RIGHT_PAREN: michael@0: return KEY_NAME_INDEX_USE_STRING; michael@0: michael@0: default: michael@0: return KEY_NAME_INDEX_Unidentified; michael@0: } michael@0: } michael@0: michael@0: } // namespace widget michael@0: } // namespace mozilla michael@0: michael@0: #endif /* GONKKEYMAPPING_H */