10#define WIN32_NO_STATUS
17#define ROSDATA static __declspec(allocate(".data"))
20#pragma data_seg(".data")
23#define ROSDATA static __attribute__((section(".data")))
29#define KNUMS KBDNUMPAD|KBDSPECIAL
30#define KMEXT KBDEXT|KBDMULTIVK
39 VK_OEM_MINUS, VK_OEM_PLUS,
VK_BACK,
56 'B',
'N',
'M', VK_OEM_COMMA,
104 { 0x10, VK_MEDIA_PREV_TRACK |
KBDEXT },
105 { 0x19, VK_MEDIA_NEXT_TRACK |
KBDEXT },
107 { 0x20, VK_VOLUME_MUTE |
KBDEXT },
108 { 0x21, VK_LAUNCH_APP2 |
KBDEXT },
109 { 0x22, VK_MEDIA_PLAY_PAUSE |
KBDEXT },
110 { 0x24, VK_MEDIA_STOP |
KBDEXT },
111 { 0x2E, VK_VOLUME_DOWN |
KBDEXT },
112 { 0x30, VK_VOLUME_UP |
KBDEXT },
113 { 0x32, VK_BROWSER_HOME |
KBDEXT },
131 { 0x65, VK_BROWSER_SEARCH |
KBDEXT },
132 { 0x66, VK_BROWSER_FAVORITES |
KBDEXT },
133 { 0x67, VK_BROWSER_REFRESH |
KBDEXT },
134 { 0x68, VK_BROWSER_STOP |
KBDEXT },
135 { 0x69, VK_BROWSER_FORWARD |
KBDEXT },
136 { 0x6A, VK_BROWSER_BACK |
KBDEXT },
137 { 0x6B, VK_LAUNCH_APP1 |
KBDEXT },
138 { 0x6C, VK_LAUNCH_MAIL |
KBDEXT },
139 { 0x6D, VK_LAUNCH_MEDIA_SELECT |
KBDEXT },
159 { 0, 1, 2, 0, 0, 0, 3, 0 }
169 {
VK_TAB, 0, {
'\t',
'\t'} },
170 {
VK_ADD, 0, {
'+',
'+'} },
190 {
'1', 0, {
'+',
'1',
WCH_NONE,
'~'} },
201 {
'7', 0, {0x00fd,
'7',
WCH_NONE,
'`'} },
220 { VK_OEM_COMMA, 0, {
',',
'?',
WCH_NONE,
'<'} },
221 { VK_OEM_PERIOD, 0, {
'.',
':',
WCH_NONE,
'>'} },
225 {
'B',
CAPLOK, {
'b',
'B', 0x02,
'{'} },
226 {
'C',
CAPLOK, {
'c',
'C', 0x03,
'&'} },
227 {
'D',
CAPLOK, {
'd',
'D', 0x04, 0x0110} },
228 {
'E',
CAPLOK, {
'e',
'E', 0x05, 0x20ac} },
229 {
'F',
CAPLOK, {
'f',
'F', 0x06,
'['} },
230 {
'G',
CAPLOK, {
'g',
'G', 0x07,
']'} },
234 {
'K',
CAPLOK, {
'k',
'K', 0x0b, 0x0142} },
235 {
'L',
CAPLOK, {
'l',
'L', 0x0c, 0x0141} },
237 {
'N',
CAPLOK, {
'n',
'N', 0x0e,
'}'} },
239 {
'P',
CAPLOK, {
'p',
'P', 0x10,
'\''} },
240 {
'Q',
CAPLOK, {
'q',
'Q', 0x11,
'\\'} },
242 {
'S',
CAPLOK, {
's',
'S', 0x13, 0x0111} },
245 {
'V',
CAPLOK, {
'v',
'V', 0x16,
'@'} },
246 {
'W',
CAPLOK, {
'w',
'W', 0x17,
'|'} },
247 {
'X',
CAPLOK, {
'x',
'X', 0x18,
'#'} },
249 {
'Z',
CAPLOK, {
'z',
'Z', 0x1a,
'>'} },
269#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
282 { 0x0e,
L"Backspace" },
287 { 0x36,
L"Right Shift" },
291 { 0x3a,
L"CAPLOK Lock" },
303 { 0x46,
L"Scroll Lock" },
316 { 0x53,
L"Num Del" },
317 { 0x54,
L"Sys Req" },
336 { 0x1c,
L"Num Enter" },
337 { 0x1d,
L"Right Ctrl" },
339 { 0x37,
L"Prnt Scrn" },
340 { 0x38,
L"Right Alt" },
341 { 0x45,
L"Num Lock" },
345 { 0x49,
L"Page Up" },
351 { 0x51,
L"Page Down" },
354 { 0x54,
L"<ReactOS>" },
356 { 0x56,
L"Left Windows" },
357 { 0x5b,
L"Right Windows" },
361#define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
364 {
DEADTRANS(0x0043, 0x02c7, 0x010c, 0x0000) },
365 {
DEADTRANS(0x0063, 0x02c7, 0x010d, 0x0000) },
366 {
DEADTRANS(0x0044, 0x02c7, 0x010e, 0x0000) },
367 {
DEADTRANS(0x0064, 0x02c7, 0x010f, 0x0000) },
368 {
DEADTRANS(0x004c, 0x02c7, 0x013d, 0x0000) },
369 {
DEADTRANS(0x006c, 0x02c7, 0x013e, 0x0000) },
370 {
DEADTRANS(0x004e, 0x02c7, 0x0147, 0x0000) },
371 {
DEADTRANS(0x006e, 0x02c7, 0x0148, 0x0000) },
372 {
DEADTRANS(0x0053, 0x02c7, 0x0160, 0x0000) },
373 {
DEADTRANS(0x0073, 0x02c7, 0x0161, 0x0000) },
374 {
DEADTRANS(0x0054, 0x02c7, 0x0164, 0x0000) },
375 {
DEADTRANS(0x0074, 0x02c7, 0x0165, 0x0000) },
376 {
DEADTRANS(0x005a, 0x02c7, 0x017d, 0x0000) },
377 {
DEADTRANS(0x007a, 0x02c7, 0x017e, 0x0000) },
378 {
DEADTRANS(0x0020, 0x02c7, 0x02c7, 0x0000) },
380 {
DEADTRANS(0x0041, 0x00b4, 0x00c1, 0x0000) },
381 {
DEADTRANS(0x0061, 0x00b4, 0x00e1, 0x0000) },
382 {
DEADTRANS(0x0045, 0x00b4, 0x00c9, 0x0000) },
383 {
DEADTRANS(0x0065, 0x00b4, 0x00e9, 0x0000) },
384 {
DEADTRANS(0x0049, 0x00b4, 0x00cd, 0x0000) },
385 {
DEADTRANS(0x0069, 0x00b4, 0x00ed, 0x0000) },
386 {
DEADTRANS(0x004c, 0x00b4, 0x0139, 0x0000) },
387 {
DEADTRANS(0x006c, 0x00b4, 0x013a, 0x0000) },
388 {
DEADTRANS(0x004f, 0x00b4, 0x00d3, 0x0000) },
389 {
DEADTRANS(0x006f, 0x00b4, 0x00f3, 0x0000) },
390 {
DEADTRANS(0x0052, 0x00b4, 0x0154, 0x0000) },
391 {
DEADTRANS(0x0072, 0x00b4, 0x0155, 0x0000) },
392 {
DEADTRANS(0x0055, 0x00b4, 0x00da, 0x0000) },
393 {
DEADTRANS(0x0075, 0x00b4, 0x00fa, 0x0000) },
394 {
DEADTRANS(0x0059, 0x00b4, 0x00dd, 0x0000) },
395 {
DEADTRANS(0x0079, 0x00b4, 0x00fd, 0x0000) },
396 {
DEADTRANS(0x005a, 0x00b4, 0x0179, 0x0000) },
397 {
DEADTRANS(0x007a, 0x00b4, 0x017a, 0x0000) },
398 {
DEADTRANS(0x0020, 0x00b4, 0x00b4, 0x0000) },
400 {
DEADTRANS(0x004f, 0x005e, 0x00d4, 0x0000) },
401 {
DEADTRANS(0x006f, 0x005e, 0x00f4, 0x0000) },
402 {
DEADTRANS(0x0020, 0x005e, 0x005e, 0x0000) },
404 {
DEADTRANS(0x0041, 0x00a8, 0x00c4, 0x0000) },
405 {
DEADTRANS(0x0061, 0x00a8, 0x00e4, 0x0000) },
406 {
DEADTRANS(0x0045, 0x00a8, 0x00cb, 0x0000) },
407 {
DEADTRANS(0x0065, 0x00a8, 0x00eb, 0x0000) },
408 {
DEADTRANS(0x004f, 0x00a8, 0x00d6, 0x0000) },
409 {
DEADTRANS(0x006f, 0x00a8, 0x00f6, 0x0000) },
410 {
DEADTRANS(0x0055, 0x00a8, 0x00dc, 0x0000) },
411 {
DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) },
412 {
DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) },
414 {
DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) },
415 {
DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) },
416 {
DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) },
421 L"\x02c7" L"\x004D\x00E4\x006B\x010D\x0065\x0148",
422 L"\x00b4" L"\x0044\x013A\x017E\x0065\x0148",
423 L"\x005e" L"\x0056\x006F\x006B\x00E1\x0148",
PKBDTABLES WINAPI KbdLayerDescriptor()
#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_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