1 #pragma once 2 3 typedef struct 4 { 5 PCWSTR FontName; 6 PCWSTR SubFontName; 7 } MUI_SUBFONT; 8 9 typedef USHORT LANGID; 10 typedef ULONG KLID; 11 12 /* 13 * See http://archives.miloush.net/michkap/archive/2006/10/14/825404.html 14 * and the intl.inf LCID map: 15 * 16 * ; List of locales. 17 * ; <LCID> = <Description>,<OEMCP>,<Language Group>,<langID:HKL pair>,<langID:HKL pair>,... 18 * 19 * Each MUI_LANGUAGE entry corresponds to one such locale description. 20 * Each MUI_LAYOUTS entry corresponds to a <langID:HKL pair>. 21 */ 22 typedef struct 23 { 24 LANGID LangID; // Language ID (like 0x0409) 25 KLID LayoutID; // Layout ID (like 0x00000409) 26 } MUI_LAYOUTS; 27 28 typedef ULONG GEOID; // See winnls.h 29 30 typedef struct 31 { 32 PCWSTR LanguageID; 33 UINT ACPage; 34 UINT OEMCPage; 35 UINT MACCPage; 36 PCWSTR LanguageDescriptor; 37 GEOID GeoID; 38 const MUI_SUBFONT* MuiSubFonts; 39 const MUI_LAYOUTS* MuiLayouts; 40 } MUI_LANGUAGE; 41 42 43 BOOLEAN 44 IsLanguageAvailable( 45 IN PCWSTR LanguageId); 46 47 KLID 48 MUIDefaultKeyboardLayout( 49 IN PCWSTR LanguageId); 50 51 UINT 52 MUIGetOEMCodePage( 53 IN PCWSTR LanguageId); 54 55 GEOID 56 MUIGetGeoID( 57 IN PCWSTR LanguageId); 58 59 const MUI_LAYOUTS* 60 MUIGetLayoutsList( 61 IN PCWSTR LanguageId); 62 63 BOOLEAN 64 AddKbLayoutsToRegistry( 65 _In_ const MUI_LAYOUTS* MuiLayouts); 66 67 BOOLEAN 68 AddKeyboardLayouts( 69 IN PCWSTR LanguageId); 70 71 BOOLEAN 72 AddCodePage( 73 IN PCWSTR LanguageId); 74