20 #ifndef FREERDP_LOCALE_KEYBOARD_H
21 #define FREERDP_LOCALE_KEYBOARD_H
23 #include <winpr/input.h>
25 #include <freerdp/api.h>
26 #include <freerdp/types.h>
27 #include <freerdp/scancode.h>
34 #define RDP_KEYBOARD_LAYOUT_TYPE_STANDARD 1
35 #define RDP_KEYBOARD_LAYOUT_TYPE_VARIANT 2
36 #define RDP_KEYBOARD_LAYOUT_TYPE_IME 4
44 char primaryLanguage[512];
45 char primaryLanguageSymbol[512];
46 char subLanguage[512];
47 char subLanguageSymbol[512];
58 #define KBD_ARABIC_101 0x00000401
59 #define KBD_BULGARIAN 0x00000402
60 #define KBD_CHINESE_TRADITIONAL_US 0x00000404
61 #define KBD_CZECH 0x00000405
62 #define KBD_DANISH 0x00000406
63 #define KBD_GERMAN 0x00000407
64 #define KBD_GREEK 0x00000408
65 #define KBD_US 0x00000409
66 #define KBD_SPANISH 0x0000040A
67 #define KBD_FINNISH 0x0000040B
68 #define KBD_FRENCH 0x0000040C
69 #define KBD_HEBREW 0x0000040D
70 #define KBD_HUNGARIAN 0x0000040E
71 #define KBD_ICELANDIC 0x0000040F
72 #define KBD_ITALIAN 0x00000410
73 #define KBD_JAPANESE 0x00000411
74 #define KBD_KOREAN 0x00000412
75 #define KBD_DUTCH 0x00000413
76 #define KBD_NORWEGIAN 0x00000414
77 #define KBD_POLISH_PROGRAMMERS 0x00000415
78 #define KBD_PORTUGUESE_BRAZILIAN_ABNT 0x00000416
79 #define KBD_ROMANIAN 0x00000418
80 #define KBD_RUSSIAN 0x00000419
81 #define KBD_CROATIAN 0x0000041A
82 #define KBD_SLOVAK 0x0000041B
83 #define KBD_ALBANIAN 0x0000041C
84 #define KBD_SWEDISH 0x0000041D
85 #define KBD_THAI_KEDMANEE 0x0000041E
86 #define KBD_TURKISH_Q 0x0000041F
87 #define KBD_URDU 0x00000420
88 #define KBD_UKRAINIAN 0x00000422
89 #define KBD_BELARUSIAN 0x00000423
90 #define KBD_SLOVENIAN 0x00000424
91 #define KBD_ESTONIAN 0x00000425
92 #define KBD_LATVIAN 0x00000426
93 #define KBD_LITHUANIAN_IBM 0x00000427
94 #define KBD_FARSI 0x00000429
95 #define KBD_VIETNAMESE 0x0000042A
96 #define KBD_ARMENIAN_EASTERN 0x0000042B
97 #define KBD_AZERI_LATIN 0x0000042C
98 #define KBD_FYRO_MACEDONIAN 0x0000042F
99 #define KBD_GEORGIAN 0x00000437
100 #define KBD_FAEROESE 0x00000438
101 #define KBD_DEVANAGARI_INSCRIPT 0x00000439
102 #define KBD_MALTESE_47_KEY 0x0000043A
103 #define KBD_NORWEGIAN_WITH_SAMI 0x0000043B
104 #define KBD_KAZAKH 0x0000043F
105 #define KBD_KYRGYZ_CYRILLIC 0x00000440
106 #define KBD_TATAR 0x00000444
107 #define KBD_BENGALI 0x00000445
108 #define KBD_PUNJABI 0x00000446
109 #define KBD_GUJARATI 0x00000447
110 #define KBD_TAMIL 0x00000449
111 #define KBD_TELUGU 0x0000044A
112 #define KBD_KANNADA 0x0000044B
113 #define KBD_MALAYALAM 0x0000044C
114 #define KBD_MARATHI 0x0000044E
115 #define KBD_MONGOLIAN_CYRILLIC 0x00000450
116 #define KBD_UNITED_KINGDOM_EXTENDED 0x00000452
117 #define KBD_SYRIAC 0x0000045A
118 #define KBD_NEPALI 0x00000461
119 #define KBD_PASHTO 0x00000463
120 #define KBD_DIVEHI_PHONETIC 0x00000465
121 #define KBD_LUXEMBOURGISH 0x0000046E
122 #define KBD_MAORI 0x00000481
123 #define KBD_CHINESE_SIMPLIFIED_US 0x00000804
124 #define KBD_SWISS_GERMAN 0x00000807
125 #define KBD_UNITED_KINGDOM 0x00000809
126 #define KBD_LATIN_AMERICAN 0x0000080A
127 #define KBD_BELGIAN_FRENCH 0x0000080C
128 #define KBD_BELGIAN_PERIOD 0x00000813
129 #define KBD_PORTUGUESE 0x00000816
130 #define KBD_SERBIAN_LATIN 0x0000081A
131 #define KBD_AZERI_CYRILLIC 0x0000082C
132 #define KBD_SWEDISH_WITH_SAMI 0x0000083B
133 #define KBD_UZBEK_CYRILLIC 0x00000843
134 #define KBD_INUKTITUT_LATIN 0x0000085D
135 #define KBD_CANADIAN_FRENCH_LEGACY 0x00000C0C
136 #define KBD_SERBIAN_CYRILLIC 0x00000C1A
137 #define KBD_CANADIAN_FRENCH 0x00001009
138 #define KBD_SWISS_FRENCH 0x0000100C
139 #define KBD_BOSNIAN 0x0000141A
140 #define KBD_IRISH 0x00001809
141 #define KBD_BOSNIAN_CYRILLIC 0x0000201A
145 #define KBD_ARABIC_102 0x00010401
146 #define KBD_BULGARIAN_LATIN 0x00010402
147 #define KBD_CZECH_QWERTY 0x00010405
148 #define KBD_GERMAN_IBM 0x00010407
149 #define KBD_GREEK_220 0x00010408
150 #define KBD_UNITED_STATES_DVORAK 0x00010409
151 #define KBD_SPANISH_VARIATION 0x0001040A
152 #define KBD_HUNGARIAN_101_KEY 0x0001040E
153 #define KBD_ITALIAN_142 0x00010410
154 #define KBD_POLISH_214 0x00010415
155 #define KBD_PORTUGUESE_BRAZILIAN_ABNT2 0x00010416
156 #define KBD_ROMANIAN_STANDARD 0x00010418
157 #define KBD_RUSSIAN_TYPEWRITER 0x00010419
158 #define KBD_SLOVAK_QWERTY 0x0001041B
159 #define KBD_THAI_PATTACHOTE 0x0001041E
160 #define KBD_TURKISH_F 0x0001041F
161 #define KBD_LATVIAN_QWERTY 0x00010426
162 #define KBD_LITHUANIAN 0x00010427
163 #define KBD_ARMENIAN_WESTERN 0x0001042B
164 #define KBD_GEORGIAN_QUERTY 0x00010437
165 #define KBD_HINDI_TRADITIONAL 0x00010439
166 #define KBD_MALTESE_48_KEY 0x0001043A
167 #define KBD_SAMI_EXTENDED_NORWAY 0x0001043B
168 #define KBD_BENGALI_INSCRIPT 0x00010445
169 #define KBD_KHMER 0x00010453
170 #define KBD_SYRIAC_PHONETIC 0x0001045A
171 #define KBD_DIVEHI_TYPEWRITER 0x00010465
172 #define KBD_BELGIAN_COMMA 0x0001080C
173 #define KBD_FINNISH_WITH_SAMI 0x0001083B
174 #define KBD_CANADIAN_MULTILINGUAL_STANDARD 0x00011009
175 #define KBD_GAELIC 0x00011809
176 #define KBD_ARABIC_102_AZERTY 0x00020401
177 #define KBD_CZECH_PROGRAMMERS 0x00020405
178 #define KBD_GREEK_319 0x00020408
179 #define KBD_UNITED_STATES_INTERNATIONAL 0x00020409
180 #define KBD_HEBREW_STANDARD 0x0002040D
181 #define KBD_RUSSIAN_PHONETIC 0x00020419
182 #define KBD_THAI_KEDMANEE_NON_SHIFTLOCK 0x0002041E
183 #define KBD_BANGLA 0x00020445
184 #define KBD_SAMI_EXTENDED_FINLAND_SWEDEN 0x0002083B
185 #define KBD_GREEK_220_LATIN 0x00030408
186 #define KBD_UNITED_STATES_DVORAK_FOR_LEFT_HAND 0x00030409
187 #define KBD_THAI_PATTACHOTE_NON_SHIFTLOCK 0x0003041E
188 #define KBD_BULGARIAN_PHONETIC 0x00040402
189 #define KBD_GREEK_319_LATIN 0x00040408
190 #define KBD_UNITED_STATES_DVORAK_FOR_RIGHT_HAND 0x00040409
191 #define KBD_UNITED_STATES_DVORAK_PROGRAMMER 0x19360409
192 #define KBD_GREEK_LATIN 0x00050408
193 #define KBD_PERSIAN 0x00050429
194 #define KBD_US_ENGLISH_TABLE_FOR_IBM_ARABIC_238_L 0x00050409
195 #define KBD_GREEK_POLYTONIC 0x00060408
196 #define KBD_FRENCH_BEPO 0xa000040c
197 #define KBD_GERMAN_NEO 0xB0000407
201 #define KBD_CHINESE_TRADITIONAL_PHONETIC 0xE0010404
202 #define KBD_JAPANESE_INPUT_SYSTEM_MS_IME2002 0xE0010411
203 #define KBD_KOREAN_INPUT_SYSTEM_IME_2000 0xE0010412
204 #define KBD_CHINESE_SIMPLIFIED_QUANPIN 0xE0010804
205 #define KBD_CHINESE_TRADITIONAL_CHANGJIE 0xE0020404
206 #define KBD_CHINESE_SIMPLIFIED_SHUANGPIN 0xE0020804
207 #define KBD_CHINESE_TRADITIONAL_QUICK 0xE0030404
208 #define KBD_CHINESE_SIMPLIFIED_ZHENGMA 0xE0030804
209 #define KBD_CHINESE_TRADITIONAL_BIG5_CODE 0xE0040404
210 #define KBD_CHINESE_TRADITIONAL_ARRAY 0xE0050404
211 #define KBD_CHINESE_SIMPLIFIED_NEIMA 0xE0050804
212 #define KBD_CHINESE_TRADITIONAL_DAYI 0xE0060404
213 #define KBD_CHINESE_TRADITIONAL_UNICODE 0xE0070404
214 #define KBD_CHINESE_TRADITIONAL_NEW_PHONETIC 0xE0080404
215 #define KBD_CHINESE_TRADITIONAL_NEW_CHANGJIE 0xE0090404
216 #define KBD_CHINESE_TRADITIONAL_MICROSOFT_PINYIN_IME_3 0xE00E0804
217 #define KBD_CHINESE_TRADITIONAL_ALPHANUMERIC 0xE00F0404
219 FREERDP_API DWORD freerdp_keyboard_init(DWORD keyboardLayoutId);
220 FREERDP_API DWORD freerdp_keyboard_init_ex(DWORD keyboardLayoutId,
221 const char* keyboardRemappingList);
223 FREERDP_API
void freerdp_keyboard_layouts_free(
RDP_KEYBOARD_LAYOUT* layouts,
size_t count);
224 FREERDP_API
const char* freerdp_keyboard_get_layout_name_from_id(DWORD keyboardLayoutId);
225 FREERDP_API DWORD freerdp_keyboard_get_layout_id_from_name(
const char* name);
226 FREERDP_API DWORD freerdp_keyboard_get_rdp_scancode_from_x11_keycode(DWORD keycode);
227 FREERDP_API DWORD freerdp_keyboard_get_x11_keycode_from_rdp_scancode(DWORD scancode,
231 freerdp_keyboard_get_matching_codepages(DWORD column,
const char* filter,
size_t* count);
234 FREERDP_API
const char* freerdp_keyboard_scancode_name(DWORD scancode);