void WIN_UpdateKeymap() { int i; SDL_scancode scancode; SDLKey keymap[SDL_NUM_SCANCODES]; SDL_GetDefaultKeymap(keymap); for (i = 0; i < SDL_arraysize(win32_scancode_table); i++) { /* Make sure this scancode is a valid character scancode */ scancode = win32_scancode_table[i]; if (scancode == SDL_SCANCODE_UNKNOWN || keymap[scancode] >= 127) { continue; } /* Alphabetic keys are handled specially, since Windows remaps them */ if (i >= 'A' && i <= 'Z') { BYTE vsc = alpha_scancodes[i - 'A']; keymap[scancode] = MapVirtualKey(vsc, MAPVK_VSC_TO_VK) + 0x20; } else { keymap[scancode] = (MapVirtualKey(i, MAPVK_VK_TO_CHAR) & 0x7FFF); } } SDL_SetKeymap(0, keymap, SDL_NUM_SCANCODES); }
static DFBEnumerationResult EnumKeyboards(DFBInputDeviceID device_id, DFBInputDeviceDescription desc, void *callbackdata) { cb_data *cb = callbackdata; DFB_DeviceData *devdata = cb->devdata; #if USE_MULTI_API SDL_Keyboard keyboard; #endif SDLKey keymap[SDL_NUM_SCANCODES]; if (!cb->sys_kbd) { if (cb->sys_ids) { if (device_id >= 0x10) return DFENUM_OK; } else { if (device_id < 0x10) return DFENUM_OK; } } else { if (device_id != DIDID_KEYBOARD) return DFENUM_OK; } if ((desc.caps & DIDTF_KEYBOARD)) { #if USE_MULTI_API SDL_zero(keyboard); SDL_AddKeyboard(&keyboard, devdata->num_keyboard); #endif devdata->keyboard[devdata->num_keyboard].id = device_id; devdata->keyboard[devdata->num_keyboard].is_generic = 0; if (!strncmp("X11", desc.name, 3)) devdata->keyboard[devdata->num_keyboard].is_generic = 1; SDL_GetDefaultKeymap(keymap); #if USE_MULTI_API SDL_SetKeymap(devdata->num_keyboard, 0, keymap, SDL_NUM_SCANCODES); #else SDL_SetKeymap(0, keymap, SDL_NUM_SCANCODES); #endif devdata->num_keyboard++; if (cb->sys_kbd) return DFENUM_CANCEL; } return DFENUM_OK; }
void Android_InitKeyboard(void) { SDL_Keycode keymap[SDL_NUM_SCANCODES]; /* Add default scancode to key mapping */ SDL_GetDefaultKeymap(keymap); 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]; 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); }
void ANDROID_InitOSKeymap() { int i; SDLKey * keymap = SDL_android_keymap; #if (SDL_VERSION_ATLEAST(1,3,0)) SDLKey defaultKeymap[SDL_NUM_SCANCODES]; SDL_GetDefaultKeymap(defaultKeymap); SDL_SetKeymap(0, defaultKeymap, SDL_NUM_SCANCODES); #endif // TODO: keys are mapped rather randomly for (i=0; i<SDL_arraysize(SDL_android_keymap); ++i) SDL_android_keymap[i] = SDL_KEY(UNKNOWN); keymap[KEYCODE_UNKNOWN] = SDL_KEY(UNKNOWN); //keymap[KEYCODE_CALL] = SDL_KEY(RCTRL); //keymap[KEYCODE_DPAD_CENTER] = SDL_KEY(LALT); keymap[KEYCODE_0] = SDL_KEY(0); keymap[KEYCODE_1] = SDL_KEY(1); keymap[KEYCODE_2] = SDL_KEY(2); keymap[KEYCODE_3] = SDL_KEY(3); keymap[KEYCODE_4] = SDL_KEY(4); keymap[KEYCODE_5] = SDL_KEY(5); keymap[KEYCODE_6] = SDL_KEY(6); keymap[KEYCODE_7] = SDL_KEY(7); keymap[KEYCODE_8] = SDL_KEY(8); keymap[KEYCODE_9] = SDL_KEY(9); keymap[KEYCODE_STAR] = SDL_KEY(KP_DIVIDE); keymap[KEYCODE_POUND] = SDL_KEY(KP_MULTIPLY); keymap[KEYCODE_DPAD_UP] = SDL_KEY(UP); keymap[KEYCODE_DPAD_DOWN] = SDL_KEY(DOWN); keymap[KEYCODE_DPAD_LEFT] = SDL_KEY(LEFT); keymap[KEYCODE_DPAD_RIGHT] = SDL_KEY(RIGHT); keymap[KEYCODE_DPAD_CENTER] = SDL_KEY(RETURN); keymap[KEYCODE_ENTER] = SDL_KEY(RETURN); //SDL_KEY(KP_ENTER); keymap[KEYCODE_CLEAR] = SDL_KEY(BACKSPACE); keymap[KEYCODE_A] = SDL_KEY(A); keymap[KEYCODE_B] = SDL_KEY(B); keymap[KEYCODE_C] = SDL_KEY(C); keymap[KEYCODE_D] = SDL_KEY(D); keymap[KEYCODE_E] = SDL_KEY(E); keymap[KEYCODE_F] = SDL_KEY(F); keymap[KEYCODE_G] = SDL_KEY(G); keymap[KEYCODE_H] = SDL_KEY(H); keymap[KEYCODE_I] = SDL_KEY(I); keymap[KEYCODE_J] = SDL_KEY(J); keymap[KEYCODE_K] = SDL_KEY(K); keymap[KEYCODE_L] = SDL_KEY(L); keymap[KEYCODE_M] = SDL_KEY(M); keymap[KEYCODE_N] = SDL_KEY(N); keymap[KEYCODE_O] = SDL_KEY(O); keymap[KEYCODE_P] = SDL_KEY(P); keymap[KEYCODE_Q] = SDL_KEY(Q); keymap[KEYCODE_R] = SDL_KEY(R); keymap[KEYCODE_S] = SDL_KEY(S); keymap[KEYCODE_T] = SDL_KEY(T); keymap[KEYCODE_U] = SDL_KEY(U); keymap[KEYCODE_V] = SDL_KEY(V); keymap[KEYCODE_W] = SDL_KEY(W); keymap[KEYCODE_X] = SDL_KEY(X); keymap[KEYCODE_Y] = SDL_KEY(Y); keymap[KEYCODE_Z] = SDL_KEY(Z); keymap[KEYCODE_COMMA] = SDL_KEY(COMMA); keymap[KEYCODE_PERIOD] = SDL_KEY(PERIOD); keymap[KEYCODE_TAB] = SDL_KEY(TAB); keymap[KEYCODE_SPACE] = SDL_KEY(SPACE); keymap[KEYCODE_GRAVE] = SDL_KEY(GRAVE); keymap[KEYCODE_MINUS] = SDL_KEY(KP_MINUS); keymap[KEYCODE_PLUS] = SDL_KEY(KP_PLUS); keymap[KEYCODE_EQUALS] = SDL_KEY(EQUALS); keymap[KEYCODE_LEFT_BRACKET] = SDL_KEY(LEFTBRACKET); keymap[KEYCODE_RIGHT_BRACKET] = SDL_KEY(RIGHTBRACKET); keymap[KEYCODE_BACKSLASH] = SDL_KEY(BACKSLASH); keymap[KEYCODE_SEMICOLON] = SDL_KEY(SEMICOLON); keymap[KEYCODE_APOSTROPHE] = SDL_KEY(APOSTROPHE); keymap[KEYCODE_SLASH] = SDL_KEY(SLASH); keymap[KEYCODE_SHIFT_LEFT] = SDL_KEY(LSHIFT); keymap[KEYCODE_SHIFT_RIGHT] = SDL_KEY(RSHIFT); keymap[KEYCODE_DEL] = SDL_KEY(BACKSPACE); keymap[KEYCODE_AT] = SDL_KEY(AT); }