Commit 740bb92b authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

Added the ability to see names of the virtual key codes.

parent f9f030b8
......@@ -23,6 +23,7 @@
extern const char *SPY_GetMsgName( UINT msg );
extern const char *SPY_GetVKeyName(WPARAM wParam);
extern void SPY_EnterMessage( INT iFlag, HWND hwnd, UINT msg,
WPARAM wParam, LPARAM lParam );
extern void SPY_ExitMessage( INT iFlag, HWND hwnd, UINT msg,
......
......@@ -2186,8 +2186,8 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd,
if ((message != WM_KEYDOWN) && (message != WM_SYSKEYDOWN)) return FALSE;
TRACE_(key)("Translating key %04X, scancode %04X\n",
wParam, HIWORD(lParam) );
TRACE_(key)("Translating key %s (%04x), scancode %02x\n",
SPY_GetVKeyName(wParam), wParam, LOBYTE(HIWORD(lParam)));
/* FIXME : should handle ToAscii yielding 2 */
switch (ToAscii(wParam, HIWORD(lParam),
......
......@@ -763,6 +763,268 @@ static const char * const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM + 1] =
"CCM_GETUNICODEFORMAT"
};
/* Virtual key names */
#define SPY_MAX_VKKEYSNUM 255
static const char * const VK_KeyNames[SPY_MAX_VKKEYSNUM + 1] =
{
NULL, /* 0x00 */
"VK_LBUTTON", /* 0x01 */
"VK_RBUTTON", /* 0x02 */
"VK_CANCEL", /* 0x03 */
"VK_MBUTTON", /* 0x04 */
NULL, /* 0x05 */
NULL, /* 0x06 */
NULL, /* 0x07 */
"VK_BACK", /* 0x08 */
"VK_TAB", /* 0x09 */
NULL, /* 0x0A */
NULL, /* 0x0B */
"VK_CLEAR", /* 0x0C */
"VK_RETURN", /* 0x0D */
NULL, /* 0x0E */
NULL, /* 0x0F */
"VK_SHIFT", /* 0x10 */
"VK_CONTROL", /* 0x11 */
"VK_MENU", /* 0x12 */
"VK_PAUSE", /* 0x13 */
"VK_CAPITAL", /* 0x14 */
NULL, /* 0x15 */
NULL, /* 0x16 */
NULL, /* 0x17 */
NULL, /* 0x18 */
NULL, /* 0x19 */
NULL, /* 0x1A */
"VK_ESCAPE", /* 0x1B */
NULL, /* 0x1C */
NULL, /* 0x1D */
NULL, /* 0x1E */
NULL, /* 0x1F */
"VK_SPACE", /* 0x20 */
"VK_PRIOR", /* 0x21 */
"VK_NEXT", /* 0x22 */
"VK_END", /* 0x23 */
"VK_HOME", /* 0x24 */
"VK_LEFT", /* 0x25 */
"VK_UP", /* 0x26 */
"VK_RIGHT", /* 0x27 */
"VK_DOWN", /* 0x28 */
"VK_SELECT", /* 0x29 */
"VK_PRINT", /* 0x2A */
"VK_EXECUTE", /* 0x2B */
"VK_SNAPSHOT", /* 0x2C */
"VK_INSERT", /* 0x2D */
"VK_DELETE", /* 0x2E */
"VK_HELP", /* 0x2F */
"VK_0", /* 0x30 */
"VK_1", /* 0x31 */
"VK_2", /* 0x32 */
"VK_3", /* 0x33 */
"VK_4", /* 0x34 */
"VK_5", /* 0x35 */
"VK_6", /* 0x36 */
"VK_7", /* 0x37 */
"VK_8", /* 0x38 */
"VK_9", /* 0x39 */
NULL, /* 0x3A */
NULL, /* 0x3B */
NULL, /* 0x3C */
NULL, /* 0x3D */
NULL, /* 0x3E */
NULL, /* 0x3F */
NULL, /* 0x40 */
"VK_A", /* 0x41 */
"VK_B", /* 0x42 */
"VK_C", /* 0x43 */
"VK_D", /* 0x44 */
"VK_E", /* 0x45 */
"VK_F", /* 0x46 */
"VK_G", /* 0x47 */
"VK_H", /* 0x48 */
"VK_I", /* 0x49 */
"VK_J", /* 0x4A */
"VK_K", /* 0x4B */
"VK_L", /* 0x4C */
"VK_M", /* 0x4D */
"VK_N", /* 0x4E */
"VK_O", /* 0x4F */
"VK_P", /* 0x50 */
"VK_Q", /* 0x51 */
"VK_R", /* 0x52 */
"VK_S", /* 0x53 */
"VK_T", /* 0x54 */
"VK_U", /* 0x55 */
"VK_V", /* 0x56 */
"VK_W", /* 0x57 */
"VK_X", /* 0x58 */
"VK_Y", /* 0x59 */
"VK_Z", /* 0x5A */
"VK_LWIN", /* 0x5B */
"VK_RWIN", /* 0x5C */
"VK_APPS", /* 0x5D */
NULL, /* 0x5E */
NULL, /* 0x5F */
"VK_NUMPAD0", /* 0x60 */
"VK_NUMPAD1", /* 0x61 */
"VK_NUMPAD2", /* 0x62 */
"VK_NUMPAD3", /* 0x63 */
"VK_NUMPAD4", /* 0x64 */
"VK_NUMPAD5", /* 0x65 */
"VK_NUMPAD6", /* 0x66 */
"VK_NUMPAD7", /* 0x67 */
"VK_NUMPAD8", /* 0x68 */
"VK_NUMPAD9", /* 0x69 */
"VK_MULTIPLY", /* 0x6A */
"VK_ADD", /* 0x6B */
"VK_SEPARATOR", /* 0x6C */
"VK_SUBTRACT", /* 0x6D */
"VK_DECIMAL", /* 0x6E */
"VK_DIVIDE", /* 0x6F */
"VK_F1", /* 0x70 */
"VK_F2", /* 0x71 */
"VK_F3", /* 0x72 */
"VK_F4", /* 0x73 */
"VK_F5", /* 0x74 */
"VK_F6", /* 0x75 */
"VK_F7", /* 0x76 */
"VK_F8", /* 0x77 */
"VK_F9", /* 0x78 */
"VK_F10", /* 0x79 */
"VK_F11", /* 0x7A */
"VK_F12", /* 0x7B */
"VK_F13", /* 0x7C */
"VK_F14", /* 0x7D */
"VK_F15", /* 0x7E */
"VK_F16", /* 0x7F */
"VK_F17", /* 0x80 */
"VK_F18", /* 0x81 */
"VK_F19", /* 0x82 */
"VK_F20", /* 0x83 */
"VK_F21", /* 0x84 */
"VK_F22", /* 0x85 */
"VK_F23", /* 0x86 */
"VK_F24", /* 0x87 */
NULL, /* 0x88 */
NULL, /* 0x89 */
NULL, /* 0x8A */
NULL, /* 0x8B */
NULL, /* 0x8C */
NULL, /* 0x8D */
NULL, /* 0x8E */
NULL, /* 0x8F */
"VK_NUMLOCK", /* 0x90 */
"VK_SCROLL", /* 0x91 */
NULL, /* 0x92 */
NULL, /* 0x93 */
NULL, /* 0x94 */
NULL, /* 0x95 */
NULL, /* 0x96 */
NULL, /* 0x97 */
NULL, /* 0x98 */
NULL, /* 0x99 */
NULL, /* 0x9A */
NULL, /* 0x9B */
NULL, /* 0x9C */
NULL, /* 0x9D */
NULL, /* 0x9E */
NULL, /* 0x9F */
"VK_LSHIFT", /* 0xA0 */
"VK_RSHIFT", /* 0xA1 */
"VK_LCONTROL", /* 0xA2 */
"VK_RCONTROL", /* 0xA3 */
"VK_LMENU", /* 0xA4 */
"VK_RMENU", /* 0xA5 */
NULL, /* 0xA6 */
NULL, /* 0xA7 */
NULL, /* 0xA8 */
NULL, /* 0xA9 */
NULL, /* 0xAA */
NULL, /* 0xAB */
NULL, /* 0xAC */
NULL, /* 0xAD */
NULL, /* 0xAE */
NULL, /* 0xAF */
NULL, /* 0xB0 */
NULL, /* 0xB1 */
NULL, /* 0xB2 */
NULL, /* 0xB3 */
NULL, /* 0xB4 */
NULL, /* 0xB5 */
NULL, /* 0xB6 */
NULL, /* 0xB7 */
NULL, /* 0xB8 */
NULL, /* 0xB9 */
"VK_OEM_1", /* 0xBA */
"VK_OEM_PLUS", /* 0xBB */
"VK_OEM_COMMA", /* 0xBC */
"VK_OEM_MINUS", /* 0xBD */
"VK_OEM_PERIOD", /* 0xBE */
"VK_OEM_2", /* 0xBF */
"VK_OEM_3", /* 0xC0 */
NULL, /* 0xC1 */
NULL, /* 0xC2 */
NULL, /* 0xC3 */
NULL, /* 0xC4 */
NULL, /* 0xC5 */
NULL, /* 0xC6 */
NULL, /* 0xC7 */
NULL, /* 0xC8 */
NULL, /* 0xC9 */
NULL, /* 0xCA */
NULL, /* 0xCB */
NULL, /* 0xCC */
NULL, /* 0xCD */
NULL, /* 0xCE */
NULL, /* 0xCF */
NULL, /* 0xD0 */
NULL, /* 0xD1 */
NULL, /* 0xD2 */
NULL, /* 0xD3 */
NULL, /* 0xD4 */
NULL, /* 0xD5 */
NULL, /* 0xD6 */
NULL, /* 0xD7 */
NULL, /* 0xD8 */
NULL, /* 0xD9 */
NULL, /* 0xDA */
"VK_OEM_4", /* 0xDB */
"VK_OEM_5", /* 0xDC */
"VK_OEM_6", /* 0xDD */
"VK_OEM_7", /* 0xDE */
"VK_OEM_8", /* 0xDF */
NULL, /* 0xE0 */
"VK_OEM_AX", /* 0xE1 */
"VK_OEM_102", /* 0xE2 */
"VK_ICO_HELP", /* 0xE3 */
"VK_ICO_00", /* 0xE4 */
"VK_PROCESSKEY", /* 0xE5 */
NULL, /* 0xE6 */
NULL, /* 0xE7 */
NULL, /* 0xE8 */
NULL, /* 0xE9 */
NULL, /* 0xEA */
NULL, /* 0xEB */
NULL, /* 0xEC */
NULL, /* 0xED */
NULL, /* 0xEE */
NULL, /* 0xEF */
NULL, /* 0xF0 */
NULL, /* 0xF1 */
NULL, /* 0xF2 */
NULL, /* 0xF3 */
NULL, /* 0xF4 */
NULL, /* 0xF5 */
"VK_ATTN", /* 0xF6 */
"VK_CRSEL", /* 0xF7 */
"VK_EXSEL", /* 0xF8 */
"VK_EREOF", /* 0xF9 */
"VK_PLAY", /* 0xFA */
"VK_ZOOM", /* 0xFB */
"VK_NONAME", /* 0xFC */
"VK_PA1", /* 0xFD */
"VK_OEM_CLEAR", /* 0xFE */
NULL /* 0xFF */
};
static BOOL16 SPY_Exclude[SPY_MAX_MSGNUM+1];
static BOOL16 SPY_ExcludeDWP = 0;
static int SPY_IndentLevel = 0;
......@@ -835,6 +1097,22 @@ const char *SPY_GetWndName( HWND hwnd )
else strcpy( wnd_buffer, "\"NULL\"" );
return wnd_buffer;
}
/***********************************************************************
* SPY_GetVKeyName
*/
const char *SPY_GetVKeyName(WPARAM wParam)
{
const char *vk_key_name;
if(wParam <= SPY_MAX_VKKEYSNUM && VK_KeyNames[wParam])
vk_key_name = VK_KeyNames[wParam];
else
vk_key_name = "VK_???";
return vk_key_name;
}
/***********************************************************************
* SPY_DumpStructure
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment