mirror of
https://github.com/reactos/reactos.git
synced 2025-04-21 12:40:33 +00:00
Fix warnings.
svn path=/trunk/; revision=16152
This commit is contained in:
parent
d69a2a31dd
commit
f266cbb1c2
5 changed files with 399 additions and 621 deletions
|
@ -8,8 +8,12 @@
|
||||||
#ifdef _M_IA64
|
#ifdef _M_IA64
|
||||||
#define ROSDATA static __declspec(allocate(".data"))
|
#define ROSDATA static __declspec(allocate(".data"))
|
||||||
#else
|
#else
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma data_seg(".data")
|
#pragma data_seg(".data")
|
||||||
#define ROSDATA static
|
#define ROSDATA static
|
||||||
|
#else
|
||||||
|
#define ROSDATA static __attribute__((section(".data")))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VK_EMPTY 0xff /* The non-existent VK */
|
#define VK_EMPTY 0xff /* The non-existent VK */
|
||||||
|
@ -25,47 +29,6 @@
|
||||||
|
|
||||||
#define SHFT_INVALID 0x0F
|
#define SHFT_INVALID 0x0F
|
||||||
|
|
||||||
/* Thanks to http://asp.flaaten.dk/pforum/keycode/keycode.htm */
|
|
||||||
#ifndef VK_OEM_1
|
|
||||||
#define VK_OEM_1 0xba
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PLUS
|
|
||||||
#define VK_OEM_PLUS 0xbb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_COMMA
|
|
||||||
#define VK_OEM_COMMA 0xbc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_MINUS
|
|
||||||
#define VK_OEM_MINUS 0xbd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PERIOD
|
|
||||||
#define VK_OEM_PERIOD 0xbe
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_2
|
|
||||||
#define VK_OEM_2 0xbf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_3
|
|
||||||
#define VK_OEM_3 0xc0
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_4
|
|
||||||
#define VK_OEM_4 0xdb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_5
|
|
||||||
#define VK_OEM_5 0xdc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_6
|
|
||||||
#define VK_OEM_6 0xdd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_7
|
|
||||||
#define VK_OEM_7 0xde
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_8
|
|
||||||
#define VK_OEM_8 0xdf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_102
|
|
||||||
#define VK_OEM_102 0xe1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ROSDATA USHORT scancode_to_vk[] = {
|
ROSDATA USHORT scancode_to_vk[] = {
|
||||||
/* Numbers Row */
|
/* Numbers Row */
|
||||||
/* - 00 - */
|
/* - 00 - */
|
||||||
|
@ -194,13 +157,7 @@ ROSDATA VK_TO_BIT modifier_keys[] = {
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _mymod {
|
ROSDATA MODIFIERS modifier_bits = {
|
||||||
PVOID mod_keys;
|
|
||||||
WORD maxmod;
|
|
||||||
BYTE mod_max[7];
|
|
||||||
} INTERNAL_KBD_MODIFIERS;
|
|
||||||
|
|
||||||
ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
|
||||||
modifier_keys,
|
modifier_keys,
|
||||||
6,
|
6,
|
||||||
{ 0, 1, 2, 4, SHFT_INVALID, SHFT_INVALID, 3 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT, MENU, SHIFT + MENU, CTRL + MENU */
|
{ 0, 1, 2, 4, SHFT_INVALID, SHFT_INVALID, 3 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT, MENU, SHIFT + MENU, CTRL + MENU */
|
||||||
|
@ -212,67 +169,67 @@ ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
||||||
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
||||||
/* Normal vs Shifted */
|
/* Normal vs Shifted */
|
||||||
/* The numbers */
|
/* The numbers */
|
||||||
{ VK_OEM_5, NOCAPS, 0xbd, 0xa7 },
|
{ VK_OEM_5, NOCAPS, {0xbd, 0xa7} },
|
||||||
{ '1', NOCAPS, '1', '!' },
|
{ '1', NOCAPS, {'1', '!'} },
|
||||||
/* Ctrl-2 generates NUL */
|
/* Ctrl-2 generates NUL */
|
||||||
{ VK_OEM_PLUS, NOCAPS, '+', '?' },
|
{ VK_OEM_PLUS, NOCAPS, {'+', '?'} },
|
||||||
/* First letter row */
|
/* First letter row */
|
||||||
{ 'Q', CAPS, 'q', 'Q' },
|
{ 'Q', CAPS, {'q', 'Q'} },
|
||||||
{ 'W', CAPS, 'w', 'W' },
|
{ 'W', CAPS, {'w', 'W'} },
|
||||||
{ 'R', CAPS, 'r', 'R' },
|
{ 'R', CAPS, {'r', 'R'} },
|
||||||
{ 'T', CAPS, 't', 'T' },
|
{ 'T', CAPS, {'t', 'T'} },
|
||||||
{ 'Y', CAPS, 'y', 'Y' },
|
{ 'Y', CAPS, {'y', 'Y'} },
|
||||||
{ 'U', CAPS, 'u', 'U' },
|
{ 'U', CAPS, {'u', 'U'} },
|
||||||
{ 'I', CAPS, 'i', 'I' },
|
{ 'I', CAPS, {'i', 'I'} },
|
||||||
{ 'O', CAPS, 'o', 'O' },
|
{ 'O', CAPS, {'o', 'O'} },
|
||||||
{ 'P', CAPS, 'p', 'P' },
|
{ 'P', CAPS, {'p', 'P'} },
|
||||||
{ VK_OEM_6, CAPS, 0xe5, 0xc5, }, /* Å */
|
{ VK_OEM_6, CAPS, {0xe5, 0xc5} }, /* Å */
|
||||||
/* Second letter row */
|
/* Second letter row */
|
||||||
{ 'A', CAPS, 'a', 'A' },
|
{ 'A', CAPS, {'a', 'A'} },
|
||||||
{ 'S', CAPS, 's', 'S' },
|
{ 'S', CAPS, {'s', 'S'} },
|
||||||
{ 'D', CAPS, 'd', 'D' },
|
{ 'D', CAPS, {'d', 'D'} },
|
||||||
{ 'F', CAPS, 'f', 'F' },
|
{ 'F', CAPS, {'f', 'F'} },
|
||||||
{ 'G', CAPS, 'g', 'G' },
|
{ 'G', CAPS, {'g', 'G'} },
|
||||||
{ 'H', CAPS, 'h', 'H' },
|
{ 'H', CAPS, {'h', 'H'} },
|
||||||
{ 'J', CAPS, 'j', 'J' },
|
{ 'J', CAPS, {'j', 'J'} },
|
||||||
{ 'K', CAPS, 'k', 'K' },
|
{ 'K', CAPS, {'k', 'K'} },
|
||||||
{ 'L', CAPS, 'l', 'L' },
|
{ 'L', CAPS, {'l', 'L'} },
|
||||||
|
|
||||||
/* Third letter row */
|
/* Third letter row */
|
||||||
{ 'Z', CAPS, 'z', 'Z' },
|
{ 'Z', CAPS, {'z', 'Z'} },
|
||||||
{ 'X', CAPS, 'x', 'X' },
|
{ 'X', CAPS, {'x', 'X'} },
|
||||||
{ 'C', CAPS, 'c', 'C' },
|
{ 'C', CAPS, {'c', 'C'} },
|
||||||
{ 'V', CAPS, 'v', 'V' },
|
{ 'V', CAPS, {'v', 'V'} },
|
||||||
{ 'B', CAPS, 'b', 'B' },
|
{ 'B', CAPS, {'b', 'B'} },
|
||||||
{ 'N', CAPS, 'n', 'N' },
|
{ 'N', CAPS, {'n', 'N'} },
|
||||||
|
|
||||||
/* Specials */
|
/* Specials */
|
||||||
{ VK_OEM_7, CAPS, 0xf8, 0xd8 }, /* Ø */
|
{ VK_OEM_7, CAPS, {0xf8, 0xd8} }, /* Ø */
|
||||||
{ VK_OEM_3, CAPS, 0xe6, 0xc6 }, /* Æ */
|
{ VK_OEM_3, CAPS, {0xe6, 0xc6} }, /* Æ */
|
||||||
|
|
||||||
{ VK_OEM_COMMA, CAPS, ',', ';' },
|
{ VK_OEM_COMMA, CAPS, {',', ';'} },
|
||||||
{ VK_OEM_PERIOD, CAPS, '.', ':' },
|
{ VK_OEM_PERIOD, CAPS, {'.', ':'} },
|
||||||
{ VK_OEM_2, NOCAPS, '\'', '*' },
|
{ VK_OEM_2, NOCAPS, {'\'', '*'} },
|
||||||
|
|
||||||
{ VK_DECIMAL, NOCAPS, ',', ',' },
|
{ VK_DECIMAL, NOCAPS, {',', ','} },
|
||||||
{ VK_TAB, NOCAPS, '\t', '\t' },
|
{ VK_TAB, NOCAPS, {'\t', '\t'} },
|
||||||
{ VK_ADD, NOCAPS, '+', '+' },
|
{ VK_ADD, NOCAPS, {'+', '+'} },
|
||||||
{ VK_DIVIDE, NOCAPS, '/', '/' },
|
{ VK_DIVIDE, NOCAPS, {'/', '/'} },
|
||||||
{ VK_MULTIPLY, NOCAPS, '*', '*' },
|
{ VK_MULTIPLY, NOCAPS, {'*', '*'} },
|
||||||
{ VK_SUBTRACT, NOCAPS, '-', '-' },
|
{ VK_SUBTRACT, NOCAPS, {'-', '-'} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
||||||
/* Normal, Shifted, Ctrl */
|
/* Normal, Shifted, Ctrl */
|
||||||
/* Legacy (telnet-style) ascii escapes */
|
/* Legacy (telnet-style) ascii escapes */
|
||||||
{ VK_OEM_MINUS, NOCAPS, '-', '_', 0x1f /* US */ },
|
{ VK_OEM_MINUS, NOCAPS, {'-', '_', 0x1f /* US */} },
|
||||||
{ VK_RETURN, NOCAPS, '\r', '\r', '\n' },
|
{ VK_RETURN, NOCAPS, {'\r', '\r', '\n'} },
|
||||||
|
|
||||||
{ VK_BACK, NOCAPS, '\b', '\b', 0x7f },
|
{ VK_BACK, NOCAPS, {'\b', '\b', 0x7f} },
|
||||||
{ VK_ESCAPE, NOCAPS, 0x1b, 0x1b, 0x1b },
|
{ VK_ESCAPE, NOCAPS, {0x1b, 0x1b, 0x1b} },
|
||||||
{ VK_SPACE, NOCAPS, ' ', ' ', ' ' },
|
{ VK_SPACE, NOCAPS, {' ', ' ', ' '} },
|
||||||
{ VK_CANCEL, NOCAPS, 0x03, 0x03, 0x03 },
|
{ VK_CANCEL, NOCAPS, {0x03, 0x03, 0x03} },
|
||||||
|
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
@ -280,44 +237,44 @@ ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
||||||
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
||||||
/* Normal, Shifted, Ctrl, Ctrl-Alt */
|
/* Normal, Shifted, Ctrl, Ctrl-Alt */
|
||||||
/* Legacy Ascii generators */
|
/* Legacy Ascii generators */
|
||||||
{ '2', NOCAPS, '2', '\"', WCH_NONE, '@' },
|
{ '2', NOCAPS, {'2', '\"', WCH_NONE, '@'} },
|
||||||
{ '3', NOCAPS, '3', '#', WCH_NONE, 0x00a3 },
|
{ '3', NOCAPS, {'3', '#', WCH_NONE, 0x00a3} },
|
||||||
{ '4', NOCAPS, '4', 0xa4, WCH_NONE, '$' },
|
{ '4', NOCAPS, {'4', 0xa4, WCH_NONE, '$'} },
|
||||||
{ '5', NOCAPS, '5', '%', WCH_NONE, 0x20ac },
|
{ '5', NOCAPS, {'5', '%', WCH_NONE, 0x20ac} },
|
||||||
{ '7', NOCAPS, '7', '/', WCH_NONE, '{' },
|
{ '7', NOCAPS, {'7', '/', WCH_NONE, '{'} },
|
||||||
{ '8', NOCAPS, '8', '(', WCH_NONE, '[' },
|
{ '8', NOCAPS, {'8', '(', WCH_NONE, '['} },
|
||||||
{ '9', NOCAPS, '9', ')', WCH_NONE, ']' },
|
{ '9', NOCAPS, {'9', ')', WCH_NONE, ']'} },
|
||||||
{ '0', NOCAPS, '0', '=', WCH_NONE, '}' },
|
{ '0', NOCAPS, {'0', '=', WCH_NONE, '}'} },
|
||||||
{ VK_OEM_4, NOCAPS, WCH_DEAD, WCH_DEAD, WCH_DEAD, '|' },
|
{ VK_OEM_4, NOCAPS, {WCH_DEAD, WCH_DEAD, WCH_DEAD, '|'} },
|
||||||
{ VK_EMPTY , NOCAPS, 0xb4, '`', '|', WCH_NONE },
|
{ VK_EMPTY , NOCAPS, {0xb4, '`', '|', WCH_NONE} },
|
||||||
|
|
||||||
{ 'E', CAPS, 'e', 'E', WCH_NONE, 0x20ac },
|
{ 'E', CAPS, {'e', 'E', WCH_NONE, 0x20ac} },
|
||||||
{ VK_OEM_1, NOCAPS, WCH_DEAD, WCH_DEAD, WCH_NONE, WCH_DEAD },
|
{ VK_OEM_1, NOCAPS, {WCH_DEAD, WCH_DEAD, WCH_NONE, WCH_DEAD} },
|
||||||
{ VK_EMPTY , NOCAPS, 0xa8, '^', WCH_NONE, '~' },
|
{ VK_EMPTY , NOCAPS, {0xa8, '^', WCH_NONE, '~'} },
|
||||||
|
|
||||||
{ 'M', CAPS, 'm', 'M', WCH_NONE, 0x00b5 },
|
{ 'M', CAPS, {'m', 'M', WCH_NONE, 0x00b5} },
|
||||||
{ VK_OEM_102, NOCAPS, '<', '>', 0x001c, '\\' },
|
{ VK_OEM_102, NOCAPS, {'<', '>', 0x001c, '\\'} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
|
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
|
||||||
/* Normal, Shifted, Ctrl, Ctrl-Alt, C-S-x */
|
/* Normal, Shifted, Ctrl, Ctrl-Alt, C-S-x */
|
||||||
{ '6', NOCAPS, '6', '&', WCH_NONE, WCH_NONE, 0x1e /* RS */ },
|
{ '6', NOCAPS, {'6', '&', WCH_NONE, WCH_NONE, 0x1e /* RS */} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
||||||
{ VK_DECIMAL, 0, '.' },
|
{ VK_NUMPAD0, 0, {'0'} },
|
||||||
{ VK_NUMPAD0, 0, '0' },
|
{ VK_NUMPAD1, 0, {'1'} },
|
||||||
{ VK_NUMPAD1, 0, '1' },
|
{ VK_NUMPAD2, 0, {'2'} },
|
||||||
{ VK_NUMPAD2, 0, '2' },
|
{ VK_NUMPAD3, 0, {'3'} },
|
||||||
{ VK_NUMPAD3, 0, '3' },
|
{ VK_NUMPAD4, 0, {'4'} },
|
||||||
{ VK_NUMPAD4, 0, '4' },
|
{ VK_NUMPAD5, 0, {'5'} },
|
||||||
{ VK_NUMPAD5, 0, '5' },
|
{ VK_NUMPAD6, 0, {'6'} },
|
||||||
{ VK_NUMPAD6, 0, '6' },
|
{ VK_NUMPAD7, 0, {'7'} },
|
||||||
{ VK_NUMPAD7, 0, '7' },
|
{ VK_NUMPAD8, 0, {'8'} },
|
||||||
{ VK_NUMPAD8, 0, '8' },
|
{ VK_NUMPAD9, 0, {'9'} },
|
||||||
{ VK_NUMPAD9, 0, '9' },
|
{ VK_DECIMAL, 0, {'.'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -496,7 +453,7 @@ ROSDATA DEADKEY dead_key[] = {
|
||||||
/* Finally, the master table */
|
/* Finally, the master table */
|
||||||
ROSDATA KBDTABLES keyboard_layout_table = {
|
ROSDATA KBDTABLES keyboard_layout_table = {
|
||||||
/* modifier assignments */
|
/* modifier assignments */
|
||||||
(PMODIFIERS)&modifier_bits,
|
&modifier_bits,
|
||||||
|
|
||||||
/* character from vk tables */
|
/* character from vk tables */
|
||||||
vk_to_wchar_master_table,
|
vk_to_wchar_master_table,
|
||||||
|
|
|
@ -13,8 +13,12 @@
|
||||||
#ifdef _M_IA64
|
#ifdef _M_IA64
|
||||||
#define ROSDATA static __declspec(allocate(".data"))
|
#define ROSDATA static __declspec(allocate(".data"))
|
||||||
#else
|
#else
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma data_seg(".data")
|
#pragma data_seg(".data")
|
||||||
#define ROSDATA static
|
#define ROSDATA static
|
||||||
|
#else
|
||||||
|
#define ROSDATA static __attribute__((section(".data")))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VK_EMPTY 0xff /* The non-existent VK */
|
#define VK_EMPTY 0xff /* The non-existent VK */
|
||||||
|
@ -28,47 +32,6 @@
|
||||||
#define KNUMS 0xc00 /* Special + number pad */
|
#define KNUMS 0xc00 /* Special + number pad */
|
||||||
#define KMEXT 0x300 /* Multi + ext */
|
#define KMEXT 0x300 /* Multi + ext */
|
||||||
|
|
||||||
/* Thanks to http://asp.flaaten.dk/pforum/keycode/keycode.htm */
|
|
||||||
#ifndef VK_OEM_1 /* ;/: */
|
|
||||||
#define VK_OEM_1 0xba
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PLUS
|
|
||||||
#define VK_OEM_PLUS 0xbb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_COMMA
|
|
||||||
#define VK_OEM_COMMA 0xbc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_MINUS
|
|
||||||
#define VK_OEM_MINUS 0xbd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PERIOD
|
|
||||||
#define VK_OEM_PERIOD 0xbe
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_2 /* //? */
|
|
||||||
#define VK_OEM_2 0xbf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_3 /* `/~ */
|
|
||||||
#define VK_OEM_3 0xc0
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_4 /* [/{ */
|
|
||||||
#define VK_OEM_4 0xdb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_5 /* \/| */
|
|
||||||
#define VK_OEM_5 0xdc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_6 /* ]/} */
|
|
||||||
#define VK_OEM_6 0xdd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_7 /* '/" */
|
|
||||||
#define VK_OEM_7 0xde
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_8
|
|
||||||
#define VK_OEM_8 0xdf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_102
|
|
||||||
#define VK_OEM_102 0xe1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ROSDATA USHORT scancode_to_vk[] = {
|
ROSDATA USHORT scancode_to_vk[] = {
|
||||||
/* Numbers Row */
|
/* Numbers Row */
|
||||||
/* - 00 - */
|
/* - 00 - */
|
||||||
|
@ -158,13 +121,7 @@ ROSDATA VK_TO_BIT modifier_keys[] = {
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _mymod {
|
ROSDATA MODIFIERS modifier_bits = {
|
||||||
PVOID mod_keys;
|
|
||||||
WORD maxmod;
|
|
||||||
BYTE mod_max[4];
|
|
||||||
} INTERNAL_KBD_MODIFIERS;
|
|
||||||
|
|
||||||
ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
|
||||||
modifier_keys,
|
modifier_keys,
|
||||||
3,
|
3,
|
||||||
{ 0, 1, 2, 3 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT */
|
{ 0, 1, 2, 3 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT */
|
||||||
|
@ -176,98 +133,98 @@ ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
||||||
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
||||||
/* Normal vs Shifted */
|
/* Normal vs Shifted */
|
||||||
/* The numbers */
|
/* The numbers */
|
||||||
{ '1', NOCAPS, '1', '!' },
|
{ '1', NOCAPS, {'1', '!'} },
|
||||||
/* Ctrl-2 generates NUL */
|
/* Ctrl-2 generates NUL */
|
||||||
{ '3', NOCAPS, '3', '#' },
|
{ '3', NOCAPS, {'3', '#'} },
|
||||||
{ '4', NOCAPS, '4', '$' },
|
{ '4', NOCAPS, {'4', '$'} },
|
||||||
{ '5', NOCAPS, '5', '%' },
|
{ '5', NOCAPS, {'5', '%'} },
|
||||||
/* Ctrl-6 generates RS */
|
/* Ctrl-6 generates RS */
|
||||||
{ '7', NOCAPS, '7', '&' },
|
{ '7', NOCAPS, {'7', '&'} },
|
||||||
{ '8', NOCAPS, '8', '*' },
|
{ '8', NOCAPS, {'8', '*'} },
|
||||||
{ '9', NOCAPS, '9', '(' },
|
{ '9', NOCAPS, {'9', '('} },
|
||||||
{ '0', NOCAPS, '0', ')' },
|
{ '0', NOCAPS, {'0', ')'} },
|
||||||
/* First letter row */
|
/* First letter row */
|
||||||
{ 'P', CAPS, 'p', 'P' },
|
{ 'P', CAPS, {'p', 'P'} },
|
||||||
{ 'Y', CAPS, 'y', 'Y' },
|
{ 'Y', CAPS, {'y', 'Y'} },
|
||||||
{ 'F', CAPS, 'f', 'F' },
|
{ 'F', CAPS, {'f', 'F'} },
|
||||||
{ 'G', CAPS, 'g', 'G' },
|
{ 'G', CAPS, {'g', 'G'} },
|
||||||
{ 'C', CAPS, 'c', 'C' },
|
{ 'C', CAPS, {'c', 'C'} },
|
||||||
{ 'R', CAPS, 'r', 'R' },
|
{ 'R', CAPS, {'r', 'R'} },
|
||||||
{ 'L', CAPS, 'l', 'L' },
|
{ 'L', CAPS, {'l', 'L'} },
|
||||||
/* Second letter row */
|
/* Second letter row */
|
||||||
{ 'A', CAPS, 'a', 'A' },
|
{ 'A', CAPS, {'a', 'A'} },
|
||||||
{ 'O', CAPS, 'o', 'O' },
|
{ 'O', CAPS, {'o', 'O'} },
|
||||||
{ 'E', CAPS, 'e', 'E' },
|
{ 'E', CAPS, {'e', 'E'} },
|
||||||
{ 'U', CAPS, 'u', 'U' },
|
{ 'U', CAPS, {'u', 'U'} },
|
||||||
{ 'I', CAPS, 'i', 'I' },
|
{ 'I', CAPS, {'i', 'I'} },
|
||||||
{ 'D', CAPS, 'd', 'D' },
|
{ 'D', CAPS, {'d', 'D'} },
|
||||||
{ 'H', CAPS, 'h', 'H' },
|
{ 'H', CAPS, {'h', 'H'} },
|
||||||
{ 'T', CAPS, 't', 'T' },
|
{ 'T', CAPS, {'t', 'T'} },
|
||||||
{ 'N', CAPS, 'n', 'N' },
|
{ 'N', CAPS, {'n', 'N'} },
|
||||||
{ 'S', CAPS, 's', 'S' },
|
{ 'S', CAPS, {'s', 'S'} },
|
||||||
/* Third letter row */
|
/* Third letter row */
|
||||||
{ 'Q', CAPS, 'q', 'Q' },
|
{ 'Q', CAPS, {'q', 'Q'} },
|
||||||
{ 'J', CAPS, 'j', 'J' },
|
{ 'J', CAPS, {'j', 'J'} },
|
||||||
{ 'K', CAPS, 'k', 'K' },
|
{ 'K', CAPS, {'k', 'K'} },
|
||||||
{ 'X', CAPS, 'x', 'X' },
|
{ 'X', CAPS, {'x', 'X'} },
|
||||||
{ 'B', CAPS, 'b', 'B' },
|
{ 'B', CAPS, {'b', 'B'} },
|
||||||
{ 'M', CAPS, 'm', 'M' },
|
{ 'M', CAPS, {'m', 'M'} },
|
||||||
{ 'W', CAPS, 'w', 'W' },
|
{ 'W', CAPS, {'w', 'W'} },
|
||||||
{ 'V', CAPS, 'v', 'V' },
|
{ 'V', CAPS, {'v', 'V'} },
|
||||||
{ 'Z', CAPS, 'z', 'Z' },
|
{ 'Z', CAPS, {'z', 'Z'} },
|
||||||
|
|
||||||
/* Specials */
|
/* Specials */
|
||||||
/* Ctrl-_ generates US */
|
/* Ctrl-_ generates US */
|
||||||
{ VK_OEM_7 ,NOCAPS, '\'','\"'},
|
{ VK_OEM_7 ,NOCAPS, {'\'','\"'} },
|
||||||
{ VK_OEM_COMMA ,NOCAPS, ',', '<' },
|
{ VK_OEM_COMMA ,NOCAPS, {',', '<'} },
|
||||||
{ VK_OEM_PERIOD ,NOCAPS, '.', '>' },
|
{ VK_OEM_PERIOD ,NOCAPS, {'.', '>'} },
|
||||||
{ VK_OEM_2 ,NOCAPS, '/', '?' },
|
{ VK_OEM_2 ,NOCAPS, {'/', '?'} },
|
||||||
{ VK_OEM_PLUS ,NOCAPS, '=', '+' },
|
{ VK_OEM_PLUS ,NOCAPS, {'=', '+'} },
|
||||||
{ VK_OEM_1 ,NOCAPS, ';', ':' },
|
{ VK_OEM_1 ,NOCAPS, {';', ':'} },
|
||||||
{ VK_OEM_3 ,NOCAPS, '`', '~' },
|
{ VK_OEM_3 ,NOCAPS, {'`', '~'} },
|
||||||
/* Keys that do not have shift states */
|
/* Keys that do not have shift states */
|
||||||
{ VK_TAB ,NOCAPS, '\t','\t'},
|
{ VK_TAB ,NOCAPS, {'\t','\t'} },
|
||||||
{ VK_ADD ,NOCAPS, '+', '+' },
|
{ VK_ADD ,NOCAPS, {'+', '+'} },
|
||||||
{ VK_SUBTRACT,NOCAPS, '-', '-' },
|
{ VK_SUBTRACT,NOCAPS, {'-', '-'} },
|
||||||
{ VK_MULTIPLY,NOCAPS, '*', '*' },
|
{ VK_MULTIPLY,NOCAPS, {'*', '*'} },
|
||||||
{ VK_DIVIDE ,NOCAPS, '/', '/' },
|
{ VK_DIVIDE ,NOCAPS, {'/', '/'} },
|
||||||
{ VK_ESCAPE ,NOCAPS, '\x1b','\x1b' },
|
{ VK_ESCAPE ,NOCAPS, {'\x1b','\x1b'} },
|
||||||
{ VK_SPACE ,NOCAPS, ' ', ' ' },
|
{ VK_SPACE ,NOCAPS, {' ', ' '} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
||||||
/* Normal, Shifted, Ctrl */
|
/* Normal, Shifted, Ctrl */
|
||||||
/* Legacy (telnet-style) ascii escapes */
|
/* Legacy (telnet-style) ascii escapes */
|
||||||
{ VK_OEM_4, 0, '[', '{', 0x1b /* ESC */ },
|
{ VK_OEM_4, 0, {'[', '{', 0x1b /* ESC */} },
|
||||||
{ VK_OEM_6, 0, ']', '}', 0x1d /* GS */ },
|
{ VK_OEM_6, 0, {']', '}', 0x1d /* GS */} },
|
||||||
{ VK_OEM_5, 0, '\\','|', 0x1c /* FS */ },
|
{ VK_OEM_5, 0, {'\\','|', 0x1c /* FS */} },
|
||||||
{ VK_RETURN,0, '\r', '\r', '\n' },
|
{ VK_RETURN,0, {'\r', '\r', '\n'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
||||||
/* Normal, Shifted, Ctrl, C-S-x */
|
/* Normal, Shifted, Ctrl, C-S-x */
|
||||||
/* Legacy Ascii generators */
|
/* Legacy Ascii generators */
|
||||||
{ '2', NOCAPS, '2', '@', WCH_NONE, 0 },
|
{ '2', NOCAPS, {'2', '@', WCH_NONE, 0} },
|
||||||
{ '6', NOCAPS, '6', '^', WCH_NONE, 0x1e /* RS */ },
|
{ '6', NOCAPS, {'6', '^', WCH_NONE, 0x1e /* RS */} },
|
||||||
{ VK_OEM_MINUS, NOCAPS, '-', '_', WCH_NONE, 0x1f /* US */ },
|
{ VK_OEM_MINUS, NOCAPS, {'-', '_', WCH_NONE, 0x1f /* US */} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
||||||
{ VK_NUMPAD0, 0, '0' },
|
{ VK_NUMPAD0, 0, {'0'} },
|
||||||
{ VK_NUMPAD1, 0, '1' },
|
{ VK_NUMPAD1, 0, {'1'} },
|
||||||
{ VK_NUMPAD2, 0, '2' },
|
{ VK_NUMPAD2, 0, {'2'} },
|
||||||
{ VK_NUMPAD3, 0, '3' },
|
{ VK_NUMPAD3, 0, {'3'} },
|
||||||
{ VK_NUMPAD4, 0, '4' },
|
{ VK_NUMPAD4, 0, {'4'} },
|
||||||
{ VK_NUMPAD5, 0, '5' },
|
{ VK_NUMPAD5, 0, {'5'} },
|
||||||
{ VK_NUMPAD6, 0, '6' },
|
{ VK_NUMPAD6, 0, {'6'} },
|
||||||
{ VK_NUMPAD7, 0, '7' },
|
{ VK_NUMPAD7, 0, {'7'} },
|
||||||
{ VK_NUMPAD8, 0, '8' },
|
{ VK_NUMPAD8, 0, {'8'} },
|
||||||
{ VK_NUMPAD9, 0, '9' },
|
{ VK_NUMPAD9, 0, {'9'} },
|
||||||
{ VK_DECIMAL, 0, '.' },
|
{ VK_DECIMAL, 0, {'.'} },
|
||||||
{ VK_BACK, 0, '\010' },
|
{ VK_BACK, 0, {'\010'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -366,7 +323,7 @@ ROSDATA VSC_LPWSTR extended_key_names[] = {
|
||||||
/* Finally, the master table */
|
/* Finally, the master table */
|
||||||
ROSDATA KBDTABLES keyboard_layout_table = {
|
ROSDATA KBDTABLES keyboard_layout_table = {
|
||||||
/* modifier assignments */
|
/* modifier assignments */
|
||||||
(PMODIFIERS)&modifier_bits,
|
&modifier_bits,
|
||||||
|
|
||||||
/* character from vk tables */
|
/* character from vk tables */
|
||||||
vk_to_wchar_master_table,
|
vk_to_wchar_master_table,
|
||||||
|
|
|
@ -16,12 +16,15 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <internal/kbd.h>
|
#include <internal/kbd.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef _M_IA64
|
#ifdef _M_IA64
|
||||||
#define ROSDATA static __declspec(allocate(".data"))
|
#define ROSDATA static __declspec(allocate(".data"))
|
||||||
#else
|
#else
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma data_seg(".data")
|
#pragma data_seg(".data")
|
||||||
#define ROSDATA static
|
#define ROSDATA static
|
||||||
|
#else
|
||||||
|
#define ROSDATA static __attribute__((section(".data")))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,50 +41,6 @@
|
||||||
|
|
||||||
#define SHFT_INVALID 0x0F
|
#define SHFT_INVALID 0x0F
|
||||||
|
|
||||||
/* Thanks to http://asp.flaaten.dk/pforum/keycode/keycode.htm */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef VK_OEM_1
|
|
||||||
#define VK_OEM_1 0xba /* Tecla `^[ */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PLUS
|
|
||||||
#define VK_OEM_PLUS 0xbb /* Tecla +*] */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_COMMA
|
|
||||||
#define VK_OEM_COMMA 0xbc /* Tecla ,; */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_MINUS
|
|
||||||
#define VK_OEM_MINUS 0xbd /* Tecla -_ */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PERIOD
|
|
||||||
#define VK_OEM_PERIOD 0xbe /* Tecla .: */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_2
|
|
||||||
#define VK_OEM_2 0xbf /* Tecla çÇ} */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_3
|
|
||||||
#define VK_OEM_3 0xc0 /* Tecla ñÑ */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_4
|
|
||||||
#define VK_OEM_4 0xdb /* Tecla '? */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_5
|
|
||||||
#define VK_OEM_5 0xdc /* Tecla ºª\ */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_6
|
|
||||||
#define VK_OEM_6 0xdd /* Tecla ¡¿ */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_7
|
|
||||||
#define VK_OEM_7 0xde /* Tecla ´¨{ */
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_8
|
|
||||||
#define VK_OEM_8 0xdf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_102
|
|
||||||
#define VK_OEM_102 0xe2 /* Tecla < > */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
ROSDATA USHORT scancode_to_vk[] = {
|
ROSDATA USHORT scancode_to_vk[] = {
|
||||||
/* 00 */ VK_EMPTY,
|
/* 00 */ VK_EMPTY,
|
||||||
/* 01 */ VK_ESCAPE,
|
/* 01 */ VK_ESCAPE,
|
||||||
|
@ -269,13 +228,7 @@ ROSDATA VK_TO_BIT modifier_keys[] = {
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _mymod {
|
ROSDATA MODIFIERS modifier_bits = {
|
||||||
PVOID mod_keys;
|
|
||||||
WORD maxmod;
|
|
||||||
BYTE mod_max[7];
|
|
||||||
} INTERNAL_KBD_MODIFIERS;
|
|
||||||
|
|
||||||
ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
|
||||||
modifier_keys,
|
modifier_keys,
|
||||||
6,
|
6,
|
||||||
{ 0, 1, 2, 4, SHFT_INVALID, SHFT_INVALID, 3 }
|
{ 0, 1, 2, 4, SHFT_INVALID, SHFT_INVALID, 3 }
|
||||||
|
@ -289,61 +242,61 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
||||||
/* Normal vs Shifted */
|
/* Normal vs Shifted */
|
||||||
/* The numbers */
|
/* The numbers */
|
||||||
//Del 1 al 5 tienen tres estados
|
//Del 1 al 5 tienen tres estados
|
||||||
{ '4', NOCAPS, '4', '$' },
|
{ '4', NOCAPS, {'4', '$'} },
|
||||||
{ '5', NOCAPS, '5', '%' },
|
{ '5', NOCAPS, {'5', '%'} },
|
||||||
//El 6 tiene 3 estados
|
//El 6 tiene 3 estados
|
||||||
{ '7', NOCAPS, '7', '/' },
|
{ '7', NOCAPS, {'7', '/'} },
|
||||||
{ '8', NOCAPS, '8', '(' },
|
{ '8', NOCAPS, {'8', '('} },
|
||||||
{ '9', NOCAPS, '9', ')' },
|
{ '9', NOCAPS, {'9', ')'} },
|
||||||
{ '0', NOCAPS, '0', '=' },
|
{ '0', NOCAPS, {'0', '='} },
|
||||||
/* First letter row */
|
/* First letter row */
|
||||||
{ 'Q', CAPS, 'q', 'Q' },
|
{ 'Q', CAPS, {'q', 'Q'} },
|
||||||
{ 'W', CAPS, 'w', 'W' },
|
{ 'W', CAPS, {'w', 'W'} },
|
||||||
//La E tiene 3 estados
|
//La E tiene 3 estados
|
||||||
{ 'R', CAPS, 'r', 'R' },
|
{ 'R', CAPS, {'r', 'R'} },
|
||||||
{ 'T', CAPS, 't', 'T' },
|
{ 'T', CAPS, {'t', 'T'} },
|
||||||
{ 'Y', CAPS, 'y', 'Y' },
|
{ 'Y', CAPS, {'y', 'Y'} },
|
||||||
{ 'U', CAPS, 'u', 'U' },
|
{ 'U', CAPS, {'u', 'U'} },
|
||||||
{ 'I', CAPS, 'i', 'I' },
|
{ 'I', CAPS, {'i', 'I'} },
|
||||||
{ 'O', CAPS, 'o', 'O' },
|
{ 'O', CAPS, {'o', 'O'} },
|
||||||
{ 'P', CAPS, 'p', 'P' },
|
{ 'P', CAPS, {'p', 'P'} },
|
||||||
/* Second letter row */
|
/* Second letter row */
|
||||||
{ 'A', CAPS, 'a', 'A' },
|
{ 'A', CAPS, {'a', 'A'} },
|
||||||
{ 'S', CAPS, 's', 'S' },
|
{ 'S', CAPS, {'s', 'S'} },
|
||||||
{ 'D', CAPS, 'd', 'D' },
|
{ 'D', CAPS, {'d', 'D'} },
|
||||||
{ 'F', CAPS, 'f', 'F' },
|
{ 'F', CAPS, {'f', 'F'} },
|
||||||
{ 'G', CAPS, 'g', 'G' },
|
{ 'G', CAPS, {'g', 'G'} },
|
||||||
{ 'H', CAPS, 'h', 'H' },
|
{ 'H', CAPS, {'h', 'H'} },
|
||||||
{ 'J', CAPS, 'j', 'J' },
|
{ 'J', CAPS, {'j', 'J'} },
|
||||||
{ 'K', CAPS, 'k', 'K' },
|
{ 'K', CAPS, {'k', 'K'} },
|
||||||
{ 'L', CAPS, 'l', 'L' },
|
{ 'L', CAPS, {'l', 'L'} },
|
||||||
{ VK_OEM_3, CAPS, 0x00F1, 0x00D1 }, // ñÑ
|
{ VK_OEM_3, CAPS, {0x00F1, 0x00D1} }, // ñÑ
|
||||||
/* Third letter row */
|
/* Third letter row */
|
||||||
{ 'Z', CAPS, 'z', 'Z' },
|
{ 'Z', CAPS, {'z', 'Z'} },
|
||||||
{ 'X', CAPS, 'x', 'X' },
|
{ 'X', CAPS, {'x', 'X'} },
|
||||||
{ 'C', CAPS, 'c', 'C' },
|
{ 'C', CAPS, {'c', 'C'} },
|
||||||
{ 'V', CAPS, 'v', 'V' },
|
{ 'V', CAPS, {'v', 'V'} },
|
||||||
{ 'B', CAPS, 'b', 'B' },
|
{ 'B', CAPS, {'b', 'B'} },
|
||||||
{ 'N', CAPS, 'n', 'N' },
|
{ 'N', CAPS, {'n', 'N'} },
|
||||||
{ 'M', CAPS, 'm', 'M' },
|
{ 'M', CAPS, {'m', 'M'} },
|
||||||
|
|
||||||
/* Specials */
|
/* Specials */
|
||||||
/* Ctrl-_ generates ES */
|
/* Ctrl-_ generates ES */
|
||||||
{ VK_OEM_6 ,NOCAPS, 0x00a1, 0x00bf }, // ¡¿
|
{ VK_OEM_6 ,NOCAPS, {0x00a1, 0x00bf} }, // ¡¿
|
||||||
{ VK_OEM_4 ,NOCAPS, 0x0027, '?' }, //'?
|
{ VK_OEM_4 ,NOCAPS, {0x0027, '?'} }, //'?
|
||||||
{ VK_OEM_COMMA ,NOCAPS, ',', ';' },
|
{ VK_OEM_COMMA ,NOCAPS, {',', ';'} },
|
||||||
{ VK_OEM_PERIOD ,NOCAPS, '.', ':' },
|
{ VK_OEM_PERIOD ,NOCAPS, {'.', ':'} },
|
||||||
{ VK_OEM_MINUS ,NOCAPS, '-', '_' },
|
{ VK_OEM_MINUS ,NOCAPS, {'-', '_'} },
|
||||||
{ VK_OEM_102 ,NOCAPS, '<', '>' },
|
{ VK_OEM_102 ,NOCAPS, {'<', '>'} },
|
||||||
|
|
||||||
/* Keys that do not have shift states */
|
/* Keys that do not have shift states */
|
||||||
{ VK_TAB, NOCAPS, '\t', '\t' },
|
{ VK_TAB, NOCAPS, {'\t', '\t'} },
|
||||||
{ VK_ADD, NOCAPS, '+', '+' },
|
{ VK_ADD, NOCAPS, {'+', '+'} },
|
||||||
{ VK_SUBTRACT, NOCAPS, '-', '-' },
|
{ VK_SUBTRACT, NOCAPS, {'-', '-'} },
|
||||||
{ VK_MULTIPLY, NOCAPS, '*', '*'},
|
{ VK_MULTIPLY, NOCAPS, {'*', '*'} },
|
||||||
{ VK_DIVIDE, NOCAPS, '/', '/' },
|
{ VK_DIVIDE, NOCAPS, {'/', '/'} },
|
||||||
{ VK_ESCAPE, NOCAPS, '\x1b', '\x1b' },
|
{ VK_ESCAPE, NOCAPS, {'\x1b','\x1b'} },
|
||||||
{ VK_SPACE, NOCAPS, ' ', ' ' },
|
{ VK_SPACE, NOCAPS, {' ', ' '} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -351,46 +304,46 @@ ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
||||||
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
||||||
/* Normal, Shifted, Ctrl */
|
/* Normal, Shifted, Ctrl */
|
||||||
/* Legacy (telnet-style) ascii escapes */
|
/* Legacy (telnet-style) ascii escapes */
|
||||||
{ VK_RETURN, NOCAPS, '\r', '\r', '\n' },
|
{ VK_RETURN, NOCAPS, {'\r', '\r', '\n'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
||||||
/* Normal, shifted, control, Alt+Gr */
|
/* Normal, shifted, control, Alt+Gr */
|
||||||
{ '1', NOCAPS, '1', '!', WCH_NONE, 0x00a6 }, // 1!|
|
{ '1', NOCAPS, {'1', '!', WCH_NONE, 0x00a6} }, // 1!|
|
||||||
{ '2', NOCAPS, '2', '"', WCH_NONE, '@' }, // 2"@
|
{ '2', NOCAPS, {'2', '"', WCH_NONE, '@'} }, // 2"@
|
||||||
{ '3', NOCAPS, '3', 0x00B7, WCH_NONE, '#' }, // 3·#
|
{ '3', NOCAPS, {'3', 0x00B7, WCH_NONE, '#'} }, // 3·#
|
||||||
{ '6', NOCAPS, '6', '&', WCH_NONE, 0x00AC }, // 6&¬
|
{ '6', NOCAPS, {'6', '&', WCH_NONE, 0x00AC} }, // 6&¬
|
||||||
{ 'E', CAPS, 'e', 'E', WCH_NONE, 0x20AC }, // eE€
|
{ 'E', CAPS, {'e', 'E', WCH_NONE, 0x20AC} }, // eE€
|
||||||
{ VK_OEM_PLUS, NOCAPS, '+', '*', WCH_NONE, 0x005d }, // +*]
|
{ VK_OEM_PLUS, NOCAPS, {'+', '*', WCH_NONE, 0x005d} }, // +*]
|
||||||
{ VK_OEM_2, NOCAPS, 0x00e7, 0x00c7, WCH_NONE, '}' }, // çÇ}
|
{ VK_OEM_2, NOCAPS, {0x00e7, 0x00c7, WCH_NONE, '}'} }, // çÇ}
|
||||||
|
|
||||||
{ VK_OEM_7, NOCAPS, WCH_DEAD, WCH_DEAD, WCH_NONE, '{' }, // ´¨{
|
{ VK_OEM_7, NOCAPS, {WCH_DEAD, WCH_DEAD, WCH_NONE, '{'} }, // ´¨{
|
||||||
{ VK_EMPTY, NOCAPS, 0xB4, 0xA8, WCH_NONE, WCH_NONE }, // ´¨{
|
{ VK_EMPTY, NOCAPS, {0xB4, 0xA8, WCH_NONE, WCH_NONE} }, // ´¨{
|
||||||
|
|
||||||
{ VK_OEM_1, NOCAPS, WCH_DEAD, WCH_DEAD, WCH_NONE, 0x5B }, // `^[
|
{ VK_OEM_1, NOCAPS, {WCH_DEAD, WCH_DEAD, WCH_NONE, 0x5B} }, // `^[
|
||||||
{ VK_EMPTY, NOCAPS, 0x60, 0x5e, WCH_NONE, WCH_NONE }, // `^[
|
{ VK_EMPTY, NOCAPS, {0x60, 0x5e, WCH_NONE, WCH_NONE} }, // `^[
|
||||||
|
|
||||||
{ VK_OEM_5, NOCAPS, 0x00BA, 0x00AA, WCH_NONE, 0x005c }, // çÇ}
|
{ VK_OEM_5, NOCAPS, {0x00BA, 0x00AA, WCH_NONE, 0x005c} }, // çÇ}
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
||||||
{ VK_NUMPAD0, 0, '0' },
|
{ VK_NUMPAD0, 0, {'0'} },
|
||||||
{ VK_NUMPAD1, 0, '1' },
|
{ VK_NUMPAD1, 0, {'1'} },
|
||||||
{ VK_NUMPAD2, 0, '2' },
|
{ VK_NUMPAD2, 0, {'2'} },
|
||||||
{ VK_NUMPAD3, 0, '3' },
|
{ VK_NUMPAD3, 0, {'3'} },
|
||||||
{ VK_NUMPAD4, 0, '4' },
|
{ VK_NUMPAD4, 0, {'4'} },
|
||||||
{ VK_NUMPAD5, 0, '5' },
|
{ VK_NUMPAD5, 0, {'5'} },
|
||||||
{ VK_NUMPAD6, 0, '6' },
|
{ VK_NUMPAD6, 0, {'6'} },
|
||||||
{ VK_NUMPAD7, 0, '7' },
|
{ VK_NUMPAD7, 0, {'7'} },
|
||||||
{ VK_NUMPAD8, 0, '8' },
|
{ VK_NUMPAD8, 0, {'8'} },
|
||||||
{ VK_NUMPAD9, 0, '9' },
|
{ VK_NUMPAD9, 0, {'9'} },
|
||||||
{ VK_DECIMAL, 0, '.' },
|
{ VK_DECIMAL, 0, {'.'} },
|
||||||
{ VK_BACK, 0, '\010' },
|
{ VK_BACK, 0, {'\010'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -551,7 +504,7 @@ ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
|
||||||
ROSDATA KBDTABLES keyboard_layout_table = {
|
ROSDATA KBDTABLES keyboard_layout_table = {
|
||||||
|
|
||||||
/* modifier assignments */
|
/* modifier assignments */
|
||||||
(PMODIFIERS)&modifier_bits,
|
&modifier_bits,
|
||||||
|
|
||||||
/* character from vk tables */
|
/* character from vk tables */
|
||||||
vk_to_wchar_master_table,
|
vk_to_wchar_master_table,
|
||||||
|
@ -563,7 +516,7 @@ ROSDATA KBDTABLES keyboard_layout_table = {
|
||||||
/* Key names */
|
/* Key names */
|
||||||
(VSC_LPWSTR *)key_names,
|
(VSC_LPWSTR *)key_names,
|
||||||
(VSC_LPWSTR *)extended_key_names,
|
(VSC_LPWSTR *)extended_key_names,
|
||||||
NULL,
|
dead_key_names,
|
||||||
/* Dead key names */
|
/* Dead key names */
|
||||||
|
|
||||||
/* scan code to virtual key maps */
|
/* scan code to virtual key maps */
|
||||||
|
|
|
@ -12,8 +12,12 @@
|
||||||
#ifdef _M_IA64
|
#ifdef _M_IA64
|
||||||
#define ROSDATA static __declspec(allocate(".data"))
|
#define ROSDATA static __declspec(allocate(".data"))
|
||||||
#else
|
#else
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma data_seg(".data")
|
#pragma data_seg(".data")
|
||||||
#define ROSDATA static
|
#define ROSDATA static
|
||||||
|
#else
|
||||||
|
#define ROSDATA static __attribute__((section(".data")))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VK_EMPTY 0xff /* The non-existent VK */
|
#define VK_EMPTY 0xff /* The non-existent VK */
|
||||||
|
@ -27,50 +31,6 @@
|
||||||
#define KNUMS 0xc00 /* Special + number pad */
|
#define KNUMS 0xc00 /* Special + number pad */
|
||||||
#define KMEXT 0x300 /* Multi + ext */
|
#define KMEXT 0x300 /* Multi + ext */
|
||||||
|
|
||||||
/* Thanks to http://asp.flaaten.dk/pforum/keycode/keycode.htm */
|
|
||||||
#ifndef VK_OEM_1
|
|
||||||
#define VK_OEM_1 0xba
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PLUS
|
|
||||||
#define VK_OEM_PLUS 0xbb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_COMMA
|
|
||||||
#define VK_OEM_COMMA 0xbc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_MINUS
|
|
||||||
#define VK_OEM_MINUS 0xbd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PERIOD
|
|
||||||
#define VK_OEM_PERIOD 0xbe
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_2
|
|
||||||
#define VK_OEM_2 0xbf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_3
|
|
||||||
#define VK_OEM_3 0xc0
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_4
|
|
||||||
#define VK_OEM_4 0xdb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_5
|
|
||||||
#define VK_OEM_5 0xdc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_6
|
|
||||||
#define VK_OEM_6 0xdd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_7
|
|
||||||
#define VK_OEM_7 0xde
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_8
|
|
||||||
#define VK_OEM_8 0xdf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_102
|
|
||||||
#define VK_OEM_102 0xe2
|
|
||||||
#endif
|
|
||||||
#ifndef VK_ZOOM
|
|
||||||
#define VK_ZOOM 0xfb
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ROSDATA USHORT scancode_to_vk[] = {
|
ROSDATA USHORT scancode_to_vk[] = {
|
||||||
/* Numbers Row */
|
/* Numbers Row */
|
||||||
/* - 00 - */
|
/* - 00 - */
|
||||||
|
@ -176,13 +136,7 @@ ROSDATA VK_TO_BIT modifier_keys[] = {
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _mymod {
|
ROSDATA MODIFIERS modifier_bits = {
|
||||||
PVOID mod_keys;
|
|
||||||
WORD maxmod;
|
|
||||||
BYTE mod_max[7];
|
|
||||||
} INTERNAL_KBD_MODIFIERS;
|
|
||||||
|
|
||||||
ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
|
||||||
modifier_keys,
|
modifier_keys,
|
||||||
6,
|
6,
|
||||||
{ 0, 1, 2, 4,15,15,3 }
|
{ 0, 1, 2, 4,15,15,3 }
|
||||||
|
@ -196,122 +150,122 @@ ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
||||||
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
||||||
/* Normal vs Shifted */
|
/* Normal vs Shifted */
|
||||||
/* The numbers */
|
/* The numbers */
|
||||||
{ '1', NOCAPS, '&', '1' },
|
{ '1', NOCAPS, {'&', '1'} },
|
||||||
//{ '2', NOCAPS, 'é', '2' },
|
//{ '2', NOCAPS, {'é', '2'} },
|
||||||
/* Ctrl-2 generates NUL */
|
/* Ctrl-2 generates NUL */
|
||||||
//{ '3', NOCAPS, '"', '3' },
|
//{ '3', NOCAPS, {'"', '3'} },
|
||||||
//{ '4', NOCAPS, '\'', '4' },
|
//{ '4', NOCAPS, {'\'', '4'} },
|
||||||
//{ '5', NOCAPS, '(', '5' },
|
//{ '5', NOCAPS, {'(', '5'} },
|
||||||
//{ '6', NOCAPS, '-', '6' },
|
//{ '6', NOCAPS, {'-', '6'} },
|
||||||
/* Ctrl-6 generates RS */
|
/* Ctrl-6 generates RS */
|
||||||
//{ '7', NOCAPS, 'è', '7' },
|
//{ '7', NOCAPS, {'è', '7'} },
|
||||||
//{ '8', NOCAPS, '_', '8' },
|
//{ '8', NOCAPS, {'_', '8'} },
|
||||||
//{ '9', NOCAPS, 'ç', '9' },
|
//{ '9', NOCAPS, {'ç', '9'} },
|
||||||
//{ '0', NOCAPS, 'à', '0' },
|
//{ '0', NOCAPS, {'à', '0'} },
|
||||||
/* First letter row */
|
/* First letter row */
|
||||||
{ 'A', CAPS, 'a', 'A' },
|
{ 'A', CAPS, {'a', 'A'} },
|
||||||
{ 'Z', CAPS, 'z', 'Z' },
|
{ 'Z', CAPS, {'z', 'Z'} },
|
||||||
//{ 'E', CAPS, 'e', 'E' },
|
//{ 'E', CAPS, {'e', 'E'} },
|
||||||
{ 'R', CAPS, 'r', 'R' },
|
{ 'R', CAPS, {'r', 'R'} },
|
||||||
{ 'T', CAPS, 't', 'T' },
|
{ 'T', CAPS, {'t', 'T'} },
|
||||||
{ 'Y', CAPS, 'y', 'Y' },
|
{ 'Y', CAPS, {'y', 'Y'} },
|
||||||
{ 'U', CAPS, 'u', 'U' },
|
{ 'U', CAPS, {'u', 'U'} },
|
||||||
{ 'I', CAPS, 'i', 'I' },
|
{ 'I', CAPS, {'i', 'I'} },
|
||||||
{ 'O', CAPS, 'o', 'O' },
|
{ 'O', CAPS, {'o', 'O'} },
|
||||||
{ 'P', CAPS, 'p', 'P' },
|
{ 'P', CAPS, {'p', 'P'} },
|
||||||
/* Second letter row */
|
/* Second letter row */
|
||||||
{ 'Q', CAPS, 'q', 'Q' },
|
{ 'Q', CAPS, {'q', 'Q'} },
|
||||||
{ 'S', CAPS, 's', 'S' },
|
{ 'S', CAPS, {'s', 'S'} },
|
||||||
{ 'D', CAPS, 'd', 'D' },
|
{ 'D', CAPS, {'d', 'D'} },
|
||||||
{ 'F', CAPS, 'f', 'F' },
|
{ 'F', CAPS, {'f', 'F'} },
|
||||||
{ 'G', CAPS, 'g', 'G' },
|
{ 'G', CAPS, {'g', 'G'} },
|
||||||
{ 'H', CAPS, 'h', 'H' },
|
{ 'H', CAPS, {'h', 'H'} },
|
||||||
{ 'J', CAPS, 'j', 'J' },
|
{ 'J', CAPS, {'j', 'J'} },
|
||||||
{ 'K', CAPS, 'k', 'K' },
|
{ 'K', CAPS, {'k', 'K'} },
|
||||||
{ 'L', CAPS, 'l', 'L' },
|
{ 'L', CAPS, {'l', 'L'} },
|
||||||
{ 'M', CAPS, 'm', 'M' },
|
{ 'M', CAPS, {'m', 'M'} },
|
||||||
/* Third letter row */
|
/* Third letter row */
|
||||||
{ 'W', CAPS, 'w', 'W' },
|
{ 'W', CAPS, {'w', 'W'} },
|
||||||
{ 'X', CAPS, 'x', 'X' },
|
{ 'X', CAPS, {'x', 'X'} },
|
||||||
{ 'C', CAPS, 'c', 'C' },
|
{ 'C', CAPS, {'c', 'C'} },
|
||||||
{ 'V', CAPS, 'v', 'V' },
|
{ 'V', CAPS, {'v', 'V'} },
|
||||||
{ 'B', CAPS, 'b', 'B' },
|
{ 'B', CAPS, {'b', 'B'} },
|
||||||
{ 'N', CAPS, 'n', 'N' },
|
{ 'N', CAPS, {'n', 'N'} },
|
||||||
|
|
||||||
/* Specials */
|
/* Specials */
|
||||||
/* Ctrl-_ generates US */
|
/* Ctrl-_ generates US */
|
||||||
//{ VK_OEM_1 ,NOCAPS, '$', '£' },
|
//{ VK_OEM_1 ,NOCAPS, {'$', '£'} },
|
||||||
{ VK_OEM_5 ,NOCAPS, '*','µ'},
|
{ VK_OEM_5 ,NOCAPS, {'*','µ'} },
|
||||||
{ VK_OEM_3 ,NOCAPS, 'ù', '%' },
|
{ VK_OEM_3 ,NOCAPS, {'ù', '%'} },
|
||||||
{ VK_OEM_COMMA ,NOCAPS, ',', '?' },
|
{ VK_OEM_COMMA ,NOCAPS, {',', '?'} },
|
||||||
{ VK_OEM_PERIOD ,NOCAPS, ';', '.' },
|
{ VK_OEM_PERIOD ,NOCAPS, {';', '.'} },
|
||||||
{ VK_OEM_2 ,NOCAPS, ':', '/' },
|
{ VK_OEM_2 ,NOCAPS, {':', '/'} },
|
||||||
{ VK_OEM_8 ,NOCAPS, '!', '§' },
|
{ VK_OEM_8 ,NOCAPS, {'!', '§'} },
|
||||||
/* Keys that do not have shift states */
|
/* Keys that do not have shift states */
|
||||||
{ VK_TAB ,NOCAPS, '\t','\t'},
|
{ VK_TAB ,NOCAPS, {'\t','\t'} },
|
||||||
{ VK_ADD ,NOCAPS, '+', '+' },
|
{ VK_ADD ,NOCAPS, {'+', '+'} },
|
||||||
{ VK_SUBTRACT,NOCAPS, '-', '-' },
|
{ VK_SUBTRACT,NOCAPS, {'-', '-'} },
|
||||||
{ VK_MULTIPLY,NOCAPS, '*', '*' },
|
{ VK_MULTIPLY,NOCAPS, {'*', '*'} },
|
||||||
{ VK_DIVIDE ,NOCAPS, '/', '/' },
|
{ VK_DIVIDE ,NOCAPS, {'/', '/'} },
|
||||||
{ VK_ESCAPE ,NOCAPS, '\x1b','\x1b' },
|
{ VK_ESCAPE ,NOCAPS, {'\x1b','\x1b'} },
|
||||||
{ VK_SPACE ,NOCAPS, ' ', ' ' },
|
{ VK_SPACE ,NOCAPS, {' ', ' '} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
||||||
/* Normal, Shifted, Ctrl */
|
/* Normal, Shifted, Ctrl */
|
||||||
/* Legacy (telnet-style) ascii escapes */
|
/* Legacy (telnet-style) ascii escapes */
|
||||||
{ VK_OEM_102, 0, '<', '>', 0x1c /* FS */ },
|
{ VK_OEM_102, 0, {'<', '>', 0x1c /* FS */} },
|
||||||
{ VK_OEM_6, 0, WCH_DEAD, WCH_DEAD, WCH_NONE },
|
{ VK_OEM_6, 0, {WCH_DEAD, WCH_DEAD, WCH_NONE} },
|
||||||
{ VK_EMPTY, 0, '^', '¨', WCH_NONE }, //OEM 6 DEAD
|
{ VK_EMPTY, 0, {'^', '¨', WCH_NONE} }, //OEM 6 DEAD
|
||||||
{ VK_OEM_7, 0, '²','|', 0x1c /* FS */ },
|
{ VK_OEM_7, 0, {'²','|', 0x1c /* FS */} },
|
||||||
{ VK_RETURN,0, '\r', '\r', '\n' },
|
{ VK_RETURN, 0, {'\r', '\r', '\n'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
||||||
/* Normal, shifted, control, Alt+Gr */
|
/* Normal, shifted, control, Alt+Gr */
|
||||||
{ '2' , 1, 'é', '2', WCH_NONE, WCH_DEAD },
|
{ '2' , 1, {'é', '2', WCH_NONE, WCH_DEAD} },
|
||||||
{ VK_EMPTY, 0, WCH_NONE, WCH_NONE, WCH_NONE, '~' },
|
{ VK_EMPTY, 0, {WCH_NONE, WCH_NONE, WCH_NONE, '~'} },
|
||||||
{ '3' , 0, '"', '3', WCH_NONE, '#' },
|
{ '3' , 0, {'"', '3', WCH_NONE, '#'} },
|
||||||
{ '4' , 0, '\'', '4', WCH_NONE, '{' },
|
{ '4' , 0, {'\'', '4', WCH_NONE, '{'} },
|
||||||
{ '7' , 1, 'è', '7', WCH_NONE, WCH_DEAD },
|
{ '7' , 1, {'è', '7', WCH_NONE, WCH_DEAD} },
|
||||||
{ VK_EMPTY, 0, WCH_NONE, WCH_NONE, WCH_NONE, '`' },
|
{ VK_EMPTY, 0, {WCH_NONE, WCH_NONE, WCH_NONE, '`'} },
|
||||||
{ '9' , 1, 'ç', '9', WCH_NONE, '^' },
|
{ '9' , 1, {'ç', '9', WCH_NONE, '^'} },
|
||||||
{ '0' , 1, 'à', '0', WCH_NONE, '@' },
|
{ '0' , 1, {'à', '0', WCH_NONE, '@'} },
|
||||||
{ VK_OEM_PLUS,0, '=', '+', WCH_NONE, '}' },
|
{ VK_OEM_PLUS,0, {'=', '+', WCH_NONE, '}'} },
|
||||||
{ 'E' , 1, 'e', 'E', WCH_NONE, '€' /* euro */ },
|
{ 'E' , 1, {'e', 'E', WCH_NONE, '€' /* euro */} },
|
||||||
{ VK_OEM_1, 0, '$', '£', WCH_NONE, '¤' },
|
{ VK_OEM_1, 0, {'$', '£', WCH_NONE, '¤'} },
|
||||||
{ VK_OEM_4, 0, ')', '°', WCH_NONE, ']' },
|
{ VK_OEM_4, 0, {')', '°', WCH_NONE, ']'} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
|
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
|
||||||
/* x,x, Normal, Shifted, Ctrl, Alt, C-S-x */
|
/* x,x, Normal, Shifted, Ctrl, Alt, C-S-x */
|
||||||
/* Legacy Ascii generators */
|
/* Legacy Ascii generators */
|
||||||
//{ '2', NOCAPS, '2', '@', WCH_NONE, 0 },
|
//{ '2', NOCAPS, {'2', '@', WCH_NONE, 0} },
|
||||||
//{ '6', NOCAPS, '6', '^', WCH_NONE, 0x1e /* RS */ },
|
//{ '6', NOCAPS, {'6', '^', WCH_NONE, 0x1e /* RS */} },
|
||||||
//{ VK_OEM_MINUS, NOCAPS, ')', '°', WCH_NONE, 0x1f /* US */ },
|
//{ VK_OEM_MINUS, NOCAPS, {')', '°', WCH_NONE, 0x1f /* US */} },
|
||||||
//{ '5' | KEXT , NOCAPS, ')', '°', '#' , 0x1f /* US */ },
|
//{ '5' | KEXT , NOCAPS, {')', '°', '#' , 0x1f /* US */} },
|
||||||
{ '5' , 1 , '(', '5', WCH_NONE , '[' , 0x1b },
|
{ '5' , 1 , {'(', '5', WCH_NONE , '[' , 0x1b} },
|
||||||
{ '6' , 1 , '-', '6', WCH_NONE , '|' , 0x1f },
|
{ '6' , 1 , {'-', '6', WCH_NONE , '|' , 0x1f} },
|
||||||
{ '8' , 1 , '_', '8', WCH_NONE , '\\' , 0x1c },
|
{ '8' , 1 , {'_', '8', WCH_NONE , '\\' , 0x1c} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
||||||
{ VK_DECIMAL, 0, '.' },
|
{ VK_NUMPAD0, 0, {'0'} },
|
||||||
{ VK_NUMPAD0, 0, '0' },
|
{ VK_NUMPAD1, 0, {'1'} },
|
||||||
{ VK_NUMPAD1, 0, '1' },
|
{ VK_NUMPAD2, 0, {'2'} },
|
||||||
{ VK_NUMPAD2, 0, '2' },
|
{ VK_NUMPAD3, 0, {'3'} },
|
||||||
{ VK_NUMPAD3, 0, '3' },
|
{ VK_NUMPAD4, 0, {'4'} },
|
||||||
{ VK_NUMPAD4, 0, '4' },
|
{ VK_NUMPAD5, 0, {'5'} },
|
||||||
{ VK_NUMPAD5, 0, '5' },
|
{ VK_NUMPAD6, 0, {'6'} },
|
||||||
{ VK_NUMPAD6, 0, '6' },
|
{ VK_NUMPAD7, 0, {'7'} },
|
||||||
{ VK_NUMPAD7, 0, '7' },
|
{ VK_NUMPAD8, 0, {'8'} },
|
||||||
{ VK_NUMPAD8, 0, '8' },
|
{ VK_NUMPAD9, 0, {'9'} },
|
||||||
{ VK_NUMPAD9, 0, '9' },
|
{ VK_DECIMAL, 0, {'.'} },
|
||||||
{ VK_BACK, 0, '\010' },
|
{ VK_BACK, 0, {'\010'} },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -438,7 +392,7 @@ ROSDATA VSC_LPWSTR extended_key_names[] = {
|
||||||
/* Finally, the master table */
|
/* Finally, the master table */
|
||||||
ROSDATA KBDTABLES keyboard_layout_table = {
|
ROSDATA KBDTABLES keyboard_layout_table = {
|
||||||
/* modifier assignments */
|
/* modifier assignments */
|
||||||
(PMODIFIERS)&modifier_bits,
|
&modifier_bits,
|
||||||
|
|
||||||
/* character from vk tables */
|
/* character from vk tables */
|
||||||
vk_to_wchar_master_table,
|
vk_to_wchar_master_table,
|
||||||
|
|
|
@ -13,8 +13,12 @@
|
||||||
#ifdef _M_IA64
|
#ifdef _M_IA64
|
||||||
#define ROSDATA static __declspec(allocate(".data"))
|
#define ROSDATA static __declspec(allocate(".data"))
|
||||||
#else
|
#else
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma data_seg(".data")
|
#pragma data_seg(".data")
|
||||||
#define ROSDATA static
|
#define ROSDATA static
|
||||||
|
#else
|
||||||
|
#define ROSDATA static __attribute__((section(".data")))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VK_EMPTY 0xff /* The non-existent VK */
|
#define VK_EMPTY 0xff /* The non-existent VK */
|
||||||
|
@ -30,47 +34,6 @@
|
||||||
|
|
||||||
#define SHFT_INVALID 0x0F
|
#define SHFT_INVALID 0x0F
|
||||||
|
|
||||||
/* Thanks to http://asp.flaaten.dk/pforum/keycode/keycode.htm */
|
|
||||||
#ifndef VK_OEM_1
|
|
||||||
#define VK_OEM_1 0xba
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PLUS
|
|
||||||
#define VK_OEM_PLUS 0xbb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_COMMA
|
|
||||||
#define VK_OEM_COMMA 0xbc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_MINUS
|
|
||||||
#define VK_OEM_MINUS 0xbd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_PERIOD
|
|
||||||
#define VK_OEM_PERIOD 0xbe
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_2
|
|
||||||
#define VK_OEM_2 0xbf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_3
|
|
||||||
#define VK_OEM_3 0xc0
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_4
|
|
||||||
#define VK_OEM_4 0xdb
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_5
|
|
||||||
#define VK_OEM_5 0xdc
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_6
|
|
||||||
#define VK_OEM_6 0xdd
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_7
|
|
||||||
#define VK_OEM_7 0xde
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_8
|
|
||||||
#define VK_OEM_8 0xdf
|
|
||||||
#endif
|
|
||||||
#ifndef VK_OEM_102
|
|
||||||
#define VK_OEM_102 0xe1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ROSDATA USHORT scancode_to_vk[] = {
|
ROSDATA USHORT scancode_to_vk[] = {
|
||||||
/* Numbers Row */
|
/* Numbers Row */
|
||||||
/* - 00 - */
|
/* - 00 - */
|
||||||
|
@ -199,13 +162,7 @@ ROSDATA VK_TO_BIT modifier_keys[] = {
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _mymod {
|
ROSDATA MODIFIERS modifier_bits = {
|
||||||
PVOID mod_keys;
|
|
||||||
WORD maxmod;
|
|
||||||
BYTE mod_max[7];
|
|
||||||
} INTERNAL_KBD_MODIFIERS;
|
|
||||||
|
|
||||||
ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
|
||||||
modifier_keys,
|
modifier_keys,
|
||||||
6,
|
6,
|
||||||
{ 0, 1, 3, 4, SHFT_INVALID, SHFT_INVALID, 2 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT, MENU, SHIFT + MENU, CTRL + MENU */
|
{ 0, 1, 3, 4, SHFT_INVALID, SHFT_INVALID, 2 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT, MENU, SHIFT + MENU, CTRL + MENU */
|
||||||
|
@ -215,109 +172,109 @@ ROSDATA INTERNAL_KBD_MODIFIERS modifier_bits[] = {
|
||||||
#define CAPS KSHIFT /* Caps -> shift */
|
#define CAPS KSHIFT /* Caps -> shift */
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
|
||||||
{ VK_OEM_5, NOCAPS, WCH_DEAD, 0xb0 },
|
{ VK_OEM_5, NOCAPS, {WCH_DEAD, 0xb0} },
|
||||||
{ 0xff, NOCAPS, '^', WCH_NONE }, // FIXME - why doesn't this work?
|
{ 0xff, NOCAPS, {'^', WCH_NONE} }, // FIXME - why doesn't this work?
|
||||||
/* Normal vs Shifted */
|
/* Normal vs Shifted */
|
||||||
/* The numbers */
|
/* The numbers */
|
||||||
{ '1', NOCAPS, '1', '!' },
|
{ '1', NOCAPS, {'1', '!'} },
|
||||||
/* Ctrl-2 generates NUL */
|
/* Ctrl-2 generates NUL */
|
||||||
{ '4', NOCAPS, '4', '$' },
|
{ '4', NOCAPS, {'4', '$'} },
|
||||||
{ '5', NOCAPS, '5', '%' },
|
{ '5', NOCAPS, {'5', '%'} },
|
||||||
|
|
||||||
{ VK_OEM_6, NOCAPS, WCH_DEAD, WCH_DEAD },
|
{ VK_OEM_6, NOCAPS, {WCH_DEAD, WCH_DEAD} },
|
||||||
{ 0xff, NOCAPS, 0xb4, '`' },
|
{ 0xff, NOCAPS, {0xb4, '`'} },
|
||||||
|
|
||||||
/* First letter row */
|
/* First letter row */
|
||||||
{ 'W', CAPS, 'w', 'W' },
|
{ 'W', CAPS, {'w', 'W'} },
|
||||||
{ 'R', CAPS, 'r', 'R' },
|
{ 'R', CAPS, {'r', 'R'} },
|
||||||
{ 'T', CAPS, 't', 'T' },
|
{ 'T', CAPS, {'t', 'T'} },
|
||||||
{ 'Z', CAPS, 'z', 'Z' },
|
{ 'Z', CAPS, {'z', 'Z'} },
|
||||||
{ 'U', CAPS, 'u', 'U' },
|
{ 'U', CAPS, {'u', 'U'} },
|
||||||
{ 'I', CAPS, 'i', 'I' },
|
{ 'I', CAPS, {'i', 'I'} },
|
||||||
{ 'O', CAPS, 'o', 'O' },
|
{ 'O', CAPS, {'o', 'O'} },
|
||||||
{ 'P', CAPS, 'p', 'P' },
|
{ 'P', CAPS, {'p', 'P'} },
|
||||||
/* Second letter row */
|
/* Second letter row */
|
||||||
{ 'A', CAPS, 'a', 'A' },
|
{ 'A', CAPS, {'a', 'A'} },
|
||||||
{ 'S', CAPS, 's', 'S' },
|
{ 'S', CAPS, {'s', 'S'} },
|
||||||
{ 'D', CAPS, 'd', 'D' },
|
{ 'D', CAPS, {'d', 'D'} },
|
||||||
{ 'F', CAPS, 'f', 'F' },
|
{ 'F', CAPS, {'f', 'F'} },
|
||||||
{ 'G', CAPS, 'g', 'G' },
|
{ 'G', CAPS, {'g', 'G'} },
|
||||||
{ 'H', CAPS, 'h', 'H' },
|
{ 'H', CAPS, {'h', 'H'} },
|
||||||
{ 'J', CAPS, 'j', 'J' },
|
{ 'J', CAPS, {'j', 'J'} },
|
||||||
{ 'K', CAPS, 'k', 'K' },
|
{ 'K', CAPS, {'k', 'K'} },
|
||||||
{ 'L', CAPS, 'l', 'L' },
|
{ 'L', CAPS, {'l', 'L'} },
|
||||||
{ VK_OEM_3, CAPS, 0xf6, 0xd6 },
|
{ VK_OEM_3, CAPS, {0xf6, 0xd6} },
|
||||||
{ VK_OEM_7, CAPS, 0xe4, 0xc4 },
|
{ VK_OEM_7, CAPS, {0xe4, 0xc4} },
|
||||||
/* Third letter row */
|
/* Third letter row */
|
||||||
{ 'Y', CAPS, 'y', 'Y' },
|
{ 'Y', CAPS, {'y', 'Y'} },
|
||||||
{ 'X', CAPS, 'x', 'X' },
|
{ 'X', CAPS, {'x', 'X'} },
|
||||||
{ 'C', CAPS, 'c', 'C' },
|
{ 'C', CAPS, {'c', 'C'} },
|
||||||
{ 'V', CAPS, 'v', 'V' },
|
{ 'V', CAPS, {'v', 'V'} },
|
||||||
{ 'B', CAPS, 'b', 'B' },
|
{ 'B', CAPS, {'b', 'B'} },
|
||||||
{ 'N', CAPS, 'n', 'N' },
|
{ 'N', CAPS, {'n', 'N'} },
|
||||||
|
|
||||||
/* Specials */
|
/* Specials */
|
||||||
{ VK_OEM_COMMA, CAPS, ',', ';' },
|
{ VK_OEM_COMMA, CAPS, {',', ';'} },
|
||||||
{ VK_OEM_PERIOD, CAPS, '.', ':' },
|
{ VK_OEM_PERIOD, CAPS, {'.', ':'} },
|
||||||
{ VK_DECIMAL, NOCAPS, ',',','},
|
{ VK_DECIMAL, NOCAPS, {',',','} },
|
||||||
{ VK_TAB, NOCAPS, '\t', '\t' },
|
{ VK_TAB, NOCAPS, {'\t', '\t'} },
|
||||||
{ VK_ADD, NOCAPS, '+', '+' },
|
{ VK_ADD, NOCAPS, {'+', '+'} },
|
||||||
{ VK_DIVIDE, NOCAPS, '/', '/' },
|
{ VK_DIVIDE, NOCAPS, {'/', '/'} },
|
||||||
{ VK_MULTIPLY, NOCAPS, '*', '*' },
|
{ VK_MULTIPLY, NOCAPS, {'*', '*'} },
|
||||||
{ VK_SUBTRACT, NOCAPS, '-', '-' },
|
{ VK_SUBTRACT, NOCAPS, {'-', '-'} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
|
||||||
/* Normal, Shifted, Ctrl */
|
/* Normal, Shifted, Ctrl */
|
||||||
/* Legacy (telnet-style) ascii escapes */
|
/* Legacy (telnet-style) ascii escapes */
|
||||||
{ '3', CAPS, '3', 0xa7, 0xb3 },
|
{ '3', CAPS, {'3', 0xa7, 0xb3} },
|
||||||
{ '7', CAPS, '7', '/', '{' },
|
{ '7', CAPS, {'7', '/', '{'} },
|
||||||
{ '8', CAPS, '8', '(', '[' },
|
{ '8', CAPS, {'8', '(', '['} },
|
||||||
{ '9', CAPS, '9', ')', ']' },
|
{ '9', CAPS, {'9', ')', ']'} },
|
||||||
{ '0', CAPS, '0', '=', '}' },
|
{ '0', CAPS, {'0', '=', '}'} },
|
||||||
{ VK_OEM_4, CAPS, 0xdf, '?', '\\' },
|
{ VK_OEM_4, CAPS, {0xdf, '?', '\\'} },
|
||||||
{ 'Q', CAPS, 'q', 'Q', '@' },
|
{ 'Q', CAPS, {'q', 'Q', '@'} },
|
||||||
{ 'E', CAPS, 'e', 'E', 0x20ac },
|
{ 'E', CAPS, {'e', 'E', 0x20ac} },
|
||||||
{ 'M', CAPS, 'm', 'M', 0xb5 },
|
{ 'M', CAPS, {'m', 'M', 0xb5} },
|
||||||
{ VK_OEM_102, NOCAPS, '<', '>', '|' }, // FIXME - why doesn't this work?
|
{ VK_OEM_102, NOCAPS, {'<', '>', '|'} }, // FIXME - why doesn't this work?
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
|
||||||
/* Normal, Shifted, Ctrl, C-S-x */
|
/* Normal, Shifted, Ctrl, C-S-x */
|
||||||
/* Legacy Ascii generators */
|
/* Legacy Ascii generators */
|
||||||
{ VK_OEM_1, CAPS, 0xfc, 0xdc, WCH_NONE, 0x1b },
|
{ VK_OEM_1, CAPS, {0xfc, 0xdc, WCH_NONE, 0x1b} },
|
||||||
{ VK_OEM_PLUS, CAPS, '+', '*', '~', 0x1d },
|
{ VK_OEM_PLUS, CAPS, {'+', '*', '~', 0x1d} },
|
||||||
{ VK_OEM_2, CAPS, '#', '\'', WCH_NONE, 0x1c },
|
{ VK_OEM_2, CAPS, {'#', '\'', WCH_NONE, 0x1c} },
|
||||||
{ VK_BACK, NOCAPS, '\b', '\b', WCH_NONE, 0x7f },
|
{ VK_BACK, NOCAPS, {'\b', '\b', WCH_NONE, 0x7f} },
|
||||||
{ VK_ESCAPE, NOCAPS, 0x1b, 0x1b, WCH_NONE, 0x1b },
|
{ VK_ESCAPE, NOCAPS, {0x1b, 0x1b, WCH_NONE, 0x1b} },
|
||||||
{ VK_RETURN, NOCAPS, '\r', '\r', WCH_NONE, '\n' },
|
{ VK_RETURN, NOCAPS, {'\r', '\r', WCH_NONE, '\n'} },
|
||||||
{ VK_SPACE, NOCAPS, ' ', ' ', WCH_NONE, ' ' },
|
{ VK_SPACE, NOCAPS, {' ', ' ', WCH_NONE, ' '} },
|
||||||
{ VK_CANCEL, NOCAPS, 0x03, 0x03, WCH_NONE, 0x03 },
|
{ VK_CANCEL, NOCAPS, {0x03, 0x03, WCH_NONE, 0x03} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
|
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
|
||||||
/* Normal, Shifted, Ctrl, C-S-x */
|
/* Normal, Shifted, Ctrl, C-S-x */
|
||||||
{ '2', CAPS, '2', '\"', 0xb2, WCH_NONE, 0x00 },
|
{ '2', CAPS, {'2', '\"', 0xb2, WCH_NONE, 0x00} },
|
||||||
{ '6', CAPS, '6', '&', WCH_NONE, WCH_NONE, 0x1e },
|
{ '6', CAPS, {'6', '&', WCH_NONE, WCH_NONE, 0x1e} },
|
||||||
{ VK_OEM_MINUS, NOCAPS, '-', '_', WCH_NONE, WCH_NONE, 0x1f },
|
{ VK_OEM_MINUS, NOCAPS, {'-', '_', WCH_NONE, WCH_NONE, 0x1f} },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
|
||||||
{ VK_DECIMAL, 0, '.' },
|
{ VK_DECIMAL, 0, {'.'} },
|
||||||
{ VK_NUMPAD0, 0, '0' },
|
{ VK_NUMPAD0, 0, {'0'} },
|
||||||
{ VK_NUMPAD1, 0, '1' },
|
{ VK_NUMPAD1, 0, {'1'} },
|
||||||
{ VK_NUMPAD2, 0, '2' },
|
{ VK_NUMPAD2, 0, {'2'} },
|
||||||
{ VK_NUMPAD3, 0, '3' },
|
{ VK_NUMPAD3, 0, {'3'} },
|
||||||
{ VK_NUMPAD4, 0, '4' },
|
{ VK_NUMPAD4, 0, {'4'} },
|
||||||
{ VK_NUMPAD5, 0, '5' },
|
{ VK_NUMPAD5, 0, {'5'} },
|
||||||
{ VK_NUMPAD6, 0, '6' },
|
{ VK_NUMPAD6, 0, {'6'} },
|
||||||
{ VK_NUMPAD7, 0, '7' },
|
{ VK_NUMPAD7, 0, {'7'} },
|
||||||
{ VK_NUMPAD8, 0, '8' },
|
{ VK_NUMPAD8, 0, {'8'} },
|
||||||
{ VK_NUMPAD9, 0, '9' },
|
{ VK_NUMPAD9, 0, {'9'} },
|
||||||
// { VK_BACK, 0, '\010' },
|
// { VK_BACK, 0, '\010' },
|
||||||
{ 0,0 }
|
{ 0,0 }
|
||||||
};
|
};
|
||||||
|
@ -466,7 +423,7 @@ ROSDATA DEADKEY dead_key[] = {
|
||||||
/* Finally, the master table */
|
/* Finally, the master table */
|
||||||
ROSDATA KBDTABLES keyboard_layout_table = {
|
ROSDATA KBDTABLES keyboard_layout_table = {
|
||||||
/* modifier assignments */
|
/* modifier assignments */
|
||||||
(PMODIFIERS)&modifier_bits,
|
&modifier_bits,
|
||||||
|
|
||||||
/* character from vk tables */
|
/* character from vk tables */
|
||||||
vk_to_wchar_master_table,
|
vk_to_wchar_master_table,
|
||||||
|
|
Loading…
Reference in a new issue