https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f0a1d766f150b6a30c2377bfbe30ec1d44052700

commit f0a1d766f150b6a30c2377bfbe30ec1d44052700
Author:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
AuthorDate: Fri Feb 9 21:13:00 2024 +0100
Commit:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
CommitDate: Fri Feb 9 21:28:23 2024 +0100

    [SETUPLIB][USETUP] Convert internal MUI_LAYOUTS data to numbers.
    
    LangID is a LANGID and LayoutID is a KLID: keyboard layout ID.
    See terminology at 
http://archives.miloush.net/michkap/archive/2004/11/27/270931.html
    
    These tables of MUI_LAYOUTS for each language, correspond to the
    intl.inf LCID map:
    ```
    ; List of locales.
    ; <LCID> = <Description>,<OEMCP>,<Language Group>,<langID:HKL 
pair>,<langID:HKL pair>,...
    ```
    where:
    - each MUI_LANGUAGE entry corresponds to one such locale description;
    - each MUI_LAYOUTS entry corresponds to a <langID:HKL pair>.
    
    See http://archives.miloush.net/michkap/archive/2006/10/14/825404.html
    for some details.
---
 base/setup/lib/lang/af-ZA.h  |  6 ++--
 base/setup/lib/lang/ar-AE.h  |  6 ++--
 base/setup/lib/lang/ar-BH.h  |  6 ++--
 base/setup/lib/lang/ar-DZ.h  |  6 ++--
 base/setup/lib/lang/ar-EG.h  |  6 ++--
 base/setup/lib/lang/ar-IQ.h  |  6 ++--
 base/setup/lib/lang/ar-JO.h  |  6 ++--
 base/setup/lib/lang/ar-KW.h  |  6 ++--
 base/setup/lib/lang/ar-LB.h  |  6 ++--
 base/setup/lib/lang/ar-LY.h  |  6 ++--
 base/setup/lib/lang/ar-MA.h  |  6 ++--
 base/setup/lib/lang/ar-OM.h  |  6 ++--
 base/setup/lib/lang/ar-QA.h  |  6 ++--
 base/setup/lib/lang/ar-SA.h  |  6 ++--
 base/setup/lib/lang/ar-SY.h  |  6 ++--
 base/setup/lib/lang/ar-TN.h  |  6 ++--
 base/setup/lib/lang/ar-YE.h  |  6 ++--
 base/setup/lib/lang/az-AZ.h  |  8 ++---
 base/setup/lib/lang/be-BY.h  |  8 ++---
 base/setup/lib/lang/bg-BG.h  | 10 +++---
 base/setup/lib/lang/bn-BD.h  |  4 +--
 base/setup/lib/lang/bn-IN.h  |  4 +--
 base/setup/lib/lang/ca-ES.h  |  6 ++--
 base/setup/lib/lang/cs-CZ.h  |  8 ++---
 base/setup/lib/lang/da-DK.h  |  4 +--
 base/setup/lib/lang/de-AT.h  |  6 ++--
 base/setup/lib/lang/de-CH.h  |  6 ++--
 base/setup/lib/lang/de-DE.h  |  6 ++--
 base/setup/lib/lang/de-LI.h  |  8 ++---
 base/setup/lib/lang/de-LU.h  |  6 ++--
 base/setup/lib/lang/dv-MV.h  |  6 ++--
 base/setup/lib/lang/el-GR.h  |  6 ++--
 base/setup/lib/lang/en-AU.h  |  4 +--
 base/setup/lib/lang/en-BZ.h  |  4 +--
 base/setup/lib/lang/en-CA.h  |  8 ++---
 base/setup/lib/lang/en-CB.h  |  4 +--
 base/setup/lib/lang/en-GB.h  |  4 +--
 base/setup/lib/lang/en-IE.h  |  6 ++--
 base/setup/lib/lang/en-JM.h  |  4 +--
 base/setup/lib/lang/en-NZ.h  |  4 +--
 base/setup/lib/lang/en-PH.h  |  4 +--
 base/setup/lib/lang/en-TT.h  |  4 +--
 base/setup/lib/lang/en-US.h  |  4 +--
 base/setup/lib/lang/en-ZA.h  |  4 +--
 base/setup/lib/lang/en-ZW.h  |  4 +--
 base/setup/lib/lang/eo-AA.h  |  6 ++--
 base/setup/lib/lang/es-AR.h  |  6 ++--
 base/setup/lib/lang/es-BO.h  |  6 ++--
 base/setup/lib/lang/es-CL.h  |  6 ++--
 base/setup/lib/lang/es-CO.h  |  6 ++--
 base/setup/lib/lang/es-CR.h  |  6 ++--
 base/setup/lib/lang/es-DO.h  |  6 ++--
 base/setup/lib/lang/es-EC.h  |  6 ++--
 base/setup/lib/lang/es-ES.h  |  6 ++--
 base/setup/lib/lang/es-GT.h  |  6 ++--
 base/setup/lib/lang/es-HN.h  |  6 ++--
 base/setup/lib/lang/es-MX.h  |  6 ++--
 base/setup/lib/lang/es-NI.h  |  6 ++--
 base/setup/lib/lang/es-PA.h  |  6 ++--
 base/setup/lib/lang/es-PE.h  |  6 ++--
 base/setup/lib/lang/es-PR.h  |  6 ++--
 base/setup/lib/lang/es-PY.h  |  6 ++--
 base/setup/lib/lang/es-SV.h  |  6 ++--
 base/setup/lib/lang/es-UY.h  |  6 ++--
 base/setup/lib/lang/es-VE.h  |  6 ++--
 base/setup/lib/lang/et-EE.h  |  4 +--
 base/setup/lib/lang/eu-ES.h  |  6 ++--
 base/setup/lib/lang/fa-IR.h  |  8 ++---
 base/setup/lib/lang/fi-FI.h  |  6 ++--
 base/setup/lib/lang/fo-FO.h  |  6 ++--
 base/setup/lib/lang/fr-BE.h  |  6 ++--
 base/setup/lib/lang/fr-CA.h  |  6 ++--
 base/setup/lib/lang/fr-CH.h  |  6 ++--
 base/setup/lib/lang/fr-FR.h  |  6 ++--
 base/setup/lib/lang/fr-LU.h  |  6 ++--
 base/setup/lib/lang/fr-MC.h  |  6 ++--
 base/setup/lib/lang/gl-ES.h  |  6 ++--
 base/setup/lib/lang/gu-IN.h  |  8 ++---
 base/setup/lib/lang/he-IL.h  |  6 ++--
 base/setup/lib/lang/hi-IN.h  |  8 ++---
 base/setup/lib/lang/hr-HR.h  |  6 ++--
 base/setup/lib/lang/hu-HU.h  |  6 ++--
 base/setup/lib/lang/hy-AM.h  | 10 +++---
 base/setup/lib/lang/id-ID.h  |  6 ++--
 base/setup/lib/lang/is-IS.h  |  6 ++--
 base/setup/lib/lang/it-CH.h  |  6 ++--
 base/setup/lib/lang/it-IT.h  |  6 ++--
 base/setup/lib/lang/ja-JP.h  |  6 ++--
 base/setup/lib/lang/ka-GE.h  |  8 ++---
 base/setup/lib/lang/kk-KZ.h  |  8 ++---
 base/setup/lib/lang/kn-IN.h  |  8 ++---
 base/setup/lib/lang/ko-KR.h  |  6 ++--
 base/setup/lib/lang/kok-IN.h |  6 ++--
 base/setup/lib/lang/ky-KG.h  |  6 ++--
 base/setup/lib/lang/lt-LT.h  |  6 ++--
 base/setup/lib/lang/lv-LV.h  |  6 ++--
 base/setup/lib/lang/mk-MK.h  |  6 ++--
 base/setup/lib/lang/mn-MN.h  |  6 ++--
 base/setup/lib/lang/mr-IN.h  |  8 ++---
 base/setup/lib/lang/ms-BN.h  |  4 +--
 base/setup/lib/lang/ms-MY.h  |  4 +--
 base/setup/lib/lang/my-MM.h  |  6 ++--
 base/setup/lib/lang/nl-BE.h  |  6 ++--
 base/setup/lib/lang/nl-NL.h  |  8 ++---
 base/setup/lib/lang/nn-NO.h  |  6 ++--
 base/setup/lib/lang/pa-IN.h  |  8 ++---
 base/setup/lib/lang/pl-PL.h  |  8 ++---
 base/setup/lib/lang/pt-BR.h  |  6 ++--
 base/setup/lib/lang/pt-PT.h  |  6 ++--
 base/setup/lib/lang/rm-CH.h  |  6 ++--
 base/setup/lib/lang/ro-RO.h  |  6 ++--
 base/setup/lib/lang/ru-RU.h  |  6 ++--
 base/setup/lib/lang/sa-IN.h  |  6 ++--
 base/setup/lib/lang/sk-SK.h  |  8 ++---
 base/setup/lib/lang/sl-SI.h  |  6 ++--
 base/setup/lib/lang/sq-AL.h  |  4 +--
 base/setup/lib/lang/sr-SP.h  |  6 ++--
 base/setup/lib/lang/sv-FI.h  |  6 ++--
 base/setup/lib/lang/sv-SE.h  |  6 ++--
 base/setup/lib/lang/sw-KE.h  |  4 +--
 base/setup/lib/lang/syr-SY.h |  6 ++--
 base/setup/lib/lang/ta-IN.h  |  6 ++--
 base/setup/lib/lang/te-IN.h  |  8 ++---
 base/setup/lib/lang/th-TH.h  | 12 +++----
 base/setup/lib/lang/tr-TR.h  |  8 ++---
 base/setup/lib/lang/tt-TA.h  |  8 ++---
 base/setup/lib/lang/uk-UA.h  |  6 ++--
 base/setup/lib/lang/ur-PK.h  |  6 ++--
 base/setup/lib/lang/uz-UZ.h  |  8 ++---
 base/setup/lib/lang/vi-VN.h  |  6 ++--
 base/setup/lib/lang/wa-BE.h  |  6 ++--
 base/setup/lib/lang/zh-CN.h  | 14 ++++----
 base/setup/lib/lang/zh-HK.h  |  6 ++--
 base/setup/lib/lang/zh-MO.h  | 10 +++---
 base/setup/lib/lang/zh-SG.h  | 12 +++----
 base/setup/lib/lang/zh-TW.h  | 10 +++---
 base/setup/lib/mui.c         | 84 ++++++++++++++++++++------------------------
 base/setup/lib/mui.h         | 25 +++++++++----
 base/setup/lib/settings.c    | 24 +++++++------
 base/setup/usetup/usetup.c   | 18 +++++-----
 140 files changed, 508 insertions(+), 497 deletions(-)

