src/video/windib/SDL_dibevents.c
branchSDL-1.2
changeset 3868 b2f59aadec0d
parent 1852 eb2d5480ae95
child 3981 b0d021cf41b6
equal deleted inserted replaced
3867:4dae257a9cbf 3868:b2f59aadec0d
   271 static HKL hLayoutUS = NULL;
   271 static HKL hLayoutUS = NULL;
   272 
   272 
   273 void DIB_InitOSKeymap(_THIS)
   273 void DIB_InitOSKeymap(_THIS)
   274 {
   274 {
   275 	int	i;
   275 	int	i;
   276 	char	current_layout[256];
   276 #ifndef _WIN32_WCE
       
   277 	char	current_layout[KL_NAMELENGTH];
   277 
   278 
   278 	GetKeyboardLayoutName(current_layout);
   279 	GetKeyboardLayoutName(current_layout);
   279 	//printf("Initial Keyboard Layout Name: '%s'\n", current_layout);
   280 	//printf("Initial Keyboard Layout Name: '%s'\n", current_layout);
   280 
   281 
   281 	hLayoutUS = LoadKeyboardLayout("00000409", KLF_NOTELLSHELL);
   282 	hLayoutUS = LoadKeyboardLayout("00000409", KLF_NOTELLSHELL);
       
   283 
   282 	if (!hLayoutUS) {
   284 	if (!hLayoutUS) {
   283 		//printf("Failed to load US keyboard layout. Using current.\n");
   285 		//printf("Failed to load US keyboard layout. Using current.\n");
   284 		hLayoutUS = GetKeyboardLayout(0);
   286 		hLayoutUS = GetKeyboardLayout(0);
   285 	}
   287 	}
   286 	LoadKeyboardLayout(current_layout, KLF_ACTIVATE);
   288 	LoadKeyboardLayout(current_layout, KLF_ACTIVATE);
   287 
   289 #else
       
   290 #if _WIN32_WCE >=420
       
   291 	TCHAR	current_layout[KL_NAMELENGTH];
       
   292 
       
   293 	GetKeyboardLayoutName(current_layout);
       
   294 	//printf("Initial Keyboard Layout Name: '%s'\n", current_layout);
       
   295 
       
   296 	hLayoutUS = LoadKeyboardLayout(L"00000409", 0);
       
   297 
       
   298 	if (!hLayoutUS) {
       
   299 		//printf("Failed to load US keyboard layout. Using current.\n");
       
   300 		hLayoutUS = GetKeyboardLayout(0);
       
   301 	}
       
   302 	LoadKeyboardLayout(current_layout, 0);
       
   303 #endif // _WIN32_WCE >=420
       
   304 #endif
   288 	/* Map the VK keysyms */
   305 	/* Map the VK keysyms */
   289 	for ( i=0; i<SDL_arraysize(VK_keymap); ++i )
   306 	for ( i=0; i<SDL_arraysize(VK_keymap); ++i )
   290 		VK_keymap[i] = SDLK_UNKNOWN;
   307 		VK_keymap[i] = SDLK_UNKNOWN;
   291 
   308 
   292 	VK_keymap[VK_BACK] = SDLK_BACKSPACE;
   309 	VK_keymap[VK_BACK] = SDLK_BACKSPACE;
   412 
   429 
   413 #define EXTKEYPAD(keypad) ((scancode & 0x100)?(mvke):(keypad))
   430 #define EXTKEYPAD(keypad) ((scancode & 0x100)?(mvke):(keypad))
   414 
   431 
   415 static int SDL_MapVirtualKey(int scancode, int vkey)
   432 static int SDL_MapVirtualKey(int scancode, int vkey)
   416 {
   433 {
       
   434 #ifndef _WIN32_WCE
   417 	int	mvke  = MapVirtualKeyEx(scancode & 0xFF, 1, hLayoutUS);
   435 	int	mvke  = MapVirtualKeyEx(scancode & 0xFF, 1, hLayoutUS);
       
   436 #else
       
   437 	int	mvke  = MapVirtualKey(scancode & 0xFF, 1);
       
   438 #endif
   418 
   439 
   419 	switch(vkey) {
   440 	switch(vkey) {
   420 		/* These are always correct */
   441 		/* These are always correct */
   421 		case VK_DIVIDE:
   442 		case VK_DIVIDE:
   422 		case VK_MULTIPLY:
   443 		case VK_MULTIPLY: