Sync with trunk r63637.
[reactos.git] / dll / keyboard / kbdcz1 / kbdcz1.c
index e4b6e92..e71f2f9 100644 (file)
@@ -78,7 +78,7 @@ ROSDATA USHORT scancode_to_vk[] = {
   VK_SNAPSHOT,
   /* - 55 - */
   /* Oddities, and the remaining standard F-Keys */
-  VK_EMPTY,     VK_EMPTY,     VK_F11,       VK_F12,
+  VK_EMPTY,     VK_OEM_102,   VK_F11,       VK_F12,
   /* - 59 - */
   VK_CLEAR,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY, /* EREOF */
   VK_EMPTY,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY, /* ZOOM */
@@ -159,111 +159,128 @@ ROSDATA VK_TO_BIT modifier_keys[] = {
 
 ROSDATA MODIFIERS modifier_bits = {
   modifier_keys,
-  7,
-  { 0, 1, 2, 0, 0, 0, 3, 0 }
-  /* Modifier bit order: NONE, SHIFT, CTRL, SHIFT-CTRL, ALT (not used), SHIFT-ALT (not used), CTRL-ALT, SHIFT-CTRL-ALT */
+  7,  /* Modifier bit order */
+  {
+    0,  /* NONE */
+    1,  /* SHIFT */
+    2,  /* CTRL */
+    0,  /* SHIFT-CTRL (not used) */
+    0,  /* ALT (not used) */
+    0,  /* SHIFT-ALT (not used) */
+    3,  /* CTRL-ALT */
+    4,  /* SHIFT-CTRL-ALT */
+  }
+};
+/* ^ This table shows which column in any VK_TO_WCHARS* structure will be used on which modifier */
+
+ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
+  { VK_NUMPAD0, 0, {'0'} },
+  { VK_NUMPAD1, 0, {'1'} },
+  { VK_NUMPAD2, 0, {'2'} },
+  { VK_NUMPAD3, 0, {'3'} },
+  { VK_NUMPAD4, 0, {'4'} },
+  { VK_NUMPAD5, 0, {'5'} },
+  { VK_NUMPAD6, 0, {'6'} },
+  { VK_NUMPAD7, 0, {'7'} },
+  { VK_NUMPAD8, 0, {'8'} },
+  { VK_NUMPAD9, 0, {'9'} },
+  { VK_DECIMAL, 0, {','} },
+  { VK_BACK,    0, {'\010'} },
+  { 0, 0 }
 };
 
 ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
    /* Keys that do not have shift states */
-  { VK_TAB,                    0, {'\t','\t'} },
-  { VK_ADD,                    0, {'+', '+'} },
-  { VK_SUBTRACT,       0, {'-', '-'} },
-  { VK_MULTIPLY,       0, {'*', '*'} },
-  { VK_DIVIDE,         0, {'/', '/'} },
-  { VK_OEM_2       ,0, {'-', '_'} },
-  { VK_ESCAPE,         0, {0x1b,0x1b} },
-  { VK_SPACE,          0, {' ', ' '} },
+  { VK_TAB,      0, { '\t', '\t' } },
+  { VK_ADD,      0, { '+',  '+'  } },
+  { VK_SUBTRACT, 0, { '-',  '-'  } },
+  { VK_MULTIPLY, 0, { '*',  '*'  } },
+  { VK_DIVIDE,   0, { '/',  '/'  } },
+  { VK_ESCAPE,   0, { 0x1b, 0x1b } },
+  { VK_SPACE,    0, { ' ',  ' '  } },
   { 0, 0 }
 };
 
 ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
   /* normal - shift - ctrl */
-  /* The alphabet */
-  { 'A',       CAPLOK,   {'a', 'A', 0x01} },
-  { 'B',       CAPLOK,   {'b', 'B', 0x02} },
-  { 'C',       CAPLOK,   {'c', 'C', 0x03} },
-  { 'D',       CAPLOK,   {'d', 'D', 0x04} },
-  { 'F',       CAPLOK,   {'f', 'F', 0x06} },
-  { 'G',       CAPLOK,   {'g', 'G', 0x07} },
-  { 'H',       CAPLOK,   {'h', 'H', 0x08} },
-  { 'I',       CAPLOK,   {'i', 'I', 0x09} },
-  { 'J',       CAPLOK,   {'j', 'J', 0x0a} },
-  { 'K',       CAPLOK,   {'k', 'K', 0x0b} },
-  { 'L',       CAPLOK,   {'l', 'L', 0x0c} },
-  { 'M',       CAPLOK,   {'m', 'M', 0x0d} },
-  { 'N',       CAPLOK,   {'n', 'N', 0x0e} },
-  { 'O',       CAPLOK,   {'o', 'O', 0x0f} },
-  { 'P',       CAPLOK,   {'p', 'P', 0x10} },
-  { 'Q',       CAPLOK,   {'q', 'Q', 0x11} },
-  { 'R',       CAPLOK,   {'r', 'R', 0x12} },
-  { 'S',       CAPLOK,   {'s', 'S', 0x13} },
-  { 'T',       CAPLOK,   {'t', 'T', 0x14} },
-  { 'U',       CAPLOK,   {'u', 'U', 0x15} },
-  { 'V',       CAPLOK,   {'v', 'V', 0x16} },
-  { 'W',       CAPLOK,   {'w', 'W', 0x17} },
-  { 'X',       CAPLOK,   {'x', 'X', 0x18} },
-  { 'Y',       CAPLOK,   {'y', 'Y', 0x19} },
-  { 'Z',       CAPLOK,   {'z', 'Z', 0x1a} },
 
   /* Legacy (telnet-style) ascii escapes */