diff --git a/base/setup/lib/lang/af-ZA.h b/base/setup/lib/lang/af-ZA.h
index 53d9a03c96c..8e28968b1b3 100644
--- a/base/setup/lib/lang/af-ZA.h
+++ b/base/setup/lib/lang/af-ZA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS afZALayouts[] =
 {
-    { L"0436", L"00000409" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0436, 0x00000409 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-AE.h b/base/setup/lib/lang/ar-AE.h
index 82de046736a..fc044a8010f 100644
--- a/base/setup/lib/lang/ar-AE.h
+++ b/base/setup/lib/lang/ar-AE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arAELayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"3801", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x3801, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-BH.h b/base/setup/lib/lang/ar-BH.h
index 4672e1fa81f..cf50104a722 100644
--- a/base/setup/lib/lang/ar-BH.h
+++ b/base/setup/lib/lang/ar-BH.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arBHLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"3C01", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x3C01, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-DZ.h b/base/setup/lib/lang/ar-DZ.h
index b0e8ec96983..84e0e265898 100644
--- a/base/setup/lib/lang/ar-DZ.h
+++ b/base/setup/lib/lang/ar-DZ.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arDZLayouts[] =
 {
-    { L"040C", L"0000040C" },
-    { L"1401", L"00020401" },
-    { NULL, NULL }
+    { 0x040C, 0x0000040C },
+    { 0x1401, 0x00020401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-EG.h b/base/setup/lib/lang/ar-EG.h
index 23488ed7cbe..c967891d364 100644
--- a/base/setup/lib/lang/ar-EG.h
+++ b/base/setup/lib/lang/ar-EG.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arEGLayouts[] =
 {
-    { L"0C01", L"00000401" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0C01, 0x00000401 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-IQ.h b/base/setup/lib/lang/ar-IQ.h
index d0fb958c734..07d09c6b37c 100644
--- a/base/setup/lib/lang/ar-IQ.h
+++ b/base/setup/lib/lang/ar-IQ.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arIQLayouts[] =
 {
-    { L"0801", L"00000401" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0801, 0x00000401 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-JO.h b/base/setup/lib/lang/ar-JO.h
index cc5a4a1cb56..9bde5d151e0 100644
--- a/base/setup/lib/lang/ar-JO.h
+++ b/base/setup/lib/lang/ar-JO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arJOLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"2C01", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x2C01, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-KW.h b/base/setup/lib/lang/ar-KW.h
index d61d382decd..cbdd5f15379 100644
--- a/base/setup/lib/lang/ar-KW.h
+++ b/base/setup/lib/lang/ar-KW.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arKWLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"3401", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x3401, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-LB.h b/base/setup/lib/lang/ar-LB.h
index f43c6a66225..7c0cd3165a3 100644
--- a/base/setup/lib/lang/ar-LB.h
+++ b/base/setup/lib/lang/ar-LB.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arLBLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"3001", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x3001, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-LY.h b/base/setup/lib/lang/ar-LY.h
index 8fdc9770889..5538aa930f9 100644
--- a/base/setup/lib/lang/ar-LY.h
+++ b/base/setup/lib/lang/ar-LY.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arLYLayouts[] =
 {
-    { L"040C", L"0000040C" },
-    { L"1001", L"00020401" },
-    { NULL, NULL }
+    { 0x040C, 0x0000040C },
+    { 0x1001, 0x00020401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-MA.h b/base/setup/lib/lang/ar-MA.h
index d6e056b9f5f..0d184806e0c 100644
--- a/base/setup/lib/lang/ar-MA.h
+++ b/base/setup/lib/lang/ar-MA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arMALayouts[] =
 {
-    { L"040C", L"0000040C" },
-    { L"1801", L"00020401" },
-    { NULL, NULL }
+    { 0x040C, 0x0000040C },
+    { 0x1801, 0x00020401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-OM.h b/base/setup/lib/lang/ar-OM.h
index 183b32ee77b..89010b6ed18 100644
--- a/base/setup/lib/lang/ar-OM.h
+++ b/base/setup/lib/lang/ar-OM.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arOMLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"2001", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x2001, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-QA.h b/base/setup/lib/lang/ar-QA.h
index bf6cb20f269..2ae101c2754 100644
--- a/base/setup/lib/lang/ar-QA.h
+++ b/base/setup/lib/lang/ar-QA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arQALayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"4001", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x4001, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-SA.h b/base/setup/lib/lang/ar-SA.h
index 403d2a008af..44203dc6cb9 100644
--- a/base/setup/lib/lang/ar-SA.h
+++ b/base/setup/lib/lang/ar-SA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arSALayouts[] =
 {
-    { L"0401", L"00000401" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0401, 0x00000401 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-SY.h b/base/setup/lib/lang/ar-SY.h
index 8f4b9bb710e..19e4d7e1f84 100644
--- a/base/setup/lib/lang/ar-SY.h
+++ b/base/setup/lib/lang/ar-SY.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arSYLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"2801", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x2801, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-TN.h b/base/setup/lib/lang/ar-TN.h
index 051164872be..44140dc72cc 100644
--- a/base/setup/lib/lang/ar-TN.h
+++ b/base/setup/lib/lang/ar-TN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arTNLayouts[] =
 {
-    { L"040C", L"0000040C" },
-    { L"1C01", L"00020401" },
-    { NULL, NULL }
+    { 0x040C, 0x0000040C },
+    { 0x1C01, 0x00020401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ar-YE.h b/base/setup/lib/lang/ar-YE.h
index 19d029ee311..14d2064ccb4 100644
--- a/base/setup/lib/lang/ar-YE.h
+++ b/base/setup/lib/lang/ar-YE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS arYELayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"2401", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x2401, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/az-AZ.h b/base/setup/lib/lang/az-AZ.h
index f2056baafe4..1e60c59beee 100644
--- a/base/setup/lib/lang/az-AZ.h
+++ b/base/setup/lib/lang/az-AZ.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS azAZLayouts[] =
 {
-    { L"082C", L"0000082C" },
-    { L"042C", L"0000042C" },
-    { L"0419", L"00000419" },
-    { NULL, NULL }
+    { 0x082C, 0x0000082C },
+    { 0x042C, 0x0000042C },
+    { 0x0419, 0x00000419 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/be-BY.h b/base/setup/lib/lang/be-BY.h
index de08d3e0c15..0dcf64a01f0 100644
--- a/base/setup/lib/lang/be-BY.h
+++ b/base/setup/lib/lang/be-BY.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS beBYLayouts[] =
 {
-    { L"0423", L"00000423" },
-    { L"0409", L"00000409" },
-    { L"0419", L"00000419" },
-    { NULL, NULL }
+    { 0x0423, 0x00000423 },
+    { 0x0409, 0x00000409 },
+    { 0x0419, 0x00000419 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/bg-BG.h b/base/setup/lib/lang/bg-BG.h
index 8b6b7883c3b..7b532b1ee73 100644
--- a/base/setup/lib/lang/bg-BG.h
+++ b/base/setup/lib/lang/bg-BG.h
@@ -2,9 +2,9 @@
 
 MUI_LAYOUTS bgBGLayouts[] =
 {
-    { L"0402", L"00000402" },
-    { L"0402", L"00020402" },
-    { L"0402", L"00030402" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0402, 0x00000402 },
+    { 0x0402, 0x00020402 },
+    { 0x0402, 0x00030402 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/bn-BD.h b/base/setup/lib/lang/bn-BD.h
index 2d2c510828e..03579077517 100644
--- a/base/setup/lib/lang/bn-BD.h
+++ b/base/setup/lib/lang/bn-BD.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS bnBDLayouts[] =
 {
-    { L"0845", L"00000845" },
-    { NULL, NULL }
+    { 0x0845, 0x00000845 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/bn-IN.h b/base/setup/lib/lang/bn-IN.h
index 607a7697708..d37c02cd80a 100644
--- a/base/setup/lib/lang/bn-IN.h
+++ b/base/setup/lib/lang/bn-IN.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS bnINLayouts[] =
 {
-    { L"0445", L"00000445" },
-    { NULL, NULL }
+    { 0x0445, 0x00000445 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ca-ES.h b/base/setup/lib/lang/ca-ES.h
index f2f6234ba0e..2e60a326db8 100644
--- a/base/setup/lib/lang/ca-ES.h
+++ b/base/setup/lib/lang/ca-ES.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS caESLayouts[] =
 {
-    { L"0403", L"0000040A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0403, 0x0000040A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/cs-CZ.h b/base/setup/lib/lang/cs-CZ.h
index ef5eb7ad2db..5d3223bb986 100644
--- a/base/setup/lib/lang/cs-CZ.h
+++ b/base/setup/lib/lang/cs-CZ.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS csCZLayouts[] =
 {
-    { L"0405", L"00000405" },
-    { L"0405", L"00010405" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0405, 0x00000405 },
+    { 0x0405, 0x00010405 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/da-DK.h b/base/setup/lib/lang/da-DK.h
index cce5930c21d..93f882d8916 100644
--- a/base/setup/lib/lang/da-DK.h
+++ b/base/setup/lib/lang/da-DK.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS daDKLayouts[] =
 {
-    { L"0406", L"00000406" },
-    { NULL, NULL }
+    { 0x0406, 0x00000406 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/de-AT.h b/base/setup/lib/lang/de-AT.h
index 289c2080fcc..7f1a596cfb0 100644
--- a/base/setup/lib/lang/de-AT.h
+++ b/base/setup/lib/lang/de-AT.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS deATLayouts[] =
 {
-    { L"0C07", L"00000407" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0C07, 0x00000407 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/de-CH.h b/base/setup/lib/lang/de-CH.h
index de472e6c532..bb507285d14 100644
--- a/base/setup/lib/lang/de-CH.h
+++ b/base/setup/lib/lang/de-CH.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS deCHLayouts[] =
 {
-    { L"0807", L"00000807" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0807, 0x00000807 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/de-DE.h b/base/setup/lib/lang/de-DE.h
index a1c1d25777d..73e4115082c 100644
--- a/base/setup/lib/lang/de-DE.h
+++ b/base/setup/lib/lang/de-DE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS deDELayouts[] =
 {
-    { L"0407", L"00000407" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0407, 0x00000407 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/de-LI.h b/base/setup/lib/lang/de-LI.h
index 425688ee1c0..d35b5f849f2 100644
--- a/base/setup/lib/lang/de-LI.h
+++ b/base/setup/lib/lang/de-LI.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS deLILayouts[] =
 {
-    { L"1407", L"00000807" },
-    { L"1407", L"00000407" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x1407, 0x00000807 },
+    { 0x1407, 0x00000407 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/de-LU.h b/base/setup/lib/lang/de-LU.h
index 21956e9ff24..18c669bcee3 100644
--- a/base/setup/lib/lang/de-LU.h
+++ b/base/setup/lib/lang/de-LU.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS deLULayouts[] =
 {
-    { L"1007", L"00000407" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x1007, 0x00000407 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/dv-MV.h b/base/setup/lib/lang/dv-MV.h
index b96b1e2fda2..88602ab33fa 100644
--- a/base/setup/lib/lang/dv-MV.h
+++ b/base/setup/lib/lang/dv-MV.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS dvMVLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0465", L"00000465" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0465, 0x00000465 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/el-GR.h b/base/setup/lib/lang/el-GR.h
index 2718d439b0e..9adeedd24ae 100644
--- a/base/setup/lib/lang/el-GR.h
+++ b/base/setup/lib/lang/el-GR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS elGRLayouts[] =
 {
-    { L"0408", L"00000408" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0408, 0x00000408 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-AU.h b/base/setup/lib/lang/en-AU.h
index ffa3b865e83..70790be2da7 100644
--- a/base/setup/lib/lang/en-AU.h
+++ b/base/setup/lib/lang/en-AU.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enAULayouts[] =
 {
-    { L"0C09", L"00000409" },
-    { NULL, NULL }
+    { 0x0C09, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-BZ.h b/base/setup/lib/lang/en-BZ.h
index 4c34df80e4e..402963aef45 100644
--- a/base/setup/lib/lang/en-BZ.h
+++ b/base/setup/lib/lang/en-BZ.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enBZLayouts[] =
 {
-    { L"2809", L"00000409" },
-    { NULL, NULL }
+    { 0x2809, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-CA.h b/base/setup/lib/lang/en-CA.h
index 98000aed71a..91032f32f1d 100644
--- a/base/setup/lib/lang/en-CA.h
+++ b/base/setup/lib/lang/en-CA.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS enCALayouts[] =
 {
-    { L"1009", L"00000409" },
-    { L"1009", L"00011009" },
-    { L"1009", L"00001009" },
-    { NULL, NULL }
+    { 0x1009, 0x00000409 },
+    { 0x1009, 0x00011009 },
+    { 0x1009, 0x00001009 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-CB.h b/base/setup/lib/lang/en-CB.h
index e014b335b87..a1f5aa0ce9a 100644
--- a/base/setup/lib/lang/en-CB.h
+++ b/base/setup/lib/lang/en-CB.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enCBLayouts[] =
 {
-    { L"2409", L"00000409" },
-    { NULL, NULL }
+    { 0x2409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-GB.h b/base/setup/lib/lang/en-GB.h
index 58fe5034d9e..3261c09aa1b 100644
--- a/base/setup/lib/lang/en-GB.h
+++ b/base/setup/lib/lang/en-GB.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enGBLayouts[] =
 {
-    { L"0809", L"00000809" },
-    { NULL, NULL }
+    { 0x0809, 0x00000809 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-IE.h b/base/setup/lib/lang/en-IE.h
index e41db1e4184..073bc88da62 100644
--- a/base/setup/lib/lang/en-IE.h
+++ b/base/setup/lib/lang/en-IE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS enIELayouts[] =
 {
-    { L"1809", L"00001809" },
-    { L"1809", L"00011809" },
-    { NULL, NULL }
+    { 0x1809, 0x00001809 },
+    { 0x1809, 0x00011809 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-JM.h b/base/setup/lib/lang/en-JM.h
index 0b9567609ae..29ed3368144 100644
--- a/base/setup/lib/lang/en-JM.h
+++ b/base/setup/lib/lang/en-JM.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enJMLayouts[] =
 {
-    { L"2009", L"00000409" },
-    { NULL, NULL }
+    { 0x2009, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-NZ.h b/base/setup/lib/lang/en-NZ.h
index 33eb865810a..e2830617d50 100644
--- a/base/setup/lib/lang/en-NZ.h
+++ b/base/setup/lib/lang/en-NZ.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enNZLayouts[] =
 {
-    { L"1409", L"00000409" },
-    { NULL, NULL }
+    { 0x1409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-PH.h b/base/setup/lib/lang/en-PH.h
index 88273d280ad..85557fdbcfc 100644
--- a/base/setup/lib/lang/en-PH.h
+++ b/base/setup/lib/lang/en-PH.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enPHLayouts[] =
 {
-    { L"3409", L"00000409" },
-    { NULL, NULL }
+    { 0x3409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-TT.h b/base/setup/lib/lang/en-TT.h
index e167cfc103a..06c146399b4 100644
--- a/base/setup/lib/lang/en-TT.h
+++ b/base/setup/lib/lang/en-TT.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enTTLayouts[] =
 {
-    { L"2C09", L"00000409" },
-    { NULL, NULL }
+    { 0x2C09, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-US.h b/base/setup/lib/lang/en-US.h
index b175c6d179a..143ab9353c2 100644
--- a/base/setup/lib/lang/en-US.h
+++ b/base/setup/lib/lang/en-US.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enUSLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-ZA.h b/base/setup/lib/lang/en-ZA.h
index 59ceabf5019..239a724ce5d 100644
--- a/base/setup/lib/lang/en-ZA.h
+++ b/base/setup/lib/lang/en-ZA.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enZALayouts[] =
 {
-    { L"1C09", L"00000409" },
-    { NULL, NULL }
+    { 0x1C09, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/en-ZW.h b/base/setup/lib/lang/en-ZW.h
index 917bd6c9e91..28b73d1d93d 100644
--- a/base/setup/lib/lang/en-ZW.h
+++ b/base/setup/lib/lang/en-ZW.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS enZWLayouts[] =
 {
-    { L"3009", L"00000409" },
-    { NULL, NULL }
+    { 0x3009, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/eo-AA.h b/base/setup/lib/lang/eo-AA.h
index 3b72dcf961d..1ad235326fc 100644
--- a/base/setup/lib/lang/eo-AA.h
+++ b/base/setup/lib/lang/eo-AA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS eoAALayouts[] =
 {
-    { L"048F", L"00020409" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x048F, 0x00020409 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-AR.h b/base/setup/lib/lang/es-AR.h
index 4e36f4aa278..b267a5bdcfa 100644
--- a/base/setup/lib/lang/es-AR.h
+++ b/base/setup/lib/lang/es-AR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esARLayouts[] =
 {
-    { L"2C0A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x2C0A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-BO.h b/base/setup/lib/lang/es-BO.h
index f7e210d1283..212680d18a1 100644
--- a/base/setup/lib/lang/es-BO.h
+++ b/base/setup/lib/lang/es-BO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esBOLayouts[] =
 {
-    { L"400A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x400A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-CL.h b/base/setup/lib/lang/es-CL.h
index 88704431994..757658d128b 100644
--- a/base/setup/lib/lang/es-CL.h
+++ b/base/setup/lib/lang/es-CL.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esCLLayouts[] =
 {
-    { L"340A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x340A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-CO.h b/base/setup/lib/lang/es-CO.h
index 3b36be43327..92f533af5f0 100644
--- a/base/setup/lib/lang/es-CO.h
+++ b/base/setup/lib/lang/es-CO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esCOLayouts[] =
 {
-    { L"240A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x240A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-CR.h b/base/setup/lib/lang/es-CR.h
index eff1db06fba..d58a3f175c6 100644
--- a/base/setup/lib/lang/es-CR.h
+++ b/base/setup/lib/lang/es-CR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esCRLayouts[] =
 {
-    { L"140A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x140A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-DO.h b/base/setup/lib/lang/es-DO.h
index 3987c8c7317..8462a8e01fb 100644
--- a/base/setup/lib/lang/es-DO.h
+++ b/base/setup/lib/lang/es-DO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esDOLayouts[] =
 {
-    { L"1C0A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x1C0A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-EC.h b/base/setup/lib/lang/es-EC.h
index ea54ab71312..bd2d0545149 100644
--- a/base/setup/lib/lang/es-EC.h
+++ b/base/setup/lib/lang/es-EC.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esECLayouts[] =
 {
-    { L"300A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x300A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-ES.h b/base/setup/lib/lang/es-ES.h
index 756e7243a13..efd7cd63a0e 100644
--- a/base/setup/lib/lang/es-ES.h
+++ b/base/setup/lib/lang/es-ES.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esESLayouts[] =
 {
-    { L"040A", L"0000040A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x040A, 0x0000040A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-GT.h b/base/setup/lib/lang/es-GT.h
index 5d99a5de347..880bddf2824 100644
--- a/base/setup/lib/lang/es-GT.h
+++ b/base/setup/lib/lang/es-GT.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esGTLayouts[] =
 {
-    { L"100A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x100A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-HN.h b/base/setup/lib/lang/es-HN.h
index 14d5ab9f6af..25d74cea8b9 100644
--- a/base/setup/lib/lang/es-HN.h
+++ b/base/setup/lib/lang/es-HN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esHNLayouts[] =
 {
-    { L"480A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x480A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-MX.h b/base/setup/lib/lang/es-MX.h
index da0bd621d22..5f6d7a01f53 100644
--- a/base/setup/lib/lang/es-MX.h
+++ b/base/setup/lib/lang/es-MX.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esMXLayouts[] =
 {
-    { L"080A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x080A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-NI.h b/base/setup/lib/lang/es-NI.h
index c570367d9b1..92bf16253e8 100644
--- a/base/setup/lib/lang/es-NI.h
+++ b/base/setup/lib/lang/es-NI.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esNILayouts[] =
 {
-    { L"4C0A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x4C0A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-PA.h b/base/setup/lib/lang/es-PA.h
index 81bf70c1c98..3f930d76f2a 100644
--- a/base/setup/lib/lang/es-PA.h
+++ b/base/setup/lib/lang/es-PA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esPALayouts[] =
 {
-    { L"180A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x180A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-PE.h b/base/setup/lib/lang/es-PE.h
index 970402bcf96..5d7950fd612 100644
--- a/base/setup/lib/lang/es-PE.h
+++ b/base/setup/lib/lang/es-PE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esPELayouts[] =
 {
-    { L"280A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x280A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-PR.h b/base/setup/lib/lang/es-PR.h
index e9acb60cac3..cfe70d43baa 100644
--- a/base/setup/lib/lang/es-PR.h
+++ b/base/setup/lib/lang/es-PR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esPRLayouts[] =
 {
-    { L"500A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x500A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-PY.h b/base/setup/lib/lang/es-PY.h
index 640d700b70c..7959ffd56e2 100644
--- a/base/setup/lib/lang/es-PY.h
+++ b/base/setup/lib/lang/es-PY.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esPYLayouts[] =
 {
-    { L"3C0A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x3C0A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-SV.h b/base/setup/lib/lang/es-SV.h
index 18a8c9c4f93..d3619f12727 100644
--- a/base/setup/lib/lang/es-SV.h
+++ b/base/setup/lib/lang/es-SV.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esSVLayouts[] =
 {
-    { L"440A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x440A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-UY.h b/base/setup/lib/lang/es-UY.h
index a007b24c39f..e7f49236630 100644
--- a/base/setup/lib/lang/es-UY.h
+++ b/base/setup/lib/lang/es-UY.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esUYLayouts[] =
 {
-    { L"380A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x380A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/es-VE.h b/base/setup/lib/lang/es-VE.h
index 46baa1c6f0b..e1329d46807 100644
--- a/base/setup/lib/lang/es-VE.h
+++ b/base/setup/lib/lang/es-VE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS esVELayouts[] =
 {
-    { L"200A", L"0000080A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x200A, 0x0000080A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/et-EE.h b/base/setup/lib/lang/et-EE.h
index bed36d40f5f..7445114bd3a 100644
--- a/base/setup/lib/lang/et-EE.h
+++ b/base/setup/lib/lang/et-EE.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS etEELayouts[] =
 {
-    { L"0425", L"00000425" },
-    { NULL, NULL }
+    { 0x0425, 0x00000425 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/eu-ES.h b/base/setup/lib/lang/eu-ES.h
index 1bc40cf3f96..cdc6b39f879 100644
--- a/base/setup/lib/lang/eu-ES.h
+++ b/base/setup/lib/lang/eu-ES.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS euESLayouts[] =
 {
-    { L"042D", L"0000040A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x042D, 0x0000040A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fa-IR.h b/base/setup/lib/lang/fa-IR.h
index 626f2bf969e..bf718fe568a 100644
--- a/base/setup/lib/lang/fa-IR.h
+++ b/base/setup/lib/lang/fa-IR.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS faIRLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0429", L"00000429" },
-    { L"0429", L"00000401" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0429, 0x00000429 },
+    { 0x0429, 0x00000401 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fi-FI.h b/base/setup/lib/lang/fi-FI.h
index 096db150de0..67e1b454100 100644
--- a/base/setup/lib/lang/fi-FI.h
+++ b/base/setup/lib/lang/fi-FI.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS fiFILayouts[] =
 {
-    { L"040b", L"0000040b" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x040b, 0x0000040b },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fo-FO.h b/base/setup/lib/lang/fo-FO.h
index 01b190b0d17..98ac5b06dfe 100644
--- a/base/setup/lib/lang/fo-FO.h
+++ b/base/setup/lib/lang/fo-FO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS foFOLayouts[] =
 {
-    { L"0438", L"00000406" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0438, 0x00000406 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fr-BE.h b/base/setup/lib/lang/fr-BE.h
index 994e4dd75bd..b836bc851ac 100644
--- a/base/setup/lib/lang/fr-BE.h
+++ b/base/setup/lib/lang/fr-BE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS frBELayouts[] =
 {
-    { L"080C", L"0000080C" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x080C, 0x0000080C },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fr-CA.h b/base/setup/lib/lang/fr-CA.h
index 918a421f741..8f938eec5f5 100644
--- a/base/setup/lib/lang/fr-CA.h
+++ b/base/setup/lib/lang/fr-CA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS frCALayouts[] =
 {
-    { L"0C0C", L"00011009" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0C0C, 0x00011009 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fr-CH.h b/base/setup/lib/lang/fr-CH.h
index 8b083c1bcad..7db04e4e98b 100644
--- a/base/setup/lib/lang/fr-CH.h
+++ b/base/setup/lib/lang/fr-CH.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS frCHLayouts[] =
 {
-    { L"100C", L"0000100C" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x100C, 0x0000100C },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fr-FR.h b/base/setup/lib/lang/fr-FR.h
index 771cabbfe26..a899f94d135 100644
--- a/base/setup/lib/lang/fr-FR.h
+++ b/base/setup/lib/lang/fr-FR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS frFRLayouts[] =
 {
-    { L"040C", L"0000040C" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x040C, 0x0000040C },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fr-LU.h b/base/setup/lib/lang/fr-LU.h
index 18fb3a7d623..2d9fa65f7f2 100644
--- a/base/setup/lib/lang/fr-LU.h
+++ b/base/setup/lib/lang/fr-LU.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS frLULayouts[] =
 {
-    { L"140C", L"0000040C" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x140C, 0x0000040C },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/fr-MC.h b/base/setup/lib/lang/fr-MC.h
index 1720d0a5fce..4f6c5063a45 100644
--- a/base/setup/lib/lang/fr-MC.h
+++ b/base/setup/lib/lang/fr-MC.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS frMCLayouts[] =
 {
-    { L"180C", L"0000040C" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x180C, 0x0000040C },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/gl-ES.h b/base/setup/lib/lang/gl-ES.h
index 31acfd370cf..169864bf9da 100644
--- a/base/setup/lib/lang/gl-ES.h
+++ b/base/setup/lib/lang/gl-ES.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS glESLayouts[] =
 {
-    { L"0456", L"0000040A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0456, 0x0000040A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/gu-IN.h b/base/setup/lib/lang/gu-IN.h
index c0cb2cbf21a..d963fc231b9 100644
--- a/base/setup/lib/lang/gu-IN.h
+++ b/base/setup/lib/lang/gu-IN.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS guINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0447", L"00000447" },
-    { L"0439", L"00000439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0447, 0x00000447 },
+    { 0x0439, 0x00000439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/he-IL.h b/base/setup/lib/lang/he-IL.h
index 9c18824630c..a61f0558c7e 100644
--- a/base/setup/lib/lang/he-IL.h
+++ b/base/setup/lib/lang/he-IL.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS heILLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"040D", L"0000040D" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x040D, 0x0000040D },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/hi-IN.h b/base/setup/lib/lang/hi-IN.h
index caf0c3d8917..2d12b8413cb 100644
--- a/base/setup/lib/lang/hi-IN.h
+++ b/base/setup/lib/lang/hi-IN.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS hiINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0439", L"00010439" },
-    { L"0439", L"00000439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0439, 0x00010439 },
+    { 0x0439, 0x00000439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/hr-HR.h b/base/setup/lib/lang/hr-HR.h
index 33a62e2873b..c45929ac93d 100644
--- a/base/setup/lib/lang/hr-HR.h
+++ b/base/setup/lib/lang/hr-HR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS hrHRLayouts[] =
 {
-    { L"041A", L"0000041A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x041A, 0x0000041A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/hu-HU.h b/base/setup/lib/lang/hu-HU.h
index a59208b6bb8..113279a8df7 100644
--- a/base/setup/lib/lang/hu-HU.h
+++ b/base/setup/lib/lang/hu-HU.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS huHULayouts[] =
 {
-    { L"040E", L"0000040E" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x040E, 0x0000040E },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/hy-AM.h b/base/setup/lib/lang/hy-AM.h
index 249c6d67c53..b5310722d29 100644
--- a/base/setup/lib/lang/hy-AM.h
+++ b/base/setup/lib/lang/hy-AM.h
@@ -2,9 +2,9 @@
 
 MUI_LAYOUTS hyAMLayouts[] =
 {
-    { L"042B", L"0000042B" },
-    { L"042B", L"0001042B" },
-    { L"0419", L"00000419" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x042B, 0x0000042B },
+    { 0x042B, 0x0001042B },
+    { 0x0419, 0x00000419 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/id-ID.h b/base/setup/lib/lang/id-ID.h
index 0cd4cebfa94..0ec00989fc5 100644
--- a/base/setup/lib/lang/id-ID.h
+++ b/base/setup/lib/lang/id-ID.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS idIDLayouts[] =
 {
-    { L"0421", L"00000409" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0421, 0x00000409 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/is-IS.h b/base/setup/lib/lang/is-IS.h
index aad013eab52..e88bb7616f0 100644
--- a/base/setup/lib/lang/is-IS.h
+++ b/base/setup/lib/lang/is-IS.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS isISLayouts[] =
 {
-    { L"040F", L"0000040F" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x040F, 0x0000040F },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/it-CH.h b/base/setup/lib/lang/it-CH.h
index eb6748bd4bf..01e13ecade8 100644
--- a/base/setup/lib/lang/it-CH.h
+++ b/base/setup/lib/lang/it-CH.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS itCHLayouts[] =
 {
-    { L"0810", L"00000410" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0810, 0x00000410 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/it-IT.h b/base/setup/lib/lang/it-IT.h
index 6add5cae6d3..b0ef425ddd8 100644
--- a/base/setup/lib/lang/it-IT.h
+++ b/base/setup/lib/lang/it-IT.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS itITLayouts[] =
 {
-    { L"0410", L"00000410" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0410, 0x00000410 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ja-JP.h b/base/setup/lib/lang/ja-JP.h
index f73c488758b..99b324e13ae 100644
--- a/base/setup/lib/lang/ja-JP.h
+++ b/base/setup/lib/lang/ja-JP.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS jaJPLayouts[] =
 {
-//    { L"0411", L"E0010411" }, // We don't have preinstalled IMEs.
-    { L"0411", L"00000411" },
-    { NULL, NULL }
+//    { 0x0411, 0xE0010411 }, // We don't have preinstalled IMEs.
+    { 0x0411, 0x00000411 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ka-GE.h b/base/setup/lib/lang/ka-GE.h
index c1036087b82..a3a3b5964ae 100644
--- a/base/setup/lib/lang/ka-GE.h
+++ b/base/setup/lib/lang/ka-GE.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS kaGELayouts[] =
 {
-    { L"0437", L"00000437" },
-    { L"0409", L"00000409" },
-    { L"0419", L"00000419" },
-    { NULL, NULL }
+    { 0x0437, 0x00000437 },
+    { 0x0409, 0x00000409 },
+    { 0x0419, 0x00000419 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/kk-KZ.h b/base/setup/lib/lang/kk-KZ.h
index 86723663b94..599fc5fc44d 100644
--- a/base/setup/lib/lang/kk-KZ.h
+++ b/base/setup/lib/lang/kk-KZ.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS kkKZLayouts[] =
 {
-    { L"043F", L"0000043F" },
-    { L"0409", L"00000409" },
-    { L"0419", L"00000419" },
-    { NULL, NULL }
+    { 0x043F, 0x0000043F },
+    { 0x0409, 0x00000409 },
+    { 0x0419, 0x00000419 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/kn-IN.h b/base/setup/lib/lang/kn-IN.h
index 1441331ed5e..76315ca06f9 100644
--- a/base/setup/lib/lang/kn-IN.h
+++ b/base/setup/lib/lang/kn-IN.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS knINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"044B", L"0000044B" },
-    { L"0439", L"00010439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x044B, 0x0000044B },
+    { 0x0439, 0x00010439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ko-KR.h b/base/setup/lib/lang/ko-KR.h
index 578c53a9c3f..b2ea067461f 100644
--- a/base/setup/lib/lang/ko-KR.h
+++ b/base/setup/lib/lang/ko-KR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS koKRLayouts[] =
 {
-//    { L"0412", L"E0010412" }, // We don't have preinstalled IMEs.
-    { L"0412", L"00000412" },
-    { NULL, NULL }
+//    { 0x0412, 0xE0010412 }, // We don't have preinstalled IMEs.
+    { 0x0412, 0x00000412 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/kok-IN.h b/base/setup/lib/lang/kok-IN.h
index cbfcab3437a..f2f330ae97d 100644
--- a/base/setup/lib/lang/kok-IN.h
+++ b/base/setup/lib/lang/kok-IN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS kokINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0457", L"00000439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0457, 0x00000439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ky-KG.h b/base/setup/lib/lang/ky-KG.h
index e71b40cf2e9..9308056da9b 100644
--- a/base/setup/lib/lang/ky-KG.h
+++ b/base/setup/lib/lang/ky-KG.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS kyKGLayouts[] =
 {
-    { L"0440", L"00000440" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0440, 0x00000440 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/lt-LT.h b/base/setup/lib/lang/lt-LT.h
index 1c1207e137a..707f0662809 100644
--- a/base/setup/lib/lang/lt-LT.h
+++ b/base/setup/lib/lang/lt-LT.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS ltLTLayouts[] =
 {
-    { L"0427", L"00010427" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0427, 0x00010427 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/lv-LV.h b/base/setup/lib/lang/lv-LV.h
index 7083ddd8c78..d84c8f97ec7 100644
--- a/base/setup/lib/lang/lv-LV.h
+++ b/base/setup/lib/lang/lv-LV.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS lvLVLayouts[] =
 {
-    { L"0426", L"00000426" },
-//    { L"0426", L"00010426" },
-    { NULL, NULL }
+    { 0x0426, 0x00000426 },
+//    { 0x0426, 0x00010426 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/mk-MK.h b/base/setup/lib/lang/mk-MK.h
index 4acab642d53..99662cdd3de 100644
--- a/base/setup/lib/lang/mk-MK.h
+++ b/base/setup/lib/lang/mk-MK.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS mkMKLayouts[] =
 {
-    { L"042F", L"0000042F" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x042F, 0x0000042F },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/mn-MN.h b/base/setup/lib/lang/mn-MN.h
index 6dec34de4c3..5e334c042c2 100644
--- a/base/setup/lib/lang/mn-MN.h
+++ b/base/setup/lib/lang/mn-MN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS mnMNLayouts[] =
 {
-    { L"0450", L"00000450" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0450, 0x00000450 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/mr-IN.h b/base/setup/lib/lang/mr-IN.h
index ff2e09ba19d..2e450600027 100644
--- a/base/setup/lib/lang/mr-IN.h
+++ b/base/setup/lib/lang/mr-IN.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS mrINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"044E", L"0000044E" },
-    { L"044E", L"00000439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x044E, 0x0000044E },
+    { 0x044E, 0x00000439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ms-BN.h b/base/setup/lib/lang/ms-BN.h
index e0563c8665b..d9d62a7c9db 100644
--- a/base/setup/lib/lang/ms-BN.h
+++ b/base/setup/lib/lang/ms-BN.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS msBNLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ms-MY.h b/base/setup/lib/lang/ms-MY.h
index 646eb6a90f9..f71c5221403 100644
--- a/base/setup/lib/lang/ms-MY.h
+++ b/base/setup/lib/lang/ms-MY.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS msMYLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/my-MM.h b/base/setup/lib/lang/my-MM.h
index 9b732ad7a92..ad613bd6a8a 100644
--- a/base/setup/lib/lang/my-MM.h
+++ b/base/setup/lib/lang/my-MM.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS myMMLayouts[] =
 {
-    { L"0455", L"00000455" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0455, 0x00000455 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/nl-BE.h b/base/setup/lib/lang/nl-BE.h
index ebf61e67f81..6509f51ba1e 100644
--- a/base/setup/lib/lang/nl-BE.h
+++ b/base/setup/lib/lang/nl-BE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS nlBELayouts[] =
 {
-    { L"0813", L"00000813" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0813, 0x00000813 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/nl-NL.h b/base/setup/lib/lang/nl-NL.h
index ead630c9881..2ce5a8aa660 100644
--- a/base/setup/lib/lang/nl-NL.h
+++ b/base/setup/lib/lang/nl-NL.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS nlNLLayouts[] =
 {
-    { L"0413", L"00020409" },
-    { L"0413", L"00000413" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0413, 0x00020409 },
+    { 0x0413, 0x00000413 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/nn-NO.h b/base/setup/lib/lang/nn-NO.h
index 8597b7405eb..d5ebe114082 100644
--- a/base/setup/lib/lang/nn-NO.h
+++ b/base/setup/lib/lang/nn-NO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS nnNOLayouts[] =
 {
-    { L"0414", L"00000414" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0414, 0x00000414 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/pa-IN.h b/base/setup/lib/lang/pa-IN.h
index 44cc3c30e6b..b0f66c95524 100644
--- a/base/setup/lib/lang/pa-IN.h
+++ b/base/setup/lib/lang/pa-IN.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS paINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0446", L"00000446" },
-    { L"0439", L"00010439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0446, 0x00000446 },
+    { 0x0439, 0x00010439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/pl-PL.h b/base/setup/lib/lang/pl-PL.h
index 1e720e7e623..e67ee4d4171 100644
--- a/base/setup/lib/lang/pl-PL.h
+++ b/base/setup/lib/lang/pl-PL.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS plPLLayouts[] =
 {
-    { L"0415", L"00000415" },
-    { L"0415", L"00010415" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0415, 0x00000415 },
+    { 0x0415, 0x00010415 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/pt-BR.h b/base/setup/lib/lang/pt-BR.h
index 6c545ad785a..e13a16b3618 100644
--- a/base/setup/lib/lang/pt-BR.h
+++ b/base/setup/lib/lang/pt-BR.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS ptBRLayouts[] =
 {
-    { L"0416", L"00000416" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0416, 0x00000416 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/pt-PT.h b/base/setup/lib/lang/pt-PT.h
index 6faf386505c..74fa1d389d2 100644
--- a/base/setup/lib/lang/pt-PT.h
+++ b/base/setup/lib/lang/pt-PT.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS ptPTLayouts[] =
 {
-    { L"0816", L"00000816" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0816, 0x00000816 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/rm-CH.h b/base/setup/lib/lang/rm-CH.h
index d36a5e632df..d2ba921cdf5 100644
--- a/base/setup/lib/lang/rm-CH.h
+++ b/base/setup/lib/lang/rm-CH.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS rmCHLayouts[] =
 {
-    { L"0417", L"00000410" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0417, 0x00000410 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ro-RO.h b/base/setup/lib/lang/ro-RO.h
index ae7f1acbea9..b271007d733 100644
--- a/base/setup/lib/lang/ro-RO.h
+++ b/base/setup/lib/lang/ro-RO.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS roROLayouts[] =
 {
-    { L"0418", L"00010418" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0418, 0x00010418 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ru-RU.h b/base/setup/lib/lang/ru-RU.h
index c9c502cfc28..bbb02f2bac6 100644
--- a/base/setup/lib/lang/ru-RU.h
+++ b/base/setup/lib/lang/ru-RU.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS ruRULayouts[] =
 {
-    { L"0419", L"00000419" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0419, 0x00000419 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sa-IN.h b/base/setup/lib/lang/sa-IN.h
index 8d8442dcb72..9dd0d266a55 100644
--- a/base/setup/lib/lang/sa-IN.h
+++ b/base/setup/lib/lang/sa-IN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS saINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"044F", L"00000439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x044F, 0x00000439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sk-SK.h b/base/setup/lib/lang/sk-SK.h
index 005dcd3afdd..be5916d9aae 100644
--- a/base/setup/lib/lang/sk-SK.h
+++ b/base/setup/lib/lang/sk-SK.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS skSKLayouts[] =
 {
-    { L"041B", L"0000041B" },
-    { L"041B", L"0001041B" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x041B, 0x0000041B },
+    { 0x041B, 0x0001041B },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sl-SI.h b/base/setup/lib/lang/sl-SI.h
index 29a0133383c..334218f827b 100644
--- a/base/setup/lib/lang/sl-SI.h
+++ b/base/setup/lib/lang/sl-SI.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS slSILayouts[] =
 {
-    { L"0424", L"00000424" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0424, 0x00000424 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sq-AL.h b/base/setup/lib/lang/sq-AL.h
index 195368a0abf..0ce724b426a 100644
--- a/base/setup/lib/lang/sq-AL.h
+++ b/base/setup/lib/lang/sq-AL.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS sqALLayouts[] =
 {
-    { L"041C", L"0000041C" },
-    { NULL, NULL }
+    { 0x041C, 0x0000041C },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sr-SP.h b/base/setup/lib/lang/sr-SP.h
index 022248a7fbf..9163d902031 100644
--- a/base/setup/lib/lang/sr-SP.h
+++ b/base/setup/lib/lang/sr-SP.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS srSPLayouts[] =
 {
-    { L"0C1A", L"00000C1A" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0C1A, 0x00000C1A },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sv-FI.h b/base/setup/lib/lang/sv-FI.h
index c90085576e9..7f1b85770c5 100644
--- a/base/setup/lib/lang/sv-FI.h
+++ b/base/setup/lib/lang/sv-FI.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS svFILayouts[] =
 {
-    { L"081D", L"0000041D" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x081D, 0x0000041D },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sv-SE.h b/base/setup/lib/lang/sv-SE.h
index 66728045164..14c2ca3aacf 100644
--- a/base/setup/lib/lang/sv-SE.h
+++ b/base/setup/lib/lang/sv-SE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS svSELayouts[] =
 {
-    { L"041D", L"0000041D" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x041D, 0x0000041D },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/sw-KE.h b/base/setup/lib/lang/sw-KE.h
index 3a58152f154..8c8ee73298e 100644
--- a/base/setup/lib/lang/sw-KE.h
+++ b/base/setup/lib/lang/sw-KE.h
@@ -2,6 +2,6 @@
 
 MUI_LAYOUTS swKELayouts[] =
 {
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/syr-SY.h b/base/setup/lib/lang/syr-SY.h
index 0a5f91cc4ba..0c0dead7451 100644
--- a/base/setup/lib/lang/syr-SY.h
+++ b/base/setup/lib/lang/syr-SY.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS syrSYLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"045A", L"0000045A" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x045A, 0x0000045A },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ta-IN.h b/base/setup/lib/lang/ta-IN.h
index 9322299c4c4..c5b52693ca6 100644
--- a/base/setup/lib/lang/ta-IN.h
+++ b/base/setup/lib/lang/ta-IN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS taINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0449", L"00000449" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0449, 0x00000449 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/te-IN.h b/base/setup/lib/lang/te-IN.h
index cd80fcc4429..2f4593e987f 100644
--- a/base/setup/lib/lang/te-IN.h
+++ b/base/setup/lib/lang/te-IN.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS teINLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"044A", L"0000044A" },
-    { L"0439", L"00010439" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x044A, 0x0000044A },
+    { 0x0439, 0x00010439 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/th-TH.h b/base/setup/lib/lang/th-TH.h
index 6f50c4217d9..15913fce5dc 100644
--- a/base/setup/lib/lang/th-TH.h
+++ b/base/setup/lib/lang/th-TH.h
@@ -2,10 +2,10 @@
 
 MUI_LAYOUTS thTHLayouts[] =
 {
-    { L"041E", L"0002041E" },
-    { L"041E", L"0000041E" },
-    { L"041E", L"0003041E" },
-    { L"041E", L"0001041E" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x041E, 0x0002041E },
+    { 0x041E, 0x0000041E },
+    { 0x041E, 0x0003041E },
+    { 0x041E, 0x0001041E },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/tr-TR.h b/base/setup/lib/lang/tr-TR.h
index cedb76c9933..747b1175a9d 100644
--- a/base/setup/lib/lang/tr-TR.h
+++ b/base/setup/lib/lang/tr-TR.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS trTRLayouts[] =
 {
-    { L"041F", L"0000041F" },
-    { L"041F", L"0001041F" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x041F, 0x0000041F },
+    { 0x041F, 0x0001041F },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/tt-TA.h b/base/setup/lib/lang/tt-TA.h
index b54ebfdc0ba..a72ad214555 100644
--- a/base/setup/lib/lang/tt-TA.h
+++ b/base/setup/lib/lang/tt-TA.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS ttTALayouts[] =
 {
-    { L"0444", L"00000444" },
-    { L"0409", L"00000409" },
-    { L"0419", L"00000419" },
-    { NULL, NULL }
+    { 0x0444, 0x00000444 },
+    { 0x0409, 0x00000409 },
+    { 0x0419, 0x00000419 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/uk-UA.h b/base/setup/lib/lang/uk-UA.h
index a5d98c1e3c4..35a33b4153f 100644
--- a/base/setup/lib/lang/uk-UA.h
+++ b/base/setup/lib/lang/uk-UA.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS ukUALayouts[] =
 {
-    { L"0422", L"00000422" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0422, 0x00000422 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/ur-PK.h b/base/setup/lib/lang/ur-PK.h
index 73beeee167b..e2f979d76df 100644
--- a/base/setup/lib/lang/ur-PK.h
+++ b/base/setup/lib/lang/ur-PK.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS urPKLayouts[] =
 {
-    { L"0420", L"00000420" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0420, 0x00000420 },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/uz-UZ.h b/base/setup/lib/lang/uz-UZ.h
index af15bb90dfb..e0ba07ac238 100644
--- a/base/setup/lib/lang/uz-UZ.h
+++ b/base/setup/lib/lang/uz-UZ.h
@@ -2,8 +2,8 @@
 
 MUI_LAYOUTS uzUZLayouts[] =
 {
-    { L"0843", L"00000843" },
-    { L"0443", L"00000409" },
-    { L"0419", L"00000419" },
-    { NULL, NULL }
+    { 0x0843, 0x00000843 },
+    { 0x0443, 0x00000409 },
+    { 0x0419, 0x00000419 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/vi-VN.h b/base/setup/lib/lang/vi-VN.h
index dfd3986f21c..6fec18eb8db 100644
--- a/base/setup/lib/lang/vi-VN.h
+++ b/base/setup/lib/lang/vi-VN.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS viVNLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"042A", L"0000042A" },
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x042A, 0x0000042A },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/wa-BE.h b/base/setup/lib/lang/wa-BE.h
index 7ec2c7861fc..d8bb3eed680 100644
--- a/base/setup/lib/lang/wa-BE.h
+++ b/base/setup/lib/lang/wa-BE.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS waBELayouts[] =
 {
-    { L"0490", L"0000080C" },
-    { L"0409", L"00000409" },
-    { NULL, NULL }
+    { 0x0490, 0x0000080C },
+    { 0x0409, 0x00000409 },
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/zh-CN.h b/base/setup/lib/lang/zh-CN.h
index 5f5e74bfc4a..862484b21a4 100644
--- a/base/setup/lib/lang/zh-CN.h
+++ b/base/setup/lib/lang/zh-CN.h
@@ -2,11 +2,11 @@
 
 MUI_LAYOUTS zhCNLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0804", L"00000804" },
-//    { L"0804", L"E00E0804" }, // We don't have preinstalled IMEs.
-//    { L"0804", L"E0010804" }, // We don't have preinstalled IMEs.
-//    { L"0804", L"E0030804" }, // We don't have preinstalled IMEs.
-//    { L"0804", L"E0040804" }, // We don't have preinstalled IMEs.
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0804, 0x00000804 },
+//    { 0x0804, 0xE00E0804 }, // We don't have preinstalled IMEs.
+//    { 0x0804, 0xE0010804 }, // We don't have preinstalled IMEs.
+//    { 0x0804, 0xE0030804 }, // We don't have preinstalled IMEs.
+//    { 0x0804, 0xE0040804 }, // We don't have preinstalled IMEs.
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/zh-HK.h b/base/setup/lib/lang/zh-HK.h
index 4e7c99fe7f7..f31bbc1b059 100644
--- a/base/setup/lib/lang/zh-HK.h
+++ b/base/setup/lib/lang/zh-HK.h
@@ -2,7 +2,7 @@
 
 MUI_LAYOUTS zhHKLayouts[] =
 {
-    { L"0409", L"00000409" },
-//    { L"0C04", L"E0080404" }, // We don't have preinstalled IMEs.
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+//    { 0x0C04, 0xE0080404 }, // We don't have preinstalled IMEs.
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/zh-MO.h b/base/setup/lib/lang/zh-MO.h
index 31e8cb8672f..2193a550b0c 100644
--- a/base/setup/lib/lang/zh-MO.h
+++ b/base/setup/lib/lang/zh-MO.h
@@ -2,9 +2,9 @@
 
 MUI_LAYOUTS zhMOLayouts[] =
 {
-    { L"0409", L"00000409" },
-//    { L"0804", L"E00E0804" }, // We don't have preinstalled IMEs.
-//    { L"0404", L"E0020404" }, // We don't have preinstalled IMEs.
-//    { L"0404", L"E0080404" }, // We don't have preinstalled IMEs.
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+//    { 0x0804, 0xE00E0804 }, // We don't have preinstalled IMEs.
+//    { 0x0404, 0xE0020404 }, // We don't have preinstalled IMEs.
+//    { 0x0404, 0xE0080404 }, // We don't have preinstalled IMEs.
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/zh-SG.h b/base/setup/lib/lang/zh-SG.h
index 5e4934b3d87..94de6566870 100644
--- a/base/setup/lib/lang/zh-SG.h
+++ b/base/setup/lib/lang/zh-SG.h
@@ -2,10 +2,10 @@
 
 MUI_LAYOUTS zhSGLayouts[] =
 {
-    { L"0409", L"00000409" },
-//    { L"0804", L"E00E0804" }, // We don't have preinstalled IMEs.
-//    { L"0804", L"E0010804" }, // We don't have preinstalled IMEs.
-//    { L"0804", L"E0030804" }, // We don't have preinstalled IMEs.
-//    { L"0804", L"E0040804" }, // We don't have preinstalled IMEs.
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+//    { 0x0804, 0xE00E0804 }, // We don't have preinstalled IMEs.
+//    { 0x0804, 0xE0010804 }, // We don't have preinstalled IMEs.
+//    { 0x0804, 0xE0030804 }, // We don't have preinstalled IMEs.
+//    { 0x0804, 0xE0040804 }, // We don't have preinstalled IMEs.
+    { 0, 0 }
 };
diff --git a/base/setup/lib/lang/zh-TW.h b/base/setup/lib/lang/zh-TW.h
index 7f05999fadf..76b8b66acdc 100644
--- a/base/setup/lib/lang/zh-TW.h
+++ b/base/setup/lib/lang/zh-TW.h
@@ -2,9 +2,9 @@
 
 MUI_LAYOUTS zhTWLayouts[] =
 {
-    { L"0409", L"00000409" },
-    { L"0404", L"00000404" },
-//    { L"0404", L"E0080404" }, // We don't have preinstalled IMEs.
-//    { L"0404", L"E0010404" }, // We don't have preinstalled IMEs.
-    { NULL, NULL }
+    { 0x0409, 0x00000409 },
+    { 0x0404, 0x00000404 },
+//    { 0x0404, 0xE0080404 }, // We don't have preinstalled IMEs.
+//    { 0x0404, 0xE0010404 }, // We don't have preinstalled IMEs.
+    { 0, 0 }
 };
diff --git a/base/setup/lib/mui.c b/base/setup/lib/mui.c
index cc2bda08eef..c8d1ea8cfda 100644
--- a/base/setup/lib/mui.c
+++ b/base/setup/lib/mui.c
@@ -84,11 +84,11 @@ IsLanguageAvailable(
 }
 
 
-PCWSTR
+KLID
 MUIDefaultKeyboardLayout(
     IN PCWSTR LanguageId)
 {
-    ULONG lngIndex = max(FindLanguageIndex(LanguageId), 0);
+    ULONG lngIndex = FindLanguageIndex(LanguageId);
     return MUILanguageList[lngIndex].MuiLayouts[0].LayoutID;
 }
 
@@ -96,7 +96,7 @@ PCWSTR
 MUIGetOEMCodePage(
     IN PCWSTR LanguageId)
 {
-    ULONG lngIndex = max(FindLanguageIndex(LanguageId), 0);
+    ULONG lngIndex = FindLanguageIndex(LanguageId);
     return MUILanguageList[lngIndex].OEMCPage;
 }
 
@@ -104,7 +104,7 @@ PCWSTR
 MUIGetGeoID(
     IN PCWSTR LanguageId)
 {
-    ULONG lngIndex = max(FindLanguageIndex(LanguageId), 0);
+    ULONG lngIndex = FindLanguageIndex(LanguageId);
     return MUILanguageList[lngIndex].GeoID;
 }
 
@@ -112,7 +112,7 @@ const MUI_LAYOUTS*
 MUIGetLayoutsList(
     IN PCWSTR LanguageId)
 {
-    ULONG lngIndex = max(FindLanguageIndex(LanguageId), 0);
+    ULONG lngIndex = FindLanguageIndex(LanguageId);
     return MUILanguageList[lngIndex].MuiLayouts;
 }
 
@@ -206,7 +206,7 @@ AddHotkeySettings(
 
 BOOLEAN
 AddKbLayoutsToRegistry(
-    IN const MUI_LAYOUTS *MuiLayouts)
+    _In_ const MUI_LAYOUTS* MuiLayouts)
 {
     OBJECT_ATTRIBUTES ObjectAttributes;
     UNICODE_STRING KeyName;
@@ -215,13 +215,14 @@ AddKbLayoutsToRegistry(
     HANDLE SubKeyHandle;
     NTSTATUS Status;
     ULONG Disposition;
-    ULONG uIndex = 0;
-    ULONG uCount = 0;
+    ULONG uIndex;
+    ULONG uCount;
     WCHAR szKeyName[48] = L".DEFAULT\\Keyboard Layout";
     WCHAR szValueName[3 + 1];
-    WCHAR szLangID[8 + 1];
+    WCHAR szSubstID[8 + 1];
+    WCHAR szLayoutID[8 + 1];
 
-    // Open the keyboard layout key
+    /* Open the keyboard layout key */
     RtlInitUnicodeString(&KeyName, szKeyName);
     InitializeObjectAttributes(&ObjectAttributes,
                                &KeyName,
@@ -246,11 +247,9 @@ AddKbLayoutsToRegistry(
 
     KeyName.MaximumLength = sizeof(szKeyName);
     Status = RtlAppendUnicodeToString(&KeyName, L"\\Preload");
-
     if (!NT_SUCCESS(Status))
     {
-        DPRINT1("RtlAppend failed! (%lx)\n", Status);
-        DPRINT1("String is %wZ\n", &KeyName);
+        DPRINT1("RtlAppend() failed (%lx), string is '%wZ'\n", Status, 
&KeyName);
         return FALSE;
     }
 
@@ -290,80 +289,73 @@ AddKbLayoutsToRegistry(
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("NtCreateKey() failed (Status %lx)\n", Status);
-        NtClose(SubKeyHandle);
-        NtClose(KeyHandle);
-        return FALSE;
+        goto Quit;
     }
 
-    while (MuiLayouts[uIndex].LangID != NULL)
+    uCount = 0;
+    for (uIndex = 0; (uIndex <= 19) && (MuiLayouts[uIndex].LangID != 0); 
++uIndex)
     {
-        if (uIndex > 19) break;
-
-        RtlStringCchPrintfW(szValueName, ARRAYSIZE(szValueName), L"%u", uIndex 
+ 1);
+        RtlStringCchPrintfW(szValueName, _countof(szValueName), L"%u", uIndex 
+ 1);
         RtlInitUnicodeString(&ValueName, szValueName);
 
-        RtlStringCchPrintfW(szLangID, ARRAYSIZE(szLangID), L"0000%s", 
MuiLayouts[uIndex].LangID);
+        RtlStringCchPrintfW(szLayoutID, _countof(szLayoutID), L"%08lx", 
MuiLayouts[uIndex].LayoutID);
 
-        if (_wcsicmp(szLangID, MuiLayouts[uIndex].LayoutID) == 0)
+        if ((KLID)MuiLayouts[uIndex].LangID == MuiLayouts[uIndex].LayoutID)
         {
+            /* Main keyboard layout */
             Status = NtSetValueKey(KeyHandle,
                                    &ValueName,
                                    0,
                                    REG_SZ,
-                                   (PVOID)MuiLayouts[uIndex].LayoutID,
-                                   (wcslen(MuiLayouts[uIndex].LayoutID)+1) * 
sizeof(WCHAR));
+                                   (PVOID)szLayoutID,
+                                   (wcslen(szLayoutID)+1) * sizeof(WCHAR));
             if (!NT_SUCCESS(Status))
             {
-                DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = 
%d)\n", Status, uIndex);
-                NtClose(SubKeyHandle);
-                NtClose(KeyHandle);
-                return FALSE;
+                DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = 
%u)\n", Status, uIndex);
+                goto Quit;
             }
         }
         else
         {
-            RtlStringCchPrintfW(szLangID, ARRAYSIZE(szLangID), L"d%03lu%s", 
uCount, MuiLayouts[uIndex].LangID);
+            /* Generate a substitute keyboard layout ID */
+            RtlStringCchPrintfW(szSubstID, _countof(szSubstID), L"%08lx",
+                                (0xD0000000/*SUBST_MASK*/ | ((USHORT)uCount << 
4) | MuiLayouts[uIndex].LangID));
             Status = NtSetValueKey(KeyHandle,
                                    &ValueName,
                                    0,
                                    REG_SZ,
-                                   (PVOID)szLangID,
-                                   (wcslen(szLangID)+1) * sizeof(WCHAR));
+                                   (PVOID)szSubstID,
+                                   (wcslen(szSubstID)+1) * sizeof(WCHAR));
             if (!NT_SUCCESS(Status))
             {
-                DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = 
%d)\n", Status, uIndex);
-                NtClose(SubKeyHandle);
-                NtClose(KeyHandle);
-                return FALSE;
+                DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = 
%u)\n", Status, uIndex);
+                goto Quit;
             }
 
-            RtlInitUnicodeString(&ValueName, szLangID);
-
+            /* Link the substitute layout with the original one */
+            RtlInitUnicodeString(&ValueName, szSubstID);
             Status = NtSetValueKey(SubKeyHandle,
                                    &ValueName,
                                    0,
                                    REG_SZ,
-                                   (PVOID)MuiLayouts[uIndex].LayoutID,
-                                   (wcslen(MuiLayouts[uIndex].LayoutID)+1) * 
sizeof(WCHAR));
+                                   (PVOID)szLayoutID,
+                                   (wcslen(szLayoutID)+1) * sizeof(WCHAR));
             if (!NT_SUCCESS(Status))
             {
                 DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = 
%u)\n", Status, uIndex);
-                NtClose(SubKeyHandle);
-                NtClose(KeyHandle);
-                return FALSE;
+                goto Quit;
             }
 
-            uCount++;
+            ++uCount;
         }
-
-        uIndex++;
     }
 
     AddHotkeySettings(L"1", L"1", L"2");
 
+Quit:
     NtClose(SubKeyHandle);
     NtClose(KeyHandle);
-    return TRUE;
+    return NT_SUCCESS(Status);
 }
 
 BOOLEAN
diff --git a/base/setup/lib/mui.h b/base/setup/lib/mui.h
index f48d94c53ec..215dbfe06eb 100644
--- a/base/setup/lib/mui.h
+++ b/base/setup/lib/mui.h
@@ -6,10 +6,23 @@ typedef struct
     PCWSTR SubFontName;
 } MUI_SUBFONT;
 
+typedef USHORT LANGID;
+typedef ULONG KLID;
+
+/*
+ * See http://archives.miloush.net/michkap/archive/2006/10/14/825404.html
+ * and the intl.inf file map:
+ *
+ * ; List of locales.
+ * ; <LCID> = <Description>,<OEMCP>,<Language Group>,<langID:HKL 
pair>,<langID:HKL pair>,...
+ *
+ * Each MUI_LANGUAGE entry corresponds to one such locale description.
+ * Each MUI_LAYOUTS entry corresponds to a <langID:HKL pair>.
+ */
 typedef struct
 {
-    PCWSTR LangID; // Language ID (like "0409")
-    PCWSTR LayoutID; // Layout ID (like "00000409")
+    LANGID LangID; // Language ID (like 0x0409)
+    KLID LayoutID; // Layout ID (like 0x00000409)
 } MUI_LAYOUTS;
 
 typedef struct
@@ -20,8 +33,8 @@ typedef struct
     PCWSTR MACCPage;
     PCWSTR LanguageDescriptor;
     PCWSTR GeoID;
-    const MUI_SUBFONT * MuiSubFonts;
-    const MUI_LAYOUTS * MuiLayouts;
+    const MUI_SUBFONT* MuiSubFonts;
+    const MUI_LAYOUTS* MuiLayouts;
 } MUI_LANGUAGE;
 
 
@@ -29,7 +42,7 @@ BOOLEAN
 IsLanguageAvailable(
     IN PCWSTR LanguageId);
 
-PCWSTR
+KLID
 MUIDefaultKeyboardLayout(
     IN PCWSTR LanguageId);
 
@@ -47,7 +60,7 @@ MUIGetLayoutsList(
 
 BOOLEAN
 AddKbLayoutsToRegistry(
-    IN const MUI_LAYOUTS *MuiLayouts);
+    _In_ const MUI_LAYOUTS* MuiLayouts);
 
 BOOLEAN
 AddKeyboardLayouts(
diff --git a/base/setup/lib/settings.c b/base/setup/lib/settings.c
index aece0e5e8d9..92670a12e7e 100644
--- a/base/setup/lib/settings.c
+++ b/base/setup/lib/settings.c
@@ -1269,7 +1269,7 @@ CreateKeyboardLayoutList(
 
         uIndex++;
 
-    } while (LayoutsList[uIndex].LangID != NULL);
+    } while (LayoutsList[uIndex].LangID != 0);
 
     /* Check whether some keyboard layouts have been found */
     /* FIXME: Handle this case */
@@ -1290,9 +1290,10 @@ ProcessKeyboardLayoutRegistry(
     IN PCWSTR LanguageId)
 {
     PGENERIC_LIST_ENTRY Entry;
-    PCWSTR LayoutId;
+    PCWSTR pszLayoutId;
+    KLID LayoutId;
     const MUI_LAYOUTS* LayoutsList;
-    MUI_LAYOUTS NewLayoutsList[20];
+    MUI_LAYOUTS NewLayoutsList[20]; // HACK: Hardcoded fixed size "20" is a 
hack. Please verify against lang/*.h
     ULONG uIndex;
     ULONG uOldPos = 0;
 
@@ -1300,18 +1301,21 @@ ProcessKeyboardLayoutRegistry(
     if (Entry == NULL)
         return FALSE;
 
-    LayoutId = ((PGENENTRY)GetListEntryData(Entry))->Id;
-    if (LayoutId == NULL)
+    pszLayoutId = ((PGENENTRY)GetListEntryData(Entry))->Id;
+    LayoutId = (KLID)(pszLayoutId ? wcstoul(pszLayoutId, NULL, 16) : 0);
+    if (LayoutId == 0)
         return FALSE;
 
     LayoutsList = MUIGetLayoutsList(LanguageId);
 
-    if (_wcsicmp(LayoutsList[0].LayoutID, LayoutId) == 0)
+    /* If the keyboard layout is already at the top of the list, we are done */
+    if (LayoutsList[0].LayoutID == LayoutId)
         return TRUE;
 
-    for (uIndex = 1; LayoutsList[uIndex].LangID != NULL; uIndex++)
+    /* Otherwise, move it up to the top of the list */
+    for (uIndex = 1; LayoutsList[uIndex].LangID != 0; ++uIndex)
     {
-        if (_wcsicmp(LayoutsList[uIndex].LayoutID, LayoutId) == 0)
+        if (LayoutsList[uIndex].LayoutID == LayoutId)
         {
             uOldPos = uIndex;
             continue;
@@ -1321,8 +1325,8 @@ ProcessKeyboardLayoutRegistry(
         NewLayoutsList[uIndex].LayoutID = LayoutsList[uIndex].LayoutID;
     }
 
-    NewLayoutsList[uIndex].LangID    = NULL;
-    NewLayoutsList[uIndex].LayoutID  = NULL;
+    NewLayoutsList[uIndex].LangID    = 0;
+    NewLayoutsList[uIndex].LayoutID  = 0;
     NewLayoutsList[uOldPos].LangID   = LayoutsList[0].LangID;
     NewLayoutsList[uOldPos].LayoutID = LayoutsList[0].LayoutID;
     NewLayoutsList[0].LangID         = LayoutsList[uOldPos].LangID;
diff --git a/base/setup/usetup/usetup.c b/base/setup/usetup/usetup.c
index 90d8af468e1..61fae743780 100644
--- a/base/setup/usetup/usetup.c
+++ b/base/setup/usetup/usetup.c
@@ -460,14 +460,14 @@ static VOID
 UpdateKBLayout(VOID)
 {
     PGENERIC_LIST_ENTRY ListEntry;
-    PCWSTR pszNewLayout;
+    KLID newLayout;
 
-    pszNewLayout = MUIDefaultKeyboardLayout(SelectedLanguageId);
+    newLayout = MUIDefaultKeyboardLayout(SelectedLanguageId);
 
-    if (USetupData.LayoutList == NULL)
+    if (!USetupData.LayoutList)
     {
         USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, 
SelectedLanguageId, DefaultKBLayout);
-        if (USetupData.LayoutList == NULL)
+        if (!USetupData.LayoutList)
         {
             /* FIXME: Handle error! */
             return;
@@ -475,12 +475,14 @@ UpdateKBLayout(VOID)
     }
 
     /* Search for default layout (if provided) */
-    if (pszNewLayout != NULL)
+    if (newLayout != 0)
     {
         for (ListEntry = GetFirstListEntry(USetupData.LayoutList); ListEntry;
              ListEntry = GetNextListEntry(ListEntry))
         {
-            if (!wcscmp(pszNewLayout, 
((PGENENTRY)GetListEntryData(ListEntry))->Id))
+            PCWSTR pszLayoutId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
+            KLID LayoutId = (KLID)(pszLayoutId ? wcstoul(pszLayoutId, NULL, 
16) : 0);
+            if (newLayout == LayoutId)
             {
                 SetCurrentListEntry(USetupData.LayoutList, ListEntry);
                 break;
@@ -1249,10 +1251,10 @@ DeviceSettingsPage(PINPUT_RECORD Ir)
     }
 
     /* Initialize the keyboard layout list */
-    if (USetupData.LayoutList == NULL)
+    if (!USetupData.LayoutList)
     {
         USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, 
SelectedLanguageId, DefaultKBLayout);
-        if (USetupData.LayoutList == NULL)
+        if (!USetupData.LayoutList)
         {
             /* FIXME: report error */
             MUIDisplayError(ERROR_LOAD_KBLAYOUT, Ir, POPUP_WAIT_ENTER);

Reply via email to