diff --git a/include/spy.h b/include/spy.h index a2e98f4cdb1..03140a4a666 100644 --- a/include/spy.h +++ b/include/spy.h @@ -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, diff --git a/windows/message.c b/windows/message.c index 9af4be63ce1..30b41a90d60 100644 --- a/windows/message.c +++ b/windows/message.c @@ -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), diff --git a/windows/spy.c b/windows/spy.c index 881a3288650..8ca9ac1fcba 100644 --- a/windows/spy.c +++ b/windows/spy.c @@ -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 */