- Add ctrl support to (most) keyboard layouts. Only tested for kbdus, added to a few other I was confident about. Still to do: kbddv, kbdgr, kbdru, kbdsg - Prevent access outside array in TryToTranslateChar - Revert r17830, it handles ctrl keys at the wrong location This fixes bug 763. Modified: trunk/reactos/lib/keyboard/kbdbe/kbdbe.c Modified: trunk/reactos/lib/keyboard/kbdda/kbdda.c Modified: trunk/reactos/lib/keyboard/kbddv/kbddv.c Modified: trunk/reactos/lib/keyboard/kbdes/kbdes.c Modified: trunk/reactos/lib/keyboard/kbdfr/kbdfr.c Modified: trunk/reactos/lib/keyboard/kbdse/kbdse.c Modified: trunk/reactos/lib/keyboard/kbduk/kbduk.c Modified: trunk/reactos/lib/keyboard/kbdus/kbdus.c Modified: trunk/reactos/subsys/win32k/ntuser/input.c Modified: trunk/reactos/subsys/win32k/ntuser/keyboard.c _____
Modified: trunk/reactos/lib/keyboard/kbdbe/kbdbe.c --- trunk/reactos/lib/keyboard/kbdbe/kbdbe.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbdbe/kbdbe.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -180,37 +180,6 @@
{ '8', NOCAPS, {'!', '8'} }, { VK_OEM_2, NOCAPS, {')', 0xB0} },
- /* First letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'Z', CAPS, {'z', 'Z'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'P', CAPS, {'p', 'P'} }, - - /* Second letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, - { 'M', CAPS, {'m', 'M'} }, - - /* Third letter row */ - { 'W', CAPS, {'w', 'W'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} }, - /* Specials */ { VK_OEM_COMMA, CAPS, {',', '?'} }, { VK_OEM_PERIOD, CAPS, {';', '.'} }, @@ -228,6 +197,33 @@
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { /* Normal, Shifted, Ctrl */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04} }, + { 'F', CAPS, {'f', 'F', 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a} }, /* Legacy (telnet-style) ascii escapes */ { VK_OEM_MINUS, NOCAPS, {'-', '_', 0x1f} }, //0x1f unit separator { VK_RETURN, NOCAPS, {'\r', '\r', '\n'} }, @@ -242,6 +238,7 @@
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { /* Normal, Shifted, Ctrl, Ctrl-Alt */ + /* Legacy Ascii generators */ { '1', NOCAPS, {'&', '1', WCH_NONE, '|' } }, { '2', NOCAPS, {0xE9, '2', WCH_NONE, '@' } }, @@ -257,7 +254,7 @@ { VK_OEM_7, NOCAPS, {0xF9, '%', WCH_NONE, WCH_DEAD} }, { VK_EMPTY , NOCAPS, {0xb4, '`', '|', WCH_NONE} },
- { 'E', CAPS, {'e', 'E', WCH_NONE, 0x20ac} }, + { 'E', CAPS, {'e', 'E', 0x05, 0x20ac} }, { VK_EMPTY , NOCAPS, {0xa8, '^', WCH_NONE, '~'} },
{ VK_OEM_102, NOCAPS, {'<', '>', 0x001c, '\'} }, _____
Modified: trunk/reactos/lib/keyboard/kbdda/kbdda.c --- trunk/reactos/lib/keyboard/kbdda/kbdda.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbdda/kbdda.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -173,35 +173,7 @@
{ '1', NOCAPS, {'1', '!'} }, /* Ctrl-2 generates NUL */ { VK_OEM_PLUS, NOCAPS, {'+', '?'} }, - /* First letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'W', CAPS, {'w', 'W'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'P', CAPS, {'p', 'P'} }, { VK_OEM_6, CAPS, {0xe5, 0xc5} }, /* ? */ - /* Second letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, - - /* Third letter row */ - { 'Z', CAPS, {'z', 'Z'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} },
/* Specials */ { VK_OEM_7, CAPS, {0xf8, 0xd8} }, /* Ï */ @@ -222,6 +194,34 @@
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { /* Normal, Shifted, Ctrl */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04} }, + { 'F', CAPS, {'f', 'F', 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a} }, + /* Legacy (telnet-style) ascii escapes */ { VK_OEM_MINUS, NOCAPS, {'-', '_', 0x1f /* US */} }, { VK_RETURN, NOCAPS, {'\r', '\r', '\n'} }, @@ -248,11 +248,11 @@ { VK_OEM_4, NOCAPS, {WCH_DEAD, WCH_DEAD, WCH_DEAD, '|'} }, { VK_EMPTY , NOCAPS, {0xb4, '`', '|', WCH_NONE} },
- { 'E', CAPS, {'e', 'E', WCH_NONE, 0x20ac} }, + { 'E', CAPS, {'e', 'E', 0x05, 0x20ac} }, { VK_OEM_1, NOCAPS, {WCH_DEAD, WCH_DEAD, WCH_NONE, WCH_DEAD} }, { VK_EMPTY , NOCAPS, {0xa8, '^', WCH_NONE, '~'} },
- { 'M', CAPS, {'m', 'M', WCH_NONE, 0x00b5} }, + { 'M', CAPS, {'m', 'M', 0x0d, 0x00b5} }, { VK_OEM_102, NOCAPS, {'<', '>', 0x001c, '\'} }, { 0, 0 } }; _____
Modified: trunk/reactos/lib/keyboard/kbddv/kbddv.c --- trunk/reactos/lib/keyboard/kbddv/kbddv.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbddv/kbddv.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -143,35 +143,6 @@
{ '8', NOCAPS, {'8', '*'} }, { '9', NOCAPS, {'9', '('} }, { '0', NOCAPS, {'0', ')'} }, - /* First letter row */ - { 'P', CAPS, {'p', 'P'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'L', CAPS, {'l', 'L'} }, - /* Second letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'E', CAPS, {'e', 'E'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'N', CAPS, {'n', 'N'} }, - { 'S', CAPS, {'s', 'S'} }, - /* Third letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'M', CAPS, {'m', 'M'} }, - { 'W', CAPS, {'w', 'W'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'Z', CAPS, {'z', 'Z'} },
/* Specials */ /* Ctrl-_ generates US */ @@ -205,6 +176,35 @@
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { /* Normal, Shifted, Ctrl, C-S-x */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01, 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02, 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03, 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04, 0x04} }, + { 'E', CAPS, {'e', 'E', 0x05, 0x05} }, + { 'F', CAPS, {'f', 'F', 0x06, 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07, 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08, 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09, 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a, 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b, 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c, 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d, 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e, 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f, 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10, 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11, 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12, 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13, 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14, 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15, 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16, 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17, 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18, 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19, 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a, 0x1a} }, + /* Legacy Ascii generators */ { '2', NOCAPS, {'2', '@', WCH_NONE, 0} }, { '6', NOCAPS, {'6', '^', WCH_NONE, 0x1e /* RS */} }, _____
Modified: trunk/reactos/lib/keyboard/kbdes/kbdes.c --- trunk/reactos/lib/keyboard/kbdes/kbdes.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbdes/kbdes.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -249,36 +249,7 @@
{ '8', NOCAPS, {'8', '('} }, { '9', NOCAPS, {'9', ')'} }, { '0', NOCAPS, {'0', '='} }, - /* First letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'W', CAPS, {'w', 'W'} }, - //La E tiene 3 estados - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'P', CAPS, {'p', 'P'} }, - /* Second letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, { VK_OEM_3, CAPS, {0x00F1, 0x00D1} }, // ±Ð - /* Third letter row */ - { 'Z', CAPS, {'z', 'Z'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} }, - { 'M', CAPS, {'m', 'M'} },
/* Specials */ /* Ctrl-_ generates ES */ @@ -303,6 +274,34 @@
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { /* Normal, Shifted, Ctrl */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04} }, + { 'F', CAPS, {'f', 'F', 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a} }, + /* Legacy (telnet-style) ascii escapes */ { VK_RETURN, NOCAPS, {'\r', '\r', '\n'} }, { 0,0 } @@ -315,7 +314,7 @@ { '2', NOCAPS, {'2', '"', WCH_NONE, '@'} }, // 2"@ { '3', NOCAPS, {'3', 0x00B7, WCH_NONE, '#'} }, // 3À# { '6', NOCAPS, {'6', '&', WCH_NONE, 0x00AC} }, // 6&¼ - { 'E', CAPS, {'e', 'E', WCH_NONE, 0x20AC} }, // eEÇ + { 'E', CAPS, {'e', 'E', 0x05, 0x20AC} }, // eEÇ { VK_OEM_PLUS, NOCAPS, {'+', '*', WCH_NONE, 0x005d} }, // +*] { VK_OEM_2, NOCAPS, {0x00e7, 0x00c7, WCH_NONE, '}'} }, // þÃ}
_____
Modified: trunk/reactos/lib/keyboard/kbdfr/kbdfr.c --- trunk/reactos/lib/keyboard/kbdfr/kbdfr.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbdfr/kbdfr.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -162,35 +162,6 @@
//{ '8', NOCAPS, {'_', '8'} }, //{ '9', NOCAPS, {'þ', '9'} }, //{ '0', NOCAPS, {'Ó', '0'} }, - /* First letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'Z', CAPS, {'z', 'Z'} }, - //{ 'E', CAPS, {'e', 'E'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'P', CAPS, {'p', 'P'} }, - /* Second letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, - { 'M', CAPS, {'m', 'M'} }, - /* Third letter row */ - { 'W', CAPS, {'w', 'W'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} },
/* Specials */ /* Ctrl-_ generates US */ @@ -214,6 +185,34 @@
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { /* Normal, Shifted, Ctrl */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04} }, + { 'F', CAPS, {'f', 'F', 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a} }, + /* Legacy (telnet-style) ascii escapes */ { VK_OEM_102, 0, {'<', '>', 0x1c /* FS */} }, { VK_OEM_6, 0, {WCH_DEAD, WCH_DEAD, WCH_NONE} }, @@ -234,7 +233,7 @@ { '9' , 1, {'þ', '9', WCH_NONE, '^'} }, { '0' , 1, {'Ó', '0', WCH_NONE, '@'} }, { VK_OEM_PLUS,0, {'=', '+', WCH_NONE, '}'} }, - { 'E' , 1, {'e', 'E', WCH_NONE, 'Ç' /* euro */} }, + { 'E' , 1, {'e', 'E', 0x05, 'Ç' /* euro */} }, { VK_OEM_1, 0, {'$', 'ú', WCH_NONE, 'ñ'} }, { VK_OEM_4, 0, {')', '?', WCH_NONE, ']'} }, { 0, 0 } _____
Modified: trunk/reactos/lib/keyboard/kbdse/kbdse.c --- trunk/reactos/lib/keyboard/kbdse/kbdse.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbdse/kbdse.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -176,35 +176,6 @@
/* The numbers */ { '1', NOCAPS, {'1', '!'} }, /* Ctrl-2 generates NUL */ - - /* First letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'W', CAPS, {'w', 'W'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'P', CAPS, {'p', 'P'} }, - /* Second letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, - - /* Third letter row */ - { 'Z', CAPS, {'z', 'Z'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} },
/* Specials */ { VK_OEM_4, NOCAPS, {WCH_DEAD, WCH_DEAD} }, @@ -226,6 +197,33 @@
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { /* Normal, Shifted, Ctrl */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04} }, + { 'F', CAPS, {'f', 'F', 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c} }, + { 'N', CAPS, {'n', 'N', 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a} }, + /* Legacy (telnet-style) ascii escapes */ {VK_OEM_6, CAPS, {0xe5,0xc5, 0x1d /* GS */} }, { VK_OEM_5, NOCAPS, {0xa7,0xbd, 0x1c /* FS */} }, @@ -253,9 +251,9 @@ { '9', NOCAPS, {'9', ')', WCH_NONE, ']'} }, { '0', NOCAPS, {'0', '=', WCH_NONE, '}'} }, { VK_OEM_PLUS ,NOCAPS, {'+', '?', WCH_NONE, '\'} }, - { 'E', CAPS, {'e', 'E' , WCH_NONE, 0x00ac} }, + { 'E', CAPS, {'e', 'E' , 0x05, 0x00ac} }, { VK_OEM_1 ,NOCAPS, {0xa8, '^', 0x001d, '~'} }, - { 'M', CAPS, {'m', 'M', WCH_NONE, 0x00b5} }, + { 'M', CAPS, {'m', 'M', 0x0d, 0x00b5} }, {VK_OEM_102, NOCAPS, {'<', '>' ,0x001c,'|'} }, { 0, 0 } }; _____
Modified: trunk/reactos/lib/keyboard/kbduk/kbduk.c --- trunk/reactos/lib/keyboard/kbduk/kbduk.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbduk/kbduk.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -146,32 +146,7 @@
{ '9', NOCAPS, {'9', '('} }, { '0', NOCAPS, {'0', ')'} }, { VK_OEM_PLUS ,NOCAPS, {'=', '+'} }, - /* First letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'W', CAPS, {'w', 'W'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'P', CAPS, {'p', 'P'} }, - /* Second letter row */ - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, { VK_OEM_1 ,NOCAPS, {';', ':'} }, - - /* Third letter row */ - { 'Z', CAPS, {'z', 'Z'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} }, - { 'M', CAPS, {'m', 'M'} }, { VK_OEM_COMMA, NOCAPS, {',', '<'} }, { VK_OEM_PERIOD, NOCAPS, {'.', '>'} }, { VK_OEM_2, NOCAPS, {'/', '?'} }, @@ -201,6 +176,30 @@
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { /* Normal, Shifted, Ctrl, C-Shift */ + + /* The alphabet */ + { 'B', CAPS, {'b', 'B', 0x02, 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03, 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04, 0x04} }, + { 'F', CAPS, {'f', 'F', 0x06, 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07, 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08, 0x08} }, + { 'J', CAPS, {'j', 'J', 0x0a, 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b, 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c, 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d, 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e, 0x0e} }, + { 'P', CAPS, {'p', 'P', 0x10, 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11, 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12, 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13, 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14, 0x14} }, + { 'V', CAPS, {'v', 'V', 0x16, 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17, 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18, 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19, 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a, 0x1a} }, + /* Legacy Ascii generators */
{ '6', NOCAPS, {'6', '^', WCH_NONE, 0x1e} }, @@ -220,11 +219,11 @@ ROSDATA VK_TO_WCHARS6 key_to_chars_6mod[] = { /* Normal, Shifted, Ctrl, Sh-Ctrl,Sh-Alt,Ctl-Alt,Ctl-Sh-Alt */
- { 'E', CAPS, {'e', 'E', WCH_NONE, WCH_NONE, 0x00e9, 0x00c9} }, - { 'U', CAPS, {'u', 'U', WCH_NONE, WCH_NONE, 0x00fa, 0x00da} }, - { 'I', CAPS, {'i', 'I', WCH_NONE, WCH_NONE, 0x00ed, 0x00cd} }, - { 'O', CAPS, {'o', 'O', WCH_NONE, WCH_NONE, 0x00f3, 0x00d3} }, - { 'A', CAPS, {'a', 'A', WCH_NONE, WCH_NONE, 0x00e1, 0x00c1} }, + { 'E', CAPS, {'e', 'E', 0x05, 0x05, 0x00e9, 0x00c9} }, + { 'U', CAPS, {'u', 'U', 0x15, 0x15, 0x00fa, 0x00da} }, + { 'I', CAPS, {'i', 'I', 0x09, 0x09, 0x00ed, 0x00cd} }, + { 'O', CAPS, {'o', 'O', 0x0f, 0x0f, 0x00f3, 0x00d3} }, + { 'A', CAPS, {'a', 'A', 0x01, 0x01, 0x00e1, 0x00c1} }, { 0, 0 } };
_____
Modified: trunk/reactos/lib/keyboard/kbdus/kbdus.c --- trunk/reactos/lib/keyboard/kbdus/kbdus.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/lib/keyboard/kbdus/kbdus.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -143,35 +143,6 @@
{ '8', NOCAPS, {'8', '*'} }, { '9', NOCAPS, {'9', '('} }, { '0', NOCAPS, {'0', ')'} }, - /* First letter row */ - { 'Q', CAPS, {'q', 'Q'} }, - { 'W', CAPS, {'w', 'W'} }, - { 'E', CAPS, {'e', 'E'} }, - { 'R', CAPS, {'r', 'R'} }, - { 'T', CAPS, {'t', 'T'} }, - { 'Y', CAPS, {'y', 'Y'} }, - { 'U', CAPS, {'u', 'U'} }, - { 'I', CAPS, {'i', 'I'} }, - { 'O', CAPS, {'o', 'O'} }, - { 'P', CAPS, {'p', 'P'} }, - /* Second letter row */ - { 'A', CAPS, {'a', 'A'} }, - { 'S', CAPS, {'s', 'S'} }, - { 'D', CAPS, {'d', 'D'} }, - { 'F', CAPS, {'f', 'F'} }, - { 'G', CAPS, {'g', 'G'} }, - { 'H', CAPS, {'h', 'H'} }, - { 'J', CAPS, {'j', 'J'} }, - { 'K', CAPS, {'k', 'K'} }, - { 'L', CAPS, {'l', 'L'} }, - /* Third letter row */ - { 'Z', CAPS, {'z', 'Z'} }, - { 'X', CAPS, {'x', 'X'} }, - { 'C', CAPS, {'c', 'C'} }, - { 'V', CAPS, {'v', 'V'} }, - { 'B', CAPS, {'b', 'B'} }, - { 'N', CAPS, {'n', 'N'} }, - { 'M', CAPS, {'m', 'M'} },
/* Specials */ /* Ctrl-_ generates US */ @@ -205,6 +176,35 @@
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { /* Normal, Shifted, Ctrl, C-S-x */ + + /* The alphabet */ + { 'A', CAPS, {'a', 'A', 0x01, 0x01} }, + { 'B', CAPS, {'b', 'B', 0x02, 0x02} }, + { 'C', CAPS, {'c', 'C', 0x03, 0x03} }, + { 'D', CAPS, {'d', 'D', 0x04, 0x04} }, + { 'E', CAPS, {'e', 'E', 0x05, 0x05} }, + { 'F', CAPS, {'f', 'F', 0x06, 0x06} }, + { 'G', CAPS, {'g', 'G', 0x07, 0x07} }, + { 'H', CAPS, {'h', 'H', 0x08, 0x08} }, + { 'I', CAPS, {'i', 'I', 0x09, 0x09} }, + { 'J', CAPS, {'j', 'J', 0x0a, 0x0a} }, + { 'K', CAPS, {'k', 'K', 0x0b, 0x0b} }, + { 'L', CAPS, {'l', 'L', 0x0c, 0x0c} }, + { 'M', CAPS, {'m', 'M', 0x0d, 0x0d} }, + { 'N', CAPS, {'n', 'N', 0x0e, 0x0e} }, + { 'O', CAPS, {'o', 'O', 0x0f, 0x0f} }, + { 'P', CAPS, {'p', 'P', 0x10, 0x10} }, + { 'Q', CAPS, {'q', 'Q', 0x11, 0x11} }, + { 'R', CAPS, {'r', 'R', 0x12, 0x12} }, + { 'S', CAPS, {'s', 'S', 0x13, 0x13} }, + { 'T', CAPS, {'t', 'T', 0x14, 0x14} }, + { 'U', CAPS, {'u', 'U', 0x15, 0x15} }, + { 'V', CAPS, {'v', 'V', 0x16, 0x16} }, + { 'W', CAPS, {'w', 'W', 0x17, 0x17} }, + { 'X', CAPS, {'x', 'X', 0x18, 0x18} }, + { 'Y', CAPS, {'y', 'Y', 0x19, 0x19} }, + { 'Z', CAPS, {'z', 'Z', 0x1a, 0x1a} }, + /* Legacy Ascii generators */ { '2', NOCAPS, {'2', '@', WCH_NONE, 0} }, { '6', NOCAPS, {'6', '^', WCH_NONE, 0x1e /* RS */} }, _____
Modified: trunk/reactos/subsys/win32k/ntuser/input.c --- trunk/reactos/subsys/win32k/ntuser/input.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/subsys/win32k/ntuser/input.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -516,7 +516,7 @@
ModifierState |= fsModifiers;
if (ModifierState == fsModifiers && - (fsModifiers == MOD_ALT || fsModifiers == MOD_WIN || fsModifiers == MOD_CONTROL)) + (fsModifiers == MOD_ALT || fsModifiers == MOD_WIN)) { /* First send out special notifications * (For alt, the message that turns on accelerator @@ -637,31 +637,7 @@ else msg.message = WM_SYSKEYUP; } - else if (ModifierState & MOD_CONTROL) - { - if(NextKeyInput.MakeCode == 0x2E)/* Ctrl-C */ - { - DPRINT1("Ctrl-C pressed\n"); - /* FIXME: this seems wrong! this bypass hotkeys and all and the winhellos CRTL+C hotkey test - dont work (anymore) */ - co_MsqPostKeyboardMessage(WM_COPY,0,0); - continue; - } - else if(NextKeyInput.MakeCode == 0x2F) /* Ctrl-V */ - { - DPRINT1("Ctrl-V pressed\n"); - co_MsqPostKeyboardMessage(WM_PASTE,0,0); - continue; - } - else - { - DPRINT1("Ctrl with unknown combination %04x\n",NextKeyInput.MakeCode); - if (!(KeyInput.Flags & KEY_BREAK)) - msg.message = WM_KEYDOWN; - else - msg.message = WM_KEYUP; - } - }else + else { if (!(KeyInput.Flags & KEY_BREAK)) msg.message = WM_KEYDOWN; _____
Modified: trunk/reactos/subsys/win32k/ntuser/keyboard.c --- trunk/reactos/subsys/win32k/ntuser/keyboard.c 2005-09-19 20:01:29 UTC (rev 17935) +++ trunk/reactos/subsys/win32k/ntuser/keyboard.c 2005-09-19 21:11:41 UTC (rev 17936) @@ -261,7 +261,7 @@
[ModBits ^ ((CapsState & CAPITAL_BIT) ? vkPtr->Attributes : 0)];
- if( CapsMod > keyLayout->pVkToWcharTable[nMod].nModifications ) + if( CapsMod >= keyLayout->pVkToWcharTable[nMod].nModifications ) { DWORD MaxBit = 1; while( MaxBit <