winex11.drv: Use symbolic names for MapVirtualKey translation types.

This commit is contained in:
Dmitry Timoshkov 2007-09-18 16:26:03 +09:00 committed by Alexandre Julliard
parent aa649542e2
commit 3407307a50
2 changed files with 23 additions and 15 deletions

View File

@ -2094,25 +2094,32 @@ UINT X11DRV_MapVirtualKeyEx(UINT wCode, UINT wMapType, HKL hkl)
FIXME("keyboard layout %p is not supported\n", hkl); FIXME("keyboard layout %p is not supported\n", hkl);
switch(wMapType) { switch(wMapType) {
case 0: { /* vkey-code to scan-code */ case MAPVK_VK_TO_VSC: /* vkey-code to scan-code */
case MAPVK_VK_TO_VSC_EX: /* FIXME: should differentiate between
left and right keys */
{
/* let's do vkey -> keycode -> scan */ /* let's do vkey -> keycode -> scan */
int keyc; int keyc;
for (keyc=min_keycode; keyc<=max_keycode; keyc++) for (keyc=min_keycode; keyc<=max_keycode; keyc++)
if ((keyc2vkey[keyc] & 0xFF) == wCode) if ((keyc2vkey[keyc] & 0xFF) == wCode)
returnMVK (keyc2scan[keyc] & 0xFF); returnMVK (keyc2scan[keyc] & 0xFF);
TRACE("returning no scan-code.\n"); TRACE("returning no scan-code.\n");
return 0; } return 0;
}
case 1: { /* scan-code to vkey-code */ case MAPVK_VSC_TO_VK: /* scan-code to vkey-code */
case MAPVK_VSC_TO_VK_EX: /* FIXME: should differentiate between
left and right keys */
{
/* let's do scan -> keycode -> vkey */ /* let's do scan -> keycode -> vkey */
int keyc; int keyc;
for (keyc=min_keycode; keyc<=max_keycode; keyc++) for (keyc=min_keycode; keyc<=max_keycode; keyc++)
if ((keyc2scan[keyc] & 0xFF) == (wCode & 0xFF)) if ((keyc2scan[keyc] & 0xFF) == (wCode & 0xFF))
returnMVK (keyc2vkey[keyc] & 0xFF); returnMVK (keyc2vkey[keyc] & 0xFF);
TRACE("returning no vkey-code.\n"); TRACE("returning no vkey-code.\n");
return 0; } return 0;
}
case 2: { /* vkey-code to unshifted ANSI code */ case MAPVK_VK_TO_CHAR: /* vkey-code to unshifted ANSI code */
{
/* we still don't know what "unshifted" means. in windows VK_W (0x57) /* we still don't know what "unshifted" means. in windows VK_W (0x57)
* returns 0x57, which is upercase 'W'. So we have to return the uppercase * returns 0x57, which is upercase 'W'. So we have to return the uppercase
* key.. Looks like something is wrong with the MS docs? * key.. Looks like something is wrong with the MS docs?
@ -2169,15 +2176,9 @@ UINT X11DRV_MapVirtualKeyEx(UINT wCode, UINT wMapType, HKL hkl)
TRACE("returning no ANSI.\n"); TRACE("returning no ANSI.\n");
wine_tsx11_unlock(); wine_tsx11_unlock();
return 0; return 0;
} }
case 3: /* **NT only** scan-code to vkey-code but distinguish between */
/* left and right */
FIXME(" stub for NT\n");
return 0;
default: /* reserved */ default: /* reserved */
WARN("Unknown wMapType %d !\n", wMapType); FIXME("Unknown wMapType %d !\n", wMapType);
return 0; return 0;
} }
return 0; return 0;

View File

@ -3729,6 +3729,13 @@ typedef struct tagCOMPAREITEMSTRUCT
#define VK_PA1 0xFD #define VK_PA1 0xFD
#define VK_OEM_CLEAR 0xFE #define VK_OEM_CLEAR 0xFE
/* MapVirtualKey translation types */
#define MAPVK_VK_TO_VSC 0
#define MAPVK_VSC_TO_VK 1
#define MAPVK_VK_TO_CHAR 2
#define MAPVK_VSC_TO_VK_EX 3
#define MAPVK_VK_TO_VSC_EX 4
/* Key status flags for mouse events */ /* Key status flags for mouse events */
#define MK_LBUTTON 0x0001 #define MK_LBUTTON 0x0001
#define MK_RBUTTON 0x0002 #define MK_RBUTTON 0x0002