15#define ROSDATA static __declspec(allocate(".data"))
18#pragma data_seg(".data")
21#define ROSDATA static __attribute__((section(".data")))
27#define KNUMS KBDNUMPAD|KBDSPECIAL
28#define KMEXT KBDEXT|KBDMULTIVK
54 'B',
'N',
'M', VK_OEM_COMMA,
102 { 0x10, VK_MEDIA_PREV_TRACK |
KBDEXT },
103 { 0x19, VK_MEDIA_NEXT_TRACK |
KBDEXT },
105 { 0x20, VK_VOLUME_MUTE |
KBDEXT },
106 { 0x21, VK_LAUNCH_APP2 |
KBDEXT },
107 { 0x22, VK_MEDIA_PLAY_PAUSE |
KBDEXT },
108 { 0x24, VK_MEDIA_STOP |
KBDEXT },
109 { 0x2E, VK_VOLUME_DOWN |
KBDEXT },
110 { 0x30, VK_VOLUME_UP |
KBDEXT },
111 { 0x32, VK_BROWSER_HOME |
KBDEXT },
129 { 0x65, VK_BROWSER_SEARCH |
KBDEXT },
130 { 0x66, VK_BROWSER_FAVORITES |
KBDEXT },
131 { 0x67, VK_BROWSER_REFRESH |
KBDEXT },
132 { 0x68, VK_BROWSER_STOP |
KBDEXT },
133 { 0x69, VK_BROWSER_FORWARD |
KBDEXT },
134 { 0x6A, VK_BROWSER_BACK |
KBDEXT },
135 { 0x6B, VK_LAUNCH_APP1 |
KBDEXT },
136 { 0x6C, VK_LAUNCH_MAIL |
KBDEXT },
137 { 0x6D, VK_LAUNCH_MEDIA_SELECT |
KBDEXT },
162 {
'1', 0, {
'1',
'!'} },
169 { VK_OEM_COMMA, 0, {
',' ,
';'} },
170 { VK_OEM_PERIOD, 0, {
'.' ,
':'} },
174 {
VK_TAB, 0, {
'\t',
'\t'} },
175 {
VK_ADD, 0, {
'+' ,
'+' } },
186 {
'A',
CAPLOK, {
'a',
'A', 0x01} },
187 {
'B',
CAPLOK, {
'b',
'B', 0x02} },
188 {
'C',
CAPLOK, {
'c',
'C', 0x03} },
189 {
'D',
CAPLOK, {
'd',
'D', 0x04} },
190 {
'F',
CAPLOK, {
'f',
'F', 0x06} },
191 {
'G',
CAPLOK, {
'g',
'G', 0x07} },
192 {
'H',
CAPLOK, {
'h',
'H', 0x08} },
193 {
'I',
CAPLOK, {
'i',
'I', 0x09} },
194 {
'J',
CAPLOK, {
'j',
'J', 0x0a} },
195 {
'K',
CAPLOK, {
'k',
'K', 0x0b} },
196 {
'L',
CAPLOK, {
'l',
'L', 0x0c} },
197 {
'N',
CAPLOK, {
'n',
'N', 0x0e} },
198 {
'O',
CAPLOK, {
'o',
'O', 0x0f} },
199 {
'P',
CAPLOK, {
'p',
'P', 0x10} },
200 {
'Q',
CAPLOK, {
'q',
'Q', 0x11} },
201 {
'R',
CAPLOK, {
'r',
'R', 0x12} },
202 {
'S',
CAPLOK, {
's',
'S', 0x13} },
203 {
'T',
CAPLOK, {
't',
'T', 0x14} },
204 {
'U',
CAPLOK, {
'u',
'U', 0x15} },
205 {
'V',
CAPLOK, {
'v',
'V', 0x16} },
206 {
'W',
CAPLOK, {
'w',
'W', 0x17} },
207 {
'X',
CAPLOK, {
'x',
'X', 0x18} },
208 {
'Y',
CAPLOK, {
'y',
'Y', 0x19} },
209 {
'Z',
CAPLOK, {
'z',
'Z', 0x1a} },
213 {
VK_OEM_5 , 0, {0xa7, 0xbd, 0x1c } },
214 { VK_OEM_MINUS, 0, {
'-',
'_', 0x1f } },
217 {
VK_BACK, 0, {
'\b',
'\b', 0x7f} },
219 {
VK_SPACE, 0, {
' ' ,
' ' ,
' ' } },
226 {
'2', 0, {
'2',
'\"',
WCH_NONE,
'@' } },
227 {
'3', 0, {
'3',
'#' ,
WCH_NONE, 0xa3 } },
228 {
'4', 0, {
'4', 0xa4,
WCH_NONE,
'$' } },
229 {
'5', 0, {
'5',
'%' ,
WCH_NONE, 0x20ac} },
230 {
'7', 0, {
'7',
'/' ,
WCH_NONE,
'{' } },
231 {
'8', 0, {
'8',
'(' ,
WCH_NONE,
'[' } },
232 {
'9', 0, {
'9',
')' ,
WCH_NONE,
']' } },
233 {
'0', 0, {
'0',
'=' ,
WCH_NONE,
'}' } },
234 { VK_OEM_PLUS, 0, {
'+',
'?',
WCH_NONE,
'\\'} },
236 {
'E' ,
CAPLOK , {
'e' ,
'E' , 0x05, 0x20ac } },
238 {
VK_EMPTY, 0, {0xa8 , 0x5e , 0x1d, 0x7e } },
240 {
'M' ,
CAPLOK , {
'm',
'M', 0x0d, 0x00b5} },
241 { VK_OEM_102, 0, {
'<',
'>', 0x1c,
'|' } },
266#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
280 { 0x0e,
L"ASKELPALAUTIN" },
285 { 0x36,
L"OIKEA VAIHTO" },
286 { 0x37,
L"NUM * (Numerisk tangent)" },
288 { 0x39,
L"V\x00C4LILY\x00D6NTI" },
289 { 0x3a,
L"CAPLOK LOCK" },
301 { 0x46,
L"SCROLL LOCK" },
302 { 0x47,
L"7 (Numerisk tangent)" },
303 { 0x48,
L"8 (Numerisk tangent)" },
304 { 0x49,
L"9 (Numerisk tangent)" },
305 { 0x4a,
L"- (Numerisk tangent)" },
306 { 0x4b,
L"4 (Numerisk tangent)" },
307 { 0x4c,
L"5 (Numerisk tangent)" },
308 { 0x4d,
L"6 (Numerisk tangent)" },
309 { 0x4e,
L"+ (Numerisk tangent)" },
310 { 0x4f,
L"1 (Numerisk tangent)" },
311 { 0x50,
L"2 (Numerisk tangent)" },
312 { 0x51,
L"3 (Numerisk tangent)" },
313 { 0x52,
L"0 (Numerisk tangent)" },
314 { 0x53,
L"DECIMAL (Numerisk tangent)" },
315 { 0x54,
L"Sys Req" },
334 { 0x1c,
L"RETUR (Numerisk tangent)" },
335 { 0x1d,
L"OIKEA CTRL" },
336 { 0x35,
L"JAKO (Numerisk tangent)" },
337 { 0x37,
L"PRINT SCREEN" },
338 { 0x38,
L"OIKEA ALT" },
339 { 0x45,
L"NUM LOCK" },
342 { 0x48,
L"YL\x00D6S" },
343 { 0x49,
L"PAGE UP" },
349 { 0x51,
L"PAGE DOWN" },
352 { 0x54,
L"<ReactOS>" },
354 { 0x5b,
L"VASEN <ReactOS>" },
355 { 0x5c,
L"OIKEA <ReactOS>" },
356 { 0x5d,
L"Program" },
362 L"\x005e" L"Cirkumflex",
369#define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
372 {
DEADTRANS(0x0061, 0x00a8, 0x00e4, 0x0000) },
373 {
DEADTRANS(0x0065, 0x00a8, 0x00eb, 0x0000) },
374 {
DEADTRANS(0x0069, 0x00a8, 0x00ef, 0x0000) },
375 {
DEADTRANS(0x006f, 0x00a8, 0x00f6, 0x0000) },
376 {
DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) },
377 {
DEADTRANS(0x0079, 0x00a8, 0x00ff, 0x0000) },
378 {
DEADTRANS(0x0041, 0x00a8, 0x00c4, 0x0000) },
379 {
DEADTRANS(0x0045, 0x00a8, 0x00cb, 0x0000) },
380 {
DEADTRANS(0x0049, 0x00a8, 0x00cf, 0x0000) },
381 {
DEADTRANS(0x004f, 0x00a8, 0x00d6, 0x0000) },
382 {
DEADTRANS(0x0055, 0x00a8, 0x00dc, 0x0000) },
383 {
DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) },
385 {
DEADTRANS(0x0061, 0x005e, 0x00e2, 0x0000) },
386 {
DEADTRANS(0x0065, 0x005e, 0x00ea, 0x0000) },
387 {
DEADTRANS(0x0069, 0x005e, 0x00ee, 0x0000) },
388 {
DEADTRANS(0x006f, 0x005e, 0x00f4, 0x0000) },
389 {
DEADTRANS(0x0075, 0x005e, 0x00fb, 0x0000) },
390 {
DEADTRANS(0x0041, 0x005e, 0x00c2, 0x0000) },
391 {
DEADTRANS(0x0045, 0x005e, 0x00ca, 0x0000) },
392 {
DEADTRANS(0x0049, 0x005e, 0x00ce, 0x0000) },
393 {
DEADTRANS(0x004f, 0x005e, 0x00d4, 0x0000) },
394 {
DEADTRANS(0x0055, 0x005e, 0x00db, 0x0000) },
395 {
DEADTRANS(0x0020, 0x005e, 0x005e, 0x0000) },
397 {
DEADTRANS(0x0061, 0x007e, 0x00e3, 0x0000) },
398 {
DEADTRANS(0x006f, 0x007e, 0x00f5, 0x0000) },
399 {
DEADTRANS(0x006e, 0x007e, 0x00f1, 0x0000) },
400 {
DEADTRANS(0x0041, 0x007e, 0x00c3, 0x0000) },
401 {
DEADTRANS(0x004f, 0x007e, 0x00d5, 0x0000) },
402 {
DEADTRANS(0x004e, 0x007e, 0x00d1, 0x0000) },
403 {
DEADTRANS(0x0020, 0x007e, 0x007e, 0x0000) },
405 {
DEADTRANS(0x0061, 0x00b4, 0x00e1, 0x0000) },
406 {
DEADTRANS(0x0065, 0x00b4, 0x00e9, 0x0000) },
407 {
DEADTRANS(0x0069, 0x00b4, 0x00ed, 0x0000) },
408 {
DEADTRANS(0x006f, 0x00b4, 0x00f3, 0x0000) },
409 {
DEADTRANS(0x0075, 0x00b4, 0x00fa, 0x0000) },
410 {
DEADTRANS(0x0079, 0x00b4, 0x00fd, 0x0000) },
411 {
DEADTRANS(0x0041, 0x00b4, 0x00c1, 0x0000) },
412 {
DEADTRANS(0x0045, 0x00b4, 0x00c9, 0x0000) },
413 {
DEADTRANS(0x0049, 0x00b4, 0x00cd, 0x0000) },
414 {
DEADTRANS(0x004f, 0x00b4, 0x00d3, 0x0000) },
415 {
DEADTRANS(0x0055, 0x00b4, 0x00da, 0x0000) },
416 {
DEADTRANS(0x0059, 0x00b4, 0x00dd, 0x0000) },
417 {
DEADTRANS(0x0020, 0x00b4, 0x00b4, 0x0000) },
419 {
DEADTRANS(0x0061, 0x0060, 0x00e0, 0x0000) },
420 {
DEADTRANS(0x0065, 0x0060, 0x00e8, 0x0000) },
421 {
DEADTRANS(0x0069, 0x0060, 0x00ec, 0x0000) },
422 {
DEADTRANS(0x006f, 0x0060, 0x00f2, 0x0000) },
423 {
DEADTRANS(0x0075, 0x0060, 0x00f9, 0x0000) },
424 {
DEADTRANS(0x0041, 0x0060, 0x00c0, 0x0000) },
425 {
DEADTRANS(0x0045, 0x0060, 0x00c8, 0x0000) },
426 {
DEADTRANS(0x0049, 0x0060, 0x00cc, 0x0000) },
427 {
DEADTRANS(0x004f, 0x0060, 0x00d2, 0x0000) },
428 {
DEADTRANS(0x0055, 0x0060, 0x00d9, 0x0000) },
429 {
DEADTRANS(0x0020, 0x0060, 0x0060, 0x0000) },
#define DEADTRANS(ch, accent, comp, flags)
ROSDATA DEADKEY dead_key[]
ROSDATA VSC_LPWSTR extended_key_names[]
ROSDATA USHORT scancode_to_vk[]
ROSDATA VK_TO_WCHARS1 keypad_numbers[]
ROSDATA MODIFIERS modifier_bits
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[]
ROSDATA VSC_LPWSTR key_names[]
ROSDATA VSC_VK extcode0_to_vk[]
ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[]
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[]
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[]
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[]
ROSDATA DEADKEY_LPWSTR dead_key_names[]
ROSDATA VK_TO_BIT modifier_keys[]
ROSDATA VSC_VK extcode1_to_vk[]
ROSDATA KBDTABLES keyboard_layout_table
PKBDTABLES WINAPI KbdLayerDescriptor()