module RDP; export { # http://www.c-amie.co.uk/technical/mstsc-versions/ const builds = { [0419] = "RDP 4.0", [2195] = "RDP 5.0", [2221] = "RDP 5.0", [2600] = "RDP 5.1", [3790] = "RDP 5.2", [6000] = "RDP 6.0", [6001] = "RDP 6.1", [6002] = "RDP 6.2", [7600] = "RDP 7.0", [7601] = "RDP 7.1", [9200] = "RDP 8.0", [9600] = "RDP 8.1", [25189] = "RDP 8.0 (Mac)", [25282] = "RDP 8.0 (Mac)" } &default = function(n: count): string { return fmt("client_build-%d", n); }; const security_protocols = { [0x00] = "RDP", [0x01] = "SSL", [0x02] = "HYBRID", [0x08] = "HYBRID_EX" } &default = function(n: count): string { return fmt("security_protocol-%d", n); }; const failure_codes = { [0x01] = "SSL_REQUIRED_BY_SERVER", [0x02] = "SSL_NOT_ALLOWED_BY_SERVER", [0x03] = "SSL_CERT_NOT_ON_SERVER", [0x04] = "INCONSISTENT_FLAGS", [0x05] = "HYBRID_REQUIRED_BY_SERVER", [0x06] = "SSL_WITH_USER_AUTH_REQUIRED_BY_SERVER" } &default = function(n: count): string { return fmt("failure_code-%d", n); }; const cert_types = { [1] = "RSA", [2] = "X.509" } &default = function(n: count): string { return fmt("cert_type-%d", n); }; const encryption_methods = { [0] = "None", [1] = "40bit", [2] = "128bit", [8] = "56bit", [10] = "FIPS" } &default = function(n: count): string { return fmt("encryption_method-%d", n); }; const encryption_levels = { [0] = "None", [1] = "Low", [2] = "Client compatible", [3] = "High", [4] = "FIPS" } &default = function(n: count): string { return fmt("encryption_level-%d", n); }; const high_color_depths = { [0x0004] = "4bit", [0x0008] = "8bit", [0x000F] = "15bit", [0x0010] = "16bit", [0x0018] = "24bit" } &default = function(n: count): string { return fmt("high_color_depth-%d", n); }; const color_depths = { [0x0001] = "24bit", [0x0002] = "16bit", [0x0004] = "15bit", [0x0008] = "32bit" } &default = function(n: count): string { return fmt("color_depth-%d", n); }; const results = { [0] = "Success", [1] = "User rejected", [2] = "Resources not available", [3] = "Rejected for symmetry breaking", [4] = "Locked conference", } &default = function(n: count): string { return fmt("result-%d", n); }; # http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx # https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-language-pack-default-values const languages = { [1025] = "Arabic - Saudi Arabia", [1026] = "Bulgarian", [1027] = "Catalan", [1028] = "Chinese - Taiwan", [1029] = "Czech", [1030] = "Danish", [1031] = "German - Germany", [1032] = "Greek", [1033] = "English - United States", [1034] = "Spanish - Spain (Traditional Sort)", [1035] = "Finnish", [1036] = "French - France", [1037] = "Hebrew", [1038] = "Hungarian", [1039] = "Icelandic", [1040] = "Italian - Italy", [1041] = "Japanese", [1042] = "Korean", [1043] = "Dutch - Netherlands", [1044] = "Norwegian (Bokmal)", [1045] = "Polish", [1046] = "Portuguese - Brazil", [1047] = "Rhaeto-Romanic", [1048] = "Romanian", [1049] = "Russian", [1050] = "Croatian", [1051] = "Slovak", [1052] = "Albanian - Albania", [1053] = "Swedish", [1054] = "Thai", [1055] = "Turkish", [1056] = "Urdu", [1057] = "Indonesian", [1058] = "Ukrainian", [1059] = "Belarusian", [1060] = "Slovenian", [1061] = "Estonian", [1062] = "Latvian", [1063] = "Lithuanian", [1064] = "Tajik", [1065] = "Farsi", [1066] = "Vietnamese", [1067] = "Armenian - Armenia", [1068] = "Azeri (Latin)", [1069] = "Basque", [1070] = "Sorbian", [1071] = "FYRO Macedonian", [1072] = "Sutu", [1073] = "Tsonga", [1074] = "Tswana", [1075] = "Venda", [1076] = "Xhosa", [1077] = "Zulu", [1078] = "Afrikaans - South Africa", [1079] = "Georgian", [1080] = "Faroese", [1081] = "Hindi", [1082] = "Maltese", [1083] = "Sami (Lappish)", [1084] = "Scottish Gaelic", [1085] = "Yiddish", [1086] = "Malay - Malaysia", [1087] = "Kazakh", [1088] = "Kyrgyz (Cyrillic)", [1089] = "Swahili", [1090] = "Turkmen", [1091] = "Uzbek (Latin)", [1092] = "Tatar", [1093] = "Bengali (India)", [1094] = "Punjabi", [1095] = "Gujarati", [1096] = "Oriya", [1097] = "Tamil", [1098] = "Telugu", [1099] = "Kannada", [1100] = "Malayalam", [1101] = "Assamese", [1102] = "Marathi", [1103] = "Sanskrit", [1104] = "Mongolian (Cyrillic)", [1105] = "Tibetan - People's Republic of China", [1106] = "Welsh", [1107] = "Khmer", [1108] = "Lao", [1109] = "Burmese", [1110] = "Galician", [1111] = "Konkani", [1112] = "Manipuri", [1113] = "Sindhi - India", [1114] = "Syriac", [1115] = "Sinhalese - Sri Lanka", [1116] = "Cherokee - United States", [1117] = "Inuktitut", [1118] = "Amharic - Ethiopia", [1119] = "Tamazight (Arabic)", [1120] = "Kashmiri (Arabic)", [1121] = "Nepali", [1122] = "French - West Indies", [1123] = "Pashto", [1124] = "Filipino", [1125] = "Divehi", [1126] = "Edo", [1127] = "Fulfulde - Nigeria", [1128] = "Hausa - Nigeria", [1129] = "Ibibio - Nigeria", [1130] = "Yoruba", [1131] = "Quecha - Bolivia", [1132] = "Sepedi", [1133] = "Bashkir", [1134] = "Luxembourgish", [1135] = "Greenlandic", [1136] = "Igbo - Nigeria", [1137] = "Kanuri - Nigeria", [1138] = "Oromo", [1139] = "Tigrigna - Ethiopia", [1140] = "Guarani - Paraguay", [1141] = "Hawaiian - United States", [1142] = "Latin", [1143] = "Somali", [1144] = "Yi", [1145] = "Papiamentu", [1146] = "Mapudungun", [1148] = "Mohawk", [1150] = "Breton", [1152] = "Uighur - China", [1153] = "Maori - New Zealand", [1154] = "Occitan", [1155] = "Corsican", [1156] = "Alsatian", [1157] = "Yakut", [1158] = "K'iche", [1159] = "Kinyarwanda", [1160] = "Wolof", [1164] = "Dari", [1279] = "HID (Human Interface Device)", [2049] = "Arabic - Iraq", [2052] = "Chinese - People's Republic of China", [2055] = "German - Switzerland", [2057] = "English - United Kingdom", [2058] = "Spanish - Mexico", [2060] = "French - Belgium", [2064] = "Italian - Switzerland", [2067] = "Dutch - Belgium", [2068] = "Norwegian (Nynorsk)", [2070] = "Portuguese - Portugal", [2072] = "Romanian - Moldava", [2073] = "Russian - Moldava", [2074] = "Serbian (Latin)", [2077] = "Swedish - Finland", [2080] = "Urdu - India", [2092] = "Azeri (Cyrillic)", [2107] = "Sami (Northern) - Sweden", [2108] = "Irish", [2110] = "Malay - Brunei Darussalam", [2115] = "Uzbek (Cyrillic)", [2117] = "Bengali (Bangladesh)", [2118] = "Punjabi (Pakistan)", [2121] = "Tamil - Sri Lanka", [2128] = "Mongolian (Mongolian)", [2129] = "Tibetan - Bhutan", [2137] = "Sindhi - Pakistan", [2141] = "Inuktitut (Latin) - Canada", [2143] = "Tamazight (Latin)", [2144] = "Kashmiri", [2145] = "Nepali - India", [2151] = "Pular - Senegal", [2155] = "Quecha - Ecuador", [2163] = "Tigrigna - Eritrea", [3073] = "Arabic - Egypt", [3076] = "Chinese - Hong Kong SAR", [3079] = "German - Austria", [3081] = "English - Australia", [3082] = "Spanish - Spain (Modern Sort)", [3084] = "French - Canada", [3098] = "Serbian (Cyrillic)", [3131] = "Sami (Northern) - Finland", [3153] = "Dzongkha", [3179] = "Quecha - Peru CB", [4097] = "Arabic - Libya", [4100] = "Chinese - Singapore", [4103] = "German - Luxembourg", [4105] = "English - Canada", [4106] = "Spanish - Guatemala", [4108] = "French - Switzerland", [4122] = "Croatian (Bosnia/Herzegovina)", [4122] = "Croatian (Latin) - Bosnia and Herzegovina", [4155] = "Sami (Lule) - Norway", [4191] = "Central Atlas Tamazight (Tifinagh) - Morocco", [5121] = "Arabic - Algeria", [5124] = "Chinese - Macao SAR", [5127] = "German - Liechtenstein", [5129] = "English - New Zealand", [5130] = "Spanish - Costa Rica", [5132] = "French - Luxembourg", [5146] = "Bosnian (Bosnia/Herzegovina)", [5179] = "Sami (Lule) - Sweden", [6145] = "Arabic - Morocco", [6153] = "English - Ireland", [6154] = "Spanish - Panama", [6156] = "French - Monaco", [6170] = "Serbian (Latin) - Bosnia and Herzegovina", [6203] = "Sami (Southern) - Norway", [7169] = "Arabic - Tunisia", [7177] = "English - South Africa", [7178] = "Spanish - Dominican Republic", [7180] = "French - West Indies", [7227] = "Sami (Southern) - Sweden", [8193] = "Arabic - Oman", [8201] = "English - Jamaica", [8202] = "Spanish - Venezuela", [8204] = "French - Reunion", [8218] = "Bosnian (Cyrillic) - Bosnia and Herzegovina", [8251] = "Sami (Skolt) - Finland", [9217] = "Arabic - Yemen", [9225] = "English - Caribbean", [9226] = "Spanish - Colombia", [9228] = "French - Democratic Rep. of Congo", [9242] = "Serbian (Latin) - Serbia", [9275] = "Sami (Inari) - Finland", [10241] = "Arabic - Syria", [10249] = "English - Belize", [10250] = "Spanish - Peru", [10252] = "French - Senegal", [10266] = "Serbian (Cyrillic) - Serbia", [11265] = "Arabic - Jordan", [11273] = "English - Trinidad", [11274] = "Spanish - Argentina", [11276] = "French - Cameroon", [11290] = "Serbian (Latin) - Montenegro", [12289] = "Arabic - Lebanon", [12297] = "English - Zimbabwe", [12298] = "Spanish - Ecuador", [12300] = "French - Cote d'Ivoire", [12314] = "Serbian (Cyrillic) - Montenegro", [13313] = "Arabic - Kuwait", [13321] = "English - Philippines", [13322] = "Spanish - Chile", [13324] = "French - Mali", [14337] = "Arabic - U.A.E.", [14345] = "English - Indonesia", [14346] = "Spanish - Uruguay", [14348] = "French - Morocco", [15361] = "Arabic - Bahrain", [15369] = "English - Hong Kong SAR", [15370] = "Spanish - Paraguay", [15372] = "French - Haiti", [16385] = "Arabic - Qatar", [16393] = "English - India", [16394] = "Spanish - Bolivia", [17417] = "English - Malaysia", [17418] = "Spanish - El Salvador", [18441] = "English - Singapore", [18442] = "Spanish - Honduras", [19466] = "Spanish - Nicaragua", [20490] = "Spanish - Puerto Rico", [21514] = "Spanish - United States", [22538] = "Spanish - Latin America", [31748] = "Chinese - Traditional", [58380] = "French - North Africa", [66561] = "Arabic (102)", [66562] = "Bulgarian (Latin)", [66565] = "Czech (QWERTY)", [66567] = "German (IBM)", [66568] = "Greek (220)", [66568] = "Uyghur", [66569] = "English - United States (Dvorak)", [66570] = "Spanish Variation", [66574] = "Hungarian 101-key", [66576] = "Italian (142)", [66581] = "Polish (214)", [66582] = "Portuguese (Brazilian ABNT2)", [66584] = "Romanian (Standard)", [66585] = "Russian (Typewriter)", [66587] = "Slovak (QWERTY)", [66590] = "Thai Pattachote", [66591] = "Turkish F", [66598] = "Latvian (Legacy)", [66599] = "Lithuanian", [66603] = "Armenian Western", [66604] = "Azerbaijani (Standard)", [66606] = "Sorbian Extended", [66607] = "Macedonia (FYROM) - Standard", [66615] = "Georgian (QWERTY)", [66617] = "Hindi Traditional", [66618] = "Maltese 48-key", [66619] = "Sami Extended Norway", [66628] = "Tatar", [66629] = "Bangla (India - Legacy)", [66641] = "Tibetan (PRC - Standard)", [66643] = "Khmer (NIDA)", [66650] = "Syriac Phonetic", [66651] = "Sinhala - wij 9", [66652] = "Cherokee Nation Phonetic", [66653] = "Inuktitut - Naqittaut", [66661] = "Divehi Typewriter", [66688] = "Uyghur", [67596] = "Belgian (Comma)", [67643] = "Finnish with Sami", [68608] = "Myanmar", [69641] = "Canadian Multilingual Standard", [71689] = "Scottish Gaelic", [132097] = "Arabic (102) AZERTY", [132098] = "Bulgarian (phonetic layout)", [132101] = "Czech Programmers", [132104] = "Greek (319)", [132105] = "English - United States (International)", [132120] = "Romanian (Programmers)", [132121] = "Russian - Mnemonic", [132126] = "Thai Kedmanee (non-ShiftLock)", [132130] = "Ukrainian (Enhanced)", [132134] = "Latvian (Standard)", [132135] = "Lithuanian Standard", [132139] = "Armenian Phonetic", [132142] = "Sorbian Standard", [132151] = "Georgian (Ergonomic)", [132165] = "Bangla (India)", [133179] = "Sami Extended Finland-Sweden", [133200] = "Mongolian (Mongolian Script - Standard)", [134144] = "New Tai Lue", [197634] = "Bulgarian", [197640] = "Greek (220) Latin", [197641] = "English - United States (Dvorak for left hand)", [197662] = "Thai Pattachote (non-ShiftLock)", [197675] = "Armenian Typewriter", [197687] = "Georgian Ministry of Education and Science Schools", [199680] = "Tai Le", [263170] = "Bulgarian (phonetic traditional)", [263176] = "Greek (319) Latin", [263177] = "English - United States (Dvorak for right hand)", [263223] = "Georgian (Old Alphabets)", [328712] = "Greek Latin", [328745] = "Persian (Standard)", [330752] = "Tifinagh (Basic)", [394248] = "Greek Polytonic", [396288] = "Tifinagh (Full)", [461824] = "Lisu (Basic)", [527360] = "Lisu (Standard)", [592896] = "N'ko", [658432] = "Phags-pa", [723968] = "Buginese", [789504] = "Gothic", [855040] = "Ol Chiki", [920576] = "Osmanya", [986112] = "Old Italic", [1051648] = "Sora", [1117184] = "Javanese", [1182720] = "Futhark", } &default = function(n: count): string { return fmt("keyboard-%d", n); }; }