mirror of
https://github.com/reactos/reactos.git
synced 2024-11-23 11:33:31 +08:00
** WIP ** Improve handling of MUI/LANGID/... stuff
This should fix part of CORE-11785 ** WIP ** Continue massaging the MUI stuff AND actually start to remove GENERIC_LIST from the settings. Some stuff to see:7af2f717bc/base/setup/usetup/settings.c
8f2c4f7a6d
etc. ** WIP ** Continue with refactoring the settings retrival and limiting usage of GENERIC_LIST. See commits:829b0c63d9
67880e7352
(for keyboard layout) ande405ad257c
(a commit of mine)
This commit is contained in:
parent
afa515bfd0
commit
17c4299ff8
@ -538,16 +538,8 @@ PrepareCopyInfFile(
|
||||
}
|
||||
|
||||
/* Add specific files depending of computer type */
|
||||
{
|
||||
PGENERIC_LIST_ENTRY Entry;
|
||||
Entry = GetCurrentListEntry(pSetupData->ComputerList);
|
||||
ASSERT(Entry);
|
||||
pSetupData->ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
||||
ASSERT(pSetupData->ComputerType);
|
||||
|
||||
if (!ProcessComputerFiles(InfFile, pSetupData->ComputerType, &AdditionalSectionName))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (AdditionalSectionName &&
|
||||
!AddSectionToCopyQueue(pSetupData, InfFile,
|
||||
@ -769,7 +761,7 @@ PrepareFileCopy(
|
||||
InfFileSize,
|
||||
NULL,
|
||||
INF_STYLE_WIN4,
|
||||
pSetupData->LanguageId,
|
||||
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||
&ErrorLine);
|
||||
|
||||
CabinetCleanup(&CabinetContext);
|
||||
@ -792,7 +784,7 @@ PrepareFileCopy(
|
||||
InfHandle = SpInfOpenInfFile(PathBuffer,
|
||||
NULL,
|
||||
INF_STYLE_WIN4,
|
||||
pSetupData->LanguageId,
|
||||
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||
&ErrorLine);
|
||||
}
|
||||
#endif
|
||||
|
@ -42,25 +42,22 @@
|
||||
static
|
||||
ULONG
|
||||
FindLanguageIndex(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
if (LanguageId == NULL)
|
||||
if (LanguageId == 0)
|
||||
{
|
||||
/* Default to en-US */
|
||||
// return 0; // FIXME!!
|
||||
LanguageId = L"00000409";
|
||||
// return 0; // FIXME!!
|
||||
LanguageId = 0x0409;
|
||||
}
|
||||
|
||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
||||
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||
{
|
||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
||||
{
|
||||
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||
return lngIndex;
|
||||
}
|
||||
|
||||
lngIndex++;
|
||||
++lngIndex;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -68,16 +65,15 @@ FindLanguageIndex(
|
||||
|
||||
BOOLEAN
|
||||
IsLanguageAvailable(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
||||
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||
{
|
||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
||||
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||
return TRUE;
|
||||
|
||||
lngIndex++;
|
||||
++lngIndex;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@ -86,7 +82,7 @@ IsLanguageAvailable(
|
||||
|
||||
KLID
|
||||
MUIDefaultKeyboardLayout(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||
return MUILanguageList[lngIndex].MuiLayouts[0].LayoutID;
|
||||
@ -94,7 +90,7 @@ MUIDefaultKeyboardLayout(
|
||||
|
||||
UINT
|
||||
MUIGetOEMCodePage(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||
return MUILanguageList[lngIndex].OEMCPage;
|
||||
@ -102,7 +98,7 @@ MUIGetOEMCodePage(
|
||||
|
||||
GEOID
|
||||
MUIGetGeoID(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||
return MUILanguageList[lngIndex].GeoID;
|
||||
@ -110,7 +106,7 @@ MUIGetGeoID(
|
||||
|
||||
const MUI_LAYOUTS*
|
||||
MUIGetLayoutsList(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||
return MUILanguageList[lngIndex].MuiLayouts;
|
||||
@ -125,16 +121,14 @@ AddHotkeySettings(
|
||||
IN PCWSTR LayoutHotkey)
|
||||
{
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
UNICODE_STRING KeyName;
|
||||
UNICODE_STRING ValueName;
|
||||
UNICODE_STRING Name;
|
||||
HANDLE KeyHandle;
|
||||
ULONG Disposition;
|
||||
NTSTATUS Status;
|
||||
|
||||
RtlInitUnicodeString(&KeyName,
|
||||
L".DEFAULT\\Keyboard Layout\\Toggle");
|
||||
RtlInitUnicodeString(&Name, L".DEFAULT\\Keyboard Layout\\Toggle");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&KeyName,
|
||||
&Name,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
GetRootKeyByPredefKey(HKEY_USERS, NULL),
|
||||
NULL);
|
||||
@ -152,11 +146,9 @@ AddHotkeySettings(
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
RtlInitUnicodeString(&ValueName,
|
||||
L"Hotkey");
|
||||
|
||||
RtlInitUnicodeString(&Name, L"Hotkey");
|
||||
Status = NtSetValueKey(KeyHandle,
|
||||
&ValueName,
|
||||
&Name,
|
||||
0,
|
||||
REG_SZ,
|
||||
(PVOID)Hotkey,
|
||||
@ -168,11 +160,9 @@ AddHotkeySettings(
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
RtlInitUnicodeString(&ValueName,
|
||||
L"Language Hotkey");
|
||||
|
||||
RtlInitUnicodeString(&Name, L"Language Hotkey");
|
||||
Status = NtSetValueKey(KeyHandle,
|
||||
&ValueName,
|
||||
&Name,
|
||||
0,
|
||||
REG_SZ,
|
||||
(PVOID)LangHotkey,
|
||||
@ -184,11 +174,9 @@ AddHotkeySettings(
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
RtlInitUnicodeString(&ValueName,
|
||||
L"Layout Hotkey");
|
||||
|
||||
RtlInitUnicodeString(&Name, L"Layout Hotkey");
|
||||
Status = NtSetValueKey(KeyHandle,
|
||||
&ValueName,
|
||||
&Name,
|
||||
0,
|
||||
REG_SZ,
|
||||
(PVOID)LayoutHotkey,
|
||||
@ -289,7 +277,9 @@ AddKbLayoutsToRegistry(
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtCreateKey() failed (Status %lx)\n", Status);
|
||||
goto Quit;
|
||||
// goto Quit;
|
||||
NtClose(KeyHandle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
uCount = 0;
|
||||
@ -360,18 +350,15 @@ Quit:
|
||||
|
||||
BOOLEAN
|
||||
AddKeyboardLayouts(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
||||
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||
{
|
||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
||||
{
|
||||
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||
return AddKbLayoutsToRegistry(MUILanguageList[lngIndex].MuiLayouts);
|
||||
}
|
||||
|
||||
lngIndex++;
|
||||
++lngIndex;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@ -407,7 +394,7 @@ AddCodepageToRegistry(
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtOpenKey() failed (Status %lx)\n", Status);
|
||||
DPRINT1("NtOpenKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -424,7 +411,7 @@ AddCodepageToRegistry(
|
||||
(wcslen(Value)+1) * sizeof(WCHAR));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status);
|
||||
DPRINT1("NtSetValueKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
@ -441,7 +428,7 @@ AddCodepageToRegistry(
|
||||
(wcslen(Value)+1) * sizeof(WCHAR));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status);
|
||||
DPRINT1("NtSetValueKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
@ -458,7 +445,7 @@ AddCodepageToRegistry(
|
||||
(wcslen(Value)+1) * sizeof(WCHAR));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status);
|
||||
DPRINT1("NtSetValueKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
@ -508,7 +495,7 @@ AddFontsSettingsToRegistry(
|
||||
(wcslen(MuiSubFonts[uIndex].SubFontName)+1) * sizeof(WCHAR));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = %d)\n", Status, uIndex);
|
||||
DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = %u)\n", Status, uIndex);
|
||||
NtClose(KeyHandle);
|
||||
return FALSE;
|
||||
}
|
||||
@ -532,13 +519,13 @@ AddFontsSettingsToRegistry(
|
||||
|
||||
BOOLEAN
|
||||
AddCodePage(
|
||||
IN PCWSTR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
||||
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||
{
|
||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
||||
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||
{
|
||||
if (AddCodepageToRegistry(MUILanguageList[lngIndex].ACPage,
|
||||
MUILanguageList[lngIndex].OEMCPage,
|
||||
@ -553,7 +540,7 @@ AddCodePage(
|
||||
}
|
||||
}
|
||||
|
||||
lngIndex++;
|
||||
++lngIndex;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
@ -1,5 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* See the intl.inf file map:
|
||||
*
|
||||
* ; List of locales.
|
||||
* ; <LCID> = <Font>,<Font Substitute>
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
PCWSTR FontName;
|
||||
@ -7,6 +13,8 @@ typedef struct
|
||||
} MUI_SUBFONT;
|
||||
|
||||
typedef USHORT LANGID;
|
||||
// #define MAXUSHORT USHRT_MAX
|
||||
// typedef DWORD LCID;
|
||||
typedef ULONG KLID;
|
||||
|
||||
/*
|
||||
@ -29,7 +37,7 @@ typedef ULONG GEOID; // See winnls.h
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PCWSTR LanguageID;
|
||||
LCID LanguageID; // LocaleID;
|
||||
UINT ACPage;
|
||||
UINT OEMCPage;
|
||||
UINT MACCPage;
|
||||
@ -42,23 +50,23 @@ typedef struct
|
||||
|
||||
BOOLEAN
|
||||
IsLanguageAvailable(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
KLID
|
||||
MUIDefaultKeyboardLayout(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
UINT
|
||||
MUIGetOEMCodePage(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
GEOID
|
||||
MUIGetGeoID(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
const MUI_LAYOUTS*
|
||||
MUIGetLayoutsList(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
BOOLEAN
|
||||
AddKbLayoutsToRegistry(
|
||||
@ -66,8 +74,8 @@ AddKbLayoutsToRegistry(
|
||||
|
||||
BOOLEAN
|
||||
AddKeyboardLayouts(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
BOOLEAN
|
||||
AddCodePage(
|
||||
IN PCWSTR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
|
@ -411,432 +411,432 @@
|
||||
|
||||
const MUI_LANGUAGE MUILanguageList[] =
|
||||
{
|
||||
/* Lang ID, ANSI CP, OEM CP, MAC CP, Language Name, GeoID, Fonts, KB Layouts */
|
||||
/* LangID, ANSI CP, OEM CP, MAC CP, Language Name, GeoID, Fonts, KB Layouts */
|
||||
#ifdef LANGUAGE_AF_ZA
|
||||
{L"00000436", 1252, 850, 10000, L"Afrikaans", 209, LatinFonts, afZALayouts},
|
||||
{0x00000436, 1252, 850, 10000, L"Afrikaans", 209, LatinFonts, afZALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SQ_AL
|
||||
{L"0000041C", 1250, 852, 10029, L"Albanian (Albania)", 6, LatinFonts, sqALLayouts},
|
||||
{0x0000041C, 1250, 852, 10029, L"Albanian (Albania)", 6, LatinFonts, sqALLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_SA
|
||||
{L"00000401", 1256, 720, 10004, L"Arabic (Saudi Arabia)", 205, UnicodeFonts, arSALayouts},
|
||||
{0x00000401, 1256, 720, 10004, L"Arabic (Saudi Arabia)", 205, UnicodeFonts, arSALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_IQ
|
||||
{L"00000801", 1256, 720, 10004, L"Arabic (Iraq)", 121, UnicodeFonts, arIQLayouts},
|
||||
{0x00000801, 1256, 720, 10004, L"Arabic (Iraq)", 121, UnicodeFonts, arIQLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_EG
|
||||
{L"00000C01", 1256, 720, 10004, L"Arabic (Egypt)", 67, UnicodeFonts, arEGLayouts},
|
||||
{0x00000C01, 1256, 720, 10004, L"Arabic (Egypt)", 67, UnicodeFonts, arEGLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_LY
|
||||
{L"00001001", 1256, 720, 10004, L"Arabic (Libya)", 148, UnicodeFonts, arLYLayouts},
|
||||
{0x00001001, 1256, 720, 10004, L"Arabic (Libya)", 148, UnicodeFonts, arLYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_DZ
|
||||
{L"00001401", 1256, 720, 10004, L"Arabic (Algeria)", 4, UnicodeFonts, arDZLayouts},
|
||||
{0x00001401, 1256, 720, 10004, L"Arabic (Algeria)", 4, UnicodeFonts, arDZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_MA
|
||||
{L"00001801", 1256, 720, 10004, L"Arabic (Morocco)", 149, UnicodeFonts, arMALayouts},
|
||||
{0x00001801, 1256, 720, 10004, L"Arabic (Morocco)", 149, UnicodeFonts, arMALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_TN
|
||||
{L"00001C01", 1256, 720, 10004, L"Arabic (Tunisia)", 234, UnicodeFonts, arTNLayouts},
|
||||
{0x00001C01, 1256, 720, 10004, L"Arabic (Tunisia)", 234, UnicodeFonts, arTNLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_OM
|
||||
{L"00002001", 1256, 720, 10004, L"Arabic (Oman)", 164, UnicodeFonts, arOMLayouts},
|
||||
{0x00002001, 1256, 720, 10004, L"Arabic (Oman)", 164, UnicodeFonts, arOMLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_YE
|
||||
{L"00002401", 1256, 720, 10004, L"Arabic (Yemen)", 261, UnicodeFonts, arYELayouts},
|
||||
{0x00002401, 1256, 720, 10004, L"Arabic (Yemen)", 261, UnicodeFonts, arYELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_SY
|
||||
{L"00002801", 1256, 720, 10004, L"Arabic (Syria)", 222, UnicodeFonts, arSYLayouts},
|
||||
{0x00002801, 1256, 720, 10004, L"Arabic (Syria)", 222, UnicodeFonts, arSYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_JO
|
||||
{L"00002C01", 1256, 720, 10004, L"Arabic (Jordan)", 126, UnicodeFonts, arJOLayouts},
|
||||
{0x00002C01, 1256, 720, 10004, L"Arabic (Jordan)", 126, UnicodeFonts, arJOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_LB
|
||||
{L"00003001", 1256, 720, 10004, L"Arabic (Lebanon)", 139, UnicodeFonts, arLBLayouts},
|
||||
{0x00003001, 1256, 720, 10004, L"Arabic (Lebanon)", 139, UnicodeFonts, arLBLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_KW
|
||||
{L"00003401", 1256, 720, 10004, L"Arabic (Kuwait)", 136, UnicodeFonts, arKWLayouts},
|
||||
{0x00003401, 1256, 720, 10004, L"Arabic (Kuwait)", 136, UnicodeFonts, arKWLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_AE
|
||||
{L"00003801", 1256, 720, 10004, L"Arabic (U.A.E.)", 224, UnicodeFonts, arAELayouts},
|
||||
{0x00003801, 1256, 720, 10004, L"Arabic (U.A.E.)", 224, UnicodeFonts, arAELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_BH
|
||||
{L"00003C01", 1256, 720, 10004, L"Arabic (Bahrain)", 17, UnicodeFonts, arBHLayouts},
|
||||
{0x00003C01, 1256, 720, 10004, L"Arabic (Bahrain)", 17, UnicodeFonts, arBHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_QA
|
||||
{L"00004001", 1256, 720, 10004, L"Arabic (Qatar)", 197, UnicodeFonts, arQALayouts},
|
||||
{0x00004001, 1256, 720, 10004, L"Arabic (Qatar)", 197, UnicodeFonts, arQALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HY_AM
|
||||
{L"0000042B", 0, 1, 2, L"Armenian", 7, UnicodeFonts, hyAMLayouts},
|
||||
{0x0000042B, 0, 1, 2, L"Armenian", 7, UnicodeFonts, hyAMLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AZ_AZ
|
||||
{L"0000082C", 1251, 866, 10007, L"Azeri (Cyrillic)", 5, CyrillicFonts, azAZLayouts},
|
||||
{0x0000082C, 1251, 866, 10007, L"Azeri (Cyrillic)", 5, CyrillicFonts, azAZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AZ_AZ
|
||||
{L"0000042C", 1254, 857, 10081, L"Azeri (Latin)", 5, LatinFonts, azAZLayouts},
|
||||
{0x0000042C, 1254, 857, 10081, L"Azeri (Latin)", 5, LatinFonts, azAZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EU_ES
|
||||
{L"0000042D", 1252, 850, 10000, L"Basque", 217, LatinFonts, euESLayouts},
|
||||
{0x0000042D, 1252, 850, 10000, L"Basque", 217, LatinFonts, euESLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BE_BY
|
||||
{L"00000423", 1251, 866, 10007, L"Belarusian", 29, CyrillicFonts, beBYLayouts},
|
||||
{0x00000423, 1251, 866, 10007, L"Belarusian", 29, CyrillicFonts, beBYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BN_BD
|
||||
{L"00000845", 0, 1, 2, L"Bengali (Bangladesh)", 23, UnicodeFonts, bnBDLayouts},
|
||||
{0x00000845, 0, 1, 2, L"Bengali (Bangladesh)", 23, UnicodeFonts, bnBDLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BN_IN
|
||||
{L"00000445", 0, 1, 2, L"Bengali (India)", 113, UnicodeFonts, bnINLayouts},
|
||||
{0x00000445, 0, 1, 2, L"Bengali (India)", 113, UnicodeFonts, bnINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BG_BG
|
||||
{L"00000402", 1251, 866, 10007, L"Bulgarian", 35, CyrillicFonts, bgBGLayouts},
|
||||
{0x00000402, 1251, 866, 10007, L"Bulgarian", 35, CyrillicFonts, bgBGLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MY_MM
|
||||
{L"00000455", 0, 1, 2, L"Burmese", 1, UnicodeFonts, myMMLayouts},
|
||||
{0x00000455, 0, 1, 2, L"Burmese", 1, UnicodeFonts, myMMLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_CA_ES
|
||||
{L"00000403", 1252, 850, 10000, L"Catalan", 217, LatinFonts, caESLayouts},
|
||||
{0x00000403, 1252, 850, 10000, L"Catalan", 217, LatinFonts, caESLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_TW
|
||||
{L"00000404", 950, 950, 10008, L"Chinese (Taiwan)", 237, ChineseTraditionalFonts, zhTWLayouts},
|
||||
{0x00000404, 950, 950, 10008, L"Chinese (Taiwan)", 237, ChineseTraditionalFonts, zhTWLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_CN
|
||||
{L"00000804", 936, 936, 10008, L"Chinese (PRC)", 45, ChineseSimplifiedFonts, zhCNLayouts},
|
||||
{0x00000804, 936, 936, 10008, L"Chinese (PRC)", 45, ChineseSimplifiedFonts, zhCNLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_HK
|
||||
{L"00000C04", 950, 950, 10008, L"Chinese (Hong Kong S.A.R.)", 104, ChineseTraditionalFonts, zhHKLayouts},
|
||||
{0x00000C04, 950, 950, 10008, L"Chinese (Hong Kong S.A.R.)", 104, ChineseTraditionalFonts, zhHKLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_SG
|
||||
{L"00001004", 936, 936, 10008, L"Chinese (Singapore)", 215, ChineseSimplifiedFonts, zhSGLayouts},
|
||||
{0x00001004, 936, 936, 10008, L"Chinese (Singapore)", 215, ChineseSimplifiedFonts, zhSGLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_MO
|
||||
{L"00001404", 950, 950, 10002, L"Chinese (Macau S.A.R.)", 151, ChineseTraditionalFonts, zhMOLayouts},
|
||||
{0x00001404, 950, 950, 10002, L"Chinese (Macau S.A.R.)", 151, ChineseTraditionalFonts, zhMOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HR_HR
|
||||
{L"0000041A", 1250, 852, 10029, L"Croatian", 108, LatinFonts, hrHRLayouts},
|
||||
{0x0000041A, 1250, 852, 10029, L"Croatian", 108, LatinFonts, hrHRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_CS_CZ
|
||||
{L"00000405", 1250, 852, 10029, L"Czech", 75, LatinFonts, csCZLayouts},
|
||||
{0x00000405, 1250, 852, 10029, L"Czech", 75, LatinFonts, csCZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DA_DK
|
||||
{L"00000406", 1252, 850, 10000, L"Danish", 61, LatinFonts, daDKLayouts},
|
||||
{0x00000406, 1252, 850, 10000, L"Danish", 61, LatinFonts, daDKLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DV_MV
|
||||
{L"00000465", 0, 1, 2, L"Dhivehi (Maldives)", 165, UnicodeFonts, dvMVLayouts},
|
||||
{0x00000465, 0, 1, 2, L"Dhivehi (Maldives)", 165, UnicodeFonts, dvMVLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NL_NL
|
||||
{L"00000413", 1252, 850, 10000, L"Dutch (Netherlands)", 176, LatinFonts, nlNLLayouts},
|
||||
{0x00000413, 1252, 850, 10000, L"Dutch (Netherlands)", 176, LatinFonts, nlNLLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NL_BE
|
||||
{L"00000813", 1252, 850, 10000, L"Dutch (Belgium)", 21, LatinFonts, nlBELayouts},
|
||||
{0x00000813, 1252, 850, 10000, L"Dutch (Belgium)", 21, LatinFonts, nlBELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_US
|
||||
{L"00000409", 1252, 437, 10000, L"English (United States)", 244, LatinFonts, enUSLayouts},
|
||||
{0x00000409, 1252, 437, 10000, L"English (United States)", 244, LatinFonts, enUSLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_GB
|
||||
{L"00000809", 1252, 850, 10000, L"English (United Kingdom)", 242, LatinFonts, enGBLayouts},
|
||||
{0x00000809, 1252, 850, 10000, L"English (United Kingdom)", 242, LatinFonts, enGBLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_AU
|
||||
{L"00000C09", 1252, 850, 10000, L"English (Australia)", 12, LatinFonts, enAULayouts},
|
||||
{0x00000C09, 1252, 850, 10000, L"English (Australia)", 12, LatinFonts, enAULayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_CA
|
||||
{L"00001009", 1252, 850, 10000, L"English (Canada)", 39, LatinFonts, enCALayouts},
|
||||
{0x00001009, 1252, 850, 10000, L"English (Canada)", 39, LatinFonts, enCALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_NZ
|
||||
{L"00001409", 1252, 850, 10000, L"English (New Zealand)", 183, LatinFonts, enNZLayouts},
|
||||
{0x00001409, 1252, 850, 10000, L"English (New Zealand)", 183, LatinFonts, enNZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_IE
|
||||
{L"00001809", 1252, 850, 10000, L"English (Ireland)", 68, LatinFonts, enIELayouts},
|
||||
{0x00001809, 1252, 850, 10000, L"English (Ireland)", 68, LatinFonts, enIELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_ZA
|
||||
{L"00001C09", 1252, 437, 10000, L"English (South Africa)", 209, LatinFonts, enZALayouts},
|
||||
{0x00001C09, 1252, 437, 10000, L"English (South Africa)", 209, LatinFonts, enZALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_JM
|
||||
{L"00002009", 1252, 850, 10000, L"English (Jamaica)", 124, LatinFonts, enJMLayouts},
|
||||
{0x00002009, 1252, 850, 10000, L"English (Jamaica)", 124, LatinFonts, enJMLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_CB
|
||||
{L"00002409", 1252, 850, 10000, L"English (Caribbean)", 1, LatinFonts, enCBLayouts},
|
||||
{0x00002409, 1252, 850, 10000, L"English (Caribbean)", 1, LatinFonts, enCBLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_BZ
|
||||
{L"00002809", 1252, 850, 10000, L"English (Belize)", 24, LatinFonts, enBZLayouts},
|
||||
{0x00002809, 1252, 850, 10000, L"English (Belize)", 24, LatinFonts, enBZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_TT
|
||||
{L"00002C09", 1252, 850, 10000, L"English (Trinidad)", 225, LatinFonts, enTTLayouts},
|
||||
{0x00002C09, 1252, 850, 10000, L"English (Trinidad)", 225, LatinFonts, enTTLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_ZW
|
||||
{L"00003009", 1252, 437, 10000, L"English (Zimbabwe)", 264, LatinFonts, enZWLayouts},
|
||||
{0x00003009, 1252, 437, 10000, L"English (Zimbabwe)", 264, LatinFonts, enZWLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_PH
|
||||
{L"00003409", 1252, 437, 10000, L"English (Philippines)", 201, LatinFonts, enPHLayouts},
|
||||
{0x00003409, 1252, 437, 10000, L"English (Philippines)", 201, LatinFonts, enPHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EO_AA
|
||||
{L"0000048F", 1252, 437, 10000, L"Esperanto", 1, LatinFonts, eoAALayouts},
|
||||
{0x0000048F, 1252, 437, 10000, L"Esperanto", 1, LatinFonts, eoAALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ET_EE
|
||||
{L"00000425", 1252, 775, 10029, L"Estonian", 70, LatinFonts, etEELayouts},
|
||||
{0x00000425, 1252, 775, 10029, L"Estonian", 70, LatinFonts, etEELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FO_FO
|
||||
{L"00000438", 1252, 850, 10079, L"Faeroese", 81, LatinFonts, foFOLayouts},
|
||||
{0x00000438, 1252, 850, 10079, L"Faeroese", 81, LatinFonts, foFOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FA_IR
|
||||
{L"00000429", 1256, 720, 10004, L"Farsi", 116, UnicodeFonts, faIRLayouts},
|
||||
{0x00000429, 1256, 720, 10004, L"Farsi", 116, UnicodeFonts, faIRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FI_FI
|
||||
{L"0000040B", 1252, 850, 10000, L"Finnish", 77, LatinFonts, fiFILayouts},
|
||||
{0x0000040B, 1252, 850, 10000, L"Finnish", 77, LatinFonts, fiFILayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_CA
|
||||
{L"00000C0C", 1252, 850, 10000, L"French (Canada)", 39, LatinFonts, frCALayouts},
|
||||
{0x00000C0C, 1252, 850, 10000, L"French (Canada)", 39, LatinFonts, frCALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_FR
|
||||
{L"0000040C", 1252, 850, 10000, L"French (France)", 84, LatinFonts, frFRLayouts},
|
||||
{0x0000040C, 1252, 850, 10000, L"French (France)", 84, LatinFonts, frFRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_BE
|
||||
{L"0000080C", 1252, 850, 10000, L"French (Belgium)", 21, LatinFonts, frBELayouts},
|
||||
{0x0000080C, 1252, 850, 10000, L"French (Belgium)", 21, LatinFonts, frBELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_CH
|
||||
{L"0000100C", 1252, 850, 10000, L"French (Switzerland)", 223, LatinFonts, frCHLayouts},
|
||||
{0x0000100C, 1252, 850, 10000, L"French (Switzerland)", 223, LatinFonts, frCHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_LU
|
||||
{L"0000140C", 1252, 850, 10000, L"French (Luxembourg)", 147, LatinFonts, frLULayouts},
|
||||
{0x0000140C, 1252, 850, 10000, L"French (Luxembourg)", 147, LatinFonts, frLULayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_MC
|
||||
{L"0000180C", 1252, 850, 10000, L"French (Monaco)", 158, LatinFonts, frMCLayouts},
|
||||
{0x0000180C, 1252, 850, 10000, L"French (Monaco)", 158, LatinFonts, frMCLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_GL_ES
|
||||
{L"00000456", 1252, 850, 10000, L"Galician (Spain)", 217, LatinFonts, glESLayouts},
|
||||
{0x00000456, 1252, 850, 10000, L"Galician (Spain)", 217, LatinFonts, glESLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KA_GE
|
||||
{L"00000437", 0, 1, 2, L"Georgian", 88, UnicodeFonts, kaGELayouts},
|
||||
{0x00000437, 0, 1, 2, L"Georgian", 88, UnicodeFonts, kaGELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_DE
|
||||
{L"00000407", 1252, 850, 10000, L"German (Germany)", 94, LatinFonts, deDELayouts},
|
||||
{0x00000407, 1252, 850, 10000, L"German (Germany)", 94, LatinFonts, deDELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_CH
|
||||
{L"00000807", 1252, 850, 10000, L"German (Switzerland)", 223, LatinFonts, deCHLayouts},
|
||||
{0x00000807, 1252, 850, 10000, L"German (Switzerland)", 223, LatinFonts, deCHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_AT
|
||||
{L"00000C07", 1252, 850, 10000, L"German (Austria)", 14, LatinFonts, deATLayouts},
|
||||
{0x00000C07, 1252, 850, 10000, L"German (Austria)", 14, LatinFonts, deATLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_LU
|
||||
{L"00001007", 1252, 850, 10000, L"German (Luxembourg)", 147, LatinFonts, deLULayouts},
|
||||
{0x00001007, 1252, 850, 10000, L"German (Luxembourg)", 147, LatinFonts, deLULayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_LI
|
||||
{L"00001407", 1252, 850, 10000, L"German (Liechtenstein)", 145, LatinFonts, deLILayouts},
|
||||
{0x00001407, 1252, 850, 10000, L"German (Liechtenstein)", 145, LatinFonts, deLILayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EL_GR
|
||||
{L"00000408", 1253, 737, 10006, L"Greek", 98, GreekFonts, elGRLayouts},
|
||||
{0x00000408, 1253, 737, 10006, L"Greek", 98, GreekFonts, elGRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_GU_IN
|
||||
{L"00000447", 0, 1, 2, L"Gujarati (India)", 113, UnicodeFonts, guINLayouts},
|
||||
{0x00000447, 0, 1, 2, L"Gujarati (India)", 113, UnicodeFonts, guINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HE_IL
|
||||
{L"0000040D", 1255, 862, 10005, L"Hebrew", 117, HebrewFonts, heILLayouts},
|
||||
{0x0000040D, 1255, 862, 10005, L"Hebrew", 117, HebrewFonts, heILLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HI_IN
|
||||
{L"00000439", 1252, 437, 10000, L"Hindi", 113, HindiFonts, hiINLayouts },
|
||||
{0x00000439, 1252, 437, 10000, L"Hindi", 113, HindiFonts, hiINLayouts },
|
||||
#endif
|
||||
#ifdef LANGUAGE_HU_HU
|
||||
{L"0000040E", 1250, 852, 10029, L"Hungarian", 109, LatinFonts, huHULayouts},
|
||||
{0x0000040E, 1250, 852, 10029, L"Hungarian", 109, LatinFonts, huHULayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_IS_IS
|
||||
{L"0000040F", 1252, 850, 10079, L"Icelandic", 110, LatinFonts, isISLayouts},
|
||||
{0x0000040F, 1252, 850, 10079, L"Icelandic", 110, LatinFonts, isISLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ID_ID
|
||||
{L"00000421", 1252, 850, 10079, L"Indonesian", 111, LatinFonts, idIDLayouts},
|
||||
{0x00000421, 1252, 850, 10079, L"Indonesian", 111, LatinFonts, idIDLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
{L"00000410", 1252, 850, 10000, L"Italian (Italy)", 118, LatinFonts, itITLayouts},
|
||||
{0x00000410, 1252, 850, 10000, L"Italian (Italy)", 118, LatinFonts, itITLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_IT_CH
|
||||
{L"00000810", 1252, 850, 10000, L"Italian (Switzerland)", 223, LatinFonts, itCHLayouts},
|
||||
{0x00000810, 1252, 850, 10000, L"Italian (Switzerland)", 223, LatinFonts, itCHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_JA_JP
|
||||
{L"00000411", 932, 932, 10001, L"Japanese", 122, JapaneseFonts, jaJPLayouts},
|
||||
{0x00000411, 932, 932, 10001, L"Japanese", 122, JapaneseFonts, jaJPLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KN_IN
|
||||
{L"0000044B", 1252, 437, 10079, L"Kannada (India)", 113, LatinFonts, knINLayouts},
|
||||
{0x0000044B, 1252, 437, 10079, L"Kannada (India)", 113, LatinFonts, knINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KK_KZ
|
||||
{L"0000043F", 1251, 866, 10007, L"Kazakh", 137, CyrillicFonts, kkKZLayouts},
|
||||
{0x0000043F, 1251, 866, 10007, L"Kazakh", 137, CyrillicFonts, kkKZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KOK_IN
|
||||
{L"00000457", 0, 437, 2, L"Konkani", 113, UnicodeFonts, kokINLayouts},
|
||||
{0x00000457, 0, 437, 2, L"Konkani", 113, UnicodeFonts, kokINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KO_KR
|
||||
{L"00000412", 949, 949, 10003, L"Korean", 134, KoreanFonts, koKRLayouts},
|
||||
{0x00000412, 949, 949, 10003, L"Korean", 134, KoreanFonts, koKRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KY_KG
|
||||
{L"00000440", 1251, 866, 10007, L"Kyrgyz (Kyrgyzstan)", 130, CyrillicFonts, kyKGLayouts},
|
||||
{0x00000440, 1251, 866, 10007, L"Kyrgyz (Kyrgyzstan)", 130, CyrillicFonts, kyKGLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_LV_LV
|
||||
{L"00000426", 1257, 775, 10029, L"Latvian", 140, LatinFonts, lvLVLayouts},
|
||||
{0x00000426, 1257, 775, 10029, L"Latvian", 140, LatinFonts, lvLVLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_LT_LT
|
||||
{L"00000427", 1257, 775, 10029, L"Lithuanian", 141, LatinFonts, ltLTLayouts},
|
||||
{0x00000427, 1257, 775, 10029, L"Lithuanian", 141, LatinFonts, ltLTLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MK_MK
|
||||
{L"0000042F", 1251, 866, 10007, L"FYRO Macedonian", 19618, CyrillicFonts, mkMKLayouts},
|
||||
{0x0000042F, 1251, 866, 10007, L"FYRO Macedonian", 19618, CyrillicFonts, mkMKLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MS_BN
|
||||
{L"0000083E", 1252, 850, 10000, L"Malay (Brunei Darussalam)", 37, LatinFonts, msBNLayouts},
|
||||
{0x0000083E, 1252, 850, 10000, L"Malay (Brunei Darussalam)", 37, LatinFonts, msBNLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MS_MY
|
||||
{L"0000043E", 1252, 850, 10000, L"Malay (Malaysia)", 167, LatinFonts, msMYLayouts},
|
||||
{0x0000043E, 1252, 850, 10000, L"Malay (Malaysia)", 167, LatinFonts, msMYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MR_IN
|
||||
{L"0000044E", 0, 1, 2, L"Marathi", 113, UnicodeFonts, mrINLayouts},
|
||||
{0x0000044E, 0, 1, 2, L"Marathi", 113, UnicodeFonts, mrINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MN_MN
|
||||
{L"00000450", 1251, 866, 10007, L"Mongolian (Mongolia)", 154, CyrillicFonts, mnMNLayouts},
|
||||
{0x00000450, 1251, 866, 10007, L"Mongolian (Mongolia)", 154, CyrillicFonts, mnMNLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NB_NO
|
||||
{L"00000414", 1252, 850, 10000, L"Norwegian (Bokmal)", 177, LatinFonts, nbNOLayouts},
|
||||
{0x00000414, 1252, 850, 10000, L"Norwegian (Bokmal)", 177, LatinFonts, nbNOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NN_NO
|
||||
{L"00000814", 1252, 850, 10000, L"Norwegian (Nynorsk)", 177, LatinFonts, nnNOLayouts},
|
||||
{0x00000814, 1252, 850, 10000, L"Norwegian (Nynorsk)", 177, LatinFonts, nnNOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PL_PL
|
||||
{L"00000415", 1250, 852, 10029, L"Polish", 191, LatinFonts, plPLLayouts},
|
||||
{0x00000415, 1250, 852, 10029, L"Polish", 191, LatinFonts, plPLLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PT_PT
|
||||
{L"00000816", 1252, 850, 10000, L"Portuguese (Portugal)", 193, LatinFonts, ptPTLayouts},
|
||||
{0x00000816, 1252, 850, 10000, L"Portuguese (Portugal)", 193, LatinFonts, ptPTLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PT_BR
|
||||
{L"00000416", 1252, 850, 10000, L"Portuguese (Brazil)", 32, LatinFonts, ptBRLayouts},
|
||||
{0x00000416, 1252, 850, 10000, L"Portuguese (Brazil)", 32, LatinFonts, ptBRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PA_IN
|
||||
{L"00000446", 0, 1, 2, L"Punjabi (India)", 113, UnicodeFonts, paINLayouts},
|
||||
{0x00000446, 0, 1, 2, L"Punjabi (India)", 113, UnicodeFonts, paINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_RO_RO
|
||||
{L"00000418", 28606, 28606, 10029, L"Romanian", 200, LatinFonts, roROLayouts},
|
||||
{0x00000418, 28606, 28606, 10029, L"Romanian", 200, LatinFonts, roROLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_RM_CH
|
||||
{L"00000417", 1252, 850, 10000, L"Romansh", 223, LatinFonts, rmCHLayouts},
|
||||
{0x00000417, 1252, 850, 10000, L"Romansh", 223, LatinFonts, rmCHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_RU_RU
|
||||
{L"00000419", 1251, 866, 10007, L"Russian", 203, CyrillicFonts, ruRULayouts},
|
||||
{0x00000419, 1251, 866, 10007, L"Russian", 203, CyrillicFonts, ruRULayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SA_IN
|
||||
{L"0000044F", 0, 1, 2, L"Sanskrit", 113, UnicodeFonts, saINLayouts},
|
||||
{0x0000044F, 0, 1, 2, L"Sanskrit", 113, UnicodeFonts, saINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SR_SP
|
||||
{L"00000C1A", 1251, 855, 10007, L"Serbian (Cyrillic)", 271, CyrillicFonts, srSPLayouts},
|
||||
{0x00000C1A, 1251, 855, 10007, L"Serbian (Cyrillic)", 271, CyrillicFonts, srSPLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SR_SP
|
||||
{L"0000081A", 1250, 852, 10029, L"Serbian (Latin)", 271, LatinFonts, srSPLayouts},
|
||||
{0x0000081A, 1250, 852, 10029, L"Serbian (Latin)", 271, LatinFonts, srSPLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SK_SK
|
||||
{L"0000041B", 1250, 852, 10029, L"Slovak", 143, LatinFonts, skSKLayouts},
|
||||
{0x0000041B, 1250, 852, 10029, L"Slovak", 143, LatinFonts, skSKLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SL_SI
|
||||
{L"00000424", 1250, 852, 10029, L"Slovenian", 212, LatinFonts, slSILayouts},
|
||||
{0x00000424, 1250, 852, 10029, L"Slovenian", 212, LatinFonts, slSILayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_ES
|
||||
{L"0000040A", 1252, 850, 10000, L"Spanish (Traditional Sort)", 217, LatinFonts, esESLayouts},
|
||||
{0x0000040A, 1252, 850, 10000, L"Spanish (Traditional Sort)", 217, LatinFonts, esESLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_MX
|
||||
{L"0000080A", 1252, 850, 10000, L"Spanish (Mexico)", 166, LatinFonts, esMXLayouts},
|
||||
{0x0000080A, 1252, 850, 10000, L"Spanish (Mexico)", 166, LatinFonts, esMXLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_ES
|
||||
{L"00000C0A", 1252, 850, 10000, L"Spanish (International Sort)", 217, LatinFonts, esESLayouts},
|
||||
{0x00000C0A, 1252, 850, 10000, L"Spanish (International Sort)", 217, LatinFonts, esESLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_GT
|
||||
{L"0000100A", 1252, 850, 10000, L"Spanish (Guatemala)", 99, LatinFonts, esGTLayouts},
|
||||
{0x0000100A, 1252, 850, 10000, L"Spanish (Guatemala)", 99, LatinFonts, esGTLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_CR
|
||||
{L"0000140A", 1252, 850, 10000, L"Spanish (Costa Rica)", 54, LatinFonts, esCRLayouts},
|
||||
{0x0000140A, 1252, 850, 10000, L"Spanish (Costa Rica)", 54, LatinFonts, esCRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PA
|
||||
{L"0000180A", 1252, 850, 10000, L"Spanish (Panama)", 192, LatinFonts, esPALayouts},
|
||||
{0x0000180A, 1252, 850, 10000, L"Spanish (Panama)", 192, LatinFonts, esPALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_DO
|
||||
{L"00001C0A", 1252, 850, 10000, L"Spanish (Dominican Republic)", 65, LatinFonts, esDOLayouts},
|
||||
{0x00001C0A, 1252, 850, 10000, L"Spanish (Dominican Republic)", 65, LatinFonts, esDOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_VE
|
||||
{L"0000200A", 1252, 850, 10000, L"Spanish (Venezuela)", 249, LatinFonts, esVELayouts},
|
||||
{0x0000200A, 1252, 850, 10000, L"Spanish (Venezuela)", 249, LatinFonts, esVELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_CO
|
||||
{L"0000240A", 1252, 850, 10000, L"Spanish (Colombia)", 51, LatinFonts, esCOLayouts},
|
||||
{0x0000240A, 1252, 850, 10000, L"Spanish (Colombia)", 51, LatinFonts, esCOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PE
|
||||
{L"0000280A", 1252, 850, 10000, L"Spanish (Peru)", 187, LatinFonts, esPELayouts},
|
||||
{0x0000280A, 1252, 850, 10000, L"Spanish (Peru)", 187, LatinFonts, esPELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_AR
|
||||
{L"00002C0A", 1252, 850, 10000, L"Spanish (Argentina)", 11, LatinFonts, esARLayouts},
|
||||
{0x00002C0A, 1252, 850, 10000, L"Spanish (Argentina)", 11, LatinFonts, esARLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_EC
|
||||
{L"0000300A", 1252, 850, 10000, L"Spanish (Ecuador)", 66, LatinFonts, esECLayouts},
|
||||
{0x0000300A, 1252, 850, 10000, L"Spanish (Ecuador)", 66, LatinFonts, esECLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_CL
|
||||
{L"0000340A", 1252, 850, 10000, L"Spanish (Chile)", 46, LatinFonts, esCLLayouts},
|
||||
{0x0000340A, 1252, 850, 10000, L"Spanish (Chile)", 46, LatinFonts, esCLLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_UY
|
||||
{L"0000380A", 1252, 850, 10000, L"Spanish (Uruguay)", 246, LatinFonts, esUYLayouts},
|
||||
{0x0000380A, 1252, 850, 10000, L"Spanish (Uruguay)", 246, LatinFonts, esUYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PY
|
||||
{L"00003C0A", 1252, 850, 10000, L"Spanish (Paraguay)", 185, LatinFonts, esPYLayouts},
|
||||
{0x00003C0A, 1252, 850, 10000, L"Spanish (Paraguay)", 185, LatinFonts, esPYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_BO
|
||||
{L"0000400A", 1252, 850, 10000, L"Spanish (Bolivia)", 26, LatinFonts, esBOLayouts},
|
||||
{0x0000400A, 1252, 850, 10000, L"Spanish (Bolivia)", 26, LatinFonts, esBOLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_SV
|
||||
{L"0000440A", 1252, 850, 10000, L"Spanish (El Salvador)", 72, LatinFonts, esSVLayouts},
|
||||
{0x0000440A, 1252, 850, 10000, L"Spanish (El Salvador)", 72, LatinFonts, esSVLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_HN
|
||||
{L"0000480A", 1252, 850, 10000, L"Spanish (Honduras)", 106, LatinFonts, esHNLayouts},
|
||||
{0x0000480A, 1252, 850, 10000, L"Spanish (Honduras)", 106, LatinFonts, esHNLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_NI
|
||||
{L"00004C0A", 1252, 850, 10000, L"Spanish (Nicaragua)", 182, LatinFonts, esNILayouts},
|
||||
{0x00004C0A, 1252, 850, 10000, L"Spanish (Nicaragua)", 182, LatinFonts, esNILayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PR
|
||||
{L"0000500A", 1252, 850, 10000, L"Spanish (Puerto Rico)", 202, LatinFonts, esPRLayouts},
|
||||
{0x0000500A, 1252, 850, 10000, L"Spanish (Puerto Rico)", 202, LatinFonts, esPRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SW_KE
|
||||
{L"00000441", 1252, 437, 10000, L"Swahili", 129, LatinFonts, swKELayouts},
|
||||
{0x00000441, 1252, 437, 10000, L"Swahili", 129, LatinFonts, swKELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SV_SE
|
||||
{L"0000041D", 1252, 850, 10000, L"Swedish", 221, LatinFonts, svSELayouts},
|
||||
{0x0000041D, 1252, 850, 10000, L"Swedish", 221, LatinFonts, svSELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SV_FI
|
||||
{L"0000081D", 1252, 850, 10000, L"Swedish (Finland)", 77, LatinFonts, svFILayouts},
|
||||
{0x0000081D, 1252, 850, 10000, L"Swedish (Finland)", 77, LatinFonts, svFILayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SYR_SY
|
||||
{L"0000045A", 0, 1, 2, L"Syriac (Syria)", 222, UnicodeFonts, syrSYLayouts},
|
||||
{0x0000045A, 0, 1, 2, L"Syriac (Syria)", 222, UnicodeFonts, syrSYLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TA_IN
|
||||
{L"00000449", 0, 1, 2, L"Tamil", 113, UnicodeFonts, taINLayouts},
|
||||
{0x00000449, 0, 1, 2, L"Tamil", 113, UnicodeFonts, taINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TT_TA
|
||||
{L"00000444", 1251, 866, 10007, L"Tatar", 1, CyrillicFonts, ttTALayouts},
|
||||
{0x00000444, 1251, 866, 10007, L"Tatar", 1, CyrillicFonts, ttTALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TE_IN
|
||||
{L"0000044A", 0, 1, 2, L"Telugu (India)", 113, UnicodeFonts, teINLayouts},
|
||||
{0x0000044A, 0, 1, 2, L"Telugu (India)", 113, UnicodeFonts, teINLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TH_TH
|
||||
{L"0000041E", 874, 874, 10021, L"Thai", 227, UnicodeFonts, thTHLayouts},
|
||||
{0x0000041E, 874, 874, 10021, L"Thai", 227, UnicodeFonts, thTHLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TR_TR
|
||||
{L"0000041F", 1254, 857, 10081, L"Turkish", 235, LatinFonts, trTRLayouts},
|
||||
{0x0000041F, 1254, 857, 10081, L"Turkish", 235, LatinFonts, trTRLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UK_UA
|
||||
{L"00000422", 1251, 866, 10017, L"Ukrainian", 241, CyrillicFonts, ukUALayouts},
|
||||
{0x00000422, 1251, 866, 10017, L"Ukrainian", 241, CyrillicFonts, ukUALayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UR_PK
|
||||
{L"00000420", 1256, 720, 10004, L"Urdu", 190, UnicodeFonts, urPKLayouts},
|
||||
{0x00000420, 1256, 720, 10004, L"Urdu", 190, UnicodeFonts, urPKLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UZ_UZ
|
||||
{L"00000443", 1254, 857, 10029, L"Uzbek (Latin)", 247, LatinFonts, uzUZLayouts},
|
||||
{0x00000443, 1254, 857, 10029, L"Uzbek (Latin)", 247, LatinFonts, uzUZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UZ_UZ
|
||||
{L"00000843", 1251, 866, 10007, L"Uzbek (Cyrillic)", 247, CyrillicFonts, uzUZLayouts},
|
||||
{0x00000843, 1251, 866, 10007, L"Uzbek (Cyrillic)", 247, CyrillicFonts, uzUZLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_VI_VN
|
||||
{L"0000042A", 1258, 1258, 10000, L"Vietnamese", 251, UnicodeFonts, viVNLayouts},
|
||||
{0x0000042A, 1258, 1258, 10000, L"Vietnamese", 251, UnicodeFonts, viVNLayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_WA_BE
|
||||
{L"00000490", 1252, 850, 10000, L"Walon", 21, LatinFonts, waBELayouts},
|
||||
{0x00000490, 1252, 850, 10000, L"Walon", 21, LatinFonts, waBELayouts},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZU_ZU
|
||||
{L"00000435", 1252, 850, 10000, L"Zulu", 1, LatinFonts, zuZULayouts},
|
||||
{0x00000435, 1252, 850, 10000, L"Zulu", 1, LatinFonts, zuZULayouts},
|
||||
#endif
|
||||
{NULL, 0, 0, 0, NULL, 0, NULL, NULL}
|
||||
{0, 0, 0, 0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -26,20 +26,105 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Settings entries with simple 1:1 mapping */
|
||||
/* Setting entries with simple 1:1 mapping */
|
||||
typedef struct _GENENTRY
|
||||
{
|
||||
PCWSTR Id;
|
||||
union
|
||||
{
|
||||
PCWSTR Str;
|
||||
ULONG_PTR Ul;
|
||||
} Id;
|
||||
PCWSTR Value;
|
||||
} GENENTRY, *PGENENTRY;
|
||||
|
||||
#if 1
|
||||
PGENERIC_LIST
|
||||
CreateComputerTypeList(
|
||||
IN HINF InfFile);
|
||||
_In_ HINF InfFile);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateDisplayDriverList(
|
||||
IN HINF InfFile);
|
||||
_In_ HINF InfFile);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateKeyboardDriverList(
|
||||
_In_ HINF InfFile);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateLanguageList(
|
||||
_In_ HINF InfFile,
|
||||
_Inout_ LANGID* DefaultLanguage);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateKeyboardLayoutList(
|
||||
_In_ HINF InfFile,
|
||||
_In_ LANGID LanguageId,
|
||||
_Out_ KLID* DefaultKBLayout);
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* Callback type for enumerating "Name=Value" entries from INF section.
|
||||
*
|
||||
* @param[in] KeyName
|
||||
* The name of the key.
|
||||
*
|
||||
* @param[in] KeyValue
|
||||
* The optional value of the key.
|
||||
*
|
||||
* @param[in] Parameter
|
||||
* Optional parameter context for the callback.
|
||||
*
|
||||
* @return
|
||||
* 0x00: Failure, stop the enumeration;
|
||||
* 0x01: Add the entry and continue the enumeration;
|
||||
* 0x02: Skip the entry but continue the enumeration.
|
||||
**/
|
||||
typedef UCHAR
|
||||
(NTAPI *PENUM_ENTRY_PROC)(
|
||||
_In_ PCWSTR KeyName,
|
||||
_In_opt_ PCWSTR KeyValue,
|
||||
/**/_In_ ULONG_PTR DefaultEntry,/**/ // PCWSTR DefaultKeyName
|
||||
_In_opt_ PVOID Parameter);
|
||||
|
||||
BOOLEAN
|
||||
EnumComputerTypeEntries(
|
||||
_In_ HINF InfFile,
|
||||
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||
_In_opt_ PVOID Parameter);
|
||||
|
||||
BOOLEAN
|
||||
EnumDisplayDriverEntries(
|
||||
_In_ HINF InfFile,
|
||||
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||
_In_opt_ PVOID Parameter);
|
||||
|
||||
BOOLEAN
|
||||
EnumKeyboardDriverEntries(
|
||||
_In_ HINF InfFile,
|
||||
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||
_In_opt_ PVOID Parameter);
|
||||
|
||||
BOOLEAN
|
||||
EnumLanguageEntries(
|
||||
_In_ HINF InfFile,
|
||||
_Out_ LANGID* DefaultLanguage,
|
||||
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||
_In_opt_ PVOID Parameter);
|
||||
|
||||
BOOLEAN
|
||||
EnumKeyboardLayoutEntries(
|
||||
_In_ HINF InfFile,
|
||||
_In_ LANGID LanguageId,
|
||||
_Out_ KLID* DefaultKBLayout,
|
||||
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||
_In_opt_ PVOID Parameter);
|
||||
|
||||
|
||||
ULONG
|
||||
GetDefaultLanguageIndex(VOID);
|
||||
|
||||
|
||||
BOOLEAN
|
||||
ProcessComputerFiles(
|
||||
@ -52,28 +137,10 @@ ProcessDisplayRegistry(
|
||||
_In_ HINF InfFile,
|
||||
_In_ PCWSTR DisplayType);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateKeyboardDriverList(
|
||||
IN HINF InfFile);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateKeyboardLayoutList(
|
||||
IN HINF InfFile,
|
||||
IN PCWSTR LanguageId,
|
||||
OUT PWSTR DefaultKBLayout);
|
||||
|
||||
PGENERIC_LIST
|
||||
CreateLanguageList(
|
||||
IN HINF InfFile,
|
||||
OUT PWSTR DefaultLanguage);
|
||||
|
||||
ULONG
|
||||
GetDefaultLanguageIndex(VOID);
|
||||
|
||||
BOOLEAN
|
||||
ProcessKeyboardLayoutRegistry(
|
||||
_In_ PCWSTR pszLayoutId,
|
||||
_In_ PCWSTR LanguageId);
|
||||
_In_ KLID LayoutId,
|
||||
_In_ LANGID LanguageId);
|
||||
|
||||
#if 0
|
||||
BOOLEAN
|
||||
@ -83,7 +150,7 @@ ProcessKeyboardLayoutFiles(
|
||||
|
||||
BOOLEAN
|
||||
ProcessLocaleRegistry(
|
||||
_In_ PCWSTR LanguageId);
|
||||
_In_ LCID LocaleId);
|
||||
|
||||
BOOLEAN
|
||||
SetGeoID(
|
||||
|
@ -50,7 +50,7 @@ CheckUnattendedSetup(
|
||||
UnattendInf = SpInfOpenInfFile(UnattendInfPath,
|
||||
NULL,
|
||||
INF_STYLE_OLDNT,
|
||||
pSetupData->LanguageId,
|
||||
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||
&ErrorLine);
|
||||
if (UnattendInf == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
@ -179,10 +179,7 @@ CheckUnattendedSetup(
|
||||
{
|
||||
if (INF_GetData(&Context, NULL, &Value))
|
||||
{
|
||||
LONG Id = wcstol(Value, NULL, 16);
|
||||
RtlStringCchPrintfW(pSetupData->LocaleID,
|
||||
ARRAYSIZE(pSetupData->LocaleID),
|
||||
L"%08lx", Id);
|
||||
pSetupData->LocaleID = (LCID)wcstoul(Value, NULL, 16);
|
||||
INF_FreeData(Value);
|
||||
}
|
||||
}
|
||||
@ -572,7 +569,7 @@ LoadSetupInf(
|
||||
SpInfOpenInfFile(FileNameBuffer,
|
||||
NULL,
|
||||
INF_STYLE_WIN4,
|
||||
pSetupData->LanguageId,
|
||||
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||
&ErrorLine);
|
||||
if (pSetupData->SetupInf == INVALID_HANDLE_VALUE)
|
||||
return ERROR_LOAD_TXTSETUPSIF;
|
||||
@ -1096,41 +1093,6 @@ VOID
|
||||
FinishSetup(
|
||||
IN OUT PUSETUP_DATA pSetupData)
|
||||
{
|
||||
/* Destroy the computer settings list */
|
||||
if (pSetupData->ComputerList != NULL)
|
||||
{
|
||||
DestroyGenericList(pSetupData->ComputerList, TRUE);
|
||||
pSetupData->ComputerList = NULL;
|
||||
}
|
||||
|
||||
/* Destroy the display settings list */
|
||||
if (pSetupData->DisplayList != NULL)
|
||||
{
|
||||
DestroyGenericList(pSetupData->DisplayList, TRUE);
|
||||
pSetupData->DisplayList = NULL;
|
||||
}
|
||||
|
||||
/* Destroy the keyboard settings list */
|
||||
if (pSetupData->KeyboardList != NULL)
|
||||
{
|
||||
DestroyGenericList(pSetupData->KeyboardList, TRUE);
|
||||
pSetupData->KeyboardList = NULL;
|
||||
}
|
||||
|
||||
/* Destroy the keyboard layout list */
|
||||
if (pSetupData->LayoutList != NULL)
|
||||
{
|
||||
DestroyGenericList(pSetupData->LayoutList, TRUE);
|
||||
pSetupData->LayoutList = NULL;
|
||||
}
|
||||
|
||||
/* Destroy the languages list */
|
||||
if (pSetupData->LanguageList != NULL)
|
||||
{
|
||||
DestroyGenericList(pSetupData->LanguageList, FALSE);
|
||||
pSetupData->LanguageList = NULL;
|
||||
}
|
||||
|
||||
/* Close the Setup INF */
|
||||
SpInfCloseInfFile(pSetupData->SetupInf);
|
||||
}
|
||||
@ -1148,7 +1110,6 @@ UpdateRegistry(
|
||||
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
||||
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
||||
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
||||
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
|
||||
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL,
|
||||
IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL)
|
||||
{
|
||||
@ -1161,6 +1122,11 @@ UpdateRegistry(
|
||||
BOOLEAN Success;
|
||||
BOOLEAN ShouldRepairRegistry = FALSE;
|
||||
BOOLEAN Delete;
|
||||
LANGID SelectedLanguageId = LANGIDFROMLCID(pSetupData->LocaleID);
|
||||
|
||||
__debugbreak();
|
||||
|
||||
__debugbreak();
|
||||
|
||||
if (RepairUpdateFlag)
|
||||
{
|
||||
@ -1274,7 +1240,7 @@ DoUpdate:
|
||||
|
||||
if (!ImportRegistryFile(pSetupData->SourcePath.Buffer,
|
||||
File, Section,
|
||||
pSetupData->LanguageId, Delete))
|
||||
LANGIDFROMLCID(pSetupData->LocaleID), Delete))
|
||||
{
|
||||
DPRINT1("Importing %S failed\n", File);
|
||||
INF_FreeData(File);
|
||||
@ -1288,14 +1254,6 @@ DoUpdate:
|
||||
{
|
||||
/* See the explanation for this test above */
|
||||
|
||||
PGENERIC_LIST_ENTRY Entry;
|
||||
PCWSTR LanguageId; // LocaleID;
|
||||
|
||||
Entry = GetCurrentListEntry(pSetupData->DisplayList);
|
||||
ASSERT(Entry);
|
||||
pSetupData->DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
||||
ASSERT(pSetupData->DisplayType);
|
||||
|
||||
/* Update display registry settings */
|
||||
if (StatusRoutine) StatusRoutine(DisplaySettingsUpdate);
|
||||
if (!ProcessDisplayRegistry(pSetupData->SetupInf, pSetupData->DisplayType))
|
||||
@ -1304,14 +1262,9 @@ DoUpdate:
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
Entry = GetCurrentListEntry(pSetupData->LanguageList);
|
||||
ASSERT(Entry);
|
||||
LanguageId = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
||||
ASSERT(LanguageId);
|
||||
|
||||
/* Set the locale */
|
||||
if (StatusRoutine) StatusRoutine(LocaleSettingsUpdate);
|
||||
if (!ProcessLocaleRegistry(/*pSetupData->*/LanguageId))
|
||||
if (!ProcessLocaleRegistry(pSetupData->LocaleID))
|
||||
{
|
||||
ErrorNumber = ERROR_UPDATE_LOCALESETTINGS;
|
||||
goto Cleanup;
|
||||
@ -1327,12 +1280,7 @@ DoUpdate:
|
||||
|
||||
if (!IsUnattendedSetup)
|
||||
{
|
||||
Entry = GetCurrentListEntry(pSetupData->LayoutList);
|
||||
ASSERT(Entry);
|
||||
pSetupData->LayoutId = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
||||
ASSERT(pSetupData->LayoutId);
|
||||
|
||||
/* Update keyboard layout settings with user-overridden values */
|
||||
/* Update keyboard layout settings with user overriden values */
|
||||
// FIXME: Wouldn't it be better to do it all at once
|
||||
// with the AddKeyboardLayouts() step?
|
||||
if (StatusRoutine) StatusRoutine(KeybSettingsUpdate);
|
||||
@ -1370,7 +1318,7 @@ DoUpdate:
|
||||
if (SubstSettings)
|
||||
{
|
||||
/* HACK */
|
||||
DoRegistryFontFixup(SubstSettings, wcstoul(SelectedLanguageId, NULL, 16));
|
||||
DoRegistryFontFixup(SubstSettings, SelectedLanguageId);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -27,13 +27,13 @@ extern HANDLE ProcessHeap;
|
||||
#include "errorcode.h"
|
||||
#include "spapisup/fileqsup.h"
|
||||
#include "spapisup/infsupp.h"
|
||||
#include "utils/linklist.h"
|
||||
#include "utils/linklist.h" // FIXME: Is this still needed?
|
||||
#include "utils/ntverrsrc.h"
|
||||
// #include "utils/arcname.h"
|
||||
#include "utils/bldrsup.h"
|
||||
#include "utils/filesup.h"
|
||||
#include "utils/fsrec.h"
|
||||
#include "utils/genlist.h"
|
||||
#include "utils/genlist.h" // FIXME: May be moved to usetup only
|
||||
#include "utils/inicache.h"
|
||||
#include "utils/partinfo.h"
|
||||
#include "utils/partlist.h"
|
||||
@ -126,24 +126,14 @@ typedef struct _USETUP_DATA
|
||||
LONG AutoPartition;
|
||||
LONG FsType;
|
||||
|
||||
/* Settings lists *****/
|
||||
PGENERIC_LIST ComputerList;
|
||||
PGENERIC_LIST DisplayList;
|
||||
PGENERIC_LIST KeyboardList;
|
||||
PGENERIC_LIST LayoutList;
|
||||
PGENERIC_LIST LanguageList;
|
||||
|
||||
/* Settings *****/
|
||||
ARCHITECTURE_TYPE ArchType; //< Target architecture (MachineType)
|
||||
PCWSTR ComputerType;
|
||||
PCWSTR DisplayType;
|
||||
// PCWSTR KeyboardDriver;
|
||||
PCWSTR KeyboardDriver;
|
||||
// PCWSTR MouseDriver;
|
||||
PCWSTR LayoutId; // DefaultKBLayout
|
||||
|
||||
/* Other stuff *****/
|
||||
WCHAR LocaleID[9];
|
||||
LANGID LanguageId;
|
||||
LCID LocaleID; // Or just LANGID LanguageId == LANGIDFROMLCID(LocaleID) ?
|
||||
KLID LayoutId; // DefaultKBLayout
|
||||
|
||||
ULONG RequiredPartitionDiskSpace;
|
||||
WCHAR InstallationDirectory[MAX_PATH];
|
||||
@ -241,7 +231,6 @@ UpdateRegistry(
|
||||
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
||||
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
||||
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
||||
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
|
||||
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL,
|
||||
IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL);
|
||||
|
||||
|
@ -25,7 +25,6 @@
|
||||
*/
|
||||
|
||||
#include "reactos.h"
|
||||
#include <winnls.h> // For GetUserDefaultLCID()
|
||||
|
||||
#define NTOS_MODE_USER
|
||||
#include <ndk/obfuncs.h>
|
||||
@ -914,16 +913,16 @@ DeviceDlgProc(
|
||||
SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pSetupData);
|
||||
|
||||
hList = GetDlgItem(hwndDlg, IDC_COMPUTER);
|
||||
InitGenericComboList(hList, pSetupData->USetupData.ComputerList, GetSettingDescription);
|
||||
InitGenericComboList(hList, pSetupData->ComputerList, GetSettingDescription);
|
||||
|
||||
hList = GetDlgItem(hwndDlg, IDC_DISPLAY);
|
||||
InitGenericComboList(hList, pSetupData->USetupData.DisplayList, GetSettingDescription);
|
||||
InitGenericComboList(hList, pSetupData->DisplayList, GetSettingDescription);
|
||||
|
||||
hList = GetDlgItem(hwndDlg, IDC_KEYBOARD);
|
||||
InitGenericComboList(hList, pSetupData->USetupData.KeyboardList, GetSettingDescription);
|
||||
InitGenericComboList(hList, pSetupData->KeyboardList, GetSettingDescription);
|
||||
|
||||
// hList = GetDlgItem(hwndDlg, IDC_KEYBOARD_LAYOUT);
|
||||
// InitGenericComboList(hList, pSetupData->USetupData.LayoutList, GetSettingDescription);
|
||||
// InitGenericComboList(hList, pSetupData->LayoutList, GetSettingDescription);
|
||||
|
||||
break;
|
||||
}
|
||||
@ -964,19 +963,19 @@ DeviceDlgProc(
|
||||
case PSN_WIZNEXT: /* Set the selected data */
|
||||
{
|
||||
hList = GetDlgItem(hwndDlg, IDC_COMPUTER);
|
||||
SetCurrentListEntry(pSetupData->USetupData.ComputerList,
|
||||
SetCurrentListEntry(pSetupData->ComputerList,
|
||||
GetSelectedComboListItem(hList));
|
||||
|
||||
hList = GetDlgItem(hwndDlg, IDC_DISPLAY);
|
||||
SetCurrentListEntry(pSetupData->USetupData.DisplayList,
|
||||
SetCurrentListEntry(pSetupData->DisplayList,
|
||||
GetSelectedComboListItem(hList));
|
||||
|
||||
hList = GetDlgItem(hwndDlg, IDC_KEYBOARD);
|
||||
SetCurrentListEntry(pSetupData->USetupData.KeyboardList,
|
||||
SetCurrentListEntry(pSetupData->KeyboardList,
|
||||
GetSelectedComboListItem(hList));
|
||||
|
||||
// hList = GetDlgItem(hwndDlg, IDC_KEYBOARD_LAYOUT);
|
||||
// SetCurrentListEntry(pSetupData->USetupData.LayoutList,
|
||||
// SetCurrentListEntry(pSetupData->LayoutList,
|
||||
// GetSelectedComboListItem(hList));
|
||||
|
||||
return TRUE;
|
||||
@ -1063,17 +1062,17 @@ SummaryDlgProc(
|
||||
SetDlgItemTextW(hwndDlg, IDC_INSTALLSOURCE, L"n/a");
|
||||
SetDlgItemTextW(hwndDlg, IDC_ARCHITECTURE, L"n/a");
|
||||
|
||||
GetSettingDescription(GetCurrentListEntry(pSetupData->USetupData.ComputerList),
|
||||
GetSettingDescription(GetCurrentListEntry(pSetupData->ComputerList),
|
||||
CurrentItemText,
|
||||
ARRAYSIZE(CurrentItemText));
|
||||
SetDlgItemTextW(hwndDlg, IDC_COMPUTER, CurrentItemText);
|
||||
|
||||
GetSettingDescription(GetCurrentListEntry(pSetupData->USetupData.DisplayList),
|
||||
GetSettingDescription(GetCurrentListEntry(pSetupData->DisplayList),
|
||||
CurrentItemText,
|
||||
ARRAYSIZE(CurrentItemText));
|
||||
SetDlgItemTextW(hwndDlg, IDC_DISPLAY, CurrentItemText);
|
||||
|
||||
GetSettingDescription(GetCurrentListEntry(pSetupData->USetupData.KeyboardList),
|
||||
GetSettingDescription(GetCurrentListEntry(pSetupData->KeyboardList),
|
||||
CurrentItemText,
|
||||
ARRAYSIZE(CurrentItemText));
|
||||
SetDlgItemTextW(hwndDlg, IDC_KEYBOARD, CurrentItemText);
|
||||
@ -1997,7 +1996,6 @@ PrepareAndDoCopyThread(
|
||||
pSetupData->RepairUpdateFlag,
|
||||
pSetupData->PartitionList,
|
||||
InstallVolume->Info.DriveLetter,
|
||||
pSetupData->SelectedLanguageId,
|
||||
RegistryStatus,
|
||||
NULL /* SubstSettings */);
|
||||
DBG_UNREFERENCED_PARAMETER(ErrorNumber);
|
||||
@ -2348,12 +2346,10 @@ RestartDlgProc(
|
||||
BOOL LoadSetupData(
|
||||
IN OUT PSETUPDATA pSetupData)
|
||||
{
|
||||
BOOL ret = TRUE;
|
||||
LANGID NewLanguageId = pSetupData->USetupData.LocaleID;
|
||||
|
||||
pSetupData->PartitionList = CreatePartitionList();
|
||||
if (!pSetupData->PartitionList)
|
||||
{
|
||||
DPRINT1("Could not enumerate available disks; failing installation\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pSetupData->NtOsInstallsList = CreateNTOSInstallationsList(pSetupData->PartitionList);
|
||||
if (!pSetupData->NtOsInstallsList)
|
||||
@ -2361,79 +2357,20 @@ BOOL LoadSetupData(
|
||||
|
||||
/* Load the hardware, language and keyboard layout lists */
|
||||
|
||||
pSetupData->USetupData.ComputerList = CreateComputerTypeList(pSetupData->USetupData.SetupInf);
|
||||
pSetupData->USetupData.DisplayList = CreateDisplayDriverList(pSetupData->USetupData.SetupInf);
|
||||
pSetupData->USetupData.KeyboardList = CreateKeyboardDriverList(pSetupData->USetupData.SetupInf);
|
||||
pSetupData->ComputerList = CreateComputerTypeList(pSetupData->USetupData.SetupInf);
|
||||
pSetupData->DisplayList = CreateDisplayDriverList(pSetupData->USetupData.SetupInf);
|
||||
pSetupData->KeyboardList = CreateKeyboardDriverList(pSetupData->USetupData.SetupInf);
|
||||
|
||||
pSetupData->USetupData.LanguageList = CreateLanguageList(pSetupData->USetupData.SetupInf, pSetupData->DefaultLanguage);
|
||||
|
||||
/* If not unattended, overwrite language and locale with
|
||||
* the current ones of the running ReactOS instance */
|
||||
if (!IsUnattendedSetup)
|
||||
{
|
||||
LCID LocaleID = GetUserDefaultLCID();
|
||||
|
||||
StringCchPrintfW(pSetupData->DefaultLanguage,
|
||||
_countof(pSetupData->DefaultLanguage),
|
||||
L"%08lx", LocaleID);
|
||||
|
||||
StringCchPrintfW(pSetupData->USetupData.LocaleID,
|
||||
_countof(pSetupData->USetupData.LocaleID),
|
||||
L"%08lx", LocaleID);
|
||||
}
|
||||
pSetupData->LanguageList = CreateLanguageList(pSetupData->USetupData.SetupInf, &NewLanguageId);
|
||||
|
||||
/* new part */
|
||||
pSetupData->SelectedLanguageId = pSetupData->DefaultLanguage;
|
||||
wcscpy(pSetupData->DefaultLanguage, pSetupData->USetupData.LocaleID); // FIXME: In principle, only when unattended.
|
||||
pSetupData->USetupData.LanguageId = (LANGID)(wcstol(pSetupData->SelectedLanguageId, NULL, 16) & 0xFFFF);
|
||||
pSetupData->USetupData.LocaleID = (LCID)NewLanguageId;
|
||||
|
||||
pSetupData->USetupData.LayoutList = CreateKeyboardLayoutList(pSetupData->USetupData.SetupInf,
|
||||
pSetupData->SelectedLanguageId,
|
||||
pSetupData->DefaultKBLayout);
|
||||
pSetupData->LayoutList = CreateKeyboardLayoutList(pSetupData->USetupData.SetupInf,
|
||||
LANGIDFROMLCID(pSetupData->USetupData.LocaleID),
|
||||
&pSetupData->USetupData.LayoutId);
|
||||
|
||||
/* If not unattended, overwrite keyboard layout with
|
||||
* the current one of the running ReactOS instance */
|
||||
if (!IsUnattendedSetup)
|
||||
{
|
||||
C_ASSERT(_countof(pSetupData->DefaultKBLayout) >= KL_NAMELENGTH);
|
||||
/* If the call fails, keep the default already stored in the buffer */
|
||||
GetKeyboardLayoutNameW(pSetupData->DefaultKBLayout);
|
||||
}
|
||||
|
||||
/* Change the default entries in the language and keyboard layout lists */
|
||||
{
|
||||
PGENERIC_LIST LanguageList = pSetupData->USetupData.LanguageList;
|
||||
PGENERIC_LIST LayoutList = pSetupData->USetupData.LayoutList;
|
||||
PGENERIC_LIST_ENTRY ListEntry;
|
||||
|
||||
/* Search for default language */
|
||||
for (ListEntry = GetFirstListEntry(LanguageList); ListEntry;
|
||||
ListEntry = GetNextListEntry(ListEntry))
|
||||
{
|
||||
PCWSTR LocaleId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
||||
if (!_wcsicmp(pSetupData->DefaultLanguage, LocaleId))
|
||||
{
|
||||
DPRINT("found %S in LanguageList\n", LocaleId);
|
||||
SetCurrentListEntry(LanguageList, ListEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Search for default layout */
|
||||
for (ListEntry = GetFirstListEntry(LayoutList); ListEntry;
|
||||
ListEntry = GetNextListEntry(ListEntry))
|
||||
{
|
||||
PCWSTR pszLayoutId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
||||
if (!_wcsicmp(pSetupData->DefaultKBLayout, pszLayoutId))
|
||||
{
|
||||
DPRINT("Found %S in LayoutList\n", pszLayoutId);
|
||||
SetCurrentListEntry(LayoutList, ListEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return ret;
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -149,17 +149,16 @@ typedef struct _SETUPDATA
|
||||
PNTOS_INSTALLATION CurrentInstallation;
|
||||
PGENERIC_LIST NtOsInstallsList;
|
||||
|
||||
/* Settings lists *****/ // FIXME: HACKHACK! Remove these!
|
||||
PGENERIC_LIST ComputerList;
|
||||
PGENERIC_LIST DisplayList;
|
||||
PGENERIC_LIST KeyboardList;
|
||||
PGENERIC_LIST LanguageList;
|
||||
PGENERIC_LIST LayoutList;
|
||||
|
||||
/* Settings */
|
||||
LONG DestPartSize; // if partition doesn't exist, size of partition
|
||||
|
||||
/* txtsetup.sif data */
|
||||
// LONG DefaultLang; // default language (table index)
|
||||
// LONG DefaultKBLayout; // default keyboard layout (table index)
|
||||
PCWSTR SelectedLanguageId;
|
||||
WCHAR DefaultLanguage[20]; // Copy of string inside LanguageList
|
||||
WCHAR DefaultKBLayout[20]; // Copy of string inside KeyboardList
|
||||
|
||||
} SETUPDATA, *PSETUPDATA;
|
||||
|
||||
extern HANDLE ProcessHeap;
|
||||
|
@ -51,53 +51,50 @@ CHAR CharDoubleUpperRightCorner = 0xBB; /* double upper right corner */
|
||||
CHAR CharDoubleLowerLeftCorner = 0xC8; /* double lower left corner */
|
||||
CHAR CharDoubleLowerRightCorner = 0xBC; /* double lower right corner */
|
||||
|
||||
|
||||
LANGID SelectedLanguageId;
|
||||
|
||||
static
|
||||
ULONG
|
||||
FindLanguageIndex(VOID)
|
||||
{
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
if (SelectedLanguageId == NULL)
|
||||
if (SelectedLanguageId == 0)
|
||||
{
|
||||
/* Default to en-US */
|
||||
return 0; // FIXME!!
|
||||
// SelectedLanguageId = L"00000409";
|
||||
return 0; // FIXME!!
|
||||
// SelectedLanguageId = 0x0409;
|
||||
}
|
||||
|
||||
while (ResourceList[lngIndex].MuiPages != NULL)
|
||||
{
|
||||
if (_wcsicmp(ResourceList[lngIndex].LanguageID, SelectedLanguageId) == 0)
|
||||
{
|
||||
if (ResourceList[lngIndex].LanguageID == SelectedLanguageId)
|
||||
return lngIndex;
|
||||
}
|
||||
|
||||
lngIndex++;
|
||||
++lngIndex;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
BOOLEAN
|
||||
IsLanguageAvailable(
|
||||
PWCHAR LanguageId)
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
while (ResourceList[lngIndex].MuiPages != NULL)
|
||||
{
|
||||
if (_wcsicmp(ResourceList[lngIndex].LanguageID, LanguageId) == 0)
|
||||
if (ResourceList[lngIndex].LanguageID == LanguageId)
|
||||
return TRUE;
|
||||
|
||||
lngIndex++;
|
||||
++lngIndex;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static
|
||||
const MUI_ENTRY *
|
||||
FindMUIEntriesOfPage(
|
||||
@ -105,9 +102,9 @@ FindMUIEntriesOfPage(
|
||||
{
|
||||
ULONG muiIndex = 0;
|
||||
ULONG lngIndex;
|
||||
const MUI_PAGE * Pages = NULL;
|
||||
const MUI_PAGE* Pages;
|
||||
|
||||
lngIndex = max(FindLanguageIndex(), 0);
|
||||
lngIndex = FindLanguageIndex();
|
||||
Pages = ResourceList[lngIndex].MuiPages;
|
||||
|
||||
while (Pages[muiIndex].MuiEntry != NULL)
|
||||
@ -125,7 +122,7 @@ static
|
||||
const MUI_ERROR *
|
||||
FindMUIErrorEntries(VOID)
|
||||
{
|
||||
ULONG lngIndex = max(FindLanguageIndex(), 0);
|
||||
ULONG lngIndex = FindLanguageIndex();
|
||||
return ResourceList[lngIndex].MuiErrors;
|
||||
}
|
||||
|
||||
@ -133,11 +130,20 @@ static
|
||||
const MUI_STRING *
|
||||
FindMUIStringEntries(VOID)
|
||||
{
|
||||
ULONG lngIndex = max(FindLanguageIndex(), 0);
|
||||
ULONG lngIndex = FindLanguageIndex();
|
||||
return ResourceList[lngIndex].MuiStrings;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
VOID
|
||||
MUISetCurrentLanguage(
|
||||
_In_ LANGID LanguageId)
|
||||
{
|
||||
SelectedLanguageId = LanguageId;
|
||||
}
|
||||
#endif
|
||||
|
||||
VOID
|
||||
MUIClearPage(
|
||||
IN ULONG page)
|
||||
@ -267,7 +273,8 @@ MUIGetString(
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(szErr, "Error: failed find string id %lu for language index %lu\n", Number, FindLanguageIndex());
|
||||
sprintf(szErr, "Error: failed find string id %lu for language index %lu\n",
|
||||
Number, FindLanguageIndex());
|
||||
|
||||
PopupError(szErr,
|
||||
NULL,
|
||||
@ -540,10 +547,9 @@ SetConsoleCodePage(VOID)
|
||||
|
||||
#if 0
|
||||
ULONG lngIndex = 0;
|
||||
|
||||
while (ResourceList[lngIndex].MuiPages != NULL)
|
||||
{
|
||||
if (_wcsicmp(ResourceList[lngIndex].LanguageID, SelectedLanguageId) == 0)
|
||||
if (ResourceList[lngIndex].LanguageID == SelectedLanguageId)
|
||||
{
|
||||
wCodePage = ResourceList[lngIndex].OEMCPage;
|
||||
SetConsoleOutputCP(wCodePage);
|
||||
|
@ -29,7 +29,7 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PCWSTR LanguageID;
|
||||
LCID LanguageID; // LocaleID;
|
||||
PCWSTR LanguageDescriptor;
|
||||
const MUI_PAGE * MuiPages;
|
||||
const MUI_ERROR * MuiErrors;
|
||||
@ -39,7 +39,14 @@ typedef struct
|
||||
#if 0
|
||||
BOOLEAN
|
||||
IsLanguageAvailable(
|
||||
PWCHAR LanguageId);
|
||||
_In_ LANGID LanguageId);
|
||||
#endif
|
||||
|
||||
extern LANGID SelectedLanguageId;
|
||||
#if 0
|
||||
VOID
|
||||
MUISetCurrentLanguage(
|
||||
_In_ LANGID LanguageId);
|
||||
#endif
|
||||
|
||||
VOID
|
||||
|
@ -413,432 +413,432 @@
|
||||
|
||||
const MUI_LANGUAGE_RESOURCE ResourceList[] =
|
||||
{
|
||||
/* Lang ID, Language Name, Page strings, Error strings, Other strings */
|
||||
/* LangID, Language Name, Page strings, Error strings, Other strings */
|
||||
#ifdef LANGUAGE_AF_ZA
|
||||
{L"00000436", L"Afrikaans", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000436, L"Afrikaans", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SQ_AL
|
||||
{L"0000041C", L"Albanian (Albania)", sqALPages, sqALErrorEntries, sqALStrings},
|
||||
{0x0000041C, L"Albanian (Albania)", sqALPages, sqALErrorEntries, sqALStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_SA
|
||||
{L"00000401", L"Arabic (Saudi Arabia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000401, L"Arabic (Saudi Arabia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_IQ
|
||||
{L"00000801", L"Arabic (Iraq)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000801, L"Arabic (Iraq)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_EG
|
||||
{L"00000C01", L"Arabic (Egypt)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000C01, L"Arabic (Egypt)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_LY
|
||||
{L"00001001", L"Arabic (Libya)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001001, L"Arabic (Libya)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_DZ
|
||||
{L"00001401", L"Arabic (Algeria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001401, L"Arabic (Algeria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_MA
|
||||
{L"00001801", L"Arabic (Morocco)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001801, L"Arabic (Morocco)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_TN
|
||||
{L"00001C01", L"Arabic (Tunisia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001C01, L"Arabic (Tunisia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_OM
|
||||
{L"00002001", L"Arabic (Oman)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002001, L"Arabic (Oman)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_YE
|
||||
{L"00002401", L"Arabic (Yemen)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002401, L"Arabic (Yemen)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_SY
|
||||
{L"00002801", L"Arabic (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002801, L"Arabic (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_JO
|
||||
{L"00002C01", L"Arabic (Jordan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002C01, L"Arabic (Jordan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_LB
|
||||
{L"00003001", L"Arabic (Lebanon)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00003001, L"Arabic (Lebanon)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_KW
|
||||
{L"00003401", L"Arabic (Kuwait)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00003401, L"Arabic (Kuwait)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_AE
|
||||
{L"00003801", L"Arabic (U.A.E.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00003801, L"Arabic (U.A.E.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_BH
|
||||
{L"00003C01", L"Arabic (Bahrain)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00003C01, L"Arabic (Bahrain)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AR_QA
|
||||
{L"00004001", L"Arabic (Qatar)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00004001, L"Arabic (Qatar)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HY_AM
|
||||
{L"0000042B", L"Armenian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000042B, L"Armenian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AZ_AZ
|
||||
{L"0000082C", L"Azeri (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000082C, L"Azeri (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_AZ_AZ
|
||||
{L"0000042C", L"Azeri (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000042C, L"Azeri (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EU_ES
|
||||
{L"0000042D", L"Basque", euESPages, euESErrorEntries, euESStrings},
|
||||
{0x0000042D, L"Basque", euESPages, euESErrorEntries, euESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BE_BY
|
||||
{L"00000423", L"Belarusian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000423, L"Belarusian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BN_BD
|
||||
{L"00000845", L"Bengali (Bangladesh)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
||||
{0x00000845, L"Bengali (Bangladesh)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BN_IN
|
||||
{L"00000445", L"Bengali (India)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
||||
{0x00000445, L"Bengali (India)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_BG_BG
|
||||
{L"00000402", L"Bulgarian", bgBGPages, bgBGErrorEntries, bgBGStrings},
|
||||
{0x00000402, L"Bulgarian", bgBGPages, bgBGErrorEntries, bgBGStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MY_MM
|
||||
{L"00000455", L"Burmese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000455, L"Burmese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_CA_ES
|
||||
{L"00000403", L"Catalan", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000403, L"Catalan", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_TW
|
||||
{L"00000404", L"Chinese (Taiwan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000404, L"Chinese (Taiwan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_CN
|
||||
{L"00000804", L"Chinese (PRC)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000804, L"Chinese (PRC)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_HK
|
||||
{L"00000C04", L"Chinese (Hong Kong S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000C04, L"Chinese (Hong Kong S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_SG
|
||||
{L"00001004", L"Chinese (Singapore)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001004, L"Chinese (Singapore)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_MO
|
||||
{L"00001404", L"Chinese (Macau S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001404, L"Chinese (Macau S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HR_HR
|
||||
{L"0000041A", L"Croatian", hrHRPages, hrHRErrorEntries, hrHRStrings},
|
||||
{0x0000041A, L"Croatian", hrHRPages, hrHRErrorEntries, hrHRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_CS_CZ
|
||||
{L"00000405", L"Czech", csCZPages, csCZErrorEntries, csCZStrings},
|
||||
{0x00000405, L"Czech", csCZPages, csCZErrorEntries, csCZStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DA_DK
|
||||
{L"00000406", L"Danish", daDKPages, daDKErrorEntries, daDKStrings},
|
||||
{0x00000406, L"Danish", daDKPages, daDKErrorEntries, daDKStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DV_MV
|
||||
{L"00000465", L"Dhivehi (Maldives)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000465, L"Dhivehi (Maldives)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NL_NL
|
||||
{L"00000413", L"Dutch (Netherlands)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
||||
{0x00000413, L"Dutch (Netherlands)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NL_BE
|
||||
{L"00000813", L"Dutch (Belgium)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
||||
{0x00000813, L"Dutch (Belgium)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_US
|
||||
{L"00000409", L"English (United States)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000409, L"English (United States)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_GB
|
||||
{L"00000809", L"English (United Kingdom)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000809, L"English (United Kingdom)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_AU
|
||||
{L"00000C09", L"English (Australia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000C09, L"English (Australia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_CA
|
||||
{L"00001009", L"English (Canada)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001009, L"English (Canada)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_NZ
|
||||
{L"00001409", L"English (New Zealand)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001409, L"English (New Zealand)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_IE
|
||||
{L"00001809", L"English (Ireland)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001809, L"English (Ireland)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_ZA
|
||||
{L"00001C09", L"English (South Africa)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00001C09, L"English (South Africa)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_JM
|
||||
{L"00002009", L"English (Jamaica)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002009, L"English (Jamaica)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_CB
|
||||
{L"00002409", L"English (Caribbean)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002409, L"English (Caribbean)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_BZ
|
||||
{L"00002809", L"English (Belize)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002809, L"English (Belize)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_TT
|
||||
{L"00002C09", L"English (Trinidad)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00002C09, L"English (Trinidad)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_ZW
|
||||
{L"00003009", L"English (Zimbabwe)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00003009, L"English (Zimbabwe)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_PH
|
||||
{L"00003409", L"English (Philippines)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00003409, L"English (Philippines)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EO_AA
|
||||
{L"0000048F", L"Esperanto", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000048F, L"Esperanto", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ET_EE
|
||||
{L"00000425", L"Estonian", etEEPages, etEEErrorEntries, etEEStrings},
|
||||
{0x00000425, L"Estonian", etEEPages, etEEErrorEntries, etEEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FO_FO
|
||||
{L"00000438", L"Faeroese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000438, L"Faeroese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FA_IR
|
||||
{L"00000429", L"Farsi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000429, L"Farsi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FI_FI
|
||||
{L"0000040B", L"Finnish", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000040B, L"Finnish", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_CA
|
||||
{L"00000C0C", L"French (Canada)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
{0x00000C0C, L"French (Canada)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_FR
|
||||
{L"0000040C", L"French (France)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
{0x0000040C, L"French (France)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_BE
|
||||
{L"0000080C", L"French (Belgium)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
{0x0000080C, L"French (Belgium)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_CH
|
||||
{L"0000100C", L"French (Switzerland)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
{0x0000100C, L"French (Switzerland)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_LU
|
||||
{L"0000140C", L"French (Luxembourg)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
{0x0000140C, L"French (Luxembourg)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_MC
|
||||
{L"0000180C", L"French (Monaco)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
{0x0000180C, L"French (Monaco)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_GL_ES
|
||||
{L"00000456", L"Galician (Spain)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000456, L"Galician (Spain)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KA_GE
|
||||
{L"00000437", L"Georgian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000437, L"Georgian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_DE
|
||||
{L"00000407", L"German (Germany)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
{0x00000407, L"German (Germany)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_CH
|
||||
{L"00000807", L"German (Switzerland)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
{0x00000807, L"German (Switzerland)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_AT
|
||||
{L"00000C07", L"German (Austria)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
{0x00000C07, L"German (Austria)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_LU
|
||||
{L"00001007", L"German (Luxembourg)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
{0x00001007, L"German (Luxembourg)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_LI
|
||||
{L"00001407", L"German (Liechtenstein)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
{0x00001407, L"German (Liechtenstein)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_EL_GR
|
||||
{L"00000408", L"Greek", elGRPages, elGRErrorEntries, elGRStrings},
|
||||
{0x00000408, L"Greek", elGRPages, elGRErrorEntries, elGRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_GU_IN
|
||||
{L"00000447", L"Gujarati (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000447, L"Gujarati (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HE_IL
|
||||
{L"0000040D", L"Hebrew", heILPages, heILErrorEntries, heILStrings},
|
||||
{0x0000040D, L"Hebrew", heILPages, heILErrorEntries, heILStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HI_IN
|
||||
{L"00000439", L"Hindi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000439, L"Hindi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_HU_HU
|
||||
{L"0000040E", L"Hungarian", huHUPages, huHUErrorEntries, huHUStrings},
|
||||
{0x0000040E, L"Hungarian", huHUPages, huHUErrorEntries, huHUStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_IS_IS
|
||||
{L"0000040F", L"Icelandic", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000040F, L"Icelandic", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ID_ID
|
||||
{L"00000421", L"Indonesian", idIDPages, idIDErrorEntries, idIDStrings},
|
||||
{0x00000421, L"Indonesian", idIDPages, idIDErrorEntries, idIDStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
{L"00000410", L"Italian (Italy)", itITPages, itITErrorEntries, itITStrings},
|
||||
{0x00000410, L"Italian (Italy)", itITPages, itITErrorEntries, itITStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_IT_CH
|
||||
{L"00000810", L"Italian (Switzerland)", itITPages, itITErrorEntries, itITStrings},
|
||||
{0x00000810, L"Italian (Switzerland)", itITPages, itITErrorEntries, itITStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_JA_JP
|
||||
{L"00000411", L"Japanese", jaJPPages, jaJPErrorEntries, jaJPStrings},
|
||||
{0x00000411, L"Japanese", jaJPPages, jaJPErrorEntries, jaJPStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KN_IN
|
||||
{L"0000044B", L"Kannada (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000044B, L"Kannada (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KK_KZ
|
||||
{L"0000043F", L"Kazakh", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000043F, L"Kazakh", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KOK_IN
|
||||
{L"00000457", L"Konkani", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000457, L"Konkani", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KO_KR
|
||||
{L"00000412", L"Korean", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000412, L"Korean", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_KY_KG
|
||||
{L"00000440", L"Kyrgyz (Kyrgyzstan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000440, L"Kyrgyz (Kyrgyzstan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_LV_LV
|
||||
{L"00000426", L"Latvian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000426, L"Latvian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_LT_LT
|
||||
{L"00000427", L"Lithuanian", ltLTPages, ltLTErrorEntries, ltLTStrings},
|
||||
{0x00000427, L"Lithuanian", ltLTPages, ltLTErrorEntries, ltLTStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MK_MK
|
||||
{L"0000042F", L"FYRO Macedonian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000042F, L"FYRO Macedonian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MS_BN
|
||||
{L"0000083E", L"Malay (Brunei Darussalam)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000083E, L"Malay (Brunei Darussalam)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MS_MY
|
||||
{L"0000043E", L"Malay (Malaysia)", msMYPages, msMYErrorEntries, msMYStrings},
|
||||
{0x0000043E, L"Malay (Malaysia)", msMYPages, msMYErrorEntries, msMYStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MR_IN
|
||||
{L"0000044E", L"Marathi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000044E, L"Marathi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_MN_MN
|
||||
{L"00000450", L"Mongolian (Mongolia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000450, L"Mongolian (Mongolia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NB_NO
|
||||
{L"00000414", L"Norwegian (Bokmal)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000414, L"Norwegian (Bokmal)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_NN_NO
|
||||
{L"00000814", L"Norwegian (Nynorsk)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000814, L"Norwegian (Nynorsk)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PL_PL
|
||||
{L"00000415", L"Polish", plPLPages, plPLErrorEntries, plPLStrings},
|
||||
{0x00000415, L"Polish", plPLPages, plPLErrorEntries, plPLStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PT_BR
|
||||
{L"00000416", L"Portuguese (Brazil)", ptBRPages, ptBRErrorEntries, ptBRStrings},
|
||||
{0x00000416, L"Portuguese (Brazil)", ptBRPages, ptBRErrorEntries, ptBRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PT_PT
|
||||
{L"00000816", L"Portuguese (Portugal)", ptPTPages, ptPTErrorEntries, ptPTStrings},
|
||||
{0x00000816, L"Portuguese (Portugal)", ptPTPages, ptPTErrorEntries, ptPTStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_PA_IN
|
||||
{L"00000446", L"Punjabi (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000446, L"Punjabi (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_RO_RO
|
||||
{L"00000418", L"Romanian", roROPages, roROErrorEntries, roROStrings},
|
||||
{0x00000418, L"Romanian", roROPages, roROErrorEntries, roROStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_RM_CH
|
||||
{L"00000417", L"Romansh", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000417, L"Romansh", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_RU_RU
|
||||
{L"00000419", L"Russian", ruRUPages, ruRUErrorEntries, ruRUStrings},
|
||||
{0x00000419, L"Russian", ruRUPages, ruRUErrorEntries, ruRUStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SA_IN
|
||||
{L"0000044F", L"Sanskrit", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000044F, L"Sanskrit", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SR_SP
|
||||
{L"00000C1A", L"Serbian (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000C1A, L"Serbian (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SR_SP
|
||||
{L"0000081A", L"Serbian (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000081A, L"Serbian (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SK_SK
|
||||
{L"0000041B", L"Slovak", skSKPages, skSKErrorEntries, skSKStrings},
|
||||
{0x0000041B, L"Slovak", skSKPages, skSKErrorEntries, skSKStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SL_SI
|
||||
{L"00000424", L"Slovenian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000424, L"Slovenian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_ES
|
||||
{L"0000040A", L"Spanish (Traditional Sort)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000040A, L"Spanish (Traditional Sort)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_MX
|
||||
{L"0000080A", L"Spanish (Mexico)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000080A, L"Spanish (Mexico)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_ES
|
||||
{L"00000C0A", L"Spanish (International Sort)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x00000C0A, L"Spanish (International Sort)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_GT
|
||||
{L"0000100A", L"Spanish (Guatemala)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000100A, L"Spanish (Guatemala)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_CR
|
||||
{L"0000140A", L"Spanish (Costa Rica)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000140A, L"Spanish (Costa Rica)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PA
|
||||
{L"0000180A", L"Spanish (Panama)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000180A, L"Spanish (Panama)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_DO
|
||||
{L"00001C0A", L"Spanish (Dominican Republic)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x00001C0A, L"Spanish (Dominican Republic)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_VE
|
||||
{L"0000200A", L"Spanish (Venezuela)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000200A, L"Spanish (Venezuela)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_CO
|
||||
{L"0000240A", L"Spanish (Colombia)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000240A, L"Spanish (Colombia)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PE
|
||||
{L"0000280A", L"Spanish (Peru)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000280A, L"Spanish (Peru)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_AR
|
||||
{L"00002C0A", L"Spanish (Argentina)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x00002C0A, L"Spanish (Argentina)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_EC
|
||||
{L"0000300A", L"Spanish (Ecuador)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000300A, L"Spanish (Ecuador)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_CL
|
||||
{L"0000340A", L"Spanish (Chile)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000340A, L"Spanish (Chile)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_UY
|
||||
{L"0000380A", L"Spanish (Uruguay)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000380A, L"Spanish (Uruguay)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PY
|
||||
{L"00003C0A", L"Spanish (Paraguay)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x00003C0A, L"Spanish (Paraguay)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_BO
|
||||
{L"0000400A", L"Spanish (Bolivia)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000400A, L"Spanish (Bolivia)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_SV
|
||||
{L"0000440A", L"Spanish (El Salvador)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000440A, L"Spanish (El Salvador)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_HN
|
||||
{L"0000480A", L"Spanish (Honduras)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000480A, L"Spanish (Honduras)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_NI
|
||||
{L"00004C0A", L"Spanish (Nicaragua)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x00004C0A, L"Spanish (Nicaragua)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_PR
|
||||
{L"0000500A", L"Spanish (Puerto Rico)", esESPages, esESErrorEntries, esESStrings},
|
||||
{0x0000500A, L"Spanish (Puerto Rico)", esESPages, esESErrorEntries, esESStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SW_KE
|
||||
{L"00000441", L"Swahili", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000441, L"Swahili", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SV_SE
|
||||
{L"0000041D", L"Swedish", svSEPages, svSEErrorEntries, svSEStrings},
|
||||
{0x0000041D, L"Swedish", svSEPages, svSEErrorEntries, svSEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SV_FI
|
||||
{L"0000081D", L"Swedish (Finland)", svSEPages, svSEErrorEntries, svSEStrings},
|
||||
{0x0000081D, L"Swedish (Finland)", svSEPages, svSEErrorEntries, svSEStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_SYR_SY
|
||||
{L"0000045A", L"Syriac (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000045A, L"Syriac (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TA_IN
|
||||
{L"00000449", L"Tamil", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000449, L"Tamil", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TT_TA
|
||||
{L"00000444", L"Tatar", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000444, L"Tatar", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TE_IN
|
||||
{L"0000044A", L"Telugu (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000044A, L"Telugu (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TH_TH
|
||||
{L"0000041E", L"Thai", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000041E, L"Thai", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_TR_TR
|
||||
{L"0000041F", L"Turkish", trTRPages, trTRErrorEntries, trTRStrings},
|
||||
{0x0000041F, L"Turkish", trTRPages, trTRErrorEntries, trTRStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UK_UA
|
||||
{L"00000422", L"Ukrainian", ukUAPages, ukUAErrorEntries, ukUAStrings},
|
||||
{0x00000422, L"Ukrainian", ukUAPages, ukUAErrorEntries, ukUAStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UR_PK
|
||||
{L"00000420", L"Urdu", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000420, L"Urdu", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UZ_UZ
|
||||
{L"00000443", L"Uzbek (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000443, L"Uzbek (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_UZ_UZ
|
||||
{L"00000843", L"Uzbek (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000843, L"Uzbek (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_VI_VN
|
||||
{L"0000042A", L"Vietnamese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x0000042A, L"Vietnamese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_WA_BE
|
||||
{L"00000490", L"Walon", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000490, L"Walon", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZU_ZU
|
||||
{L"00000435", L"Zulu", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
{0x00000435, L"Zulu", enUSPages, enUSErrorEntries, enUSStrings},
|
||||
#endif
|
||||
{NULL, NULL, NULL, NULL, NULL}
|
||||
{0, NULL, NULL, NULL, NULL}
|
||||
};
|
||||
|
@ -63,11 +63,16 @@ static PPARTENTRY SystemPartition = NULL;
|
||||
#define SystemVolume (SystemPartition->Volume)
|
||||
|
||||
|
||||
/* OTHER Stuff *****/
|
||||
/* Settings lists *****/
|
||||
PGENERIC_LIST ComputerList;
|
||||
PGENERIC_LIST DisplayList;
|
||||
PGENERIC_LIST KeyboardList;
|
||||
PGENERIC_LIST LanguageList;
|
||||
PGENERIC_LIST LayoutList;
|
||||
|
||||
PCWSTR SelectedLanguageId;
|
||||
static WCHAR DefaultLanguage[20]; // Copy of string inside LanguageList
|
||||
static WCHAR DefaultKBLayout[20]; // Copy of string inside KeyboardList
|
||||
|
||||
/* OTHER Stuff *****/
|
||||
static LANGID DefaultLanguage;
|
||||
|
||||
static BOOLEAN RepairUpdateFlag = FALSE;
|
||||
|
||||
@ -460,15 +465,16 @@ ConfirmQuit(PINPUT_RECORD Ir)
|
||||
static VOID
|
||||
UpdateKBLayout(VOID)
|
||||
{
|
||||
PGENERIC_LIST_ENTRY ListEntry;
|
||||
KLID newLayout;
|
||||
|
||||
newLayout = MUIDefaultKeyboardLayout(SelectedLanguageId);
|
||||
newLayout = MUIDefaultKeyboardLayout(LANGIDFROMLCID(USetupData.LocaleID));
|
||||
|
||||
if (!USetupData.LayoutList)
|
||||
if (!LayoutList)
|
||||
{
|
||||
USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, SelectedLanguageId, DefaultKBLayout);
|
||||
if (!USetupData.LayoutList)
|
||||
LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf,
|
||||
LANGIDFROMLCID(USetupData.LocaleID),
|
||||
&USetupData.LayoutId);
|
||||
if (!LayoutList)
|
||||
{
|
||||
/* FIXME: Handle error! */
|
||||
return;
|
||||
@ -478,14 +484,17 @@ UpdateKBLayout(VOID)
|
||||
/* Search for default layout (if provided) */
|
||||
if (newLayout != 0)
|
||||
{
|
||||
for (ListEntry = GetFirstListEntry(USetupData.LayoutList); ListEntry;
|
||||
PGENERIC_LIST_ENTRY ListEntry;
|
||||
KLID LayoutId;
|
||||
|
||||
for (ListEntry = GetFirstListEntry(LayoutList); ListEntry;
|
||||
ListEntry = GetNextListEntry(ListEntry))
|
||||
{
|
||||
PCWSTR pszLayoutId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
||||
KLID LayoutId = (KLID)(pszLayoutId ? wcstoul(pszLayoutId, NULL, 16) : 0);
|
||||
LayoutId = (KLID)(((PGENENTRY)GetListEntryData(ListEntry))->Id.Ul);
|
||||
if (newLayout == LayoutId)
|
||||
{
|
||||
SetCurrentListEntry(USetupData.LayoutList, ListEntry);
|
||||
DPRINT("Found 0x%08lx in LayoutList\n", newLayout);
|
||||
SetCurrentListEntry(LayoutList, ListEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -543,16 +552,9 @@ GetNTOSInstallationName(
|
||||
* QuitPage
|
||||
*
|
||||
* SIDEEFFECTS
|
||||
* Init Sdi
|
||||
* Init USetupData.SourcePath
|
||||
* Init USetupData.SourceRootPath
|
||||
* Init USetupData.SourceRootDir
|
||||
* Init USetupData.SetupInf
|
||||
* Init USetupData.RequiredPartitionDiskSpace
|
||||
* Init PnpMgr
|
||||
* Init USetupData
|
||||
* Init IsUnattendedSetup
|
||||
* If unattended, init *List and sets the Codepage
|
||||
* If unattended, init SelectedLanguageId
|
||||
* If unattended, init USetupData.LanguageId
|
||||
*
|
||||
* RETURNS
|
||||
* Number of the next page.
|
||||
@ -561,8 +563,6 @@ static PAGE_NUMBER
|
||||
SetupStartPage(PINPUT_RECORD Ir)
|
||||
{
|
||||
ULONG Error;
|
||||
PGENERIC_LIST_ENTRY ListEntry;
|
||||
PCWSTR LocaleId;
|
||||
|
||||
MUIDisplayPage(SETUP_INIT_PAGE);
|
||||
|
||||
@ -582,57 +582,9 @@ SetupStartPage(PINPUT_RECORD Ir)
|
||||
if (WaitNoPendingInstallEvents(NULL) != STATUS_WAIT_0)
|
||||
DPRINT1("WaitNoPendingInstallEvents() failed to wait!\n");
|
||||
|
||||
/* Retrieve any supplemental options from the unattend file */
|
||||
CheckUnattendedSetup(&USetupData);
|
||||
|
||||
if (IsUnattendedSetup)
|
||||
{
|
||||
// TODO: Read options from inf
|
||||
/* Load the hardware, language and keyboard layout lists */
|
||||
|
||||
USetupData.ComputerList = CreateComputerTypeList(USetupData.SetupInf);
|
||||
USetupData.DisplayList = CreateDisplayDriverList(USetupData.SetupInf);
|
||||
USetupData.KeyboardList = CreateKeyboardDriverList(USetupData.SetupInf);
|
||||
|
||||
USetupData.LanguageList = CreateLanguageList(USetupData.SetupInf, DefaultLanguage);
|
||||
|
||||
/* new part */
|
||||
SelectedLanguageId = DefaultLanguage;
|
||||
wcscpy(DefaultLanguage, USetupData.LocaleID);
|
||||
USetupData.LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
|
||||
|
||||
USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, SelectedLanguageId, DefaultKBLayout);
|
||||
|
||||
/* first we hack LanguageList */
|
||||
for (ListEntry = GetFirstListEntry(USetupData.LanguageList); ListEntry;
|
||||
ListEntry = GetNextListEntry(ListEntry))
|
||||
{
|
||||
LocaleId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
||||
if (!_wcsicmp(USetupData.LocaleID, LocaleId))
|
||||
{
|
||||
DPRINT("found %S in LanguageList\n", LocaleId);
|
||||
SetCurrentListEntry(USetupData.LanguageList, ListEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* now LayoutList */
|
||||
for (ListEntry = GetFirstListEntry(USetupData.LayoutList); ListEntry;
|
||||
ListEntry = GetNextListEntry(ListEntry))
|
||||
{
|
||||
LocaleId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
||||
if (!_wcsicmp(USetupData.LocaleID, LocaleId))
|
||||
{
|
||||
DPRINT("found %S in LayoutList\n", LocaleId);
|
||||
SetCurrentListEntry(USetupData.LayoutList, ListEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SetConsoleCodePage();
|
||||
|
||||
return INSTALL_INTRO_PAGE;
|
||||
}
|
||||
|
||||
return LANGUAGE_PAGE;
|
||||
}
|
||||
|
||||
@ -642,10 +594,6 @@ SetupStartPage(PINPUT_RECORD Ir)
|
||||
*
|
||||
* Next pages: WelcomePage, QuitPage
|
||||
*
|
||||
* SIDEEFFECTS
|
||||
* Init SelectedLanguageId
|
||||
* Init USetupData.LanguageId
|
||||
*
|
||||
* RETURNS
|
||||
* Number of the next page.
|
||||
*/
|
||||
@ -653,46 +601,49 @@ static PAGE_NUMBER
|
||||
LanguagePage(PINPUT_RECORD Ir)
|
||||
{
|
||||
GENERIC_LIST_UI ListUi;
|
||||
PCWSTR NewLanguageId;
|
||||
BOOL RefreshPage = FALSE;
|
||||
|
||||
/* Initialize the computer settings list */
|
||||
if (USetupData.LanguageList == NULL)
|
||||
/* Initialize the language settings list */
|
||||
LANGID NewLanguageId = USetupData.LocaleID;
|
||||
if (!LanguageList)
|
||||
{
|
||||
USetupData.LanguageList = CreateLanguageList(USetupData.SetupInf, DefaultLanguage);
|
||||
if (USetupData.LanguageList == NULL)
|
||||
LanguageList = CreateLanguageList(USetupData.SetupInf, &NewLanguageId);
|
||||
if (!LanguageList)
|
||||
{
|
||||
PopupError("Setup failed to initialize available translations", NULL, NULL, POPUP_WAIT_NONE);
|
||||
return WELCOME_PAGE;
|
||||
PopupError("Setup failed to initialize available translations", NULL, NULL, POPUP_WAIT_NONE);
|
||||
return WELCOME_PAGE;
|
||||
}
|
||||
}
|
||||
|
||||
SelectedLanguageId = DefaultLanguage;
|
||||
USetupData.LanguageId = 0;
|
||||
USetupData.LocaleID = (LCID)NewLanguageId;
|
||||
/******/DefaultLanguage = LANGIDFROMLCID(USetupData.LocaleID);/*****/ // FIXME: Deprecate DefaultLanguage
|
||||
SelectedLanguageId = LANGIDFROMLCID(USetupData.LocaleID); // FIXME: Should we keep SelectedLanguageId ?
|
||||
|
||||
/* Load the font */
|
||||
SetConsoleCodePage();
|
||||
UpdateKBLayout();
|
||||
|
||||
|
||||
if (IsUnattendedSetup)
|
||||
return INSTALL_INTRO_PAGE;
|
||||
|
||||
|
||||
/*
|
||||
* If there is no language or just a single one in the list,
|
||||
* skip the language selection process altogether.
|
||||
*/
|
||||
if (GetNumberOfListEntries(USetupData.LanguageList) <= 1)
|
||||
{
|
||||
USetupData.LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
|
||||
if (GetNumberOfListEntries(LanguageList) <= 1)
|
||||
return WELCOME_PAGE;
|
||||
}
|
||||
|
||||
InitGenericListUi(&ListUi, USetupData.LanguageList, GetSettingDescription);
|
||||
MUIDisplayPage(LANGUAGE_PAGE);
|
||||
|
||||
InitGenericListUi(&ListUi, LanguageList, GetSettingDescription);
|
||||
DrawGenericList(&ListUi,
|
||||
2, 18,
|
||||
xScreen - 3,
|
||||
yScreen - 3);
|
||||
|
||||
ScrollToPositionGenericList(&ListUi, GetDefaultLanguageIndex());
|
||||
|
||||
MUIDisplayPage(LANGUAGE_PAGE);
|
||||
// ScrollToPositionGenericList(&ListUi, GetDefaultLanguageIndex());
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
@ -732,17 +683,15 @@ LanguagePage(PINPUT_RECORD Ir)
|
||||
}
|
||||
else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
|
||||
{
|
||||
ASSERT(GetNumberOfListEntries(USetupData.LanguageList) >= 1);
|
||||
ASSERT(GetNumberOfListEntries(LanguageList) >= 1);
|
||||
|
||||
SelectedLanguageId =
|
||||
((PGENENTRY)GetListEntryData(GetCurrentListEntry(USetupData.LanguageList)))->Id;
|
||||
(LCID)(((PGENENTRY)GetListEntryData(GetCurrentListEntry(LanguageList)))->Id.Ul);
|
||||
|
||||
USetupData.LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
|
||||
USetupData.LocaleID = SelectedLanguageId;
|
||||
|
||||
if (wcscmp(SelectedLanguageId, DefaultLanguage))
|
||||
{
|
||||
if (SelectedLanguageId != DefaultLanguage)
|
||||
UpdateKBLayout();
|
||||
}
|
||||
|
||||
/* Load the font */
|
||||
SetConsoleCodePage();
|
||||
@ -758,12 +707,12 @@ LanguagePage(PINPUT_RECORD Ir)
|
||||
|
||||
if (RefreshPage)
|
||||
{
|
||||
ASSERT(GetNumberOfListEntries(USetupData.LanguageList) >= 1);
|
||||
ASSERT(GetNumberOfListEntries(LanguageList) >= 1);
|
||||
|
||||
NewLanguageId =
|
||||
((PGENENTRY)GetListEntryData(GetCurrentListEntry(USetupData.LanguageList)))->Id;
|
||||
(LCID)(((PGENENTRY)GetListEntryData(GetCurrentListEntry(LanguageList)))->Id.Ul);
|
||||
|
||||
if (wcscmp(SelectedLanguageId, NewLanguageId))
|
||||
if (SelectedLanguageId != NewLanguageId)
|
||||
{
|
||||
/* Clear the language page */
|
||||
MUIClearPage(LANGUAGE_PAGE);
|
||||
@ -773,14 +722,14 @@ LanguagePage(PINPUT_RECORD Ir)
|
||||
/* Load the font */
|
||||
SetConsoleCodePage();
|
||||
|
||||
/* Redraw language selection page in native language */
|
||||
MUIDisplayPage(LANGUAGE_PAGE);
|
||||
|
||||
/* Redraw the list */
|
||||
DrawGenericList(&ListUi,
|
||||
2, 18,
|
||||
xScreen - 3,
|
||||
yScreen - 3);
|
||||
|
||||
/* Redraw language selection page in native language */
|
||||
MUIDisplayPage(LANGUAGE_PAGE);
|
||||
}
|
||||
|
||||
RefreshPage = FALSE;
|
||||
@ -1201,10 +1150,10 @@ OemDriverPage(PINPUT_RECORD Ir)
|
||||
* QuitPage
|
||||
*
|
||||
* SIDEEFFECTS
|
||||
* Init USetupData.ComputerList
|
||||
* Init USetupData.DisplayList
|
||||
* Init USetupData.KeyboardList
|
||||
* Init USetupData.LayoutList
|
||||
* Init ComputerList
|
||||
* Init DisplayList
|
||||
* Init KeyboardList
|
||||
* Init LayoutList
|
||||
*
|
||||
* RETURNS
|
||||
* Number of the next page.
|
||||
@ -1212,65 +1161,78 @@ OemDriverPage(PINPUT_RECORD Ir)
|
||||
static PAGE_NUMBER
|
||||
DeviceSettingsPage(PINPUT_RECORD Ir)
|
||||
{
|
||||
PGENERIC_LIST_ENTRY Entry;
|
||||
|
||||
static ULONG Line = 16;
|
||||
|
||||
/* Initialize the computer settings list */
|
||||
if (USetupData.ComputerList == NULL)
|
||||
if (!ComputerList)
|
||||
{
|
||||
USetupData.ComputerList = CreateComputerTypeList(USetupData.SetupInf);
|
||||
if (USetupData.ComputerList == NULL)
|
||||
ComputerList = CreateComputerTypeList(USetupData.SetupInf);
|
||||
if (!ComputerList)
|
||||
{
|
||||
MUIDisplayError(ERROR_LOAD_COMPUTER, Ir, POPUP_WAIT_ENTER);
|
||||
return QUIT_PAGE;
|
||||
}
|
||||
}
|
||||
Entry = GetCurrentListEntry(ComputerList);
|
||||
ASSERT(Entry);
|
||||
USetupData.ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
|
||||
/* Initialize the display settings list */
|
||||
if (USetupData.DisplayList == NULL)
|
||||
if (!DisplayList)
|
||||
{
|
||||
USetupData.DisplayList = CreateDisplayDriverList(USetupData.SetupInf);
|
||||
if (USetupData.DisplayList == NULL)
|
||||
DisplayList = CreateDisplayDriverList(USetupData.SetupInf);
|
||||
if (!DisplayList)
|
||||
{
|
||||
MUIDisplayError(ERROR_LOAD_DISPLAY, Ir, POPUP_WAIT_ENTER);
|
||||
return QUIT_PAGE;
|
||||
}
|
||||
}
|
||||
Entry = GetCurrentListEntry(DisplayList);
|
||||
ASSERT(Entry);
|
||||
USetupData.DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
|
||||
/* Initialize the keyboard settings list */
|
||||
if (USetupData.KeyboardList == NULL)
|
||||
if (!KeyboardList)
|
||||
{
|
||||
USetupData.KeyboardList = CreateKeyboardDriverList(USetupData.SetupInf);
|
||||
if (USetupData.KeyboardList == NULL)
|
||||
KeyboardList = CreateKeyboardDriverList(USetupData.SetupInf);
|
||||
if (!KeyboardList)
|
||||
{
|
||||
MUIDisplayError(ERROR_LOAD_KEYBOARD, Ir, POPUP_WAIT_ENTER);
|
||||
return QUIT_PAGE;
|
||||
}
|
||||
}
|
||||
Entry = GetCurrentListEntry(KeyboardList);
|
||||
ASSERT(Entry);
|
||||
USetupData.KeyboardDriver = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
|
||||
/* Initialize the keyboard layout list */
|
||||
if (!USetupData.LayoutList)
|
||||
if (!LayoutList)
|
||||
{
|
||||
USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, SelectedLanguageId, DefaultKBLayout);
|
||||
if (!USetupData.LayoutList)
|
||||
LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf,
|
||||
LANGIDFROMLCID(USetupData.LocaleID),
|
||||
&USetupData.LayoutId);
|
||||
if (!LayoutList)
|
||||
{
|
||||
/* FIXME: report error */
|
||||
MUIDisplayError(ERROR_LOAD_KBLAYOUT, Ir, POPUP_WAIT_ENTER);
|
||||
return QUIT_PAGE;
|
||||
}
|
||||
}
|
||||
Entry = GetCurrentListEntry(LayoutList);
|
||||
ASSERT(Entry);
|
||||
USetupData.LayoutId = (KLID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||
|
||||
if (RepairUpdateFlag)
|
||||
if (RepairUpdateFlag || IsUnattendedSetup)
|
||||
return SELECT_PARTITION_PAGE;
|
||||
|
||||
// if (IsUnattendedSetup)
|
||||
// return SELECT_PARTITION_PAGE;
|
||||
|
||||
MUIDisplayPage(DEVICE_SETTINGS_PAGE);
|
||||
|
||||
DrawGenericListCurrentItem(USetupData.ComputerList, GetSettingDescription, 25, 11);
|
||||
DrawGenericListCurrentItem(USetupData.DisplayList , GetSettingDescription, 25, 12);
|
||||
DrawGenericListCurrentItem(USetupData.KeyboardList, GetSettingDescription, 25, 13);
|
||||
DrawGenericListCurrentItem(USetupData.LayoutList , GetSettingDescription, 25, 14);
|
||||
DrawGenericListCurrentItem(ComputerList, GetSettingDescription, 25, 11);
|
||||
DrawGenericListCurrentItem(DisplayList , GetSettingDescription, 25, 12);
|
||||
DrawGenericListCurrentItem(KeyboardList, GetSettingDescription, 25, 13);
|
||||
DrawGenericListCurrentItem(LayoutList , GetSettingDescription, 25, 14);
|
||||
|
||||
CONSOLE_InvertTextXY(24, Line, 48, 1);
|
||||
|
||||
@ -1325,7 +1287,30 @@ DeviceSettingsPage(PINPUT_RECORD Ir)
|
||||
else if (Line == 14)
|
||||
return LAYOUT_SETTINGS_PAGE;
|
||||
else if (Line == 16)
|
||||
{
|
||||
/* Retrieve the computer settings */
|
||||
Entry = GetCurrentListEntry(ComputerList);
|
||||
ASSERT(Entry);
|
||||
USetupData.ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
|
||||
/* Retrieve the display settings */
|
||||
Entry = GetCurrentListEntry(DisplayList);
|
||||
ASSERT(Entry);
|
||||
USetupData.DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
|
||||
/* Retrieve the keyboard settings */
|
||||
Entry = GetCurrentListEntry(KeyboardList);
|
||||
ASSERT(Entry);
|
||||
USetupData.KeyboardDriver = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
|
||||
/* Retrieve the keyboard layout */
|
||||
Entry = GetCurrentListEntry(LayoutList);
|
||||
ASSERT(Entry);
|
||||
USetupData.LayoutId = (KLID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||
|
||||
/* The user has accepted the settings; we continue installation */
|
||||
return SELECT_PARTITION_PAGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1412,7 +1397,7 @@ ComputerSettingsPage(PINPUT_RECORD Ir)
|
||||
GENERIC_LIST_UI ListUi;
|
||||
MUIDisplayPage(COMPUTER_SETTINGS_PAGE);
|
||||
|
||||
InitGenericListUi(&ListUi, USetupData.ComputerList, GetSettingDescription);
|
||||
InitGenericListUi(&ListUi, ComputerList, GetSettingDescription);
|
||||
DrawGenericList(&ListUi,
|
||||
2, 18,
|
||||
xScreen - 3,
|
||||
@ -1438,7 +1423,7 @@ DisplaySettingsPage(PINPUT_RECORD Ir)
|
||||
GENERIC_LIST_UI ListUi;
|
||||
MUIDisplayPage(DISPLAY_SETTINGS_PAGE);
|
||||
|
||||
InitGenericListUi(&ListUi, USetupData.DisplayList, GetSettingDescription);
|
||||
InitGenericListUi(&ListUi, DisplayList, GetSettingDescription);
|
||||
DrawGenericList(&ListUi,
|
||||
2, 18,
|
||||
xScreen - 3,
|
||||
@ -1464,7 +1449,7 @@ KeyboardSettingsPage(PINPUT_RECORD Ir)
|
||||
GENERIC_LIST_UI ListUi;
|
||||
MUIDisplayPage(KEYBOARD_SETTINGS_PAGE);
|
||||
|
||||
InitGenericListUi(&ListUi, USetupData.KeyboardList, GetSettingDescription);
|
||||
InitGenericListUi(&ListUi, KeyboardList, GetSettingDescription);
|
||||
DrawGenericList(&ListUi,
|
||||
2, 18,
|
||||
xScreen - 3,
|
||||
@ -1490,7 +1475,7 @@ LayoutSettingsPage(PINPUT_RECORD Ir)
|
||||
GENERIC_LIST_UI ListUi;
|
||||
MUIDisplayPage(LAYOUT_SETTINGS_PAGE);
|
||||
|
||||
InitGenericListUi(&ListUi, USetupData.LayoutList, GetSettingDescription);
|
||||
InitGenericListUi(&ListUi, LayoutList, GetSettingDescription);
|
||||
DrawGenericList(&ListUi,
|
||||
2, 18,
|
||||
xScreen - 3,
|
||||
@ -3416,11 +3401,60 @@ RegistryPage(PINPUT_RECORD Ir)
|
||||
|
||||
MUIDisplayPage(REGISTRY_PAGE);
|
||||
|
||||
/******************/
|
||||
//
|
||||
// TEMPTEMP : Sanity checks for lists consistency
|
||||
//
|
||||
{
|
||||
PGENERIC_LIST_ENTRY Entry;
|
||||
|
||||
{
|
||||
PCWSTR ComputerType;
|
||||
Entry = GetCurrentListEntry(ComputerList);
|
||||
ASSERT(Entry);
|
||||
ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
ASSERT(ComputerType);
|
||||
ASSERT(USetupData.ComputerType == ComputerType);
|
||||
}
|
||||
{
|
||||
PCWSTR DisplayType;
|
||||
Entry = GetCurrentListEntry(DisplayList);
|
||||
ASSERT(Entry);
|
||||
DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
ASSERT(DisplayType);
|
||||
ASSERT(USetupData.DisplayType == DisplayType);
|
||||
}
|
||||
{
|
||||
PCWSTR KeyboardDriver;
|
||||
Entry = GetCurrentListEntry(KeyboardList);
|
||||
ASSERT(Entry);
|
||||
KeyboardDriver = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||
ASSERT(KeyboardDriver);
|
||||
ASSERT(USetupData.KeyboardDriver == KeyboardDriver);
|
||||
}
|
||||
{
|
||||
LCID LocaleId;
|
||||
Entry = GetCurrentListEntry(LanguageList);
|
||||
ASSERT(Entry);
|
||||
LocaleId = (LCID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||
ASSERT(LocaleId != 0);
|
||||
ASSERT(USetupData.LocaleID == LocaleId);
|
||||
}
|
||||
{
|
||||
KLID LayoutId;
|
||||
Entry = GetCurrentListEntry(LayoutList);
|
||||
ASSERT(Entry);
|
||||
LayoutId = (KLID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||
ASSERT(LayoutId != 0);
|
||||
ASSERT(USetupData.LayoutId == LayoutId);
|
||||
}
|
||||
}
|
||||
/******************/
|
||||
|
||||
Error = UpdateRegistry(&USetupData,
|
||||
RepairUpdateFlag,
|
||||
PartitionList,
|
||||
InstallVolume->Info.DriveLetter,
|
||||
SelectedLanguageId,
|
||||
RegistryStatus,
|
||||
&s_SubstSettings);
|
||||
if (Error != ERROR_SUCCESS)
|
||||
@ -4075,6 +4109,8 @@ RunUSetup(VOID)
|
||||
return STATUS_APP_INIT_FAILURE;
|
||||
}
|
||||
|
||||
__debugbreak();
|
||||
|
||||
/* Initialize Setup, phase 0 */
|
||||
InitializeSetup(&USetupData, 0);
|
||||
USetupData.ErrorRoutine = USetupErrorRoutine;
|
||||
@ -4234,6 +4270,33 @@ RunUSetup(VOID)
|
||||
/* Terminate the user-mode PnP manager */
|
||||
TerminateUserModePnpManager();
|
||||
|
||||
/* Destroy the settings lists */
|
||||
if (ComputerList)
|
||||
{
|
||||
DestroyGenericList(ComputerList, TRUE);
|
||||
ComputerList = NULL;
|
||||
}
|
||||
if (DisplayList)
|
||||
{
|
||||
DestroyGenericList(DisplayList, TRUE);
|
||||
DisplayList = NULL;
|
||||
}
|
||||
if (KeyboardList)
|
||||
{
|
||||
DestroyGenericList(KeyboardList, TRUE);
|
||||
KeyboardList = NULL;
|
||||
}
|
||||
if (LanguageList)
|
||||
{
|
||||
DestroyGenericList(LanguageList, FALSE);
|
||||
LanguageList = NULL;
|
||||
}
|
||||
if (LayoutList)
|
||||
{
|
||||
DestroyGenericList(LayoutList, TRUE);
|
||||
LayoutList = NULL;
|
||||
}
|
||||
|
||||
/* Setup has finished */
|
||||
FinishSetup(&USetupData);
|
||||
|
||||
|
@ -71,7 +71,13 @@
|
||||
|
||||
extern HANDLE ProcessHeap;
|
||||
extern BOOLEAN IsUnattendedSetup;
|
||||
extern PCWSTR SelectedLanguageId;
|
||||
|
||||
/* Settings lists *****/
|
||||
extern PGENERIC_LIST ComputerList;
|
||||
extern PGENERIC_LIST DisplayList;
|
||||
extern PGENERIC_LIST KeyboardList;
|
||||
extern PGENERIC_LIST LanguageList;
|
||||
extern PGENERIC_LIST LayoutList;
|
||||
|
||||
typedef enum _PAGE_NUMBER
|
||||
{
|
||||
|
@ -223,8 +223,10 @@ OsLoadOptions = "/FASTDETECT /NOGUIBOOT /NODEBUG"
|
||||
AnsiCodepage = c_1252.nls
|
||||
OemCodepage = c_437.nls
|
||||
UnicodeCasetable = l_intl.nls
|
||||
DefaultLayout = 00000409
|
||||
DefaultLanguage = 00000409
|
||||
;DefaultLayout = 00000409
|
||||
DefaultLayout = 0000041A
|
||||
;DefaultLanguage = 00000409
|
||||
DefaultLanguage = 0000040C
|
||||
|
||||
[Computer.NTx86]
|
||||
pci_up = "Standard PC Uniprocessor"
|
||||
|
Loading…
Reference in New Issue
Block a user