Commit b52c89fc authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard

winemac: For GetKeyNameText(), use the hard-coded table in preference to the Mac keyboard layout.

parent c4a28490
......@@ -1229,6 +1229,8 @@ INT CDECL macdrv_GetKeyNameText(LONG lparam, LPWSTR buffer, INT size)
UInt32 deadKeyState = 0;
UniCharCount len;
OSStatus status;
DWORD vkey;
int i;
uchr = (const UCKeyboardLayout*)CFDataGetBytePtr(thread_data->keyboard_layout_uchr);
status = UCKeyTranslate(uchr, keyc, kUCKeyActionDisplay, 0, thread_data->keyboard_type,
......@@ -1237,51 +1239,46 @@ INT CDECL macdrv_GetKeyNameText(LONG lparam, LPWSTR buffer, INT size)
len = 0;
if (len && isgraphW(buffer[0]))
buffer[len] = 0;
else
{
DWORD vkey = thread_data->keyc2vkey[keyc];
int i;
if (scan & 0x100) vkey |= 0x100;
if (lparam & (1 << 25))
vkey = thread_data->keyc2vkey[keyc];
if (lparam & (1 << 25))
{
/* Caller doesn't care about distinctions between left and
right keys. */
switch (vkey)
{
/* Caller doesn't care about distinctions between left and
right keys. */
switch (vkey)
{
case VK_LSHIFT:
case VK_RSHIFT:
vkey = VK_SHIFT; break;
case VK_LCONTROL:
case VK_RCONTROL:
vkey = VK_CONTROL; break;
case VK_LMENU:
case VK_RMENU:
vkey = VK_MENU; break;
}
case VK_LSHIFT:
case VK_RSHIFT:
vkey = VK_SHIFT; break;
case VK_LCONTROL:
case VK_RCONTROL:
vkey = VK_CONTROL; break;
case VK_LMENU:
case VK_RMENU:
vkey = VK_MENU; break;
}
}
len = 0;
for (i = 0; i < sizeof(vkey_names) / sizeof(vkey_names[0]); i++)
{
if (vkey_names[i].vkey == vkey)
{
len = MultiByteToWideChar(CP_UTF8, 0, vkey_names[i].name, -1, buffer, size);
if (len) len--;
break;
}
}
if (scan & 0x100) vkey |= 0x100;
if (!len)
for (i = 0; i < sizeof(vkey_names) / sizeof(vkey_names[0]); i++)
{
if (vkey_names[i].vkey == vkey)
{
static const WCHAR format[] = {'K','e','y',' ','0','x','%','0','2','x',0};
snprintfW(buffer, size, format, vkey);
len = strlenW(buffer);
len = MultiByteToWideChar(CP_UTF8, 0, vkey_names[i].name, -1, buffer, size);
if (len) len--;
break;
}
}
if (!len)
{
static const WCHAR format[] = {'K','e','y',' ','0','x','%','0','2','x',0};
snprintfW(buffer, size, format, vkey);
len = strlenW(buffer);
}
if (!len)
break;
if (status == noErr && deadKeyState)
......
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