16#define WIN32_NO_STATUS
23#define ROSDATA static __declspec(allocate(".data"))
26#pragma data_seg(".data")
29#define ROSDATA static __attribute__((section(".data")))
35#define KNUMS KBDNUMPAD|KBDSPECIAL
36#define KMEXT KBDEXT|KBDMULTIVK
62 'B',
'N',
'M', VK_OEM_COMMA,
110 { 0x10, VK_MEDIA_PREV_TRACK |
KBDEXT },
111 { 0x19, VK_MEDIA_NEXT_TRACK |
KBDEXT },
113 { 0x20, VK_VOLUME_MUTE |
KBDEXT },
114 { 0x21, VK_LAUNCH_APP2 |
KBDEXT },
115 { 0x22, VK_MEDIA_PLAY_PAUSE |
KBDEXT },
116 { 0x24, VK_MEDIA_STOP |
KBDEXT },
117 { 0x2E, VK_VOLUME_DOWN |
KBDEXT },
118 { 0x30, VK_VOLUME_UP |
KBDEXT },
119 { 0x32, VK_BROWSER_HOME |
KBDEXT },
137 { 0x65, VK_BROWSER_SEARCH |
KBDEXT },
138 { 0x66, VK_BROWSER_FAVORITES |
KBDEXT },
139 { 0x67, VK_BROWSER_REFRESH |
KBDEXT },
140 { 0x68, VK_BROWSER_STOP |
KBDEXT },
141 { 0x69, VK_BROWSER_FORWARD |
KBDEXT },
142 { 0x6A, VK_BROWSER_BACK |
KBDEXT },
143 { 0x6B, VK_LAUNCH_APP1 |
KBDEXT },
144 { 0x6C, VK_LAUNCH_MAIL |
KBDEXT },
145 { 0x6D, VK_LAUNCH_MEDIA_SELECT |
KBDEXT },
173 {
VK_TAB, 0, {
'\t',
'\t'} },
174 {
VK_ADD, 0, {
'+',
'+'} },
185 {
'1',
CAPLOK, {
'1',
'!', 0x2019 } },
186 {
'3',
CAPLOK, {
'3', 0x00a7, 0x00b3 } },
187 {
'4',
CAPLOK, {
'4',
'$', 0x2014 } },
188 {
'5',
CAPLOK, {
'5',
'%', 0x00a1 } },
189 {
'7',
CAPLOK, {
'7',
'/',
'{' } },
190 {
'8',
CAPLOK, {
'8',
'(',
'[' } },
191 {
'9',
CAPLOK, {
'9',
')',
']' } },
192 {
'0',
CAPLOK, {
'0',
'=',
'}' } },
194 { 0xff, 0, {0x00b4,
'`', 0x02d9 } },
195 {
'Q',
CAPLOK, {
'q',
'Q',
'@' } },
198 {
'E',
CAPLOK, {
'e',
'E', 0x20ac } },
213 {
'A',
CAPLOK, {
'a',
'A', 0x263a } },
214 {
'S',
CAPLOK, {
's',
'S', 0x2033 } },
215 {
'D',
CAPLOK, {
'd',
'D', 0x2032 } },
218 {
'G',
CAPLOK, {
'g',
'G', 0x1e9e } },
231 { VK_OEM_102, 0, {
'<',
'>',
'|' } },
232 {
'Y',
CAPLOK, {
'y',
'Y', 0x203a } },
233 {
'X',
CAPLOK, {
'x',
'X', 0x00bb } },
234 {
'C',
CAPLOK, {
'c',
'C', 0x202f } },
235 {
'V',
CAPLOK, {
'v',
'V', 0x20ab } },
236 {
'B',
CAPLOK, {
'b',
'B', 0x2039 } },
237 {
'N',
CAPLOK, {
'n',
'N', 0x2013 } },
238 {
'M',
CAPLOK, {
'm',
'M', 0x00b5 } },
239 { VK_OEM_COMMA,
CAPLOK, {
',',
';', 0x2011 } },
240 { VK_OEM_PERIOD,
CAPLOK, {
'.',
':', 0x00b7 } },
241 {
VK_SPACE, 0, {
' ',
' ', 0x00a0 } },
289#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
304 { 0x0e,
L"R\x00fc" L"ck" },
305 { 0x0f,
L"Tabulator" },
306 { 0x1c,
L"Eingabe" },
308 { 0x2a,
L"Umschalt" },
309 { 0x36,
L"Umschalt Rechts" },
310 { 0x37,
L" (Zehnertastatur)" },
313 { 0x3a,
L"Feststell" },
325 { 0x46,
L"Rollen-Feststell" },
326 { 0x47,
L"7 (Zehnertastatur)" },
327 { 0x48,
L"8 (Zehnertastatur)" },
328 { 0x49,
L"9 (Zehnertastatur)" },
329 { 0x4a,
L"- (Zehnertastatur)" },
330 { 0x4b,
L"4 (Zehnertastatur)" },
331 { 0x4c,
L"5 (Zehnertastatur)" },
332 { 0x4d,
L"6 (Zehnertastatur)" },
333 { 0x4e,
L"+ (Zehnertastatur)" },
334 { 0x4f,
L"1 (Zehnertastatur)" },
335 { 0x50,
L"2 (Zehnertastatur)" },
336 { 0x51,
L"3 (Zehnertastatur)" },
337 { 0x52,
L"0 (Zehnertastatur)" },
338 { 0x53,
L"Komma (Zehnertastatur)" },
339 { 0x54,
L"Sys Req" },
358 { 0x1c,
L"Eingabe (Zehnertastatur" },
359 { 0x1d,
L"Strg-Rechts" },
360 { 0x35,
L" (Zehnertastatur)" },
363 { 0x45,
L"Num-Feststell" },
366 { 0x48,
L"Nach-Oben" },
367 { 0x49,
L"Bild-Nach-Oben" },
368 { 0x4b,
L"Nach-Links" },
370 { 0x4d,
L"Nach-Rechts" },
372 { 0x50,
L"Nach-Unten" },
373 { 0x51,
L"Bild-Nach-Unten" },
376 { 0x54,
L"<ReactOS>" },
378 { 0x56,
L"Linke <ReactOS>" },
379 { 0x5b,
L"Rechte <ReactOS>" },
387 L"\x02d9" L"\x00dcBERPUNKT",
389 L"\x02dd" L"DOPPELAKUT",
390 L"\x02c7" L"HATSCHEK",
397 L"\x02df" L"EXTRA-WAHLTASTE",
398 L"\x02cd" L"UNTERSTRICH",
399 L"\x00b8" L"CEDILLA",
400 L"\x02cf" L"UNTERKOMMA",
402 L"\x02cc" L"UNTERPUNKT",
403 L"\x02d7" L"QUERSTRICHAKZENT",
407#define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
489 {
DEADTRANS(0x00dc, 0x00b4, 0x01d7, 0x0000) },
490 {
DEADTRANS(0x00fc, 0x00b4, 0x01d8, 0x0000) },
491 {
DEADTRANS(0x00b4, 0x00b4, 0x0301, 0x0000) },
556 {
DEADTRANS(0x02d9, 0x02d9, 0x0307, 0x0000) },
575 {
DEADTRANS(0x00c4, 0x00af, 0x01de, 0x0000) },
576 {
DEADTRANS(0x00d6, 0x00af, 0x022a, 0x0000) },
577 {
DEADTRANS(0x00dc, 0x00af, 0x01d5, 0x0000) },
578 {
DEADTRANS(0x00e4, 0x00af, 0x01df, 0x0000) },
579 {
DEADTRANS(0x00f6, 0x00af, 0x022b, 0x0000) },
580 {
DEADTRANS(0x00fc, 0x00af, 0x01d6, 0x0000) },
593 {
DEADTRANS(0x02dd, 0x02dd, 0x030b, 0x0000) },
644 {
DEADTRANS(0x00dc, 0x02c7, 0x01d9, 0x0000) },
645 {
DEADTRANS(0x00fc, 0x02c7, 0x01da, 0x0000) },
646 {
DEADTRANS(0x02c7, 0x02c7, 0x030c, 0x0000) },
669 {
DEADTRANS(0x00a8, 0x00a8, 0x0308, 0x0000) },
696 {
DEADTRANS(0x02d8, 0x02d8, 0x0306, 0x0000) },
718 {
DEADTRANS(0x02dc, 0x02dc, 0x0303, 0x0000) },
799 {
DEADTRANS(0x00b7, 0x02da, 0x2219, 0x0000) },
800 {
DEADTRANS(0x00c4, 0x02da, 0x220c, 0x0000) },
801 {
DEADTRANS(0x00d6, 0x02da, 0x2209, 0x0000) },
802 {
DEADTRANS(0x00d7, 0x02da, 0x2297, 0x0000) },
803 {
DEADTRANS(0x00dc, 0x02da, 0x2226, 0x0000) },
805 {
DEADTRANS(0x00e4, 0x02da, 0x220b, 0x0000) },
806 {
DEADTRANS(0x00f6, 0x02da, 0x2208, 0x0000) },
807 {
DEADTRANS(0x00fc, 0x02da, 0x2225, 0x0000) },
808 {
DEADTRANS(0x02da, 0x02da, 0x030a, 0x0000) },
823 {
DEADTRANS(0x02c0, 0x02c0, 0x0309, 0x0000) },
882 {
DEADTRANS(0x00c4, 0x02bc, 0x0391, 0x0000) },
883 {
DEADTRANS(0x00d6, 0x02bc, 0x039f, 0x0000) },
884 {
DEADTRANS(0x00dc, 0x02bc, 0x0398, 0x0000) },
886 {
DEADTRANS(0x00e4, 0x02bc, 0x03b1, 0x0000) },
887 {
DEADTRANS(0x00f6, 0x02bc, 0x03bf, 0x0000) },
888 {
DEADTRANS(0x00fc, 0x02bc, 0x03b8, 0x0000) },
889 {
DEADTRANS(0x02bc, 0x02bc, 0x031b, 0x0000) },
972 {
DEADTRANS(0x00b4, 0x00b1, 0x00a3, 0x0000) },
973 {
DEADTRANS(0x00c4, 0x00b1, 0x00c6, 0x0000) },
974 {
DEADTRANS(0x00d6, 0x00b1, 0x0152, 0x0000) },
975 {
DEADTRANS(0x00dc, 0x00b1, 0x2197, 0x0000) },
976 {
DEADTRANS(0x00df, 0x00b1, 0x2260, 0x0000) },
977 {
DEADTRANS(0x00e4, 0x00b1, 0x00e6, 0x0000) },
978 {
DEADTRANS(0x00f6, 0x00b1, 0x0153, 0x0000) },
979 {
DEADTRANS(0x00fc, 0x00b1, 0x2198, 0x0000) },
1005 {
DEADTRANS(0x02cd, 0x02cd, 0x0331, 0x0000) },
1030 {
DEADTRANS(0x00b8, 0x00b8, 0x0327, 0x0000) },
1034 {
DEADTRANS(
L'\"', 0x02cf, 0x01c1, 0x0000) },
1036 {
DEADTRANS(
L'\'', 0x02cf, 0x01c0, 0x0000) },
1081 {
DEADTRANS(0x007c, 0x02cf, 0x2980, 0x0000) },
1082 {
DEADTRANS(0x00af, 0x02cf, 0x0305, 0x0000) },
1083 {
DEADTRANS(0x00b4, 0x02cf, 0x030d, 0x0000) },
1084 {
DEADTRANS(0x02bc, 0x02cf, 0x0315, 0x0000) },
1085 {
DEADTRANS(0x02c0, 0x02cf, 0x0312, 0x0000) },
1086 {
DEADTRANS(0x02cd, 0x02cf, 0x0332, 0x0000) },
1087 {
DEADTRANS(0x02cf, 0x02cf, 0x0326, 0x0000) },
1088 {
DEADTRANS(0x02d8, 0x02cf, 0x032f, 0x0000) },
1089 {
DEADTRANS(0x02d9, 0x02cf, 0x0358, 0x0000) },
1090 {
DEADTRANS(0x02db, 0x02cf, 0x1ab7, 0x0000) },
1091 {
DEADTRANS(0x2032, 0x02cf, 0x2035, 0x0000) },
1092 {
DEADTRANS(0x2033, 0x02cf, 0x2036, 0x0000) },
1105 {
DEADTRANS(0x02db, 0x02db, 0x0328, 0x0000) },
1147 {
DEADTRANS(0x02cc, 0x02cc, 0x0323, 0x0000) },
1152 {
DEADTRANS(
L'\'', 0x02d7, 0x266a, 0x0000) },
1220 {
DEADTRANS(0x00b7, 0x02d7, 0x25c9, 0x0000) },
1221 {
DEADTRANS(0x00d6, 0x02d7, 0x200d, 0x0000) },
1222 {
DEADTRANS(0x00dc, 0x02d7, 0x2003, 0x0000) },
1223 {
DEADTRANS(0x00df, 0x02d7, 0x2007, 0x0000) },
1224 {
DEADTRANS(0x00f6, 0x02d7, 0x200b, 0x0000) },
1225 {
DEADTRANS(0x00fc, 0x02d7, 0x2009, 0x0000) },
1226 {
DEADTRANS(0x02d7, 0x02d7, 0x0335, 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_WCHARS6 key_to_chars_6mod[]
ROSDATA VK_TO_BIT modifier_keys[]
ROSDATA VSC_VK extcode1_to_vk[]
ROSDATA KBDTABLES keyboard_layout_table
PKBDTABLES WINAPI KbdLayerDescriptor()