mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
- 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. svn path=/trunk/; revision=17936
This commit is contained in:
parent
047952c5a1
commit
f5ffc6c672
10 changed files with 236 additions and 268 deletions
|
@ -180,37 +180,6 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
{ '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_WCHARS2 key_to_chars_2mod[] = {
|
|||
|
||||
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_WCHARS3 key_to_chars_3mod[] = {
|
|||
|
||||
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 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
|||
{ 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, '\\'} },
|
||||
|
|
|
@ -173,35 +173,7 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
{ '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_WCHARS2 key_to_chars_2mod[] = {
|
|||
|
||||
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 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
|||
{ 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 }
|
||||
};
|
||||
|
|
|
@ -143,35 +143,6 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
{ '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_WCHARS3 key_to_chars_3mod[] = {
|
|||
|
||||
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 */} },
|
||||
|
|
|
@ -249,36 +249,7 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
{ '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_WCHARS2 key_to_chars_2mod[] = {
|
|||
|
||||
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 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
|||
{ '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, '}'} }, // çÇ}
|
||||
|
||||
|
|
|
@ -162,35 +162,6 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
//{ '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_WCHARS2 key_to_chars_2mod[] = {
|
|||
|
||||
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 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
|||
{ '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 }
|
||||
|
|
|
@ -176,35 +176,6 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
/* 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_WCHARS2 key_to_chars_2mod[] = {
|
|||
|
||||
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 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
|||
{ '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 }
|
||||
};
|
||||
|
|
|
@ -146,32 +146,7 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
{ '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_WCHARS3 key_to_chars_3mod[] = {
|
|||
|
||||
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_WCHARS5 key_to_chars_5mod[] = {
|
|||
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 }
|
||||
};
|
||||
|
||||
|
|
|
@ -143,35 +143,6 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
|||
{ '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_WCHARS3 key_to_chars_3mod[] = {
|
|||
|
||||
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 */} },
|
||||
|
|
|
@ -516,7 +516,7 @@ KeyboardThreadMain(PVOID StartContext)
|
|||
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 @@ KeyboardThreadMain(PVOID StartContext)
|
|||
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;
|
||||
|
|
|
@ -261,7 +261,7 @@ static BOOL TryToTranslateChar(WORD wVirtKey,
|
|||
[ModBits ^
|
||||
((CapsState & CAPITAL_BIT) ? vkPtr->Attributes : 0)];
|
||||
|
||||
if( CapsMod > keyLayout->pVkToWcharTable[nMod].nModifications )
|
||||
if( CapsMod >= keyLayout->pVkToWcharTable[nMod].nModifications )
|
||||
{
|
||||
DWORD MaxBit = 1;
|
||||
while( MaxBit <
|
||||
|
|
Loading…
Reference in a new issue