-  { VK_RETURN,         0, {'\r',     '\r',     '\n'}    },
+  { VK_RETURN,  0, {'\r', '\r', '\n'       } },
   { 0,0 }
 };
 
-ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
-/* Normal, shifted, control, Alt+Gr */
-  { '1',                       0, {'+',                '1',            WCH_NONE,       '!'                             } },
-  { '2',                       0, {0x011b,     '2',            0,                      '@'                             } }, // e with caron
-  { '3',                       0, {0x0161,     '3',            WCH_NONE,       '#'                             } }, // s with caron
-  { '4',                       0, {0x010d,     '4',            WCH_NONE,       '$'                             } }, // c with caron
-  { '5',                       0, {0x0159,     '5',            WCH_NONE,       '%'                             } }, // r with caron
-  { '6',                       0, {0x017e,     '6',            0x1e,           '^'                             } }, // z with caron
-  { '7',                       0, {0x00fd,     '7',            WCH_NONE,       '&'                             } }, // y with acute
-  { '8',                       0, {0x00e1,     '8',            WCH_NONE,       '*'                             } }, // a with acute
-  { '9',                       0, {0x00ed,     '9',            WCH_NONE,       '('                             } }, // i with acute
-  { '0',                       0, {0x00e9,     '0',            WCH_NONE,       ')'                             } }, // e with acute
-  { VK_OEM_PLUS,       0, {WCH_DEAD,   WCH_DEAD,       WCH_NONE,       '='                             } }, // dead letters - acute, caron
-  { VK_EMPTY,          0,              {0x00b4,        0x02c7,         WCH_NONE,       WCH_NONE                } }, // VK_OEM_PLUS death
-  { VK_OEM_MINUS,      0, {'=',                '%',            0x1f,           '-'                             } },
-  { VK_OEM_1,          0, {0x016f,     '\"',           WCH_NONE,       ';'                             } }, // u with ring
-  { VK_OEM_7,          0, {0x00a7,     '!',            WCH_NONE,       0x00a4                  } }, // section sign
-  { VK_OEM_4,          0, {0x00fa,     '/',            WCH_NONE,       '['                             } }, // u with acute
-  { VK_OEM_5,          0, {WCH_DEAD,   0x2018,         WCH_NONE,       '\\'                    } }, // diaeresis, left single quotation mark
-  { VK_EMPTY,          0,              {0x00a8,        WCH_NONE,       WCH_NONE,       WCH_NONE                } }, // VK_OEM_5 death
-  { VK_OEM_6,          0, {')',                '(',            WCH_NONE,       ']'                             } },
-  { VK_OEM_3,          0, {';',                WCH_DEAD,       WCH_NONE,       '`'                             } }, // ring
-  { VK_EMPTY,          0,              {WCH_NONE,      0x00b0,         WCH_NONE,       WCH_NONE                } }, // VK_OEM_3 death
-  { VK_OEM_COMMA,      0, {',',                '?',            WCH_NONE,       '<'                             } },
-  { VK_OEM_PERIOD,     0, {'.',                ':',            WCH_NONE,       '>'                             } },
-  { 'E',                       CAPLOK,   {'e',                 'E',            0x05,           0x20AC                  } }, // symbol for euro (currency)
-  { 0, 0 }
-};
+ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
+/* Normal, shifted, control, Alt+Gr, Sh+Alt+Gr */
+
+  /* The numbers */
+  { '1',           0, { '+',      '1',      WCH_NONE, '!',      WCH_NONE } },
+  { '2',           0, { 0x011b,   '2',      0,        '@',      WCH_NONE } }, // e with caron
+  { '3',           0, { 0x0161,   '3',      WCH_NONE, '#',      WCH_NONE } }, // s with caron
+  { '4',           0, { 0x010d,   '4',      WCH_NONE, '$',      WCH_NONE } }, // c with caron
+  { '5',           0, { 0x0159,   '5',      WCH_NONE, '%',      WCH_NONE } }, // r with caron
+  { '6',           0, { 0x017e,   '6',      0x1e,     '^',      WCH_NONE } }, // z with caron
+  { '7',           0, { 0x00fd,   '7',      WCH_NONE, '&',      WCH_NONE } }, // y with acute
+  { '8',           0, { 0x00e1,   '8',      WCH_NONE, '*',      WCH_NONE } }, // a with acute
+  { '9',           0, { 0x00ed,   '9',      WCH_NONE, '(',      WCH_NONE } }, // i with acute
+  { '0',           0, { 0x00e9,   '0',      WCH_NONE, ')',      WCH_NONE } }, // e with acute
+
+  /* The misc */
+  { VK_OEM_PLUS,   0, { WCH_DEAD, WCH_DEAD, WCH_NONE, '=',      '+'      } }, // dead letters - acute, caron
+  { VK_EMPTY,      0, { 0x00b4,   0x02c7,   WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_PLUS dead letter
+  { VK_OEM_MINUS,  0, { '=',      '%',      0x1f,     '-',      '_'      } },
+  { VK_OEM_1,      0, { 0x016f,   '\"',     WCH_NONE, ';',      ':'      } }, // u with ring
+  { VK_OEM_7,      0, { 0x00a7,   '!',      WCH_NONE, 0x00a4,   WCH_DEAD } }, // section sign, currency sign
+  { VK_EMPTY,      0, { WCH_NONE, WCH_NONE, WCH_NONE, WCH_NONE, '^'      } }, // VK_OEM_7 dead letter
+  { VK_OEM_4,      0, { 0x00fa,   '/',      WCH_NONE, '[',      '{'      } }, // u with acute
+  { VK_OEM_5,      0, { WCH_DEAD, 0x2018,   WCH_NONE, '\\',     '|'      } }, // diaeresis, left single quotation mark
+  { VK_EMPTY,      0, { 0x00a8,   WCH_NONE, WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_5 dead letter
+  { VK_OEM_6,      0, { ')',      '(',      WCH_NONE, ']',      '}'      } },
+  { VK_OEM_3,      0, { ';',      WCH_DEAD, WCH_NONE, '`',      '~'      } }, // ring
+  { VK_EMPTY,      0, { WCH_NONE, 0x00b0,   WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_3 dead letter
+  { VK_OEM_COMMA,  0, { ',',      '?',      WCH_NONE, '<',      0x00d7   } }, // multiplication sign
+  { VK_OEM_PERIOD, 0, { '.',      ':',      WCH_NONE, '>',      0x00f7   } }, // division sign
+  { VK_OEM_2,      0, { '-',      '_',      WCH_NONE, '/',      '?'      } },
+  { VK_OEM_102,    0, { '\\',     '|',      0x1c/*FS*/, 0x00df, WCH_DEAD } }, // sharp s, double acute accent
+  { VK_EMPTY,      0, { WCH_NONE, WCH_NONE, WCH_NONE, WCH_NONE, 0x02dd   } }, // VK_OEM_102 dead letter
 
-ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
-  { VK_DECIMAL, 0, {','} },
-  { VK_NUMPAD0, 0, {'0'} },
-  { VK_NUMPAD1, 0, {'1'} },
-  { VK_NUMPAD2, 0, {'2'} },
-  { VK_NUMPAD3, 0, {'3'} },
-  { VK_NUMPAD4, 0, {'4'} },
-  { VK_NUMPAD5, 0, {'5'} },
-  { VK_NUMPAD6, 0, {'6'} },
-  { VK_NUMPAD7, 0, {'7'} },
-  { VK_NUMPAD8, 0, {'8'} },
-  { VK_NUMPAD9, 0, {'9'} },
-  { VK_BACK,    0, {'\010'} },
+  /* The alphabet */
+  { 'A',      CAPLOK, { 'a',      'A',      0x01,     WCH_NONE, WCH_NONE } },
+  { 'B',      CAPLOK, { 'b',      'B',      0x02,     WCH_NONE, WCH_NONE } },
+  { 'C',      CAPLOK, { 'c',      'C',      0x03,     WCH_NONE, WCH_NONE } },
+  { 'D',      CAPLOK, { 'd',      'D',      0x04,     WCH_NONE, WCH_NONE } },
+  { 'E',      CAPLOK, { 'e',      'E',      0x05,     0x20AC,   WCH_NONE } }, // symbol for euro (currency)
+  { 'F',      CAPLOK, { 'f',      'F',      0x06,     WCH_NONE, WCH_NONE } },
+  { 'G',      CAPLOK, { 'g',      'G',      0x07,     WCH_NONE, WCH_NONE } },
+  { 'H',      CAPLOK, { 'h',      'H',      0x08,     WCH_NONE, WCH_NONE } },
+  { 'I',      CAPLOK, { 'i',      'I',      0x09,     WCH_NONE, WCH_NONE } },
+  { 'J',      CAPLOK, { 'j',      'J',      0x0a,     WCH_NONE, WCH_NONE } },
+  { 'K',      CAPLOK, { 'k',      'K',      0x0b,     WCH_NONE, WCH_NONE } },
+  { 'L',      CAPLOK, { 'l',      'L',      0x0c,     WCH_NONE, WCH_NONE } },
+  { 'M',      CAPLOK, { 'm',      'M',      0x0d,     WCH_NONE, WCH_NONE } },
+  { 'N',      CAPLOK, { 'n',      'N',      0x0e,     WCH_NONE, WCH_NONE } },
+  { 'O',      CAPLOK, { 'o',      'O',      0x0f,     WCH_NONE, WCH_NONE } },
+  { 'P',      CAPLOK, { 'p',      'P',      0x10,     WCH_NONE, WCH_NONE } },
+  { 'Q',      CAPLOK, { 'q',      'Q',      0x11,     WCH_NONE, WCH_NONE } },
+  { 'R',      CAPLOK, { 'r',      'R',      0x12,     WCH_NONE, WCH_NONE } },
+  { 'S',      CAPLOK, { 's',      'S',      0x13,     WCH_NONE, WCH_NONE } },
+  { 'T',      CAPLOK, { 't',      'T',      0x14,     WCH_NONE, WCH_NONE } },
+  { 'U',      CAPLOK, { 'u',      'U',      0x15,     WCH_NONE, WCH_NONE } },
+  { 'V',      CAPLOK, { 'v',      'V',      0x16,     WCH_NONE, WCH_NONE } },
+  { 'W',      CAPLOK, { 'w',      'W',      0x17,     WCH_NONE, WCH_NONE } },
+  { 'X',      CAPLOK, { 'x',      'X',      0x18,     WCH_NONE, WCH_NONE } },
+  { 'Y',      CAPLOK, { 'y',      'Y',      0x19,     WCH_NONE, WCH_NONE } },
+  { 'Z',      CAPLOK, { 'z',      'Z',      0x1a,     WCH_NONE, WCH_NONE } },
   { 0, 0 }
 };
 
-#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
+#define vk_master(n, x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
 
 ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = {
-  vk_master(1,keypad_numbers),
-  vk_master(2,key_to_chars_2mod),
-  vk_master(3,key_to_chars_3mod),
-  vk_master(4,key_to_chars_4mod),
-  { 0,0,0 }
+  vk_master(1, keypad_numbers),
+  vk_master(2, key_to_chars_2mod),
+  vk_master(3, key_to_chars_3mod),
+  vk_master(5, key_to_chars_5mod),
+  { 0, 0, 0 }
 };
 
 ROSDATA VSC_LPWSTR key_names[] = {
@@ -333,7 +350,9 @@ ROSDATA VSC_LPWSTR extended_key_names[] = {
   { 0x47, L"Home" },
   { 0x48, L"Up" },
   { 0x49, L"Page Up" },
-  { 0x4a, L"Left" },
+  /*  { 0x4a, L"Left" },*/
+  { 0x4a, L"-" },
+  { 0x4b, L"Left" },
   { 0x4c, L"Center" },
   { 0x4d, L"Right" },
   { 0x4f, L"End" },
@@ -401,16 +420,16 @@ ROSDATA DEADKEY dead_key[] = {
    { DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) },  // u with diaeresis
    { DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) },  // space > diaeresis
 
-   { DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) },  // U with round
-   { DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) },  // u with round
-   { DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) },  // space > round
+   { DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) },  // U with ring
+   { DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) },  // u with ring
+   { DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) },  // space > ring
    { 0, 0, 0 },
 };
 
 ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
-    L"\x00a1"  L"hacek",       // caron
-    L"\x00b4"  L"carka",       // acute
-    L"\x005e"  L"krouzek", // round
+    L"\x00a1" L"hacek",   // caron
+    L"\x00b4" L"carka",   // acute
+    L"\x005e" L"krouzek", // ring
     NULL
 };
 
@@ -422,7 +441,7 @@ ROSDATA KBDTABLES keyboard_layout_table = {
   /* character from vk tables */
   vk_to_wchar_master_table,
 
-  /* diacritical marks -- */
+  /* diacritical marks */
   dead_key,
 
   /* Key names */
@@ -447,4 +466,3 @@ ROSDATA KBDTABLES keyboard_layout_table = {
 PKBDTABLES WINAPI KbdLayerDescriptor(VOID) {
   return &keyboard_layout_table;
 }
-