void X11_UpdateKeymap(_THIS) { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; int i; SDL_Scancode scancode; SDL_Keycode keymap[SDL_NUM_SCANCODES]; SDL_GetDefaultKeymap(keymap); for (i = 0; i < SDL_arraysize(data->key_layout); i++) { Uint32 key; /* Make sure this is a valid scancode */ scancode = data->key_layout[i]; if (scancode == SDL_SCANCODE_UNKNOWN) { continue; } /* See if there is a UCS keycode for this scancode */ key = X11_KeyCodeToUcs4(data->display, (KeyCode)i); if (key) { keymap[scancode] = key; } else { SDL_Scancode keyScancode = X11_KeyCodeToSDLScancode(data->display, (KeyCode)i); switch (keyScancode) { case SDL_SCANCODE_RETURN: keymap[scancode] = SDLK_RETURN; break; case SDL_SCANCODE_ESCAPE: keymap[scancode] = SDLK_ESCAPE; break; case SDL_SCANCODE_BACKSPACE: keymap[scancode] = SDLK_BACKSPACE; break; case SDL_SCANCODE_TAB: keymap[scancode] = SDLK_TAB; break; case SDL_SCANCODE_DELETE: keymap[scancode] = SDLK_DELETE; break; default: keymap[scancode] = SDL_SCANCODE_TO_KEYCODE(keyScancode); break; } } } SDL_SetKeymap(0, keymap, SDL_NUM_SCANCODES); }
void X11_UpdateKeymap(_THIS) { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; int i; SDL_Scancode scancode; SDL_Keycode keymap[SDL_NUM_SCANCODES]; unsigned char group = 0; SDL_GetDefaultKeymap(keymap); #if SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM if (data->xkb) { XkbStateRec state; X11_XkbGetUpdatedMap(data->display, XkbAllClientInfoMask, data->xkb); if (X11_XkbGetState(data->display, XkbUseCoreKbd, &state) == Success) { group = state.group; } } #endif for (i = 0; i < SDL_arraysize(data->key_layout); i++) { Uint32 key; /* Make sure this is a valid scancode */ scancode = data->key_layout[i]; if (scancode == SDL_SCANCODE_UNKNOWN) { continue; } /* See if there is a UCS keycode for this scancode */ key = X11_KeyCodeToUcs4(_this, (KeyCode)i, group); if (key) { keymap[scancode] = key; } else { SDL_Scancode keyScancode = X11_KeyCodeToSDLScancode(_this, (KeyCode)i); switch (keyScancode) { case SDL_SCANCODE_RETURN: keymap[scancode] = SDLK_RETURN; break; case SDL_SCANCODE_ESCAPE: keymap[scancode] = SDLK_ESCAPE; break; case SDL_SCANCODE_BACKSPACE: keymap[scancode] = SDLK_BACKSPACE; break; case SDL_SCANCODE_TAB: keymap[scancode] = SDLK_TAB; break; case SDL_SCANCODE_DELETE: keymap[scancode] = SDLK_DELETE; break; default: keymap[scancode] = SDL_SCANCODE_TO_KEYCODE(keyScancode); break; } } } SDL_SetKeymap(0, keymap, SDL_NUM_SCANCODES); }
Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDLKey key) { switch (key) { case SDLK_BACKSPACE: return Common::KEYCODE_BACKSPACE; case SDLK_TAB: return Common::KEYCODE_TAB; case SDLK_CLEAR: return Common::KEYCODE_CLEAR; case SDLK_RETURN: return Common::KEYCODE_RETURN; case SDLK_PAUSE: return Common::KEYCODE_PAUSE; case SDLK_ESCAPE: return Common::KEYCODE_ESCAPE; case SDLK_SPACE: return Common::KEYCODE_SPACE; case SDLK_EXCLAIM: return Common::KEYCODE_EXCLAIM; case SDLK_QUOTEDBL: return Common::KEYCODE_QUOTEDBL; case SDLK_HASH: return Common::KEYCODE_HASH; case SDLK_DOLLAR: return Common::KEYCODE_DOLLAR; case SDLK_AMPERSAND: return Common::KEYCODE_AMPERSAND; case SDLK_QUOTE: return Common::KEYCODE_QUOTE; case SDLK_LEFTPAREN: return Common::KEYCODE_LEFTPAREN; case SDLK_RIGHTPAREN: return Common::KEYCODE_RIGHTPAREN; case SDLK_ASTERISK: return Common::KEYCODE_ASTERISK; case SDLK_PLUS: return Common::KEYCODE_PLUS; case SDLK_COMMA: return Common::KEYCODE_COMMA; case SDLK_MINUS: return Common::KEYCODE_MINUS; case SDLK_PERIOD: return Common::KEYCODE_PERIOD; case SDLK_SLASH: return Common::KEYCODE_SLASH; case SDLK_0: return Common::KEYCODE_0; case SDLK_1: return Common::KEYCODE_1; case SDLK_2: return Common::KEYCODE_2; case SDLK_3: return Common::KEYCODE_3; case SDLK_4: return Common::KEYCODE_4; case SDLK_5: return Common::KEYCODE_5; case SDLK_6: return Common::KEYCODE_6; case SDLK_7: return Common::KEYCODE_7; case SDLK_8: return Common::KEYCODE_8; case SDLK_9: return Common::KEYCODE_9; case SDLK_COLON: return Common::KEYCODE_COLON; case SDLK_SEMICOLON: return Common::KEYCODE_SEMICOLON; case SDLK_LESS: return Common::KEYCODE_LESS; case SDLK_EQUALS: return Common::KEYCODE_EQUALS; case SDLK_GREATER: return Common::KEYCODE_GREATER; case SDLK_QUESTION: return Common::KEYCODE_QUESTION; case SDLK_AT: return Common::KEYCODE_AT; case SDLK_LEFTBRACKET: return Common::KEYCODE_LEFTBRACKET; case SDLK_BACKSLASH: return Common::KEYCODE_BACKSLASH; case SDLK_RIGHTBRACKET: return Common::KEYCODE_RIGHTBRACKET; case SDLK_CARET: return Common::KEYCODE_CARET; case SDLK_UNDERSCORE: return Common::KEYCODE_UNDERSCORE; case SDLK_BACKQUOTE: return Common::KEYCODE_BACKQUOTE; case SDLK_a: return Common::KEYCODE_a; case SDLK_b: return Common::KEYCODE_b; case SDLK_c: return Common::KEYCODE_c; case SDLK_d: return Common::KEYCODE_d; case SDLK_e: return Common::KEYCODE_e; case SDLK_f: return Common::KEYCODE_f; case SDLK_g: return Common::KEYCODE_g; case SDLK_h: return Common::KEYCODE_h; case SDLK_i: return Common::KEYCODE_i; case SDLK_j: return Common::KEYCODE_j; case SDLK_k: return Common::KEYCODE_k; case SDLK_l: return Common::KEYCODE_l; case SDLK_m: return Common::KEYCODE_m; case SDLK_n: return Common::KEYCODE_n; case SDLK_o: return Common::KEYCODE_o; case SDLK_p: return Common::KEYCODE_p; case SDLK_q: return Common::KEYCODE_q; case SDLK_r: return Common::KEYCODE_r; case SDLK_s: return Common::KEYCODE_s; case SDLK_t: return Common::KEYCODE_t; case SDLK_u: return Common::KEYCODE_u; case SDLK_v: return Common::KEYCODE_v; case SDLK_w: return Common::KEYCODE_w; case SDLK_x: return Common::KEYCODE_x; case SDLK_y: return Common::KEYCODE_y; case SDLK_z: return Common::KEYCODE_z; case SDLK_DELETE: return Common::KEYCODE_DELETE; #if SDL_VERSION_ATLEAST(1, 3, 0) case SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_GRAVE): return Common::KEYCODE_TILDE; #else case SDLK_WORLD_16: return Common::KEYCODE_TILDE; #endif case SDLK_KP0: return Common::KEYCODE_KP0; case SDLK_KP1: return Common::KEYCODE_KP1; case SDLK_KP2: return Common::KEYCODE_KP2; case SDLK_KP3: return Common::KEYCODE_KP3; case SDLK_KP4: return Common::KEYCODE_KP4; case SDLK_KP5: return Common::KEYCODE_KP5; case SDLK_KP6: return Common::KEYCODE_KP6; case SDLK_KP7: return Common::KEYCODE_KP7; case SDLK_KP8: return Common::KEYCODE_KP8; case SDLK_KP9: return Common::KEYCODE_KP9; case SDLK_KP_PERIOD: return Common::KEYCODE_KP_PERIOD; case SDLK_KP_DIVIDE: return Common::KEYCODE_KP_DIVIDE; case SDLK_KP_MULTIPLY: return Common::KEYCODE_KP_MULTIPLY; case SDLK_KP_MINUS: return Common::KEYCODE_KP_MINUS; case SDLK_KP_PLUS: return Common::KEYCODE_KP_PLUS; case SDLK_KP_ENTER: return Common::KEYCODE_KP_ENTER; case SDLK_KP_EQUALS: return Common::KEYCODE_KP_EQUALS; case SDLK_UP: return Common::KEYCODE_UP; case SDLK_DOWN: return Common::KEYCODE_DOWN; case SDLK_RIGHT: return Common::KEYCODE_RIGHT; case SDLK_LEFT: return Common::KEYCODE_LEFT; case SDLK_INSERT: return Common::KEYCODE_INSERT; case SDLK_HOME: return Common::KEYCODE_HOME; case SDLK_END: return Common::KEYCODE_END; case SDLK_PAGEUP: return Common::KEYCODE_PAGEUP; case SDLK_PAGEDOWN: return Common::KEYCODE_PAGEDOWN; case SDLK_F1: return Common::KEYCODE_F1; case SDLK_F2: return Common::KEYCODE_F2; case SDLK_F3: return Common::KEYCODE_F3; case SDLK_F4: return Common::KEYCODE_F4; case SDLK_F5: return Common::KEYCODE_F5; case SDLK_F6: return Common::KEYCODE_F6; case SDLK_F7: return Common::KEYCODE_F7; case SDLK_F8: return Common::KEYCODE_F8; case SDLK_F9: return Common::KEYCODE_F9; case SDLK_F10: return Common::KEYCODE_F10; case SDLK_F11: return Common::KEYCODE_F11; case SDLK_F12: return Common::KEYCODE_F12; case SDLK_F13: return Common::KEYCODE_F13; case SDLK_F14: return Common::KEYCODE_F14; case SDLK_F15: return Common::KEYCODE_F15; case SDLK_NUMLOCK: return Common::KEYCODE_NUMLOCK; case SDLK_CAPSLOCK: return Common::KEYCODE_CAPSLOCK; case SDLK_SCROLLOCK: return Common::KEYCODE_SCROLLOCK; case SDLK_RSHIFT: return Common::KEYCODE_RSHIFT; case SDLK_LSHIFT: return Common::KEYCODE_LSHIFT; case SDLK_RCTRL: return Common::KEYCODE_RCTRL; case SDLK_LCTRL: return Common::KEYCODE_LCTRL; case SDLK_RALT: return Common::KEYCODE_RALT; case SDLK_LALT: return Common::KEYCODE_LALT; case SDLK_LSUPER: return Common::KEYCODE_LSUPER; case SDLK_RSUPER: return Common::KEYCODE_RSUPER; case SDLK_MODE: return Common::KEYCODE_MODE; case SDLK_COMPOSE: return Common::KEYCODE_COMPOSE; case SDLK_HELP: return Common::KEYCODE_HELP; case SDLK_PRINT: return Common::KEYCODE_PRINT; case SDLK_SYSREQ: return Common::KEYCODE_SYSREQ; case SDLK_BREAK: return Common::KEYCODE_BREAK; case SDLK_MENU: return Common::KEYCODE_MENU; case SDLK_POWER: return Common::KEYCODE_POWER; case SDLK_UNDO: return Common::KEYCODE_UNDO; default: return Common::KEYCODE_INVALID; } }
SDL_Keycode SCANCODE_TO_KEYCODE(SDL_Scancode x) { return SDL_SCANCODE_TO_KEYCODE(x); }