1 /* 2 * SDL - Simple DirectMedia Layer 3 * Copyright (C) 1997-2009 Sam Lantinga 4 * 5 * SPDX-License-Identifier: LGPL-2.1-or-later 6 * See LICENSES/README.md for more information. 7 * 8 * Sam Lantinga 9 * slouken@libsdl.org 10 */ 11 12 #pragma once 13 14 // The XBMC_vkey identifies a key that is mapped to an action or function. 15 // The keysym.sym generated by SDL_KEYDOWN is mapped to a vkey and the vkey 16 // is used to lookup an action in the global mapping table. 17 // The vkey values are the ASCII code of the character where this is possible. 18 // Non-printing keypresses get a value in the range 0x80 - 0xFF. 19 // Note that the vkey is a byte value so it cannot be greater than 0xFF. 20 21 typedef enum 22 { 23 XBMCVK_BACK = 0x08, 24 XBMCVK_TAB = 0x09, 25 XBMCVK_RETURN = 0x0D, 26 XBMCVK_ESCAPE = 0x1B, 27 28 XBMCVK_SPACE = 0x20, 29 XBMCVK_EXCLAIM = 0x21, 30 XBMCVK_QUOTEDBL = 0x22, 31 XBMCVK_HASH = 0x23, 32 XBMCVK_DOLLAR = 0x24, 33 XBMCVK_PERCENT = 0x25, 34 XBMCVK_AMPERSAND = 0x26, 35 XBMCVK_QUOTE = 0x27, 36 XBMCVK_LEFTPAREN = 0x28, 37 XBMCVK_RIGHTPAREN = 0x29, 38 XBMCVK_ASTERISK = 0x2A, 39 XBMCVK_PLUS = 0x2B, 40 XBMCVK_COMMA = 0x2C, 41 XBMCVK_MINUS = 0x2D, 42 XBMCVK_PERIOD = 0x2E, 43 XBMCVK_SLASH = 0x2F, 44 45 XBMCVK_0 = 0x30, 46 XBMCVK_1 = 0x31, 47 XBMCVK_2 = 0x32, 48 XBMCVK_3 = 0x33, 49 XBMCVK_4 = 0x34, 50 XBMCVK_5 = 0x35, 51 XBMCVK_6 = 0x36, 52 XBMCVK_7 = 0x37, 53 XBMCVK_8 = 0x38, 54 XBMCVK_9 = 0x39, 55 56 XBMCVK_COLON = 0x3A, 57 XBMCVK_SEMICOLON = 0x3B, 58 XBMCVK_LESS = 0x3C, 59 XBMCVK_EQUALS = 0x3D, 60 XBMCVK_GREATER = 0x3E, 61 XBMCVK_QUESTION = 0x3F, 62 XBMCVK_AT = 0x40, 63 64 XBMCVK_A = 0x41, 65 XBMCVK_B = 0x42, 66 XBMCVK_C = 0x43, 67 XBMCVK_D = 0x44, 68 XBMCVK_E = 0x45, 69 XBMCVK_F = 0x46, 70 XBMCVK_G = 0x47, 71 XBMCVK_H = 0x48, 72 XBMCVK_I = 0x49, 73 XBMCVK_J = 0x4A, 74 XBMCVK_K = 0x4B, 75 XBMCVK_L = 0x4C, 76 XBMCVK_M = 0x4D, 77 XBMCVK_N = 0x4E, 78 XBMCVK_O = 0x4F, 79 XBMCVK_P = 0x50, 80 XBMCVK_Q = 0x51, 81 XBMCVK_R = 0x52, 82 XBMCVK_S = 0x53, 83 XBMCVK_T = 0x54, 84 XBMCVK_U = 0x55, 85 XBMCVK_V = 0x56, 86 XBMCVK_W = 0x57, 87 XBMCVK_X = 0x58, 88 XBMCVK_Y = 0x59, 89 XBMCVK_Z = 0x5A, 90 91 XBMCVK_LEFTBRACKET = 0x5B, 92 XBMCVK_BACKSLASH = 0x5C, 93 XBMCVK_RIGHTBRACKET = 0x5D, 94 XBMCVK_CARET = 0x5E, 95 XBMCVK_UNDERSCORE = 0x5F, 96 XBMCVK_BACKQUOTE = 0x60, 97 98 // Lowercase letters 0x61 - 0x7a have the same vkey as uppercase, so 99 // use this block for the numpad keys 100 XBMCVK_NUMPADDIVIDE = 0x61, 101 XBMCVK_NUMPADTIMES = 0x62, 102 XBMCVK_NUMPADMINUS = 0x63, 103 XBMCVK_NUMPADPLUS = 0x64, 104 XBMCVK_NUMPADENTER = 0x65, 105 XBMCVK_NUMPADPERIOD = 0x66, 106 XBMCVK_NUMPAD0 = 0x70, 107 XBMCVK_NUMPAD1 = 0x71, 108 XBMCVK_NUMPAD2 = 0x72, 109 XBMCVK_NUMPAD3 = 0x73, 110 XBMCVK_NUMPAD4 = 0x74, 111 XBMCVK_NUMPAD5 = 0x75, 112 XBMCVK_NUMPAD6 = 0x76, 113 XBMCVK_NUMPAD7 = 0x77, 114 XBMCVK_NUMPAD8 = 0x78, 115 XBMCVK_NUMPAD9 = 0x79, 116 117 XBMCVK_LEFTBRACE = 0x7B, 118 XBMCVK_PIPE = 0x7C, 119 XBMCVK_RIGHTBRACE = 0x7D, 120 XBMCVK_TILDE = 0x7E, 121 122 // Non-printing characters 123 124 XBMCVK_UP = 0x80, 125 XBMCVK_DOWN = 0x81, 126 XBMCVK_LEFT = 0x82, 127 XBMCVK_RIGHT = 0x83, 128 XBMCVK_PAGEUP = 0x84, 129 XBMCVK_PAGEDOWN = 0x85, 130 XBMCVK_INSERT = 0x86, 131 XBMCVK_DELETE = 0x87, 132 XBMCVK_HOME = 0x88, 133 XBMCVK_END = 0x89, 134 135 XBMCVK_F1 = 0x90, 136 XBMCVK_F2 = 0x91, 137 XBMCVK_F3 = 0x92, 138 XBMCVK_F4 = 0x93, 139 XBMCVK_F5 = 0x94, 140 XBMCVK_F6 = 0x95, 141 XBMCVK_F7 = 0x96, 142 XBMCVK_F8 = 0x97, 143 XBMCVK_F9 = 0x98, 144 XBMCVK_F10 = 0x99, 145 XBMCVK_F11 = 0x9A, 146 XBMCVK_F12 = 0x9B, 147 XBMCVK_F13 = 0x9C, 148 XBMCVK_F14 = 0x9D, 149 XBMCVK_F15 = 0x9E, 150 XBMCVK_F16 = 0x9F, 151 XBMCVK_F17 = 0xA0, 152 XBMCVK_F18 = 0xA1, 153 XBMCVK_F19 = 0xA2, 154 XBMCVK_F20 = 0xA3, 155 XBMCVK_F21 = 0xA4, 156 XBMCVK_F22 = 0xA5, 157 XBMCVK_F23 = 0xA6, 158 XBMCVK_F24 = 0xA7, 159 160 XBMCVK_BROWSER_BACK = 0xB0, 161 XBMCVK_BROWSER_FORWARD = 0xB1, 162 XBMCVK_BROWSER_REFRESH = 0xB2, 163 XBMCVK_BROWSER_STOP = 0xB3, 164 XBMCVK_BROWSER_SEARCH = 0xB4, 165 XBMCVK_BROWSER_FAVORITES = 0xB5, 166 XBMCVK_BROWSER_HOME = 0xB6, 167 XBMCVK_VOLUME_MUTE = 0xB7, 168 XBMCVK_VOLUME_DOWN = 0xB8, 169 XBMCVK_VOLUME_UP = 0xB9, 170 XBMCVK_MEDIA_NEXT_TRACK = 0xBA, 171 XBMCVK_MEDIA_PREV_TRACK = 0xBB, 172 XBMCVK_MEDIA_STOP = 0xBC, 173 XBMCVK_MEDIA_PLAY_PAUSE = 0xBD, 174 XBMCVK_LAUNCH_MAIL = 0xBE, 175 XBMCVK_LAUNCH_MEDIA_SELECT = 0xBF, 176 XBMCVK_LAUNCH_APP1 = 0xC0, 177 XBMCVK_LAUNCH_APP2 = 0xC1, 178 XBMCVK_LAUNCH_FILE_BROWSER = 0xC2, 179 XBMCVK_LAUNCH_MEDIA_CENTER = 0xC3, 180 XBMCVK_MEDIA_REWIND = 0xC4, 181 XBMCVK_MEDIA_FASTFORWARD = 0xC5, 182 XBMCVK_MEDIA_RECORD = 0xC6, 183 184 XBMCVK_LCONTROL = 0xD0, 185 XBMCVK_RCONTROL = 0xD1, 186 XBMCVK_LSHIFT = 0xD2, 187 XBMCVK_RSHIFT = 0xD3, 188 XBMCVK_LMENU = 0xD4, 189 XBMCVK_RMENU = 0xD5, 190 XBMCVK_LWIN = 0xD6, 191 XBMCVK_RWIN = 0xD7, 192 XBMCVK_MENU = 0xD8, 193 XBMCVK_CAPSLOCK = 0xD9, 194 XBMCVK_NUMLOCK = 0xDA, 195 196 XBMCVK_PRINTSCREEN = 0xDB, 197 XBMCVK_SCROLLLOCK = 0xDC, 198 XBMCVK_PAUSE = 0XDD, 199 XBMCVK_POWER = 0XDE, 200 XBMCVK_SLEEP = 0XDF, 201 XBMCVK_GUIDE = 0xE0, 202 XBMCVK_SETTINGS = 0xE1, 203 XBMCVK_INFO = 0xE2, 204 XBMCVK_RED = 0xE3, 205 XBMCVK_GREEN = 0xE4, 206 XBMCVK_YELLOW = 0xE5, 207 XBMCVK_BLUE = 0xE6, 208 XBMCVK_ZOOM = 0xE7, 209 XBMCVK_TEXT = 0xE8, 210 XBMCVK_FAVORITES = 0xE9, 211 XBMCVK_HOMEPAGE = 0xEA, 212 XBMCVK_CONFIG = 0xEB, 213 XBMCVK_EPG = 0xEC, 214 215 XBMCVK_LAST = 0xFF 216 } XBMCVKey; 217 218 // These should be in winuser.h. Not sure why they have been defined here 219 #ifndef VK_0 220 #define VK_0 '0' 221 #define VK_1 '1' 222 #define VK_2 '2' 223 #define VK_3 '3' 224 #define VK_4 '4' 225 #define VK_5 '5' 226 #define VK_6 '6' 227 #define VK_7 '7' 228 #define VK_8 '8' 229 #define VK_9 '9' 230 #define VK_A 'A' 231 #define VK_B 'B' 232 #define VK_C 'C' 233 #define VK_D 'D' 234 #define VK_E 'E' 235 #define VK_F 'F' 236 #define VK_G 'G' 237 #define VK_H 'H' 238 #define VK_I 'I' 239 #define VK_J 'J' 240 #define VK_K 'K' 241 #define VK_L 'L' 242 #define VK_M 'M' 243 #define VK_N 'N' 244 #define VK_O 'O' 245 #define VK_P 'P' 246 #define VK_Q 'Q' 247 #define VK_R 'R' 248 #define VK_S 'S' 249 #define VK_T 'T' 250 #define VK_U 'U' 251 #define VK_V 'V' 252 #define VK_W 'W' 253 #define VK_X 'X' 254 #define VK_Y 'Y' 255 #define VK_Z 'Z' 256 #endif /* VK_0 */ 257 258 /* These keys haven't been defined, but were experimentally determined */ 259 #ifndef VK_SEMICOLON 260 #define VK_SEMICOLON 0xBA 261 #define VK_EQUALS 0xBB 262 #define VK_COMMA 0xBC 263 #define VK_MINUS 0xBD 264 #define VK_PERIOD 0xBE 265 #define VK_SLASH 0xBF 266 #define VK_GRAVE 0xC0 267 #define VK_LBRACKET 0xDB 268 #define VK_BACKSLASH 0xDC 269 #define VK_RBRACKET 0xDD 270 #define VK_APOSTROPHE 0xDE 271 #define VK_BACKTICK 0xDF 272 #define VK_OEM_102 0xE2 273 #endif 274