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