summaryrefslogtreecommitdiffstats
path: root/include/freerdp/locale
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:24:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:24:41 +0000
commita9bcc81f821d7c66f623779fa5147e728eb3c388 (patch)
tree98676963bcdd537ae5908a067a8eb110b93486a6 /include/freerdp/locale
parentInitial commit. (diff)
downloadfreerdp3-a9bcc81f821d7c66f623779fa5147e728eb3c388.tar.xz
freerdp3-a9bcc81f821d7c66f623779fa5147e728eb3c388.zip
Adding upstream version 3.3.0+dfsg1.upstream/3.3.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'include/freerdp/locale')
-rw-r--r--include/freerdp/locale/keyboard.h239
-rw-r--r--include/freerdp/locale/locale.h250
2 files changed, 489 insertions, 0 deletions
diff --git a/include/freerdp/locale/keyboard.h b/include/freerdp/locale/keyboard.h
new file mode 100644
index 0000000..e35cf69
--- /dev/null
+++ b/include/freerdp/locale/keyboard.h
@@ -0,0 +1,239 @@
+/**
+ * FreeRDP: A Remote Desktop Protocol Implementation
+ * Keyboard Mapping
+ *
+ * Copyright 2009-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef FREERDP_LOCALE_KEYBOARD_H
+#define FREERDP_LOCALE_KEYBOARD_H
+
+#include <winpr/input.h>
+
+#include <freerdp/api.h>
+#include <freerdp/types.h>
+#include <freerdp/scancode.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define RDP_KEYBOARD_LAYOUT_TYPE_STANDARD 1
+#define RDP_KEYBOARD_LAYOUT_TYPE_VARIANT 2
+#define RDP_KEYBOARD_LAYOUT_TYPE_IME 4
+
+typedef struct
+{
+ UINT16 id;
+ UINT8 primaryId;
+ UINT8 subId;
+ char locale[512];
+ char primaryLanguage[512];
+ char primaryLanguageSymbol[512];
+ char subLanguage[512];
+ char subLanguageSymbol[512];
+} RDP_CODEPAGE;
+
+typedef struct
+{
+ DWORD code; /* Keyboard layout code */
+ char* name; /* Keyboard layout name */
+} RDP_KEYBOARD_LAYOUT;
+
+/* Keyboard layout IDs */
+
+#define KBD_ARABIC_101 0x00000401
+#define KBD_BULGARIAN 0x00000402
+#define KBD_CHINESE_TRADITIONAL_US 0x00000404
+#define KBD_CZECH 0x00000405
+#define KBD_DANISH 0x00000406
+#define KBD_GERMAN 0x00000407
+#define KBD_GREEK 0x00000408
+#define KBD_US 0x00000409
+#define KBD_SPANISH 0x0000040A
+#define KBD_FINNISH 0x0000040B
+#define KBD_FRENCH 0x0000040C
+#define KBD_HEBREW 0x0000040D
+#define KBD_HUNGARIAN 0x0000040E
+#define KBD_ICELANDIC 0x0000040F
+#define KBD_ITALIAN 0x00000410
+#define KBD_JAPANESE 0x00000411
+#define KBD_KOREAN 0x00000412
+#define KBD_DUTCH 0x00000413
+#define KBD_NORWEGIAN 0x00000414
+#define KBD_POLISH_PROGRAMMERS 0x00000415
+#define KBD_PORTUGUESE_BRAZILIAN_ABNT 0x00000416
+#define KBD_ROMANIAN 0x00000418
+#define KBD_RUSSIAN 0x00000419
+#define KBD_CROATIAN 0x0000041A
+#define KBD_SLOVAK 0x0000041B
+#define KBD_ALBANIAN 0x0000041C
+#define KBD_SWEDISH 0x0000041D
+#define KBD_THAI_KEDMANEE 0x0000041E
+#define KBD_TURKISH_Q 0x0000041F
+#define KBD_URDU 0x00000420
+#define KBD_UKRAINIAN 0x00000422
+#define KBD_BELARUSIAN 0x00000423
+#define KBD_SLOVENIAN 0x00000424
+#define KBD_ESTONIAN 0x00000425
+#define KBD_LATVIAN 0x00000426
+#define KBD_LITHUANIAN_IBM 0x00000427
+#define KBD_FARSI 0x00000429
+#define KBD_VIETNAMESE 0x0000042A
+#define KBD_ARMENIAN_EASTERN 0x0000042B
+#define KBD_AZERI_LATIN 0x0000042C
+#define KBD_FYRO_MACEDONIAN 0x0000042F
+#define KBD_GEORGIAN 0x00000437
+#define KBD_FAEROESE 0x00000438
+#define KBD_DEVANAGARI_INSCRIPT 0x00000439
+#define KBD_MALTESE_47_KEY 0x0000043A
+#define KBD_NORWEGIAN_WITH_SAMI 0x0000043B
+#define KBD_KAZAKH 0x0000043F
+#define KBD_KYRGYZ_CYRILLIC 0x00000440
+#define KBD_TATAR 0x00000444
+#define KBD_BENGALI 0x00000445
+#define KBD_PUNJABI 0x00000446
+#define KBD_GUJARATI 0x00000447
+#define KBD_TAMIL 0x00000449
+#define KBD_TELUGU 0x0000044A
+#define KBD_KANNADA 0x0000044B
+#define KBD_MALAYALAM 0x0000044C
+#define KBD_MARATHI 0x0000044E
+#define KBD_MONGOLIAN_CYRILLIC 0x00000450
+#define KBD_UNITED_KINGDOM_EXTENDED 0x00000452
+#define KBD_SYRIAC 0x0000045A
+#define KBD_NEPALI 0x00000461
+#define KBD_PASHTO 0x00000463
+#define KBD_DIVEHI_PHONETIC 0x00000465
+#define KBD_LUXEMBOURGISH 0x0000046E
+#define KBD_MAORI 0x00000481
+#define KBD_CHINESE_SIMPLIFIED_US 0x00000804
+#define KBD_SWISS_GERMAN 0x00000807
+#define KBD_UNITED_KINGDOM 0x00000809
+#define KBD_LATIN_AMERICAN 0x0000080A
+#define KBD_BELGIAN_FRENCH 0x0000080C
+#define KBD_BELGIAN_PERIOD 0x00000813
+#define KBD_PORTUGUESE 0x00000816
+#define KBD_SERBIAN_LATIN 0x0000081A
+#define KBD_AZERI_CYRILLIC 0x0000082C
+#define KBD_SWEDISH_WITH_SAMI 0x0000083B
+#define KBD_UZBEK_CYRILLIC 0x00000843
+#define KBD_INUKTITUT_LATIN 0x0000085D
+#define KBD_CANADIAN_FRENCH_LEGACY 0x00000C0C
+#define KBD_SERBIAN_CYRILLIC 0x00000C1A
+#define KBD_CANADIAN_FRENCH 0x00001009
+#define KBD_SWISS_FRENCH 0x0000100C
+#define KBD_BOSNIAN 0x0000141A
+#define KBD_IRISH 0x00001809
+#define KBD_BOSNIAN_CYRILLIC 0x0000201A
+
+/* Keyboard layout variant IDs */
+
+#define KBD_ARABIC_102 0x00010401
+#define KBD_BULGARIAN_LATIN 0x00010402
+#define KBD_CZECH_QWERTY 0x00010405
+#define KBD_GERMAN_IBM 0x00010407
+#define KBD_GREEK_220 0x00010408
+#define KBD_UNITED_STATES_DVORAK 0x00010409
+#define KBD_SPANISH_VARIATION 0x0001040A
+#define KBD_HUNGARIAN_101_KEY 0x0001040E
+#define KBD_ITALIAN_142 0x00010410
+#define KBD_POLISH_214 0x00010415
+#define KBD_PORTUGUESE_BRAZILIAN_ABNT2 0x00010416
+#define KBD_ROMANIAN_STANDARD 0x00010418
+#define KBD_RUSSIAN_TYPEWRITER 0x00010419
+#define KBD_SLOVAK_QWERTY 0x0001041B
+#define KBD_THAI_PATTACHOTE 0x0001041E
+#define KBD_TURKISH_F 0x0001041F
+#define KBD_LATVIAN_QWERTY 0x00010426
+#define KBD_LITHUANIAN 0x00010427
+#define KBD_ARMENIAN_WESTERN 0x0001042B
+#define KBD_GEORGIAN_QUERTY 0x00010437
+#define KBD_HINDI_TRADITIONAL 0x00010439
+#define KBD_MALTESE_48_KEY 0x0001043A
+#define KBD_SAMI_EXTENDED_NORWAY 0x0001043B
+#define KBD_BENGALI_INSCRIPT 0x00010445
+#define KBD_KHMER 0x00010453
+#define KBD_SYRIAC_PHONETIC 0x0001045A
+#define KBD_DIVEHI_TYPEWRITER 0x00010465
+#define KBD_BELGIAN_COMMA 0x0001080C
+#define KBD_FINNISH_WITH_SAMI 0x0001083B
+#define KBD_CANADIAN_MULTILINGUAL_STANDARD 0x00011009
+#define KBD_GAELIC 0x00011809
+#define KBD_ARABIC_102_AZERTY 0x00020401
+#define KBD_CZECH_PROGRAMMERS 0x00020405
+#define KBD_GREEK_319 0x00020408
+#define KBD_UNITED_STATES_INTERNATIONAL 0x00020409
+#define KBD_RUSSIAN_PHONETIC 0x00020419
+#define KBD_THAI_KEDMANEE_NON_SHIFTLOCK 0x0002041E
+#define KBD_BANGLA 0x00020445
+#define KBD_SAMI_EXTENDED_FINLAND_SWEDEN 0x0002083B
+#define KBD_GREEK_220_LATIN 0x00030408
+#define KBD_UNITED_STATES_DVORAK_FOR_LEFT_HAND 0x00030409
+#define KBD_THAI_PATTACHOTE_NON_SHIFTLOCK 0x0003041E
+#define KBD_BULGARIAN_PHONETIC 0x00040402
+#define KBD_GREEK_319_LATIN 0x00040408
+#define KBD_UNITED_STATES_DVORAK_FOR_RIGHT_HAND 0x00040409
+#define KBD_UNITED_STATES_DVORAK_PROGRAMMER 0x19360409
+#define KBD_GREEK_LATIN 0x00050408
+#define KBD_PERSIAN 0x00050429
+#define KBD_US_ENGLISH_TABLE_FOR_IBM_ARABIC_238_L 0x00050409
+#define KBD_GREEK_POLYTONIC 0x00060408
+#define KBD_FRENCH_BEPO 0xa000040c
+#define KBD_GERMAN_NEO 0xB0000407
+
+/* Global Input Method Editor (IME) IDs */
+
+#define KBD_CHINESE_TRADITIONAL_PHONETIC 0xE0010404
+#define KBD_JAPANESE_INPUT_SYSTEM_MS_IME2002 0xE0010411
+#define KBD_KOREAN_INPUT_SYSTEM_IME_2000 0xE0010412
+#define KBD_CHINESE_SIMPLIFIED_QUANPIN 0xE0010804
+#define KBD_CHINESE_TRADITIONAL_CHANGJIE 0xE0020404
+#define KBD_CHINESE_SIMPLIFIED_SHUANGPIN 0xE0020804
+#define KBD_CHINESE_TRADITIONAL_QUICK 0xE0030404
+#define KBD_CHINESE_SIMPLIFIED_ZHENGMA 0xE0030804
+#define KBD_CHINESE_TRADITIONAL_BIG5_CODE 0xE0040404
+#define KBD_CHINESE_TRADITIONAL_ARRAY 0xE0050404
+#define KBD_CHINESE_SIMPLIFIED_NEIMA 0xE0050804
+#define KBD_CHINESE_TRADITIONAL_DAYI 0xE0060404
+#define KBD_CHINESE_TRADITIONAL_UNICODE 0xE0070404
+#define KBD_CHINESE_TRADITIONAL_NEW_PHONETIC 0xE0080404
+#define KBD_CHINESE_TRADITIONAL_NEW_CHANGJIE 0xE0090404
+#define KBD_CHINESE_TRADITIONAL_MICROSOFT_PINYIN_IME_3 0xE00E0804
+#define KBD_CHINESE_TRADITIONAL_ALPHANUMERIC 0xE00F0404
+
+ FREERDP_API DWORD freerdp_keyboard_init(DWORD keyboardLayoutId);
+ FREERDP_API DWORD freerdp_keyboard_init_ex(DWORD keyboardLayoutId,
+ const char* keyboardRemappingList);
+ FREERDP_API RDP_KEYBOARD_LAYOUT* freerdp_keyboard_get_layouts(DWORD types, size_t* count);
+ FREERDP_API void freerdp_keyboard_layouts_free(RDP_KEYBOARD_LAYOUT* layouts, size_t count);
+ FREERDP_API const char* freerdp_keyboard_get_layout_name_from_id(DWORD keyboardLayoutId);
+ FREERDP_API DWORD freerdp_keyboard_get_layout_id_from_name(const char* name);
+ FREERDP_API DWORD freerdp_keyboard_get_rdp_scancode_from_x11_keycode(DWORD keycode);
+ FREERDP_API DWORD freerdp_keyboard_get_x11_keycode_from_rdp_scancode(DWORD scancode,
+ BOOL extended);
+
+ FREERDP_API RDP_CODEPAGE*
+ freerdp_keyboard_get_matching_codepages(DWORD column, const char* filter, size_t* count);
+ FREERDP_API void freerdp_codepages_free(RDP_CODEPAGE*);
+
+ FREERDP_API const char* freerdp_keyboard_scancode_name(DWORD scancode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* FREERDP_LOCALE_KEYBOARD_H */
diff --git a/include/freerdp/locale/locale.h b/include/freerdp/locale/locale.h
new file mode 100644
index 0000000..6647bb2
--- /dev/null
+++ b/include/freerdp/locale/locale.h
@@ -0,0 +1,250 @@
+/**
+ * FreeRDP: A Remote Desktop Protocol Implementation
+ * Microsoft Locales
+ *
+ * Copyright 2009-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Detection of plausible keyboard layout id based on current locale (LANG) setting. */
+
+/*
+ * Refer to "Windows XP/Server 2003 - List of Locale IDs, Input Locale, and Language Collection":
+ * http://www.microsoft.com/globaldev/reference/winxp/xp-lcid.mspx
+ */
+
+#ifndef FREERDP_LOCALE_H
+#define FREERDP_LOCALE_H
+
+#include <freerdp/api.h>
+#include <freerdp/types.h>
+
+#define AFRIKAANS 0x0436
+#define ALBANIAN 0x041C
+#define ALSATIAN 0x0484
+#define AMHARIC 0x045E
+#define ARABIC_SAUDI_ARABIA 0x0401
+#define ARABIC_IRAQ 0x0801
+#define ARABIC_EGYPT 0x0C01
+#define ARABIC_LIBYA 0x1001
+#define ARABIC_ALGERIA 0x1401
+#define ARABIC_MOROCCO 0x1801
+#define ARABIC_TUNISIA 0x1C01
+#define ARABIC_OMAN 0x2001
+#define ARABIC_YEMEN 0x2401
+#define ARABIC_SYRIA 0x2801
+#define ARABIC_JORDAN 0x2C01
+#define ARABIC_LEBANON 0x3001
+#define ARABIC_KUWAIT 0x3401
+#define ARABIC_UAE 0x3801
+#define ARABIC_BAHRAIN 0x3C01
+#define ARABIC_QATAR 0x4001
+#define ARMENIAN 0x042B
+#define ASSAMESE 0x044D
+#define AZERI_LATIN 0x042C
+#define AZERI_CYRILLIC 0x082C
+#define BASHKIR 0x046D
+#define BASQUE 0x042D
+#define BELARUSIAN 0x0423
+#define BENGALI_INDIA 0x0445
+#define BOSNIAN_LATIN 0x141A
+#define BRETON 0x047E
+#define BULGARIAN 0x0402
+#define CATALAN 0x0403
+#define CHEROKEE 0x045C
+#define CHINESE_TAIWAN 0x0404
+#define CHINESE_PRC 0x0804
+#define CHINESE_HONG_KONG 0x0C04
+#define CHINESE_SINGAPORE 0x1004
+#define CHINESE_MACAU 0x1404
+#define CROATIAN 0x041A
+#define CROATIAN_BOSNIA_HERZEGOVINA 0x101A
+#define CZECH 0x0405
+#define DANISH 0x0406
+#define DARI 0x048C
+#define DIVEHI 0x0465
+#define DUTCH_STANDARD 0x0413
+#define DUTCH_BELGIAN 0x0813
+#define ENGLISH_UNITED_STATES 0x0409
+#define ENGLISH_UNITED_KINGDOM 0x0809
+#define ENGLISH_AUSTRALIAN 0x0C09
+#define ENGLISH_CANADIAN 0x1009
+#define ENGLISH_NEW_ZEALAND 0x1409
+#define ENGLISH_INDIA 0x4009
+#define ENGLISH_IRELAND 0x1809
+#define ENGLISH_MALAYSIA 0x4409
+#define ENGLISH_SOUTH_AFRICA 0x1C09
+#define ENGLISH_JAMAICA 0x2009
+#define ENGLISH_CARIBBEAN 0x2409
+#define ENGLISH_BELIZE 0x2809
+#define ENGLISH_TRINIDAD 0x2C09
+#define ENGLISH_ZIMBABWE 0x3009
+#define ENGLISH_PHILIPPINES 0x3409
+#define ENGLISH_SINGAPORE 0x4809
+#define ESTONIAN 0x0425
+#define FAEROESE 0x0438
+#define FARSI 0x0429
+#define FILIPINO 0x0464
+#define FINNISH 0x040B
+#define FRENCH_STANDARD 0x040C
+#define FRENCH_BELGIAN 0x080C
+#define FRENCH_CANADIAN 0x0C0C
+#define FRENCH_SWISS 0x100C
+#define FRENCH_LUXEMBOURG 0x140C
+#define FRENCH_MONACO 0x180C
+#define FRISIAN 0x0462
+#define GEORGIAN 0x0437
+#define GALICIAN 0x0456
+#define GERMAN_STANDARD 0x0407
+#define GERMAN_SWISS 0x0807
+#define GERMAN_AUSTRIAN 0x0C07
+#define GERMAN_LUXEMBOURG 0x1007
+#define GERMAN_LIECHTENSTEIN 0x1407
+#define GREEK 0x0408
+#define GREENLANDIC 0x046F
+#define GUJARATI 0x0447
+#define HAWAIIAN 0x0475
+#define HEBREW 0x040D
+#define HINDI 0x0439
+#define HUNGARIAN 0x040E
+#define ICELANDIC 0x040F
+#define IGBO 0x0470
+#define INDONESIAN 0x0421
+#define INUKTITUT 0x045D
+#define IRISH 0x083C
+#define ITALIAN_STANDARD 0x0410
+#define ITALIAN_SWISS 0x0810
+#define JAPANESE 0x0411
+#define KANNADA 0x044B
+#define KAZAKH 0x043F
+#define KHMER 0x0453
+#define KICHE 0x0486
+#define KINYARWANDA 0x0487
+#define KONKANI 0x0457
+#define KOREAN 0x0412
+#define KYRGYZ 0x0440
+#define LAO 0x0454
+#define LATVIAN 0x0426
+#define LITHUANIAN 0x0427
+#define LOWER_SORBIAN 0x082E
+#define LUXEMBOURGISH 0x046E
+#define MACEDONIAN 0x042F
+#define MALAY_MALAYSIA 0x043E
+#define MALAY_BRUNEI_DARUSSALAM 0x083E
+#define MALAYALAM 0x044C
+#define MALTESE 0x043A
+#define MAPUDUNGUN 0x047A
+#define MAORI 0x0481
+#define MARATHI 0x044E
+#define MOHAWK 0x047C
+#define MONGOLIAN 0x0450
+#define MYANMAR 0x0455
+#define NEPALI 0x0461
+#define NORWEGIAN_BOKMAL 0x0414
+#define NORWEGIAN_NYNORSK 0x0814
+#define OCCITAN 0x0482
+#define ORIYA 0x0448
+#define PASHTO 0x0463
+#define POLISH 0x0415
+#define PORTUGUESE_BRAZILIAN 0x0416
+#define PORTUGUESE_STANDARD 0x0816
+#define PUNJABI 0x0446
+#define QUECHUA_BOLIVIA 0x046B
+#define QUECHUA_ECUADOR 0x086B
+#define QUECHUA_PERU 0x0C6B
+#define ROMANIAN 0x0418
+#define ROMANSH 0x0417
+#define RUSSIAN 0x0419
+#define SAMI_INARI 0x243B
+#define SAMI_LULE_NORWAY 0x103B
+#define SAMI_LULE_SWEDEN 0x143B
+#define SAMI_NORTHERN_FINLAND 0x0C3B
+#define SAMI_NORTHERN_NORWAY 0x043B
+#define SAMI_NORTHERN_SWEDEN 0x083B
+#define SAMI_SKOLT 0x203B
+#define SAMI_SOUTHERN_NORWAY 0x183B
+#define SAMI_SOUTHERN_SWEDEN 0x1C3B
+#define SANSKRIT 0x044F
+#define SERBIAN_LATIN 0x081A
+#define SERBIAN_LATIN_BOSNIA_HERZEGOVINA 0x181A
+#define SERBIAN_CYRILLIC 0x0C1A
+#define SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA 0x1C1A
+#define SESOTHO_SA_LEBOA 0x046C
+#define SINHALA 0x045B
+#define SLOVAK 0x041B
+#define SLOVENIAN 0x0424
+#define SPANISH_TRADITIONAL_SORT 0x040A
+#define SPANISH_MEXICAN 0x080A
+#define SPANISH_MODERN_SORT 0x0C0A
+#define SPANISH_GUATEMALA 0x100A
+#define SPANISH_COSTA_RICA 0x140A
+#define SPANISH_PANAMA 0x180A
+#define SPANISH_DOMINICAN_REPUBLIC 0x1C0A
+#define SPANISH_VENEZUELA 0x200A
+#define SPANISH_COLOMBIA 0x240A
+#define SPANISH_PERU 0x280A
+#define SPANISH_ARGENTINA 0x2C0A
+#define SPANISH_ECUADOR 0x300A
+#define SPANISH_CHILE 0x340A
+#define SPANISH_UNITED_STATES 0x540A
+#define SPANISH_URUGUAY 0x380A
+#define SPANISH_PARAGUAY 0x3C0A
+#define SPANISH_BOLIVIA 0x400A
+#define SPANISH_EL_SALVADOR 0x440A
+#define SPANISH_HONDURAS 0x480A
+#define SPANISH_NICARAGUA 0x4C0A
+#define SPANISH_PUERTO_RICO 0x500A
+#define SWAHILI 0x0441
+#define SWEDISH 0x041D
+#define SWEDISH_FINLAND 0x081D
+#define SYRIAC 0x045A
+#define TAMIL 0x0449
+#define TATAR 0x0444
+#define TELUGU 0x044A
+#define THAI 0x041E
+#define TIBETAN_BHUTAN 0x0851
+#define TIBETAN_PRC 0x0451
+#define TSWANA 0x0432
+#define UKRAINIAN 0x0422
+#define TURKISH 0x041F
+#define TURKMEN 0x0442
+#define UIGHUR 0x0480
+#define UPPER_SORBIAN 0x042E
+#define URDU 0x0420
+#define URDU_INDIA 0x0820
+#define UZBEK_LATIN 0x0443
+#define UZBEK_CYRILLIC 0x0843
+#define VIETNAMESE 0x042A
+#define WELSH 0x0452
+#define WOLOF 0x0488
+#define XHOSA 0x0434
+#define YAKUT 0x0485
+#define YI 0x0478
+#define YORUBA 0x046A
+#define ZULU 0x0435
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ FREERDP_API DWORD freerdp_get_system_locale_id(void);
+ FREERDP_API const char* freerdp_get_system_locale_name_from_id(DWORD localeId);
+ FREERDP_API int freerdp_detect_keyboard_layout_from_system_locale(DWORD* keyboardLayoutId);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* FREERDP_LOCALE_H */