/*************************************************************************/ /* nacl_keycodes.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ /* "Software"), to deal in the Software without restriction, including */ /* without limitation the rights to use, copy, modify, merge, publish, */ /* distribute, sublicense, and/or sell copies of the Software, and to */ /* permit persons to whom the Software is furnished to do so, subject to */ /* the following conditions: */ /* */ /* The above copyright notice and this permission notice shall be */ /* included in all copies or substantial portions of the Software. */ /* */ /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com. All rights reserved. * Copyright (C) 2008, 2009 Google Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR * PROFITS, OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef BASE_KEYBOARD_CODES_POSIX_H_ #define BASE_KEYBOARD_CODES_POSIX_H_ #pragma once #include "core/os/keyboard.h" enum { VKEY_BACK = 0x08, VKEY_TAB = 0x09, VKEY_CLEAR = 0x0C, VKEY_RETURN = 0x0D, VKEY_SHIFT = 0x10, VKEY_CONTROL = 0x11, VKEY_MENU = 0x12, VKEY_PAUSE = 0x13, VKEY_CAPITAL = 0x14, VKEY_KANA = 0x15, VKEY_HANGUL = 0x15, VKEY_JUNJA = 0x17, VKEY_FINAL = 0x18, VKEY_HANJA = 0x19, VKEY_KANJI = 0x19, VKEY_ESCAPE = 0x1B, VKEY_CONVERT = 0x1C, VKEY_NONCONVERT = 0x1D, VKEY_ACCEPT = 0x1E, VKEY_MODECHANGE = 0x1F, VKEY_SPACE = 0x20, VKEY_PRIOR = 0x21, VKEY_NEXT = 0x22, VKEY_END = 0x23, VKEY_HOME = 0x24, VKEY_LEFT = 0x25, VKEY_UP = 0x26, VKEY_RIGHT = 0x27, VKEY_DOWN = 0x28, VKEY_SELECT = 0x29, VKEY_PRINT = 0x2A, VKEY_EXECUTE = 0x2B, VKEY_SNAPSHOT = 0x2C, VKEY_INSERT = 0x2D, VKEY_DELETE = 0x2E, VKEY_HELP = 0x2F, VKEY_0 = 0x30, VKEY_1 = 0x31, VKEY_2 = 0x32, VKEY_3 = 0x33, VKEY_4 = 0x34, VKEY_5 = 0x35, VKEY_6 = 0x36, VKEY_7 = 0x37, VKEY_8 = 0x38, VKEY_9 = 0x39, VKEY_A = 0x41, VKEY_B = 0x42, VKEY_C = 0x43, VKEY_D = 0x44, VKEY_E = 0x45, VKEY_F = 0x46, VKEY_G = 0x47, VKEY_H = 0x48, VKEY_I = 0x49, VKEY_J = 0x4A, VKEY_K = 0x4B, VKEY_L = 0x4C, VKEY_M = 0x4D, VKEY_N = 0x4E, VKEY_O = 0x4F, VKEY_P = 0x50, VKEY_Q = 0x51, VKEY_R = 0x52, VKEY_S = 0x53, VKEY_T = 0x54, VKEY_U = 0x55, VKEY_V = 0x56, VKEY_W = 0x57, VKEY_X = 0x58, VKEY_Y = 0x59, VKEY_Z = 0x5A, VKEY_LWIN = 0x5B, VKEY_COMMAND = VKEY_LWIN, // Provide the Mac name for convenience. VKEY_RWIN = 0x5C, VKEY_APPS = 0x5D, VKEY_SLEEP = 0x5F, VKEY_NUMPAD0 = 0x60, VKEY_NUMPAD1 = 0x61, VKEY_NUMPAD2 = 0x62, VKEY_NUMPAD3 = 0x63, VKEY_NUMPAD4 = 0x64, VKEY_NUMPAD5 = 0x65, VKEY_NUMPAD6 = 0x66, VKEY_NUMPAD7 = 0x67, VKEY_NUMPAD8 = 0x68, VKEY_NUMPAD9 = 0x69, VKEY_MULTIPLY = 0x6A, VKEY_ADD = 0x6B, VKEY_SEPARATOR = 0x6C, VKEY_SUBTRACT = 0x6D, VKEY_DECIMAL = 0x6E, VKEY_DIVIDE = 0x6F, VKEY_F1 = 0x70, VKEY_F2 = 0x71, VKEY_F3 = 0x72, VKEY_F4 = 0x73, VKEY_F5 = 0x74, VKEY_F6 = 0x75, VKEY_F7 = 0x76, VKEY_F8 = 0x77, VKEY_F9 = 0x78, VKEY_F10 = 0x79, VKEY_F11 = 0x7A, VKEY_F12 = 0x7B, VKEY_F13 = 0x7C, VKEY_F14 = 0x7D, VKEY_F15 = 0x7E, VKEY_F16 = 0x7F, VKEY_F17 = 0x80, VKEY_F18 = 0x81, VKEY_F19 = 0x82, VKEY_F20 = 0x83, VKEY_F21 = 0x84, VKEY_F22 = 0x85, VKEY_F23 = 0x86, VKEY_F24 = 0x87, VKEY_NUMLOCK = 0x90, VKEY_SCROLL = 0x91, VKEY_LSHIFT = 0xA0, VKEY_RSHIFT = 0xA1, VKEY_LCONTROL = 0xA2, VKEY_RCONTROL = 0xA3, VKEY_LMENU = 0xA4, VKEY_RMENU = 0xA5, VKEY_BROWSER_BACK = 0xA6, VKEY_BROWSER_FORWARD = 0xA7, VKEY_BROWSER_REFRESH = 0xA8, VKEY_BROWSER_STOP = 0xA9, VKEY_BROWSER_SEARCH = 0xAA, VKEY_BROWSER_FAVORITES = 0xAB, VKEY_BROWSER_HOME = 0xAC, VKEY_VOLUME_MUTE = 0xAD, VKEY_VOLUME_DOWN = 0xAE, VKEY_VOLUME_UP = 0xAF, VKEY_MEDIA_NEXT_TRACK = 0xB0, VKEY_MEDIA_PREV_TRACK = 0xB1, VKEY_MEDIA_STOP = 0xB2, VKEY_MEDIA_PLAY_PAUSE = 0xB3, VKEY_MEDIA_LAUNCH_MAIL = 0xB4, VKEY_MEDIA_LAUNCH_MEDIA_SELECT = 0xB5, VKEY_MEDIA_LAUNCH_APP1 = 0xB6, VKEY_MEDIA_LAUNCH_APP2 = 0xB7, VKEY_OEM_1 = 0xBA, VKEY_OEM_PLUS = 0xBB, VKEY_OEM_COMMA = 0xBC, VKEY_OEM_MINUS = 0xBD, VKEY_OEM_PERIOD = 0xBE, VKEY_OEM_2 = 0xBF, VKEY_OEM_3 = 0xC0, VKEY_OEM_4 = 0xDB, VKEY_OEM_5 = 0xDC, VKEY_OEM_6 = 0xDD, VKEY_OEM_7 = 0xDE, VKEY_OEM_8 = 0xDF, VKEY_OEM_102 = 0xE2, VKEY_PROCESSKEY = 0xE5, VKEY_PACKET = 0xE7, VKEY_ATTN = 0xF6, VKEY_CRSEL = 0xF7, VKEY_EXSEL = 0xF8, VKEY_EREOF = 0xF9, VKEY_PLAY = 0xFA, VKEY_ZOOM = 0xFB, VKEY_NONAME = 0xFC, VKEY_PA1 = 0xFD, VKEY_OEM_CLEAR = 0xFE, VKEY_UNKNOWN = 0 }; static uint32_t godot_key(uint32_t p_key, bool& is_char) { is_char = false; switch (p_key) { case VKEY_BACK: return KEY_BACKSPACE; case VKEY_TAB: return KEY_TAB; case VKEY_CLEAR: return KEY_CLEAR; case VKEY_RETURN: return KEY_RETURN; case VKEY_SHIFT: return KEY_SHIFT; case VKEY_CONTROL: return KEY_CONTROL; case VKEY_MENU: return KEY_MENU; case VKEY_PAUSE: return KEY_PAUSE; // case VKEY_CAPITAL: return KEY_CAPITAL; // case VKEY_KANA: return KEY_KANA; // case VKEY_HANGUL: return KEY_HANGUL; // case VKEY_JUNJA: return KEY_JUNJA; // case VKEY_FINAL: return KEY_FINAL; // case VKEY_HANJA: return KEY_HANJA; // case VKEY_KANJI: return KEY_KANJI; case VKEY_ESCAPE: return KEY_ESCAPE; // case VKEY_CONVERT: return KEY_CONVERT; // case VKEY_NONCONVERT: return KEY_NONCONVERT; // case VKEY_ACCEPT: return KEY_ACCEPT; // case VKEY_MODECHANGE: return KEY_MODECHANGE; // case VKEY_PRIOR: return KEY_PRIOR; // case VKEY_NEXT: return KEY_NEXT; case VKEY_END: return KEY_END; case VKEY_HOME: return KEY_HOME; case VKEY_LEFT: return KEY_LEFT; case VKEY_UP: return KEY_UP; case VKEY_RIGHT: return KEY_RIGHT; case VKEY_DOWN: return KEY_DOWN; // case VKEY_SELECT: return KEY_SELECT; case VKEY_PRINT: return KEY_PRINT; // case VKEY_EXECUTE: return KEY_EXECUTE; // case VKEY_SNAPSHOT: return KEY_SNAPSHOT; case VKEY_INSERT: return KEY_INSERT; case VKEY_DELETE: return KEY_DELETE; case VKEY_HELP: return KEY_HELP; // case VKEY_LWIN: return KEY_LWIN; // case VKEY_RWIN: return KEY_RWIN; // case VKEY_APPS: return KEY_APPS; // case VKEY_SLEEP: return KEY_SLEEP; case VKEY_NUMPAD0: return KEY_KP_0; case VKEY_NUMPAD1: return KEY_KP_1; case VKEY_NUMPAD2: return KEY_KP_2; case VKEY_NUMPAD3: return KEY_KP_3; case VKEY_NUMPAD4: return KEY_KP_4; case VKEY_NUMPAD5: return KEY_KP_5; case VKEY_NUMPAD6: return KEY_KP_6; case VKEY_NUMPAD7: return KEY_KP_7; case VKEY_NUMPAD8: return KEY_KP_8; case VKEY_NUMPAD9: return KEY_KP_9; case VKEY_MULTIPLY: return KEY_KP_MULTIPLY; case VKEY_ADD: return KEY_KP_ADD; // case VKEY_SEPARATOR: return KEY_SEPARATOR; case VKEY_SUBTRACT: return KEY_KP_SUBSTRACT; case VKEY_DECIMAL: return KEY_KP_PERIOD; case VKEY_DIVIDE: return KEY_KP_DIVIDE; case VKEY_F1: return KEY_F1; case VKEY_F2: return KEY_F2; case VKEY_F3: return KEY_F3; case VKEY_F4: return KEY_F4; case VKEY_F5: return KEY_F5; case VKEY_F6: return KEY_F6; case VKEY_F7: return KEY_F7; case VKEY_F8: return KEY_F8; case VKEY_F9: return KEY_F9; case VKEY_F10: return KEY_F10; case VKEY_F11: return KEY_F11; case VKEY_F12: return KEY_F12; case VKEY_F13: return KEY_F13; case VKEY_F14: return KEY_F14; case VKEY_F15: return KEY_F15; case VKEY_F16: return KEY_F16; /* case VKEY_F17: return KEY_F17; case VKEY_F18: return KEY_F18; case VKEY_F19: return KEY_F19; case VKEY_F20: return KEY_F20; case VKEY_F21: return KEY_F21; case VKEY_F22: return KEY_F22; case VKEY_F23: return KEY_F23; case VKEY_F24: return KEY_F24; */ case VKEY_NUMLOCK: return KEY_NUMLOCK; case VKEY_SCROLL: return KEY_SCROLLLOCK; case VKEY_LSHIFT: return KEY_SHIFT; case VKEY_RSHIFT: return KEY_SHIFT; case VKEY_LCONTROL: return KEY_CONTROL; case VKEY_RCONTROL: return KEY_CONTROL; case VKEY_LMENU: return KEY_MENU; case VKEY_RMENU: return KEY_MENU; case VKEY_BROWSER_BACK: return KEY_BACK; case VKEY_BROWSER_FORWARD: return KEY_FORWARD; case VKEY_BROWSER_REFRESH: return KEY_REFRESH; case VKEY_BROWSER_STOP: return KEY_STOP; case VKEY_BROWSER_SEARCH: return KEY_SEARCH; case VKEY_BROWSER_FAVORITES: return KEY_FAVORITES; case VKEY_BROWSER_HOME: return KEY_HOMEPAGE; case VKEY_VOLUME_MUTE: return KEY_VOLUMEMUTE; case VKEY_VOLUME_DOWN: return KEY_VOLUMEDOWN; case VKEY_VOLUME_UP: return KEY_VOLUMEUP; case VKEY_MEDIA_NEXT_TRACK: return KEY_MEDIANEXT; case VKEY_MEDIA_PREV_TRACK: return KEY_MEDIAPREVIOUS; case VKEY_MEDIA_STOP: return KEY_MEDIASTOP; case VKEY_MEDIA_PLAY_PAUSE: return KEY_MEDIAPLAY; case VKEY_MEDIA_LAUNCH_MAIL: return KEY_LAUNCHMAIL; case VKEY_MEDIA_LAUNCH_MEDIA_SELECT: return KEY_LAUNCHMEDIA; // FUCKING USELESS KEYS, HOW DO THEY WORK? case VKEY_MEDIA_LAUNCH_APP1: return KEY_LAUNCH0; case VKEY_MEDIA_LAUNCH_APP2: return KEY_LAUNCH0; // case VKEY_OEM_102: return KEY_OEM_102; // case VKEY_PROCESSKEY: return KEY_PROCESSKEY; // case VKEY_PACKET: return KEY_PACKET; // case VKEY_ATTN: return KEY_ATTN; // case VKEY_CRSEL: return KEY_CRSEL; // case VKEY_EXSEL: return KEY_EXSEL; // case VKEY_EREOF: return KEY_EREOF; // case VKEY_PLAY: return KEY_PLAY; // case VKEY_ZOOM: return KEY_ZOOM; // case VKEY_NONAME: return KEY_NONAME; // case VKEY_PA1: return KEY_PA1; // case VKEY_OEM_CLEAR: return KEY_OEM_CLEAR; default: break; }; is_char = true; switch (p_key) { case VKEY_SPACE: return KEY_SPACE; case VKEY_0: return KEY_0; case VKEY_1: return KEY_1; case VKEY_2: return KEY_2; case VKEY_3: return KEY_3; case VKEY_4: return KEY_4; case VKEY_5: return KEY_5; case VKEY_6: return KEY_6; case VKEY_7: return KEY_7; case VKEY_8: return KEY_8; case VKEY_9: return KEY_9; case VKEY_A: return KEY_A; case VKEY_B: return KEY_B; case VKEY_C: return KEY_C; case VKEY_D: return KEY_D; case VKEY_E: return KEY_E; case VKEY_F: return KEY_F; case VKEY_G: return KEY_G; case VKEY_H: return KEY_H; case VKEY_I: return KEY_I; case VKEY_J: return KEY_J; case VKEY_K: return KEY_K; case VKEY_L: return KEY_L; case VKEY_M: return KEY_M; case VKEY_N: return KEY_N; case VKEY_O: return KEY_O; case VKEY_P: return KEY_P; case VKEY_Q: return KEY_Q; case VKEY_R: return KEY_R; case VKEY_S: return KEY_S; case VKEY_T: return KEY_T; case VKEY_U: return KEY_U; case VKEY_V: return KEY_V; case VKEY_W: return KEY_W; case VKEY_X: return KEY_X; case VKEY_Y: return KEY_Y; case VKEY_Z: return KEY_Z; /* case VKEY_OEM_PLUS: return KEY_PLUS; case VKEY_OEM_COMMA: return KEY_COMMA; case VKEY_OEM_MINUS: return KEY_MINUS; case VKEY_OEM_PERIOD: return KEY_PERIOD; case VKEY_OEM_1: return KEY_OEM_1; case VKEY_OEM_2: return KEY_OEM_2; case VKEY_OEM_3: return KEY_OEM_3; case VKEY_OEM_4: return KEY_OEM_4; case VKEY_OEM_5: return KEY_OEM_5; case VKEY_OEM_6: return KEY_OEM_6; case VKEY_OEM_7: return KEY_OEM_7; case VKEY_OEM_8: return KEY_OEM_8; */ default: break; }; return 0; }; #endif // BASE_KEYBOARD_CODES_POSIX_H_