Cygwin/X: Make the keyboard layout detection logging a bit clearer
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
This commit is contained in:
		
							parent
							
								
									57ca09441e
								
							
						
					
					
						commit
						ae99a6f895
					
				|  | @ -240,6 +240,7 @@ Bool | ||||||
| winConfigKeyboard (DeviceIntPtr pDevice) | winConfigKeyboard (DeviceIntPtr pDevice) | ||||||
| { | { | ||||||
|   char                          layoutName[KL_NAMELENGTH]; |   char                          layoutName[KL_NAMELENGTH]; | ||||||
|  |   unsigned char                 layoutFriendlyName[256]; | ||||||
|   static unsigned int           layoutNum = 0; |   static unsigned int           layoutNum = 0; | ||||||
|   int                           keyboardType; |   int                           keyboardType; | ||||||
| #ifdef XWIN_XF86CONFIG | #ifdef XWIN_XF86CONFIG | ||||||
|  | @ -299,11 +300,32 @@ winConfigKeyboard (DeviceIntPtr pDevice) | ||||||
| 	    if (LoadKeyboardLayout("00000409", KLF_ACTIVATE) != NULL) | 	    if (LoadKeyboardLayout("00000409", KLF_ACTIVATE) != NULL) | ||||||
| 	      winMsg (X_INFO, "Loading US keyboard layout.\n"); | 	      winMsg (X_INFO, "Loading US keyboard layout.\n"); | ||||||
| 	    else | 	    else | ||||||
| 	      winMsg (X_ERROR, "LoadKeyboardLaout failed.\n"); | 	      winMsg (X_ERROR, "LoadKeyboardLayout failed.\n"); | ||||||
| 	  } | 	  } | ||||||
|     } |     } | ||||||
|     winMsg (X_PROBED, "winConfigKeyboard - Layout: \"%s\" (%08x) \n",  | 
 | ||||||
|             layoutName, layoutNum); |     /* Discover the friendly name of the current layout */ | ||||||
|  |     { | ||||||
|  |       HKEY                regkey = NULL; | ||||||
|  |       const char          regtempl[] = "SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\"; | ||||||
|  |       char                *regpath; | ||||||
|  |       DWORD               namesize = sizeof(layoutFriendlyName); | ||||||
|  | 
 | ||||||
|  |       regpath = malloc(sizeof(regtempl) + KL_NAMELENGTH + 1); | ||||||
|  |       strcpy(regpath, regtempl); | ||||||
|  |       strcat(regpath, layoutName); | ||||||
|  | 
 | ||||||
|  |       if (!RegOpenKey(HKEY_LOCAL_MACHINE, regpath, ®key)) | ||||||
|  |           RegQueryValueEx(regkey, "Layout Text", 0, NULL, layoutFriendlyName, &namesize); | ||||||
|  | 
 | ||||||
|  |       /* Close registry key */ | ||||||
|  |       if (regkey) | ||||||
|  |         RegCloseKey (regkey); | ||||||
|  |       free(regpath); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     winMsg (X_PROBED, "Windows keyboard layout: \"%s\" (%08x) \"%s\", type %d\n", | ||||||
|  |             layoutName, layoutNum, layoutFriendlyName, keyboardType); | ||||||
| 
 | 
 | ||||||
|     for (pLayout = winKBLayouts; pLayout->winlayout != -1; pLayout++) |     for (pLayout = winKBLayouts; pLayout->winlayout != -1; pLayout++) | ||||||
|       { |       { | ||||||
|  | @ -311,46 +333,35 @@ winConfigKeyboard (DeviceIntPtr pDevice) | ||||||
| 	  continue; | 	  continue; | ||||||
| 	if (pLayout->winkbtype > 0 && pLayout->winkbtype != keyboardType) | 	if (pLayout->winkbtype > 0 && pLayout->winkbtype != keyboardType) | ||||||
| 	  continue; | 	  continue; | ||||||
| 	 | 
 | ||||||
|         bfound = TRUE; |         bfound = TRUE; | ||||||
| 	winMsg (X_PROBED, | 	winMsg (X_PROBED, | ||||||
| 		"Using preset keyboard for \"%s\" (%x), type \"%d\"\n", | 		"Found matching XKB configuration \"%s\"\n", | ||||||
| 		pLayout->layoutname, pLayout->winlayout, keyboardType); | 		pLayout->layoutname); | ||||||
| 	 | 
 | ||||||
|  |         winMsg(X_PROBED, | ||||||
|  |                "Model = \"%s\" Layout = \"%s\"" | ||||||
|  |                " Variant = \"%s\" Options = \"%s\"\n", | ||||||
|  |                pLayout->xkbmodel ? pLayout->xkbmodel : "none", | ||||||
|  |                pLayout->xkblayout ? pLayout->xkblayout : "none", | ||||||
|  |                pLayout->xkbvariant ? pLayout->xkbvariant : "none", | ||||||
|  |                pLayout->xkboptions ? pLayout->xkboptions : "none"); | ||||||
|  | 
 | ||||||
| 	g_winInfo.xkb.model = pLayout->xkbmodel; | 	g_winInfo.xkb.model = pLayout->xkbmodel; | ||||||
| 	g_winInfo.xkb.layout = pLayout->xkblayout; | 	g_winInfo.xkb.layout = pLayout->xkblayout; | ||||||
| 	g_winInfo.xkb.variant = pLayout->xkbvariant; | 	g_winInfo.xkb.variant = pLayout->xkbvariant; | ||||||
| 	g_winInfo.xkb.options = pLayout->xkboptions;  | 	g_winInfo.xkb.options = pLayout->xkboptions; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 	break; | 	break; | ||||||
|       } |       } | ||||||
|      | 
 | ||||||
|     if (!bfound) |     if (!bfound) | ||||||
|       { |       { | ||||||
|         HKEY                regkey = NULL; |         winMsg (X_ERROR, "Keyboardlayout \"%s\" (%s) is unknown, using X server default layout\n", layoutFriendlyName, layoutName); | ||||||
|         const char          regtempl[] =  |  | ||||||
|           "SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\"; |  | ||||||
|         char                *regpath; |  | ||||||
|         unsigned char       lname[256]; |  | ||||||
|         DWORD               namesize = sizeof(lname); |  | ||||||
| 
 |  | ||||||
|         regpath = malloc(sizeof(regtempl) + KL_NAMELENGTH + 1); |  | ||||||
|         strcpy(regpath, regtempl); |  | ||||||
|         strcat(regpath, layoutName); |  | ||||||
| 
 |  | ||||||
|         if (!RegOpenKey(HKEY_LOCAL_MACHINE, regpath, ®key) && |  | ||||||
|           !RegQueryValueEx(regkey, "Layout Text", 0, NULL, lname, &namesize)) |  | ||||||
|           { |  | ||||||
| 	    winMsg (X_ERROR, |  | ||||||
| 		"Keyboardlayout \"%s\" (%s) is unknown\n", lname, layoutName); |  | ||||||
|           } |  | ||||||
| 
 |  | ||||||
| 	/* Close registry key */ |  | ||||||
| 	if (regkey) |  | ||||||
| 	  RegCloseKey (regkey); |  | ||||||
|         free(regpath); |  | ||||||
|       } |       } | ||||||
|   }   |   } | ||||||
|    | 
 | ||||||
|   /* parse the configuration */ |   /* parse the configuration */ | ||||||
| #ifdef XWIN_XF86CONFIG | #ifdef XWIN_XF86CONFIG | ||||||
|   if (g_cmdline.keyboard) |   if (g_cmdline.keyboard) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue