| 154 | } |
| 155 | |
| 156 | static int MapNativeKey(SDL_Keycode k) { |
| 157 | if (k >= SDLK_0 && k <= SDLK_9) { return '0' + (k - SDLK_0); } |
| 158 | if (k >= SDLK_A && k <= SDLK_Z) { return 'A' + (k - SDLK_A); } |
| 159 | if (k >= SDLK_F1 && k <= SDLK_F12) { return CCKEY_F1 + (k - SDLK_F1); } |
| 160 | if (k >= SDLK_F13 && k <= SDLK_F24) { return CCKEY_F13 + (k - SDLK_F13); } |
| 161 | /* SDLK_KP_0 isn't before SDLK_KP_1 */ |
| 162 | if (k >= SDLK_KP_1 && k <= SDLK_KP_9) { return CCKEY_KP1 + (k - SDLK_KP_1); } |
| 163 | |
| 164 | switch (k) { |
| 165 | case SDLK_RETURN: return CCKEY_ENTER; |
| 166 | case SDLK_ESCAPE: return CCKEY_ESCAPE; |
| 167 | case SDLK_BACKSPACE: return CCKEY_BACKSPACE; |
| 168 | case SDLK_TAB: return CCKEY_TAB; |
| 169 | case SDLK_SPACE: return CCKEY_SPACE; |
| 170 | case SDLK_APOSTROPHE: return CCKEY_QUOTE; |
| 171 | case SDLK_EQUALS: return CCKEY_EQUALS; |
| 172 | case SDLK_COMMA: return CCKEY_COMMA; |
| 173 | case SDLK_MINUS: return CCKEY_MINUS; |
| 174 | case SDLK_PERIOD: return CCKEY_PERIOD; |
| 175 | case SDLK_SLASH: return CCKEY_SLASH; |
| 176 | case SDLK_SEMICOLON: return CCKEY_SEMICOLON; |
| 177 | case SDLK_LEFTBRACKET: return CCKEY_LBRACKET; |
| 178 | case SDLK_BACKSLASH: return CCKEY_BACKSLASH; |
| 179 | case SDLK_RIGHTBRACKET: return CCKEY_RBRACKET; |
| 180 | case SDLK_GRAVE: return CCKEY_TILDE; |
| 181 | case SDLK_CAPSLOCK: return CCKEY_CAPSLOCK; |
| 182 | case SDLK_PRINTSCREEN: return CCKEY_PRINTSCREEN; |
| 183 | case SDLK_SCROLLLOCK: return CCKEY_SCROLLLOCK; |
| 184 | case SDLK_PAUSE: return CCKEY_PAUSE; |
| 185 | case SDLK_INSERT: return CCKEY_INSERT; |
| 186 | case SDLK_HOME: return CCKEY_HOME; |
| 187 | case SDLK_PAGEUP: return CCKEY_PAGEUP; |
| 188 | case SDLK_DELETE: return CCKEY_DELETE; |
| 189 | case SDLK_END: return CCKEY_END; |
| 190 | case SDLK_PAGEDOWN: return CCKEY_PAGEDOWN; |
| 191 | case SDLK_RIGHT: return CCKEY_RIGHT; |
| 192 | case SDLK_LEFT: return CCKEY_LEFT; |
| 193 | case SDLK_DOWN: return CCKEY_DOWN; |
| 194 | case SDLK_UP: return CCKEY_UP; |
| 195 | |
| 196 | case SDLK_NUMLOCKCLEAR: return CCKEY_NUMLOCK; |
| 197 | case SDLK_KP_DIVIDE: return CCKEY_KP_DIVIDE; |
| 198 | case SDLK_KP_MULTIPLY: return CCKEY_KP_MULTIPLY; |
| 199 | case SDLK_KP_MINUS: return CCKEY_KP_MINUS; |
| 200 | case SDLK_KP_PLUS: return CCKEY_KP_PLUS; |
| 201 | case SDLK_KP_ENTER: return CCKEY_KP_ENTER; |
| 202 | case SDLK_KP_0: return CCKEY_KP0; |
| 203 | case SDLK_KP_PERIOD: return CCKEY_KP_DECIMAL; |
| 204 | |
| 205 | case SDLK_LCTRL: return CCKEY_LCTRL; |
| 206 | case SDLK_LSHIFT: return CCKEY_LSHIFT; |
| 207 | case SDLK_LALT: return CCKEY_LALT; |
| 208 | case SDLK_LGUI: return CCKEY_LWIN; |
| 209 | case SDLK_RCTRL: return CCKEY_RCTRL; |
| 210 | case SDLK_RSHIFT: return CCKEY_RSHIFT; |
| 211 | case SDLK_RALT: return CCKEY_RALT; |
| 212 | case SDLK_RGUI: return CCKEY_RWIN; |
| 213 | |