/* 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 0, // 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_SELECT, 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 */